From d928cfceeb8aa3040bd50f2b455b8d021a95d7e6 Mon Sep 17 00:00:00 2001 From: smallchill Date: Sun, 14 Jul 2024 23:41:31 +0800 Subject: [PATCH] =?UTF-8?q?:tada:=204.1.0.RELEASE=20=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E5=8D=87=E7=BA=A7=E4=B8=BA=E5=9B=BD=E5=AF=86?= =?UTF-8?q?=E7=AE=97=E6=B3=95=EF=BC=8C=E6=95=B0=E6=8D=AE=E5=BA=93password?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=86=85=E5=AE=B9=E6=97=A0=E9=9C=80=E5=8F=98?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 238 +++++++++++++------------------ package.json | 5 +- src/defaultSettings.js | 4 + src/pages/Dashboard/Workplace.js | 17 ++- src/services/user.js | 2 + src/utils/sm2.js | 16 +++ 6 files changed, 142 insertions(+), 140 deletions(-) create mode 100644 src/utils/sm2.js diff --git a/README.md b/README.md index 069d4f0..d50da84 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@

- Downloads - Build Status + Downloads + Build Status Build Status - Coverage Status - Downloads + Coverage Status + Downloads Downloads @@ -18,51 +18,116 @@ * [BladeTool](https://github.com/chillzhuang/blade-tool)已推送至Maven中央库,直接引入即可,减少了工程的臃肿,也可更注重于业务开发 * 集成Sentinel从流量控制、熔断降级、系统负载等多个维度保护服务的稳定性。 * 注册中心、配置中心选型Nacos,为工程瘦身的同时加强各模块之间的联动。 -* 使用Traefik进行反向代理,监听后台变化自动化应用新的配置文件。 * 极简封装了多租户底层,用更少的代码换来拓展性更强的SaaS多租户系统。 -* 借鉴OAuth2,实现了多终端认证系统,可控制子系统的token权限互相隔离。 -* 借鉴Security,封装了Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案。 -* 稳定生产了三年,经历了从 Camden -> Hoxton -> 2021 的技术架构,也经历了从fat jar -> docker -> k8s + jenkins的部署架构。 +* 借鉴OAuth2,自研多终端认证系统,可控制子系统的token权限互相隔离。 +* 借鉴Security,自研Secure模块,采用JWT做Token认证,可拓展集成Redis等细颗粒度控制方案。 +* 稳定生产了六年,经历了从 Camden -> Hoxton -> 2023 的技术架构,也经历了从fat jar -> docker -> k8s + jenkins的部署架构。 * 项目分包明确,规范微服务的开发模式,使包与包之间的分工清晰。 ## 架构图 - + + +## 核心技术栈 + +| 技术栈 | 版本 | +|----------------------|------------| +| Java | 17+ | +| NodeJS | 18+ | +| Spring | 6.1.10 | +| Spring Boot | 3.2.7 | +| Spring Cloud | 2023.0.2 | +| Spring Cloud Alibaba | 2023.0.1.0 | +| Nacos Alibaba | 2.3.2 | +| Mybatis Plus | 3.5.7 | + + +## 工程结构 +``` +SpringBlade +├── blade-auth -- 授权服务提供 +├── blade-common -- 常用工具封装包 +├── blade-gateway -- Spring Cloud 网关 +├── blade-ops -- 运维中心 +├ ├── blade-admin -- spring-cloud后台管理 +├ ├── blade-develop -- 代码生成 +├ ├── blade-resource -- 资源管理 +├ ├── blade-seata-order -- seata分布式事务demo +├ ├── blade-seata-storage -- seata分布式事务demo +├── blade-service -- 业务模块 +├ ├── blade-desk -- 工作台模块 +├ ├── blade-log -- 日志模块 +├ ├── blade-system -- 系统模块 +├ └── blade-user -- 用户模块 +├── blade-service-api -- 业务模块api封装 +├ ├── blade-desk-api -- 工作台api +├ ├── blade-dict-api -- 字典api +├ ├── blade-system-api -- 系统api +└── └── blade-user-api -- 用户api +``` ## 官方信息 -* 官网地址:[https://bladex.cn](https://bladex.cn) -* 问答社区:[https://sns.bladex.cn](https://sns.bladex.cn) -* 会员计划:[SpringBlade会员计划](https://gitee.com/smallc/SpringBlade/wikis/SpringBlade会员计划) -* 交流一群:`477853168`(满) -* 交流二群:`751253339`(满) -* 交流三群:`784729540`(满) -* 交流四群:`1034621754`(满) -* 交流五群:`946350912`(满) -* 交流六群:`511624269`(满) -* 交流七群:`298061704` -## 在线演示 -* Saber-基于Vue:[https://saber.bladex.cn](https://saber.bladex.cn) -* Sword-基于React:[https://sword.bladex.cn](https://sword.bladex.cn) +| 简介 | 内容 | +|------|-------------------------------------------------------------------------------| +| 官网地址 | [https://bladex.cn](https://bladex.cn) | +| 问答社区 | [https://sns.bladex.cn](https://sns.bladex.cn) | +| 会员计划 | [SpringBlade会员计划](https://gitee.com/smallc/SpringBlade/wikis/SpringBlade会员计划) | +| 交流一群 | `477853168` (满) | +| 交流二群 | `751253339` (满) | +| 交流三群 | `784729540` (满) | +| 交流四群 | `1034621754` (满) | +| 交流五群 | `946350912` (满) | +| 交流六群 | `511624269` (满) | +| 交流七群 | `298061704` | -## 数据大屏 -* 数据大屏展示系统:[https://data.bladex.cn](https://data.bladex.cn) +## 官方产品 + +| 简介 | 演示地址 | +|---------------|------------------------------------------------------| +| BladeX企业级开发平台 | [https://saber3.bladex.cn](https://saber3.bladex.cn) | +| BladeX可视化数据大屏 | [https://data.bladex.cn](https://data.bladex.cn) | +| BladeX物联网开发平台 | [https://iot.bladex.cn](https://iot.bladex.cn) | + +## 前端项目 + +| 简介 | 地址 | +|--------------------|----------------------------------------------------------------------------------------------------| +| 前端框架Sword(基于React) | [https://gitee.com/smallc/Sword](https://gitee.com/smallc/Sword) | +| 前端框架Saber(基于Vue2) | [https://gitee.com/smallc/Saber](https://gitee.com/smallc/Saber) | +| 前端框架Saber3(基于Vue3) | [https://gitee.com/smallc/Saber3](https://gitee.com/smallc/Saber/tree/3.x/) | + +## 后端项目 +| 简介 | 地址 | +|---------------|----------------------------------------------------------------------------------------------------| +| 核心框架项目地址 | [https://gitee.com/smallc/blade-tool](https://gitee.com/smallc/blade-tool) | +| 后端Gitee地址 | [https://gitee.com/smallc/SpringBlade](https://gitee.com/smallc/SpringBlade) | +| 后端Github地址 | [https://github.com/chillzhuang/SpringBlade](https://github.com/chillzhuang/SpringBlade) | +| 后端SpringBoot版 | [https://gitee.com/smallc/SpringBlade/tree/boot/](https://gitee.com/smallc/SpringBlade/tree/boot/) | + +## 安全手册 +| 简介 | 地址 | +|-----------|----------------------------------------------------------------------------------------------------| +| Blade安全手册 | [https://www.kancloud.cn/smallchill/blade-safety](https://www.kancloud.cn/smallchill/blade-safety) | ## 技术文档 -* [SpringBlade开发手册一览](https://gitee.com/smallc/SpringBlade/wikis/SpringBlade开发手册) -* [SpringBlade常见问题集锦](https://sns.bladex.cn/article-14966.html) -* [SpringBlade基于Kuboard部署K8S](https://kuboard.cn/learning/k8s-practice/spring-blade/) -* [SpringBlade基于Rainbond部署](https://www.rainbond.com/docs/micro-service/example/blade) -## 项目地址 -* 核心框架项目地址:[https://gitee.com/smallc/blade-tool](https://gitee.com/smallc/blade-tool) -* 后端Gitee地址:[https://gitee.com/smallc/SpringBlade](https://gitee.com/smallc/SpringBlade) -* 后端Github地址:[https://github.com/chillzhuang/SpringBlade](https://github.com/chillzhuang/SpringBlade) -* 后端SpringBoot版:[https://gitee.com/smallc/SpringBlade/tree/boot/](https://gitee.com/smallc/SpringBlade/tree/boot/) -* 前端框架Sword(基于React):[https://gitee.com/smallc/Sword](https://gitee.com/smallc/Sword) -* 前端框架Saber(基于Vue):[https://gitee.com/smallc/Saber](https://gitee.com/smallc/Saber) -* 前端框架Saber3(基于Vue3):[https://gitee.com/smallc/Saber3](https://gitee.com/smallc/Saber/tree/3.x/) +| 简介 | 地址 | +|---------------------------|--------------------------------------------------------------------------------------------------------------------------| +| SpringBlade开发手册一览 | [https://gitee.com/smallc/SpringBlade/wikis/SpringBlade开发手册](https://gitee.com/smallc/SpringBlade/wikis/SpringBlade开发手册) | +| SpringBlade常见问题集锦 | [https://sns.bladex.cn/article-14966.html](https://sns.bladex.cn/article-14966.html) | +| SpringBlade基于Kuboard部署K8S | [https://kuboard.cn/learning/k8s-practice/spring-blade/](https://kuboard.cn/learning/k8s-practice/spring-blade/) | +| SpringBlade基于Rainbond部署 | [https://www.rainbond.com/docs/micro-service/example/blade](https://www.rainbond.com/docs/micro-service/example/blade) | -# 开源协议 + +## 免费公开课 + + + + + +
+ +## 开源协议 Apache Licence 2.0 ([英文原文](http://www.apache.org/licenses/LICENSE-2.0.html)) Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。 需要满足的条件如下: @@ -76,102 +141,3 @@ Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议 * 允许免费用于学习、毕设、公司项目、私活等,但请保留源码作者信息。 * 对未经过授权和不遵循 Apache 2.0 协议二次开源或者商业化我们将追究到底。 * 参考请注明:参考自 SpringBlade:https://gitee.com/smallc/SpringBlade。 - -## 如何启动 -``` -$ git clone https://gitee.com/smallc/Sword.git -$ cd Sword -$ yarn install -# mock模式 -$ yarn start:mock -# 服务模式 -$ yarn run start 或者 yarn run start:no-mock -# 访问 http://localhost:1888 -# 推荐使用yarn -``` - -# 界面 - -## [BladeX](https://bladex.cn/#/vip) 工作流一览 - - - - - - - - - - - - - -
- -## [Sword](https://gitee.com/smallc/Sword) 界面一览 - - - - - - - - - - - - - - - - - - - - - -
- -## [Saber](https://gitee.com/smallc/Saber) 界面一览 - - - - - - - - - - - - - -
- -## 监控界面一览 - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/package.json b/package.json index 057d1ef..b474310 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,11 @@ { "name": "sword-admin", - "version": "4.0.0", + "version": "4.1.0", "description": "An out-of-box UI solution for enterprise applications", "private": true, "scripts": { "presite": "cd functions && npm install", - "start": "cross-env MOCK=none PORT=1888 umi dev", + "start": "export NODE_OPTIONS=--openssl-legacy-provider && cross-env MOCK=none PORT=1888 umi dev", "start:no-mock": "cross-env MOCK=none PORT=1888 umi dev", "start:mock": "cross-env APP_TYPE=site PORT=1888 umi dev", "build": "umi build", @@ -39,6 +39,7 @@ "bizcharts-plugin-slider": "^2.1.1-beta.1", "classnames": "^2.2.6", "crypto-js": "^4.0.0", + "sm-crypto": "^0.3.13", "dva": "^2.4.1", "enquire-js": "^0.2.1", "hash.js": "^1.1.7", diff --git a/src/defaultSettings.js b/src/defaultSettings.js index 50d34c9..da382e6 100644 --- a/src/defaultSettings.js +++ b/src/defaultSettings.js @@ -16,6 +16,10 @@ module.exports = { disableLocal: false, }, pwa: true, + auth: { + // 使用后端工程 @org.springblade.test.Sm2KeyGenerator 获取 + publicKey: '04e6862d0819ec55e9d7d8bb961ccc8c2b7d86b6845ac333d1d9ab8af6a892cebb3d30f952da4111971908eb02829459170bdd338e7a27fa57d6300dc290d052b5', + }, // 第三方登陆授权地址 authUrl: 'http://localhost/blade-auth/oauth/render', // 报表设计器地址(cloud端口为8108,boot端口为80) diff --git a/src/pages/Dashboard/Workplace.js b/src/pages/Dashboard/Workplace.js index e749326..505a4f7 100644 --- a/src/pages/Dashboard/Workplace.js +++ b/src/pages/Dashboard/Workplace.js @@ -20,7 +20,7 @@ class Workplace extends PureComponent {

- Downloads + Downloads Build Status - + + +
1.[升级]SpringBoot 至 3.2.7
+
2.[升级]SpringCloud 至 2023.0.2
+
3.[升级]AlibabaCloud 至 2023.0.1.0
+
4.[升级]Nacos 至 2.3.2
+
5.[升级]MybatisPlus 至 3.5.7
+
6.[新增]登录认证升级为国密sm2算法,数据库字段无需变动
+
7.[新增]oss内网上传后转换返回外网地址
+
8.[新增]saber2与saber3支持nodejs18编译
+
9.[优化]完善swagger与springdoc的配置
+
10.[优化]重构StringUtil的format方法
+
11.[优化]saveOrUpdate方法增加业务字段更新逻辑
+
1.[升级]JDK 至 Java17
2.[升级]SpringBoot 至 3.2.4
diff --git a/src/services/user.js b/src/services/user.js index 8180a91..eae9499 100644 --- a/src/services/user.js +++ b/src/services/user.js @@ -3,11 +3,13 @@ import request from '../utils/request'; import func from '../utils/Func'; import { getCaptchaKey } from '../utils/authority'; import { captchaMode } from '../defaultSettings'; +import encrypt from '../utils/sm2' // =====================用户=========================== export async function accountLogin(params) { const values = params; + values.password = encrypt(params.password); values.grantType = captchaMode ? 'captcha' : 'password'; values.scope = 'all'; return request('/api/blade-auth/token', { diff --git a/src/utils/sm2.js b/src/utils/sm2.js new file mode 100644 index 0000000..18e24e6 --- /dev/null +++ b/src/utils/sm2.js @@ -0,0 +1,16 @@ +import { sm2 } from 'sm-crypto'; +import { auth } from '../defaultSettings'; + + +/** + * sm2 加密方法 + * @param data + * @returns {*} + */ +export default function encrypt(data) { + try { + return sm2.doEncrypt(data, auth.publicKey, 0); + } catch { + return ''; + } +}