From 6af158fb60c8ffc1137938cec01f0cc98c86bb76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=8F=E8=AF=BA?= <1253070437@qq.com>
Date: Thu, 16 Dec 2021 21:14:07 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=9B=B4=E6=96=B0=E3=80=91=E9=87=8D?=
=?UTF-8?q?=E7=A3=85=E6=8E=A8=E5=87=BA1.8=E7=89=88=E6=9C=AC=EF=BC=8C?=
=?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=9B=BD=E5=AF=86=E7=AE=97=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 29 +-
_sql/数据库文件/snowy-pub.sql | 369 ++++++++----------
_web/package.json | 1 +
_web/src/api/modular/system/loginManage.js | 6 +
.../components/GlobalFooter/GlobalFooter.vue | 2 +-
_web/src/config/router.config.js | 13 -
_web/src/layouts/UserLayout.vue | 2 +-
_web/src/views/Home.vue | 215 ----------
_web/src/views/system/user/index.vue | 2 +-
_web/src/views/userLoginReg/Login.vue | 6 +-
snowy-base/snowy-core/pom.xml | 6 +
.../constant/ConstantContextHolder.java | 21 +
.../vip/xiaonuo/core/cryptogram/keypair.java | 51 +++
.../pojo/cryptogram/CryptogramConfigs.java | 57 +++
.../vip/xiaonuo/core/util/CryptogramUtil.java | 139 +++++++
.../xiaonuo/sys/core/jwt/JwtTokenUtil.java | 9 +-
.../sys/core/log/factory/LogFactory.java | 32 ++
.../auth/service/impl/AuthServiceImpl.java | 14 +-
.../sys/modular/log/entity/SysOpLog.java | 17 +
.../sys/modular/log/entity/SysVisLog.java | 15 +
.../user/controller/SysUserController.java | 6 +-
.../sys/modular/user/entity/SysUser.java | 4 +-
.../user/enums/SysUserExceptionEnum.java | 2 +-
.../modular/user/factory/SysUserFactory.java | 10 +-
.../modular/user/result/SysUserResult.java | 9 +-
.../user/service/impl/SysUserServiceImpl.java | 31 +-
.../modular/user/wrapper/SysUserWrapper.java | 36 ++
27 files changed, 633 insertions(+), 471 deletions(-)
delete mode 100644 _web/src/views/Home.vue
create mode 100644 snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/cryptogram/keypair.java
create mode 100644 snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/pojo/cryptogram/CryptogramConfigs.java
create mode 100644 snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/util/CryptogramUtil.java
create mode 100644 snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/wrapper/SysUserWrapper.java
diff --git a/README.md b/README.md
index 6e73fb63..5b9c7f8a 100644
--- a/README.md
+++ b/README.md
@@ -6,17 +6,23 @@
### 框架介绍
-
Snowy是小诺团队下基于SpringBoot+AntDesignVue开发的Java全新RBAC权限管理系统,前后分离,注释丰富,代码简洁。在国策讲究自主可控的时候,适配国产数据库(金仓、达梦)、主流数据库Mysql、Oracle、Mssql、Postgresql,小诺的产品一致追求简洁干净,一套代码搞定!同时支持国产中间件部署、麒麟操作系统、Windows、Linux部署使用。
-
+Snowy是一款基于国产密码算法后台权限管理系统,其中采用了SM2、SM3、SM4及签名验签,软件层面完全符合等保测评要求,让更多的人认识密码,使用密码。技术框架与密码结合,让前后分离“密”不可分。
+结合SpringBoot+AntDesignVue开发,注释丰富,代码简洁。适配国产数据库(金仓、达梦)、主流数据库Mysql、Oracle、Mssql、Postgresql,小诺的产品一致追求简洁干净,一套代码搞定!同时支持国产中间件部署、麒麟操作系统、Windows、Linux部署使用。
Snowy谐音“小诺”,恰应小诺团队名称;意思为”下雪的、纯洁的“,寓意框架追求简洁至上,大道至简。
+
+
+
+
+
+
-
+
@@ -27,12 +33,6 @@
-
-
-
-
-
-
@@ -55,6 +55,17 @@
+### 密码分步:fire:
+
+| 功能 | 算法类型 |
+| ---------------------- | ------------- |
+| 登录 | SM2前端加密,后端解密 |
+| 登录登出日志 | SM2对登录登出日志做签名完整性保护存储 |
+| 操作日志 | SM2对操作日志做签名完整性保护存储 |
+| Token | SM4(cbc模式)加密,Token不再曝光暴露 |
+| 用户密码 | SM3完整性保护存储,登录时做完整性校验 |
+| 用户手机号 | SM4(cbc模式)加解密使用字段脱敏 |
+
### 视频教程:fire:
| 序号 | 链接地址 |
diff --git a/_sql/数据库文件/snowy-pub.sql b/_sql/数据库文件/snowy-pub.sql
index 8c8b25fa..01997298 100644
--- a/_sql/数据库文件/snowy-pub.sql
+++ b/_sql/数据库文件/snowy-pub.sql
@@ -1,17 +1,17 @@
/*
Navicat Premium Data Transfer
- Source Server : mysql本地数据库
+ Source Server : 本机Mysql
Source Server Type : MySQL
- Source Server Version : 80022
+ Source Server Version : 50710
Source Host : localhost:3306
Source Schema : snowy-pub
Target Server Type : MySQL
- Target Server Version : 80022
+ Target Server Version : 50710
File Encoding : 65001
- Date: 15/04/2021 16:54:55
+ Date: 16/12/2021 21:06:15
*/
SET NAMES utf8mb4;
@@ -22,15 +22,15 @@ SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
DROP TABLE IF EXISTS `sys_app`;
CREATE TABLE `sys_app` (
- `id` bigint(0) NOT NULL COMMENT '主键id',
+ `id` bigint(20) NOT NULL COMMENT '主键id',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '应用名称',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
`active` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否默认激活(Y-是,N-否)',
- `status` tinyint(0) NOT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
+ `status` tinyint(4) NOT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '修改人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统应用表' ROW_FORMAT = Compact;
@@ -38,7 +38,6 @@ CREATE TABLE `sys_app` (
-- Records of sys_app
-- ----------------------------
INSERT INTO `sys_app` VALUES (1265476890672672821, '系统应用', 'system', 'Y', 0, '2020-03-25 19:07:00', 1265476890672672808, '2020-08-15 15:23:05', 1280709549107552257);
-INSERT INTO `sys_app` VALUES (1265476890672672822, '业务应用', 'business', 'N', 2, '2020-03-26 08:40:33', 1265476890672672808, '2020-09-23 22:00:01', 1265476890672672808);
INSERT INTO `sys_app` VALUES (1342445032647098369, '系统工具', 'system_tool', 'N', 0, '2020-12-25 20:20:12', 1265476890672672808, NULL, NULL);
-- ----------------------------
@@ -46,33 +45,29 @@ INSERT INTO `sys_app` VALUES (1342445032647098369, '系统工具', 'system_tool'
-- ----------------------------
DROP TABLE IF EXISTS `sys_area`;
CREATE TABLE `sys_area` (
- `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT,
- `level_code` tinyint(0) UNSIGNED COMMENT '层级',
- `parent_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '父级行政代码',
- `area_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '行政代码',
- `zip_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '邮政编码',
- `city_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '区号',
- `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '名称',
- `short_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '简称',
- `merger_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '组合名',
- `pinyin` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '拼音',
- `lng` decimal(10, 6) COMMENT '经度',
- `lat` decimal(10, 6) COMMENT '纬度',
-PRIMARY KEY (`id`) USING BTREE,
-UNIQUE INDEX `uk_code`(`area_code`) USING BTREE,
-INDEX `idx_parent_code`(`parent_code`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 783563 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '中国行政地区表' ROW_FORMAT = Dynamic;
-
--- ----------------------------
--- Records of sys_area
--- ----------------------------
+ `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+ `level_code` tinyint(3) UNSIGNED NULL DEFAULT NULL COMMENT '层级',
+ `parent_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '父级行政代码',
+ `area_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '行政代码',
+ `zip_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '邮政编码',
+ `city_code` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '区号',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '名称',
+ `short_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '简称',
+ `merger_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '组合名',
+ `pinyin` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '拼音',
+ `lng` decimal(10, 6) NULL DEFAULT NULL COMMENT '经度',
+ `lat` decimal(10, 6) NULL DEFAULT NULL COMMENT '纬度',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `uk_code`(`area_code`) USING BTREE,
+ INDEX `idx_parent_code`(`parent_code`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '中国行政地区表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for sys_code_generate
-- ----------------------------
DROP TABLE IF EXISTS `sys_code_generate`;
CREATE TABLE `sys_code_generate` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`author_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '作者姓名',
`class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类名',
`table_prefix` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否移除表前缀',
@@ -81,26 +76,22 @@ CREATE TABLE `sys_code_generate` (
`package_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '包名称',
`bus_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '业务名',
`table_comment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '功能名',
- `app_code` varchar(255) DEFAULT NULL COMMENT '所属应用',
- `menu_pid` varchar(255) DEFAULT NULL COMMENT '菜单上级',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `app_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属应用',
+ `menu_pid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单上级',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代码生成基础配置' ROW_FORMAT = Dynamic;
--- ----------------------------
--- Records of sys_code_generate
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_code_generate_config
-- ----------------------------
DROP TABLE IF EXISTS `sys_code_generate_config`;
CREATE TABLE `sys_code_generate_config` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `code_gen_id` bigint(0) NULL DEFAULT NULL COMMENT '代码生成主表ID',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `code_gen_id` bigint(20) NULL DEFAULT NULL COMMENT '代码生成主表ID',
`column_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据库字段名',
`java_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'java类字段名',
`data_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '物理类型',
@@ -118,33 +109,29 @@ CREATE TABLE `sys_code_generate_config` (
`column_key_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '主外键名称',
`whether_common` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否是通用字段',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '修改人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '代码生成详细配置' ROW_FORMAT = Dynamic;
--- ----------------------------
--- Records of sys_code_generate_config
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_config
-- ----------------------------
DROP TABLE IF EXISTS `sys_config`;
CREATE TABLE `sys_config` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
`value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '值',
`sys_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否是系统参数(Y-是,N-否)',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
- `status` tinyint(0) NOT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
+ `status` tinyint(4) NOT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
`group_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'DEFAULT' COMMENT '常量所属分类的编码,来自于“常量的分类”字典',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统参数配置表' ROW_FORMAT = Compact;
@@ -175,30 +162,36 @@ INSERT INTO `sys_config` VALUES (1270380786649972739, 'linux/mac本地上传文
INSERT INTO `sys_config` VALUES (1270380786649982740, 'Snowy演示环境', 'SNOWY_DEMO_ENV_FLAG', 'false', 'Y', 'Snowy演示环境的开关,true-打开,false-关闭,如果演示环境开启,则只能读数据不能写数据', 0, 'DEFAULT', '2020-06-09 23:42:37', 1265476890672672808, '2020-09-03 14:38:17', 1265476890672672808);
INSERT INTO `sys_config` VALUES (1270380786649982741, 'Snowy放开XSS过滤的接口', 'SNOWY_UN_XSS_FILTER_URL', '/demo/xssfilter,/demo/unxss', 'Y', '多个url可以用英文逗号隔开', 0, 'DEFAULT', '2020-06-09 23:42:37', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_config` VALUES (1270380786649982742, '单用户登陆的开关', 'SNOWY_ENABLE_SINGLE_LOGIN', 'false', 'Y', '单用户登陆的开关,true-打开,false-关闭,如果一个人登录两次,就会将上一次登陆挤下去', 0, 'DEFAULT', '2020-06-09 23:42:37', 1265476890672672808, NULL, NULL);
-INSERT INTO `sys_config` VALUES (1270380786649982743, '登录验证码的开关', 'SNOWY_CAPTCHA_OPEN', 'true', 'Y', '登录验证码的开关,true-打开,false-关闭', 0, 'DEFAULT', '2020-06-09 23:42:37', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_config` VALUES (1270380786649982743, '登录验证码的开关', 'SNOWY_CAPTCHA_OPEN', 'true', 'Y', '登录验证码的开关,true-打开,false-关闭', 0, 'DEFAULT', '2020-06-09 23:42:37', 1265476890672672808, '2021-12-16 19:43:29', 1265476890672672808);
INSERT INTO `sys_config` VALUES (1280694281648070659, '阿里云定位api接口地址', 'SNOWY_IP_GEO_API', 'http://api01.aliyun.venuscn.com/ip?ip=%s', 'Y', '阿里云定位api接口地址', 0, 'DEFAULT', '2020-07-20 10:44:46', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_config` VALUES (1280694281648070660, '阿里云定位appCode', 'SNOWY_IP_GEO_APP_CODE', '461535aabeae4f34861884d392f5d452', 'Y', '阿里云定位appCode', 0, 'DEFAULT', '2020-07-20 10:44:46', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_config` VALUES (1288309751255412737, 'Oauth用户登录的开关', 'SNOWY_ENABLE_OAUTH_LOGIN', 'true', 'Y', 'Oauth用户登录的开关', 0, 'OAUTH', '2020-07-29 11:05:55', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_config` VALUES (1288310043346743297, 'Oauth码云登录ClientId', 'SNOWY_OAUTH_GITEE_CLIENT_ID', '你的clientId', 'Y', 'Oauth码云登录ClientId', 0, 'OAUTH', '2020-07-29 11:07:05', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_config` VALUES (1288310157876408321, 'Oauth码云登录ClientSecret', 'SNOWY_OAUTH_GITEE_CLIENT_SECRET', '你的clientSecret', 'Y', 'Oauth码云登录ClientSecret', 0, 'OAUTH', '2020-07-29 11:07:32', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_config` VALUES (1288310280056483841, 'Oauth码云登录回调地址', 'SNOWY_OAUTH_GITEE_REDIRECT_URI', 'http://localhost:83/oauth/callback/gitee', 'Y', 'Oauth码云登录回调地址', 0, 'OAUTH', '2020-07-29 11:08:01', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_config` VALUES (1410861340761313282, '在线文档地址', 'SNOWY_ONLY_OFFICE_SERVICE_URL', 'https://xiaonuo.vip/', 'N', 'beizhu', 0, 'DEFAULT', '2021-07-02 15:22:11', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_config` VALUES (1471107941140008961, 'token是否加解密', 'SNOWY_TOKEN_ENCRYPTION_OPEN', 'true', 'Y', 'token是否加解密', 0, 'CRYPTOGRAM', '2021-12-15 21:20:40', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_config` VALUES (1471108086246150145, '操作日志是否加密', 'SNOWY_VISLOG_ENCRYPTION_OPEN', 'true', 'Y', '操作日志是否加密,默认开启', 0, 'CRYPTOGRAM', '2021-12-15 21:21:14', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_config` VALUES (1471108334985154562, '登录登出日志是否加密', 'SNOWY_OPLOG_ENCRYPTION_OPEN', 'true', 'Y', '登录登出日志是否加密', 0, 'CRYPTOGRAM', '2021-12-15 21:22:14', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_config` VALUES (1471108457198784514, '铭感字段值是否加解密', 'SNOWY_FIELD_ENC_DEC_OPEN', 'true', 'Y', '铭感字段值是否加解密,默认开启', 0, 'CRYPTOGRAM', '2021-12-15 21:22:43', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_config` VALUES (1471109091222482946, '是否开启租户功能', 'SNOWY_TENANT_OPEN', 'false', 'Y', '是否开启租户功能,默认关闭', 0, 'DEFAULT', '2021-12-15 21:25:14', 1265476890672672808, NULL, NULL);
-- ----------------------------
-- Table structure for sys_dict_data
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_data`;
CREATE TABLE `sys_dict_data` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `type_id` bigint(0) NOT NULL COMMENT '字典类型id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `type_id` bigint(20) NOT NULL COMMENT '字典类型id',
`value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '值',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
- `sort` int(0) NOT NULL COMMENT '排序',
+ `sort` int(11) NOT NULL COMMENT '排序',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
- `status` tinyint(0) NOT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
+ `status` tinyint(4) NOT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统字典值表' ROW_FORMAT = Compact;
@@ -295,22 +288,23 @@ INSERT INTO `sys_dict_data` VALUES (1358756685030957057, 1358457818733428737, '
INSERT INTO `sys_dict_data` VALUES (1358756800525312001, 1358457818733428737, '小于等于', 'le', 6, '小于等于', 0, '2021-02-08 20:37:20', 1265476890672672808, '2021-02-13 23:45:40', 1265476890672672808);
INSERT INTO `sys_dict_data` VALUES (1360529773814083586, 1358094419419750401, '文本域', 'textarea', 100, '文本域', 0, '2021-02-13 18:02:30', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_dict_data` VALUES (1360606105914732545, 1358457818733428737, '不为空', 'isNotNull', 8, '不为空', 0, '2021-02-13 23:05:49', 1265476890672672808, '2021-02-13 23:45:50', 1265476890672672808);
+INSERT INTO `sys_dict_data` VALUES (1471107569499508737, 1265216211667636235, '加密配置', 'CRYPTOGRAM', 100, '加密配置,默认全开', 0, '2021-12-15 21:19:11', 1265476890672672808, '2021-12-15 21:19:24', 1265476890672672808);
-- ----------------------------
-- Table structure for sys_dict_type
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict_type`;
CREATE TABLE `sys_dict_type` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
- `sort` int(0) NOT NULL COMMENT '排序',
+ `sort` int(11) NOT NULL COMMENT '排序',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
- `status` tinyint(0) NOT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
+ `status` tinyint(4) NOT NULL COMMENT '状态(字典 0正常 1停用 2删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统字典类型表' ROW_FORMAT = Compact;
@@ -344,9 +338,9 @@ INSERT INTO `sys_dict_type` VALUES (1358470065111252994, '代码生成java类型
-- ----------------------------
DROP TABLE IF EXISTS `sys_emp`;
CREATE TABLE `sys_emp` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`job_num` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '工号',
- `org_id` bigint(0) NOT NULL COMMENT '所属机构id',
+ `org_id` bigint(20) NOT NULL COMMENT '所属机构id',
`org_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '所属机构名称',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '员工表' ROW_FORMAT = Compact;
@@ -354,97 +348,91 @@ CREATE TABLE `sys_emp` (
-- ----------------------------
-- Records of sys_emp
-- ----------------------------
-INSERT INTO `sys_emp` VALUES (1275735541155614721, '102', 1265476890672672769, '华夏集团北京分公司');
+INSERT INTO `sys_emp` VALUES (1275735541155614721, '001', 1265476890672672769, '华夏集团新疆分公司');
INSERT INTO `sys_emp` VALUES (1280700700074041345, '110', 1265476890672672771, '研发部');
-INSERT INTO `sys_emp` VALUES (1280709549107552257, '100', 1265476890672672770, '华夏集团成都分公司');
+INSERT INTO `sys_emp` VALUES (1280709549107552257, NULL, 1265476890672672770, '华夏集团成都分公司');
+INSERT INTO `sys_emp` VALUES (1471457941179072513, NULL, 1265476890672672770, '华夏集团成都分公司');
-- ----------------------------
-- Table structure for sys_emp_ext_org_pos
-- ----------------------------
DROP TABLE IF EXISTS `sys_emp_ext_org_pos`;
CREATE TABLE `sys_emp_ext_org_pos` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `emp_id` bigint(0) NOT NULL COMMENT '员工id',
- `org_id` bigint(0) NOT NULL COMMENT '机构id',
- `pos_id` bigint(0) NOT NULL COMMENT '岗位id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `emp_id` bigint(20) NOT NULL COMMENT '员工id',
+ `org_id` bigint(20) NOT NULL COMMENT '机构id',
+ `pos_id` bigint(20) NOT NULL COMMENT '岗位id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '员工附属机构岗位表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_emp_ext_org_pos
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_emp_pos
-- ----------------------------
DROP TABLE IF EXISTS `sys_emp_pos`;
CREATE TABLE `sys_emp_pos` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `emp_id` bigint(0) NOT NULL COMMENT '员工id',
- `pos_id` bigint(0) NOT NULL COMMENT '职位id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `emp_id` bigint(20) NOT NULL COMMENT '员工id',
+ `pos_id` bigint(20) NOT NULL COMMENT '职位id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '员工职位关联表' ROW_FORMAT = Compact;
-- ----------------------------
-- Records of sys_emp_pos
-- ----------------------------
-INSERT INTO `sys_emp_pos` VALUES (1280710811995709441, 1275735541155614721, 1265476890672672787);
INSERT INTO `sys_emp_pos` VALUES (1280710828479324161, 1280700700074041345, 1265476890672672790);
-INSERT INTO `sys_emp_pos` VALUES (1281042262003867649, 1280709549107552257, 1265476890672672787);
+INSERT INTO `sys_emp_pos` VALUES (1471445188582375425, 1275735541155614721, 1265476890672672787);
+INSERT INTO `sys_emp_pos` VALUES (1471457757112041474, 1280709549107552257, 1265476890672672788);
+INSERT INTO `sys_emp_pos` VALUES (1471457941179072514, 1471457941179072513, 1265476890672672788);
-- ----------------------------
-- Table structure for sys_file_info
-- ----------------------------
DROP TABLE IF EXISTS `sys_file_info`;
CREATE TABLE `sys_file_info` (
- `id` bigint(0) NOT NULL COMMENT '主键id',
- `file_location` tinyint(0) NOT NULL COMMENT '文件存储位置(1:阿里云,2:腾讯云,3:minio,4:本地)',
+ `id` bigint(20) NOT NULL COMMENT '主键id',
+ `file_location` tinyint(4) NOT NULL COMMENT '文件存储位置(1:阿里云,2:腾讯云,3:minio,4:本地)',
`file_bucket` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件仓库',
`file_origin_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件名称(上传时候的文件名)',
`file_suffix` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件后缀',
- `file_size_kb` bigint(0) NULL DEFAULT NULL COMMENT '文件大小kb',
+ `file_size_kb` bigint(20) NULL DEFAULT NULL COMMENT '文件大小kb',
`file_size_info` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件大小信息,计算后的',
`file_object_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '存储到bucket的名称(文件唯一标识id)',
`file_path` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '存储路径',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建用户',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建用户',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '修改用户',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改用户',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '文件信息表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_file_info
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `pid` bigint(0) NOT NULL COMMENT '父id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `pid` bigint(20) NOT NULL COMMENT '父id',
`pids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '父ids',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
- `type` tinyint(0) NOT NULL DEFAULT 1 COMMENT '菜单类型(字典 0目录 1菜单 2按钮)',
+ `type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '菜单类型(字典 0目录 1菜单 2按钮)',
`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标',
`router` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由地址',
`component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件地址',
`permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限标识',
`application` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '应用分类(应用编码)',
- `open_type` tinyint(0) NOT NULL COMMENT '打开方式(字典 0无 1组件 2内链 3外链)',
+ `open_type` tinyint(4) NOT NULL COMMENT '打开方式(字典 0无 1组件 2内链 3外链)',
`visible` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否可见(Y-是,N-否)',
`link` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '链接地址',
`redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '重定向地址',
- `weight` tinyint(0) NULL DEFAULT NULL COMMENT '权重(字典 1系统权重 2业务权重)',
- `sort` int(0) NOT NULL COMMENT '排序',
+ `weight` tinyint(4) NULL DEFAULT NULL COMMENT '权重(字典 1系统权重 2业务权重)',
+ `sort` int(11) NOT NULL COMMENT '排序',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
- `status` tinyint(0) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1停用 2删除)',
+ `status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1停用 2删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '修改人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统菜单表' ROW_FORMAT = Compact;
@@ -581,7 +569,6 @@ INSERT INTO `sys_menu` VALUES (1264622039642256571, 1264622039642256531, '[0],[1
INSERT INTO `sys_menu` VALUES (1264622039642256581, 1264622039642256531, '[0],[1264622039642256521],[1264622039642256531],', '文件上传', 'sys_file_mgr_sys_file_upload', 2, NULL, NULL, NULL, 'sysFileInfo:upload', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-06-24 17:34:29', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622039642256591, 1264622039642256531, '[0],[1264622039642256521],[1264622039642256531],', '文件下载', 'sys_file_mgr_sys_file_download', 2, NULL, NULL, NULL, 'sysFileInfo:download', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-06-24 17:34:55', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622039642256601, 1264622039642256531, '[0],[1264622039642256521],[1264622039642256531],', '图片预览', 'sys_file_mgr_sys_file_preview', 2, NULL, NULL, NULL, 'sysFileInfo:preview', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-06-24 17:35:19', 1265476890672672808, NULL, NULL);
-INSERT INTO `sys_menu` VALUES (1264622039642256602, 1264622039642256521, '[0],[1264622039642256521],', '在线文档', 'sys_file_mgr_sys_online_file', 1, NULL, '/fileOnline', '/system/fileOnline/index', NULL, 'system', 1, 'Y', NULL, NULL, 1, 21, NULL, 0, '2020-06-24 17:32:57', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622039642256611, 0, '[0],', '定时任务', 'sys_timers', 0, 'dashboard', '/timers', 'PageView', NULL, 'system', 1, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:17:20', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622039642256621, 1264622039642256611, '[0],[1264622039642256611],', '任务管理', 'sys_timers_mgr', 1, NULL, '/timers', 'system/timers/index', NULL, 'system', 1, 'Y', NULL, NULL, 1, 22, NULL, 0, '2020-07-01 17:18:53', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622039642256631, 1264622039642256621, '[0],[1264622039642256611],[1264622039642256621],', '定时任务查询', 'sys_timers_mgr_page', 2, NULL, NULL, NULL, 'sysTimers:page', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-07-01 17:19:43', 1265476890672672808, NULL, NULL);
@@ -597,57 +584,55 @@ INSERT INTO `sys_menu` VALUES (1264622039642256721, 0, '[0],', '区域管理', '
INSERT INTO `sys_menu` VALUES (1264622039642256731, 1264622039642256721, '[0],[1264622039642256721],', '系统区域', 'sys_area_mgr', 1, NULL, '/area', 'system/area/index', NULL, 'system', 1, 'Y', NULL, NULL, 1, 100, NULL, 0, '2021-05-19 13:57:42', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1264622039642256741, 1264622039642256731, '[0],[1264622039642256721],[1264622039642256731],', '系统区域列表', 'sys_area_mgr_list', 2, NULL, NULL, NULL, 'sysArea:list', 'system', 0, 'Y', NULL, NULL, 1, 100, NULL, 0, '2021-05-19 14:01:39', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_menu` VALUES (1342445437296771074, 0, '[0],', '代码生成', 'code_gen', 1, 'thunderbolt', '/codeGenerate/index', 'gen/codeGenerate/index', NULL, 'system_tool', 1, 'Y', NULL, NULL, 1, 100, NULL, 0, '2020-12-25 20:21:48', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_menu` VALUES (1402971858263420929, 0, '[0],', '测试', '22222', 1, 'border-bottom', '/mains', 'main/test', '', 'system_tool', 1, 'Y', NULL, '', 1, 100, NULL, 2, '2021-06-10 20:52:12', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_menu` VALUES (1402997519589912577, 0, '[0],', '拖动', 'tuodong', 1, 'menu-unfold', '/vxeTable', 'main/vxeTable', '', 'system_tool', 1, 'Y', NULL, '', 1, 100, NULL, 2, '2021-06-10 22:34:10', 1265476890672672808, '2021-06-10 22:34:49', 1265476890672672808);
+INSERT INTO `sys_menu` VALUES (1410859007809736705, 1264622039642256521, '[0],[1264622039642256521],', '在线文档', 'file_oline', 1, '', '/file_oline', 'system/fileOnline/index', '', 'system', 1, 'Y', NULL, '', 1, 100, NULL, 0, '2021-07-02 15:12:55', 1265476890672672808, '2021-08-25 20:02:46', 1265476890672672808);
+INSERT INTO `sys_menu` VALUES (1465891999388803073, 1264622039642255961, '[0],[1264622039642255961],', 'sdfsadsa', 'sdfasdsa', 1, NULL, '/timers1', '', '', 'system', 3, 'Y', 'https://snowy.xiaonuo.vip/timers', '', 1, 100, NULL, 2, '2021-12-01 11:54:22', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_menu` VALUES (1465892080888324097, 1264622039642255961, '[0],[1264622039642255961],', 'asdfasfas', 'sdfasdfas', 1, NULL, '/sdfsfsdf', '', '', 'system', 3, 'Y', 'https://snowy.xiaonuo.vip/timers', '', 1, 100, NULL, 2, '2021-12-01 11:54:42', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_menu` VALUES (1465892187004215298, 1264622039642255961, '[0],[1264622039642255961],', 'rwerwqrwqr', 'rwrqwrwqrq', 1, NULL, '/fsfasfasfa', '', '', 'system', 3, 'Y', 'https://snowy.xiaonuo.vip/timers', '', 1, 100, NULL, 2, '2021-12-01 11:55:07', 1265476890672672808, NULL, NULL);
-- ----------------------------
-- Table structure for sys_notice
-- ----------------------------
DROP TABLE IF EXISTS `sys_notice`;
CREATE TABLE `sys_notice` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`title` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题',
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容',
- `type` tinyint(0) NOT NULL COMMENT '类型(字典 1通知 2公告)',
- `public_user_id` bigint(0) NOT NULL COMMENT '发布人id',
+ `type` tinyint(4) NOT NULL COMMENT '类型(字典 1通知 2公告)',
+ `public_user_id` bigint(20) NOT NULL COMMENT '发布人id',
`public_user_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '发布人姓名',
- `public_org_id` bigint(0) NULL DEFAULT NULL COMMENT '发布机构id',
+ `public_org_id` bigint(20) NULL DEFAULT NULL COMMENT '发布机构id',
`public_org_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布机构名称',
`public_time` datetime(0) NULL DEFAULT NULL COMMENT '发布时间',
`cancel_time` datetime(0) NULL DEFAULT NULL COMMENT '撤回时间',
- `status` tinyint(0) NOT NULL COMMENT '状态(字典 0草稿 1发布 2撤回 3删除)',
+ `status` tinyint(4) NOT NULL COMMENT '状态(字典 0草稿 1发布 2撤回 3删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '修改时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '修改人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '通知表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_notice
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_notice_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_notice_user`;
CREATE TABLE `sys_notice_user` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `notice_id` bigint(0) NOT NULL COMMENT '通知公告id',
- `user_id` bigint(0) NOT NULL COMMENT '用户id',
- `status` tinyint(0) NOT NULL COMMENT '状态(字典 0未读 1已读)',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `notice_id` bigint(20) NOT NULL COMMENT '通知公告id',
+ `user_id` bigint(20) NOT NULL COMMENT '用户id',
+ `status` tinyint(4) NOT NULL COMMENT '状态(字典 0未读 1已读)',
`read_time` datetime(0) NULL DEFAULT NULL COMMENT '阅读时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统用户数据范围表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_notice_user
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_oauth_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_oauth_user`;
CREATE TABLE `sys_oauth_user` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`uuid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '第三方平台的用户唯一id',
`access_token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户授权的token',
`nick_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
@@ -660,24 +645,20 @@ CREATE TABLE `sys_oauth_user` (
`source` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户来源',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户备注(各平台中的用户个人介绍)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建用户',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建用户',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新用户',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新用户',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '第三方认证用户信息表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_oauth_user
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_op_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_op_log`;
CREATE TABLE `sys_op_log` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
- `op_type` tinyint(0) NULL DEFAULT NULL COMMENT '操作类型',
+ `op_type` tinyint(4) NULL DEFAULT NULL COMMENT '操作类型',
`success` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否执行成功(Y-是,N-否)',
`message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '具体消息',
`ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'ip',
@@ -692,30 +673,27 @@ CREATE TABLE `sys_op_log` (
`result` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '返回结果',
`op_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间',
`account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作账号',
+ `sign_value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名数据(除ID外)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统操作日志表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_op_log
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_org
-- ----------------------------
DROP TABLE IF EXISTS `sys_org`;
CREATE TABLE `sys_org` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `pid` bigint(0) NOT NULL COMMENT '父id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `pid` bigint(20) NOT NULL COMMENT '父id',
`pids` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '父ids',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
- `sort` int(0) NOT NULL COMMENT '排序',
+ `sort` int(11) NOT NULL COMMENT '排序',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
- `status` tinyint(0) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1停用 2删除)',
+ `status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1停用 2删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统组织机构表' ROW_FORMAT = Compact;
@@ -723,10 +701,10 @@ CREATE TABLE `sys_org` (
-- Records of sys_org
-- ----------------------------
INSERT INTO `sys_org` VALUES (1265476890651701250, 0, '[0],', '华夏集团', 'hxjt', 100, '华夏集团总公司', 0, '2020-03-26 16:50:53', 1265476890672672808, NULL, NULL);
-INSERT INTO `sys_org` VALUES (1265476890672672769, 1265476890651701250, '[0],[1265476890651701250],', '华夏集团北京分公司', 'hxjt_bj', 100, '华夏集团北京分公司', 0, '2020-03-26 16:55:42', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_org` VALUES (1265476890672672769, 1265476890651701250, '[0],[1265476890651701250],', '华夏集团乌鲁木齐分公司', 'hxjt_wlmq', 100, '华夏集团乌鲁木齐分公司', 0, '2020-03-26 16:55:42', 1265476890672672808, '2021-12-16 20:29:38', 1265476890672672808);
INSERT INTO `sys_org` VALUES (1265476890672672770, 1265476890651701250, '[0],[1265476890651701250],', '华夏集团成都分公司', 'hxjt_cd', 100, '华夏集团成都分公司', 0, '2020-03-26 16:56:02', 1265476890672672808, NULL, NULL);
-INSERT INTO `sys_org` VALUES (1265476890672672771, 1265476890672672769, '[0],[1265476890651701250],[1265476890672672769],', '研发部', 'hxjt_bj_yfb', 100, '华夏集团北京分公司研发部', 0, '2020-03-26 16:56:36', 1265476890672672808, NULL, NULL);
-INSERT INTO `sys_org` VALUES (1265476890672672772, 1265476890672672769, '[0],[1265476890651701250],[1265476890672672769],', '企划部', 'hxjt_bj_qhb', 100, '华夏集团北京分公司企划部', 0, '2020-03-26 16:57:06', 1265476890672672808, NULL, NULL);
+INSERT INTO `sys_org` VALUES (1265476890672672771, 1265476890672672769, '[0],[1265476890651701250],[1265476890672672769],', '研发部', 'hxjt_wlmq_yfb', 100, '华夏集团乌鲁木齐分公司研发部', 0, '2020-03-26 16:56:36', 1265476890672672808, '2021-12-16 20:29:38', 1265476890672672808);
+INSERT INTO `sys_org` VALUES (1265476890672672772, 1265476890672672769, '[0],[1265476890651701250],[1265476890672672769],', '企划部', 'hxjt_wlmq_qhb', 100, '华夏集团乌鲁木齐分公司企划部', 0, '2020-03-26 16:57:06', 1265476890672672808, '2021-12-16 20:29:38', 1265476890672672808);
INSERT INTO `sys_org` VALUES (1265476890672672773, 1265476890672672770, '[0],[1265476890651701250],[1265476890672672770],', '市场部', 'hxjt_cd_scb', 100, '华夏集团成都分公司市场部', 0, '2020-03-26 16:57:35', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_org` VALUES (1265476890672672774, 1265476890672672770, '[0],[1265476890651701250],[1265476890672672770],', '财务部', 'hxjt_cd_cwb', 100, '华夏集团成都分公司财务部', 0, '2020-03-26 16:58:01', 1265476890672672808, NULL, NULL);
INSERT INTO `sys_org` VALUES (1265476890672672775, 1265476890672672773, '[0],[1265476890651701250],[1265476890672672770],[1265476890672672773],', '市场部二部', 'hxjt_cd_scb_2b', 100, '华夏集团成都分公司市场部二部', 0, '2020-04-06 15:36:50', 1265476890672672808, NULL, NULL);
@@ -736,16 +714,16 @@ INSERT INTO `sys_org` VALUES (1265476890672672775, 1265476890672672773, '[0],[12
-- ----------------------------
DROP TABLE IF EXISTS `sys_pos`;
CREATE TABLE `sys_pos` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
- `sort` int(0) NOT NULL COMMENT '排序',
+ `sort` int(11) NOT NULL COMMENT '排序',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
- `status` tinyint(0) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1停用 2删除)',
+ `status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1停用 2删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `CODE_UNI`(`code`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统职位表' ROW_FORMAT = Compact;
@@ -763,24 +741,24 @@ INSERT INTO `sys_pos` VALUES (1265476890672672790, '工作人员', 'gzry', 100,
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
- `id` bigint(0) NOT NULL COMMENT '主键id',
+ `id` bigint(20) NOT NULL COMMENT '主键id',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
`code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编码',
- `sort` int(0) NOT NULL COMMENT '序号',
- `data_scope_type` tinyint(0) NOT NULL DEFAULT 1 COMMENT '数据范围类型(字典 1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据 5自定义数据)',
+ `sort` int(11) NOT NULL COMMENT '序号',
+ `data_scope_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '数据范围类型(字典 1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据 5自定义数据)',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
- `status` tinyint(0) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1停用 2删除)',
+ `status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1停用 2删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统角色表' ROW_FORMAT = Compact;
-- ----------------------------
-- Records of sys_role
-- ----------------------------
-INSERT INTO `sys_role` VALUES (1265476890672672817, '组织架构管理员', 'ent_manager_role', 100, 1, '组织架构管理员', 0, '2020-04-02 19:27:26', 1265476890672672808, '2020-09-12 15:54:07', 1265476890672672808);
+INSERT INTO `sys_role` VALUES (1265476890672672817, '组织架构管理员', 'ent_manager_role', 100, 1, '组织架构管理员', 0, '2020-04-02 19:27:26', 1265476890672672808, '2021-07-07 19:44:03', 1265476890672672808);
INSERT INTO `sys_role` VALUES (1265476890672672818, '权限管理员', 'auth_role', 101, 5, '权限管理员', 0, '2020-04-02 19:28:40', 1265476890672672808, '2020-07-16 10:52:21', 1265476890672672808);
-- ----------------------------
@@ -788,9 +766,9 @@ INSERT INTO `sys_role` VALUES (1265476890672672818, '权限管理员', 'auth_rol
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_data_scope`;
CREATE TABLE `sys_role_data_scope` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `role_id` bigint(0) NOT NULL COMMENT '角色id',
- `org_id` bigint(0) NOT NULL COMMENT '机构id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `role_id` bigint(20) NOT NULL COMMENT '角色id',
+ `org_id` bigint(20) NOT NULL COMMENT '机构id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统角色数据范围表' ROW_FORMAT = Compact;
@@ -812,9 +790,9 @@ INSERT INTO `sys_role_data_scope` VALUES (1292060127645429762, 12654768906726728
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_menu`;
CREATE TABLE `sys_role_menu` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `role_id` bigint(0) NOT NULL COMMENT '角色id',
- `menu_id` bigint(0) NOT NULL COMMENT '菜单id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `role_id` bigint(20) NOT NULL COMMENT '角色id',
+ `menu_id` bigint(20) NOT NULL COMMENT '菜单id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统角色菜单表' ROW_FORMAT = Compact;
@@ -977,40 +955,36 @@ INSERT INTO `sys_role_menu` VALUES (1307864962504564737, 1265476890672672817, 12
-- ----------------------------
DROP TABLE IF EXISTS `sys_sms`;
CREATE TABLE `sys_sms` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`phone_numbers` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号',
`validate_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '短信验证码',
`template_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '短信模板ID',
`biz_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '回执id,可根据该id查询具体的发送状态',
- `status` tinyint(0) NOT NULL COMMENT '发送状态(字典 0 未发送,1 发送成功,2 发送失败,3 失效)',
- `source` tinyint(0) NOT NULL COMMENT '来源(字典 1 app, 2 pc, 3 其他)',
+ `status` tinyint(4) NOT NULL COMMENT '发送状态(字典 0 未发送,1 发送成功,2 发送失败,3 失效)',
+ `source` tinyint(4) NOT NULL COMMENT '来源(字典 1 app, 2 pc, 3 其他)',
`invalid_time` datetime(0) NULL DEFAULT NULL COMMENT '失效时间',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '短信信息发送表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_sms
--- ----------------------------
-
-- ----------------------------
-- Table structure for sys_timers
-- ----------------------------
DROP TABLE IF EXISTS `sys_timers`;
CREATE TABLE `sys_timers` (
- `id` bigint(0) NOT NULL COMMENT '定时器id',
+ `id` bigint(20) NOT NULL COMMENT '定时器id',
`timer_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '任务名称',
`action_class` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行任务的class的类名(实现了TimerTaskRunner接口的类的全称)',
`cron` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '定时任务表达式',
- `job_status` tinyint(0) NULL DEFAULT 0 COMMENT '状态(字典 1运行 2停止)',
+ `job_status` tinyint(4) NULL DEFAULT 0 COMMENT '状态(字典 1运行 2停止)',
`remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注信息',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '定时任务' ROW_FORMAT = Compact;
@@ -1025,43 +999,44 @@ INSERT INTO `sys_timers` VALUES (1304971718170832898, '定时打印一句话', '
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '账号',
- `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
+ `pwd_hash_value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
`nick_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名',
- `avatar` bigint(0) NULL DEFAULT NULL COMMENT '头像',
+ `avatar` bigint(20) NULL DEFAULT NULL COMMENT '头像',
`birthday` date NULL DEFAULT NULL COMMENT '生日',
- `sex` tinyint(0) NOT NULL COMMENT '性别(字典 1男 2女 3未知)',
+ `sex` tinyint(4) NOT NULL COMMENT '性别(字典 1男 2女 3未知)',
`email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
- `phone` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机',
+ `phone` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机',
`tel` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '电话',
`last_login_ip` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '最后登陆IP',
`last_login_time` datetime(0) NULL DEFAULT NULL COMMENT '最后登陆时间',
- `admin_type` tinyint(0) NOT NULL DEFAULT 0 COMMENT '管理员类型(0超级管理员 1非管理员)',
- `status` tinyint(0) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1冻结 2删除)',
+ `admin_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '管理员类型(0超级管理员 1非管理员)',
+ `status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '状态(字典 0正常 1冻结 2删除)',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `create_user` bigint(0) NULL DEFAULT NULL COMMENT '创建人',
+ `create_user` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
- `update_user` bigint(0) NULL DEFAULT NULL COMMENT '更新人',
+ `update_user` bigint(20) NULL DEFAULT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统用户表' ROW_FORMAT = Compact;
-- ----------------------------
-- Records of sys_user
-- ----------------------------
-INSERT INTO `sys_user` VALUES (1265476890672672808, 'superAdmin', '$2a$09$PiCiFNspSlTBE9CakVs8ZOqx0xa03X9wOm01gMasHch4929TpEWCC', '超级管理员', '超级管理员', NULL, '2020-03-18', 1, 'superAdmin@qq.com', '15228937093', '1234567890', '127.0.0.1', '2020-12-25 20:24:27', 1, 0, '2020-05-29 16:39:28', -1, '2020-12-25 20:24:27', -1);
-INSERT INTO `sys_user` VALUES (1275735541155614721, 'yubaoshan', '$2a$09$PiCiFNspSlTBE9CakVs8ZOqx0xa03X9wOm01gMasHch4929TpEWCC', '俞宝山', '俞宝山', NULL, '1992-10-03', 1, 'await183@qq.com', '18200001102', '', '127.0.0.1', '2020-09-23 10:15:10', 2, 0, '2020-06-24 18:20:30', 1265476890672672808, '2020-09-23 10:15:10', -1);
-INSERT INTO `sys_user` VALUES (1280709549107552257, 'xuyuxiang', '$2a$09$PiCiFNspSlTBE9CakVs8ZOqx0xa03X9wOm01gMasHch4929TpEWCC', '就是那个锅', '徐玉祥', NULL, '2020-07-01', 1, NULL, '18200001100', NULL, '127.0.0.1', '2020-09-23 10:16:54', 2, 0, '2020-07-08 11:45:26', 1265476890672672808, '2020-09-23 10:16:54', -1);
+INSERT INTO `sys_user` VALUES (1265476890672672808, 'superAdmin', '207cf410532f92a47dee245ce9b11ff71f578ebd763eb3bbea44ebd043d018fb', '超级管理员', '超级管理员', NULL, '2020-03-18', 1, 'superAdmin@qq.com', '001757f43bd02871093cd7cbfed021f5', '1234567890', '127.0.0.1', '2021-12-16 20:00:36', 1, 0, '2020-05-29 16:39:28', -1, '2021-12-16 20:00:36', -1);
+INSERT INTO `sys_user` VALUES (1275735541155614721, 'yubaoshan', '207cf410532f92a47dee245ce9b11ff71f578ebd763eb3bbea44ebd043d018fb', '俞宝山', '俞宝山', NULL, '1992-10-03', 1, 'await183@qq.com', '001757f43bd02871093cd7cbfed021f5', '', '127.0.0.1', '2020-09-23 10:15:10', 2, 0, '2020-06-24 18:20:30', 1265476890672672808, '2021-12-16 19:42:40', 1265476890672672808);
+INSERT INTO `sys_user` VALUES (1280709549107552257, 'xuyuxiang', '207cf410532f92a47dee245ce9b11ff71f578ebd763eb3bbea44ebd043d018fb', '就是那个锅', '徐玉祥', NULL, '2020-07-01', 1, NULL, 'd5437be867777b7e27893bac3a3605a2', NULL, '127.0.0.1', '2020-09-23 10:16:54', 2, 0, '2020-07-08 11:45:26', 1265476890672672808, '2021-12-16 20:30:42', 1265476890672672808);
+INSERT INTO `sys_user` VALUES (1471457941179072513, 'dongxiayu', '207cf410532f92a47dee245ce9b11ff71f578ebd763eb3bbea44ebd043d018fb', '阿董', '董夏雨', NULL, '2021-12-16', 1, NULL, '24c5ce408af1c56078c4d58098ebc218', NULL, NULL, NULL, 2, 0, '2021-12-16 20:31:26', 1265476890672672808, NULL, NULL);
-- ----------------------------
-- Table structure for sys_user_data_scope
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_data_scope`;
CREATE TABLE `sys_user_data_scope` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `user_id` bigint(0) NOT NULL COMMENT '用户id',
- `org_id` bigint(0) NOT NULL COMMENT '机构id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `user_id` bigint(20) NOT NULL COMMENT '用户id',
+ `org_id` bigint(20) NOT NULL COMMENT '机构id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统用户数据范围表' ROW_FORMAT = Compact;
@@ -1072,33 +1047,24 @@ INSERT INTO `sys_user_data_scope` VALUES (1277459951742840834, 12662770994556354
INSERT INTO `sys_user_data_scope` VALUES (1277459952577507330, 1266277099455635457, 1265476890672672773);
INSERT INTO `sys_user_data_scope` VALUES (1277459953424756737, 1266277099455635457, 1265476890672672775);
INSERT INTO `sys_user_data_scope` VALUES (1277459954267811841, 1266277099455635457, 1265476890672672774);
-INSERT INTO `sys_user_data_scope` VALUES (1280712071570366466, 1275735541155614721, 1265476890672672769);
-INSERT INTO `sys_user_data_scope` VALUES (1280712071570366467, 1275735541155614721, 1265476890672672771);
-INSERT INTO `sys_user_data_scope` VALUES (1280712071578755074, 1275735541155614721, 1265476890672672772);
-- ----------------------------
-- Table structure for sys_user_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
- `id` bigint(0) NOT NULL COMMENT '主键',
- `user_id` bigint(0) NOT NULL COMMENT '用户id',
- `role_id` bigint(0) NOT NULL COMMENT '角色id',
+ `id` bigint(20) NOT NULL COMMENT '主键',
+ `user_id` bigint(20) NOT NULL COMMENT '用户id',
+ `role_id` bigint(20) NOT NULL COMMENT '角色id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统用户角色表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_user_role
--- ----------------------------
-INSERT INTO `sys_user_role` VALUES (1283596900713574402, 1275735541155614721, 1265476890672672817);
-INSERT INTO `sys_user_role` VALUES (1283596949627547649, 1280709549107552257, 1265476890672672818);
-
-- ----------------------------
-- Table structure for sys_vis_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_vis_log`;
CREATE TABLE `sys_vis_log` (
- `id` bigint(0) NOT NULL COMMENT '主键',
+ `id` bigint(20) NOT NULL COMMENT '主键',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
`success` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否执行成功(Y-是,N-否)',
`message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '具体消息',
@@ -1106,14 +1072,11 @@ CREATE TABLE `sys_vis_log` (
`location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地址',
`browser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器',
`os` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统',
- `vis_type` tinyint(0) NOT NULL COMMENT '操作类型(字典 1登入 2登出)',
+ `vis_type` tinyint(4) NOT NULL COMMENT '操作类型(字典 1登入 2登出)',
`vis_time` datetime(0) NULL DEFAULT NULL COMMENT '访问时间',
`account` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '访问账号',
+ `sign_value` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名数据(除ID外)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统访问日志表' ROW_FORMAT = Compact;
--- ----------------------------
--- Records of sys_vis_log
--- ----------------------------
-
SET FOREIGN_KEY_CHECKS = 1;
diff --git a/_web/package.json b/_web/package.json
index 73e63828..18825ed1 100644
--- a/_web/package.json
+++ b/_web/package.json
@@ -32,6 +32,7 @@
"print-js": "^1.0.63",
"raphael": "^2.3.0",
"screenfull": "^5.1.0",
+ "sm-crypto": "^0.3.6",
"viser-vue": "^2.4.6",
"vue": "2.6.10",
"vue-clipboard2": "^0.2.1",
diff --git a/_web/src/api/modular/system/loginManage.js b/_web/src/api/modular/system/loginManage.js
index 15d89090..7534b00b 100644
--- a/_web/src/api/modular/system/loginManage.js
+++ b/_web/src/api/modular/system/loginManage.js
@@ -13,6 +13,12 @@ import { axios } from '@/utils/request'
* @date 2020/5/26 19:06
*/
export function login (parameter) {
+ // 密码采用sm2加密传输密码
+ const sm2 = require('sm-crypto').sm2
+ const publicKey = '04298364ec840088475eae92a591e01284d1abefcda348b47eb324bb521bb03b0b2a5bc393f6b71dabb8f15c99a0050818b56b23f31743b93df9cf8948f15ddb54'
+ const encryptData = sm2.doEncrypt(parameter.password, publicKey, 1)
+ parameter.password = encryptData
+
return axios({
url: '/login',
method: 'post',
diff --git a/_web/src/components/GlobalFooter/GlobalFooter.vue b/_web/src/components/GlobalFooter/GlobalFooter.vue
index 844ba1c6..5be08d69 100644
--- a/_web/src/components/GlobalFooter/GlobalFooter.vue
+++ b/_web/src/components/GlobalFooter/GlobalFooter.vue
@@ -3,7 +3,7 @@
- Copyright © 2020
小诺 All rights reserved. Snowy 1.3
+ Copyright © 2020
小诺开源技术 All rights reserved. Snowy 1.8
diff --git a/_web/src/config/router.config.js b/_web/src/config/router.config.js
index cf098712..b808d761 100644
--- a/_web/src/config/router.config.js
+++ b/_web/src/config/router.config.js
@@ -77,19 +77,6 @@ export const constantRouterMap = [
]
},
- {
- path: '/test',
- component: BlankLayout,
- redirect: '/test/home',
- children: [
- {
- path: 'home',
- name: 'TestHome',
- component: () => import('@/views/Home')
- }
- ]
- },
-
{
path: '/404',
component: () => import(/* webpackChunkName: "fail" */ '@/views/system/exception/404')
diff --git a/_web/src/layouts/UserLayout.vue b/_web/src/layouts/UserLayout.vue
index 5b2983e1..5dfb26a3 100644
--- a/_web/src/layouts/UserLayout.vue
+++ b/_web/src/layouts/UserLayout.vue
@@ -22,7 +22,7 @@
条款
- Copyright © 2020
小诺 All rights reserved. Snowy 1.3
+ Copyright © 2020
小诺开源技术 All rights reserved. Snowy 1.8
diff --git a/_web/src/views/Home.vue b/_web/src/views/Home.vue
deleted file mode 100644
index f67c95f5..00000000
--- a/_web/src/views/Home.vue
+++ /dev/null
@@ -1,215 +0,0 @@
-
-
-
-

-
Welcome to Your Vue.js App
-
-
-
-
-
# Trend 组件
-
-
正常
-
-
-
-
- 工资
- 5%
-
-
- 工作量
- 50%
-
-
- 身体状态
- 50%
-
-
-
-
-
颜色反转
-
-
-
-
- 工资
- 5%
-
-
- 工作量
- 50%
-
-
-
-
-
# AvatarList 组件
-
-
AvatarList
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
# CountDown 组件
-
-
CountDown
-
-
-
-
-
-
-
-
-
-
-
# Ellipsis 组件
-
-
Ellipsis
-
-
- There were injuries alleged in three cases in 2015, and a
- fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall.
-
-
-
-
# NumberInfo 组件
-
-
NumberInfo
-
-
-
-
-
# TagSelect 组件
-
-
TagSelect
-
-
- 类目1
- 类目2
- 类目3
- 类目4
- 类目5
- 类目6
- 类目7
-
-
-
-
# DescriptionList 组件
-
-
DescriptionList
-
-
- 林东东
- 1234567
- XX公司-YY部
- 2018-08-08
- 这段描述很长很长很长很长很长很长很长很长很长很长很长很长很长很长...
-
-
-
-
TagCloud
-
-
-
-
-
-
-
-
-
diff --git a/_web/src/views/system/user/index.vue b/_web/src/views/system/user/index.vue
index 2893fbf0..79909697 100644
--- a/_web/src/views/system/user/index.vue
+++ b/_web/src/views/system/user/index.vue
@@ -23,7 +23,7 @@
-
+
diff --git a/_web/src/views/userLoginReg/Login.vue b/_web/src/views/userLoginReg/Login.vue
index 538b2728..71781e4f 100644
--- a/_web/src/views/userLoginReg/Login.vue
+++ b/_web/src/views/userLoginReg/Login.vue
@@ -230,11 +230,12 @@ export default {
}
const loginParams = { ...values }
delete loginParams.account
- loginParams[!state.loginType ? 'email' : 'account'] = values.account
- loginParams.password = values.password
+ loginParams.account = values.account
+
if (this.tenantOpen) {
loginParams.tenantCode = values.tenantCode
}
+
Login(loginParams)
.then((res) => this.loginSuccess(res))
.catch(err => this.requestFailed(err))
@@ -253,6 +254,7 @@ export default {
*/
verifySuccess(params) {
this.loginParams.code = params.captchaVerification
+ console.log(JSON.stringify(this.loginParams))
this.Login(this.loginParams).then((res) => this.loginSuccess(res))
.catch(err => this.requestFailed(err))
.finally(() => {
diff --git a/snowy-base/snowy-core/pom.xml b/snowy-base/snowy-core/pom.xml
index 5d964165..e6be763e 100644
--- a/snowy-base/snowy-core/pom.xml
+++ b/snowy-base/snowy-core/pom.xml
@@ -71,6 +71,12 @@
h2
-->
+
+ com.antherd
+ sm-crypto
+ 0.3.2
+
+
org.springframework.boot
diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/context/constant/ConstantContextHolder.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/context/constant/ConstantContextHolder.java
index 9fbec626..f764c9e0 100644
--- a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/context/constant/ConstantContextHolder.java
+++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/context/constant/ConstantContextHolder.java
@@ -33,6 +33,7 @@ import cn.hutool.log.Log;
import vip.xiaonuo.core.consts.CommonConstant;
import vip.xiaonuo.core.consts.SymbolConstant;
import vip.xiaonuo.core.exception.ServiceException;
+import vip.xiaonuo.core.pojo.cryptogram.CryptogramConfigs;
import vip.xiaonuo.core.pojo.email.EmailConfigs;
import vip.xiaonuo.core.pojo.oauth.OauthConfigs;
import vip.xiaonuo.core.pojo.sms.AliyunSmsConfigs;
@@ -389,4 +390,24 @@ public class ConstantContextHolder {
public static Boolean getCaptchaOpenFlag() {
return getSysConfigWithDefault("SNOWY_CAPTCHA_OPEN", Boolean.class, true);
}
+
+ /**
+ * 获取加解密的配置
+ *
+ * @author yubaoshan
+ */
+ public static CryptogramConfigs getCryptogramConfigs() {
+ boolean snowyTokenEncDec = getSysConfigWithDefault("SNOWY_TOKEN_ENCRYPTION_OPEN", Boolean.class, true);
+ boolean snowyVisLogEnc = getSysConfigWithDefault("SNOWY_VISLOG_ENCRYPTION_OPEN", Boolean.class, true);
+ boolean snowyOpLogEnc = getSysConfigWithDefault("SNOWY_OPLOG_ENCRYPTION_OPEN", Boolean.class, true);
+ boolean snowyFieldEncDec = getSysConfigWithDefault("SNOWY_FIELD_ENC_DEC_OPEN", Boolean.class, true);
+
+ CryptogramConfigs cryptogramConfigs = new CryptogramConfigs();
+ cryptogramConfigs.setTokenEncDec(snowyTokenEncDec);
+ cryptogramConfigs.setVisLogEnc(snowyVisLogEnc);
+ cryptogramConfigs.setOpLogEnc(snowyOpLogEnc);
+ cryptogramConfigs.setFieldEncDec(snowyFieldEncDec);
+ return cryptogramConfigs;
+ }
+
}
diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/cryptogram/keypair.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/cryptogram/keypair.java
new file mode 100644
index 00000000..e4274626
--- /dev/null
+++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/cryptogram/keypair.java
@@ -0,0 +1,51 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.core.cryptogram;
+
+/**
+ * 基于SM2的秘钥对
+ * (本项目中配置的,自己使用可根据自己的需求进行更换)
+ *
+ * @author yubaoshan
+ */
+public class keypair {
+
+ /**
+ * 公钥
+ */
+ public static String PUBLIC_KEY = "04298364ec840088475eae92a591e01284d1abefcda348b47eb324bb521bb03b0b2a5bc393f6b71dabb8f15c99a0050818b56b23f31743b93df9cf8948f15ddb54";
+
+ /**
+ * 私钥
+ */
+ public static String PRIVATE_KEY = "3037723d47292171677ec8bd7dc9af696c7472bc5f251b2cec07e65fdef22e25";
+
+ /**
+ * SM4的对称秘钥(生产环境需要改成自己使用的)
+ * 16 进制字符串,要求为 128 比特
+ */
+ public static String KEY = "0123456789abcdeffedcba9876543210";
+
+}
diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/pojo/cryptogram/CryptogramConfigs.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/pojo/cryptogram/CryptogramConfigs.java
new file mode 100644
index 00000000..1a51b0b2
--- /dev/null
+++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/pojo/cryptogram/CryptogramConfigs.java
@@ -0,0 +1,57 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.core.pojo.cryptogram;
+
+import lombok.Data;
+
+/**
+ * 框架中加解密配置
+ *
+ * @author yubaoshan
+ **/
+@Data
+public class CryptogramConfigs {
+
+ /**
+ * token是否加解密
+ */
+ private Boolean tokenEncDec;
+
+ /**
+ * 操作日志是否加密
+ */
+ private Boolean opLogEnc;
+
+ /**
+ * 登录登出日志是否加密
+ */
+ private Boolean visLogEnc;
+
+ /**
+ * 铭感字段值是否加解密
+ */
+ private Boolean fieldEncDec;
+
+}
diff --git a/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/util/CryptogramUtil.java b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/util/CryptogramUtil.java
new file mode 100644
index 00000000..10b133bc
--- /dev/null
+++ b/snowy-base/snowy-core/src/main/java/vip/xiaonuo/core/util/CryptogramUtil.java
@@ -0,0 +1,139 @@
+/*
+Copyright [2020] [https://www.xiaonuo.vip]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+
+1.请不要删除和修改根目录下的LICENSE文件。
+2.请不要删除和修改Snowy源码头部的版权声明。
+3.请保留源码和相关描述文件的项目出处,作者声明等。
+4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
+6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.core.util;
+
+import cn.hutool.log.Log;
+import com.antherd.smcrypto.sm2.Sm2;
+import com.antherd.smcrypto.sm3.Sm3;
+import com.antherd.smcrypto.sm4.Sm4;
+import com.antherd.smcrypto.sm4.Sm4Options;
+import vip.xiaonuo.core.cryptogram.keypair;
+
+/**
+ * 加密工具类,本框架目前使用 https://github.com/antherd/sm-crypto 项目中一些加解密方式
+ * 使用小伙伴需要过等保密评相关,请在此处更改为自己的加密方法,或加密机,使用加密机同时需要替换公钥,私钥在内部无法导出,提供加密的方法
+ *
+ * @author yubaoshan
+ */
+public class CryptogramUtil {
+
+ private static final Log log = Log.get();
+
+ /**
+ * 加密方法(Sm2 的专门针对前后端分离,非对称秘钥对的方式,暴露出去的公钥,对传输过程中的密码加个密)
+ *
+ * @author yubaoshan
+ * @param str 待加密数据
+ * @return 加密后的密文
+ */
+ public static String doSm2Encrypt (String str) {
+ return Sm2.doEncrypt(str, keypair.PUBLIC_KEY);
+ }
+
+ /**
+ * 解密方法
+ * 如果采用加密机的方法,用try catch 捕捉异常,返回原文值即可
+ *
+ * @author yubaoshan
+ * @param str 密文
+ * @return 解密后的明文
+ */
+ public static String doSm2Decrypt (String str) {
+ // 解密
+ return Sm2.doDecrypt(str, keypair.PRIVATE_KEY);
+ }
+
+ /**
+ * 加密方法
+ *
+ * @author yubaoshan
+ * @param str 待加密数据
+ * @return 加密后的密文
+ */
+ public static String doEncrypt (String str) {
+ // SM4 加密 cbc模式
+ Sm4Options sm4Options4 = new Sm4Options();
+ sm4Options4.setMode("cbc");
+ sm4Options4.setIv("fedcba98765432100123456789abcdef");
+ return Sm4.encrypt(str, keypair.KEY, sm4Options4);
+ }
+
+ /**
+ * 解密方法
+ * 如果采用加密机的方法,用try catch 捕捉异常,返回原文值即可
+ *
+ * @author yubaoshan
+ * @param str 密文
+ * @return 解密后的明文
+ */
+ public static String doDecrypt (String str) {
+ // 解密,cbc 模式,输出 utf8 字符串
+ Sm4Options sm4Options8 = new Sm4Options();
+ sm4Options8.setMode("cbc");
+ sm4Options8.setIv("fedcba98765432100123456789abcdef");
+ String docString = Sm4.decrypt(str, keypair.KEY, sm4Options8);
+ if (docString.equals("")) {
+ log.warn(">>> 字段解密失败,返回原文值:{}", str);
+ return str;
+ } else {
+ return docString;
+ }
+ }
+
+ /**
+ * 纯签名
+ *
+ * @author yubaoshan
+ * @param str 待签名数据
+ * @return 签名结果
+ */
+ public static String doSignature (String str) {
+ return Sm2.doSignature(str, keypair.PRIVATE_KEY);
+ }
+
+ /**
+ * 验证签名结果
+ *
+ * @author yubaoshan
+ * @param originalStr 签名原文数据
+ * @param str 签名结果
+ * @return 是否通过
+ */
+ public static boolean doVerifySignature (String originalStr, String str) {
+ return Sm2.doVerifySignature(originalStr, str, keypair.PUBLIC_KEY);
+ }
+
+ /**
+ * 通过杂凑算法取得hash值,用于做数据完整性保护
+ *
+ * @author yubaoshan
+ * @param str 字符串
+ * @return hash 值
+ */
+ public static String doHashValue (String str) {
+ return Sm3.sm3(str);
+ }
+
+}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/core/jwt/JwtTokenUtil.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/core/jwt/JwtTokenUtil.java
index 4ddc6a67..a22f29a5 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/core/jwt/JwtTokenUtil.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/core/jwt/JwtTokenUtil.java
@@ -30,7 +30,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import io.jsonwebtoken.*;
import vip.xiaonuo.core.context.constant.ConstantContextHolder;
-
+import vip.xiaonuo.core.util.CryptogramUtil;
import java.util.Date;
/**
@@ -50,13 +50,18 @@ public class JwtTokenUtil {
public static String generateToken(JwtPayLoad jwtPayLoad) {
DateTime expirationDate = DateUtil.offsetSecond(new Date(), Convert.toInt(ConstantContextHolder.getTokenExpireSec()));
- return Jwts.builder()
+ String jwtToken = Jwts.builder()
.setClaims(BeanUtil.beanToMap(jwtPayLoad))
.setSubject(jwtPayLoad.getUserId().toString())
.setIssuedAt(new Date())
.setExpiration(expirationDate)
.signWith(SignatureAlgorithm.HS512, ConstantContextHolder.getJwtSecret())
.compact();
+ if (ConstantContextHolder.getCryptogramConfigs().getTokenEncDec()) {
+ // 加密token
+ return CryptogramUtil.doEncrypt(jwtToken);
+ }
+ return jwtToken;
}
/**
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/core/log/factory/LogFactory.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/core/log/factory/LogFactory.java
index c3fc9671..908ce446 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/core/log/factory/LogFactory.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/core/log/factory/LogFactory.java
@@ -28,6 +28,8 @@ import cn.hutool.core.date.DateTime;
import org.aspectj.lang.JoinPoint;
import vip.xiaonuo.core.annotion.BusinessLog;
import vip.xiaonuo.core.consts.SymbolConstant;
+import vip.xiaonuo.core.context.constant.ConstantContextHolder;
+import vip.xiaonuo.core.util.CryptogramUtil;
import vip.xiaonuo.core.util.JoinPointUtil;
import vip.xiaonuo.sys.core.enums.LogSuccessStatusEnum;
import vip.xiaonuo.sys.core.enums.VisLogTypeEnum;
@@ -65,6 +67,9 @@ public class LogFactory {
sysVisLog.setMessage(VisLogTypeEnum.LOGIN.getMessage() +
LogSuccessStatusEnum.FAIL.getMessage() + SymbolConstant.COLON + failMessage);
}
+ if (ConstantContextHolder.getCryptogramConfigs().getVisLogEnc()) {
+ SysVisLogSign(sysVisLog);
+ }
}
/**
@@ -80,6 +85,9 @@ public class LogFactory {
sysVisLog.setVisType(VisLogTypeEnum.EXIT.getCode());
sysVisLog.setVisTime(DateTime.now());
sysVisLog.setAccount(account);
+ if (ConstantContextHolder.getCryptogramConfigs().getVisLogEnc()) {
+ SysVisLogSign(sysVisLog);
+ }
}
/**
@@ -93,6 +101,9 @@ public class LogFactory {
sysOpLog.setSuccess(LogSuccessStatusEnum.SUCCESS.getCode());
sysOpLog.setResult(result);
sysOpLog.setMessage(LogSuccessStatusEnum.SUCCESS.getMessage());
+ if (ConstantContextHolder.getCryptogramConfigs().getOpLogEnc()) {
+ SysOpLogSign(sysOpLog);
+ }
}
/**
@@ -105,6 +116,9 @@ public class LogFactory {
fillCommonSysOpLog(sysOpLog, account, businessLog, joinPoint);
sysOpLog.setSuccess(LogSuccessStatusEnum.FAIL.getCode());
sysOpLog.setMessage(Arrays.toString(exception.getStackTrace()));
+ if (ConstantContextHolder.getCryptogramConfigs().getOpLogEnc()) {
+ SysOpLogSign(sysOpLog);
+ }
}
/**
@@ -161,4 +175,22 @@ public class LogFactory {
return sysOpLog;
}
+ /**
+ * 构建登录登出日志完整性保护(数据签名)
+ */
+ private static SysVisLog SysVisLogSign (SysVisLog sysVisLog) {
+ String sysVisLogStr = sysVisLog.toString().replaceAll(" +","");
+ sysVisLog.setSignValue(CryptogramUtil.doSignature(sysVisLogStr));
+ return sysVisLog;
+ }
+
+ /**
+ * 构建操作日志完整性保护(摘要)
+ */
+ private static SysOpLog SysOpLogSign (SysOpLog sysOpLog) {
+ String sysVisLogStr = sysOpLog.toString();
+ sysOpLog.setSignValue(CryptogramUtil.doHashValue(sysVisLogStr));
+ return sysOpLog;
+ }
+
}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/impl/AuthServiceImpl.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/impl/AuthServiceImpl.java
index ecacb291..626c6cdf 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/impl/AuthServiceImpl.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/auth/service/impl/AuthServiceImpl.java
@@ -35,7 +35,6 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -54,6 +53,7 @@ import vip.xiaonuo.core.tenant.entity.TenantInfo;
import vip.xiaonuo.core.tenant.exception.TenantException;
import vip.xiaonuo.core.tenant.exception.enums.TenantExceptionEnum;
import vip.xiaonuo.core.tenant.service.TenantInfoService;
+import vip.xiaonuo.core.util.CryptogramUtil;
import vip.xiaonuo.core.util.HttpServletUtil;
import vip.xiaonuo.core.util.IpAddressUtil;
import vip.xiaonuo.sys.core.cache.UserCache;
@@ -101,10 +101,13 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
throw new AuthException(AuthExceptionEnum.ACCOUNT_PWD_ERROR);
}
- String passwordBcrypt = sysUser.getPassword();
+ String passwordHashValue = sysUser.getPwdHashValue();
+
+ // 解密密码(这里是前端传来的,如果不需要可将其干掉,这里不做开关)
+ password = CryptogramUtil.doSm2Decrypt(password);
//验证账号密码是否正确
- if (ObjectUtil.isEmpty(passwordBcrypt) || !BCrypt.checkpw(password, passwordBcrypt)) {
+ if (ObjectUtil.isEmpty(passwordHashValue) || !passwordHashValue.equals(CryptogramUtil.doHashValue(password))) {
LogManager.me().executeLoginLog(sysUser.getAccount(), LogSuccessStatusEnum.FAIL.getCode(), AuthExceptionEnum.ACCOUNT_PWD_ERROR.getMessage());
throw new AuthException(AuthExceptionEnum.ACCOUNT_PWD_ERROR);
}
@@ -186,6 +189,11 @@ public class AuthServiceImpl implements AuthService, UserDetailsService {
} catch (StringIndexOutOfBoundsException e) {
throw new AuthException(AuthExceptionEnum.NOT_VALID_TOKEN_TYPE);
}
+ // 判断是否开启了加密
+ if (ConstantContextHolder.getCryptogramConfigs().getTokenEncDec()) {
+ // 解密token
+ authToken = CryptogramUtil.doDecrypt(authToken);
+ }
}
return authToken;
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/log/entity/SysOpLog.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/log/entity/SysOpLog.java
index 213a38b7..427c8c07 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/log/entity/SysOpLog.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/log/entity/SysOpLog.java
@@ -144,4 +144,21 @@ public class SysOpLog {
* 操作人
*/
private String account;
+
+ /**
+ * 签名数据(ID除外)
+ */
+ private String signValue;
+
+ /**
+ * 重写tostring方法 并去除所有空格
+ */
+ @Override
+ public String toString () {
+ String toStr = name + opType + success + message + ip + location + browser
+ + os + url + className + methodName + reqMethod + param + result
+ + opTime + account;
+ return toStr.replaceAll(" +","");
+ }
+
}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/log/entity/SysVisLog.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/log/entity/SysVisLog.java
index 1ed8b018..13c78236 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/log/entity/SysVisLog.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/log/entity/SysVisLog.java
@@ -108,4 +108,19 @@ public class SysVisLog {
* 访问人
*/
private String account;
+
+ /**
+ * 签名数据(ID除外)
+ */
+ private String signValue;
+
+ /**
+ * 重写tostring方法
+ */
+ @Override
+ public String toString(){
+ String toStr = name + success + message + ip + location + browser
+ + os + visType + visTime + account;
+ return toStr.replaceAll(" +","");
+ }
}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/controller/SysUserController.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/controller/SysUserController.java
index 8a864605..6345716c 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/controller/SysUserController.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/controller/SysUserController.java
@@ -32,12 +32,13 @@ import org.springframework.web.bind.annotation.RestController;
import vip.xiaonuo.core.annotion.BusinessLog;
import vip.xiaonuo.core.annotion.DataScope;
import vip.xiaonuo.core.annotion.Permission;
+import vip.xiaonuo.core.annotion.Wrapper;
import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum;
import vip.xiaonuo.core.pojo.response.ResponseData;
import vip.xiaonuo.core.pojo.response.SuccessResponseData;
import vip.xiaonuo.sys.modular.user.param.SysUserParam;
import vip.xiaonuo.sys.modular.user.service.SysUserService;
-
+import vip.xiaonuo.sys.modular.user.wrapper.SysUserWrapper;
import javax.annotation.Resource;
import java.util.List;
@@ -63,6 +64,7 @@ public class SysUserController {
@DataScope
@GetMapping("/sysUser/page")
@BusinessLog(title = "系统用户_查询", opType = LogAnnotionOpTypeEnum.QUERY)
+ @Wrapper(SysUserWrapper.class)
public ResponseData page(SysUserParam sysUserParam) {
return new SuccessResponseData(sysUserService.page(sysUserParam));
}
@@ -121,6 +123,7 @@ public class SysUserController {
@Permission
@GetMapping("/sysUser/detail")
@BusinessLog(title = "系统用户_查看", opType = LogAnnotionOpTypeEnum.DETAIL)
+ @Wrapper(SysUserWrapper.class)
public ResponseData detail(@Validated(SysUserParam.detail.class) SysUserParam sysUserParam) {
return new SuccessResponseData(sysUserService.detail(sysUserParam));
}
@@ -274,4 +277,5 @@ public class SysUserController {
public ResponseData selector(SysUserParam sysUserParam) {
return new SuccessResponseData(sysUserService.selector(sysUserParam));
}
+
}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java
index ae84dee3..5515624d 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/entity/SysUser.java
@@ -56,9 +56,9 @@ public class SysUser extends BaseEntity {
private String account;
/**
- * 密码
+ * 密码哈希值
*/
- private String password;
+ private String pwdHashValue;
/**
* 昵称
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/enums/SysUserExceptionEnum.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/enums/SysUserExceptionEnum.java
index 2ac7726a..3cb015a4 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/enums/SysUserExceptionEnum.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/enums/SysUserExceptionEnum.java
@@ -51,7 +51,7 @@ public enum SysUserExceptionEnum implements AbstractBaseExceptionEnum {
/**
* 原密码错误
*/
- USER_PWD_ERROR(3, "原密码错误,请检查password参数"),
+ USER_PWD_ERROR(3, "原密码错误,完整性校验失败,请检查password参数"),
/**
* 新密码与原密码相同
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/factory/SysUserFactory.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/factory/SysUserFactory.java
index ceb732e4..7be8f6b8 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/factory/SysUserFactory.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/factory/SysUserFactory.java
@@ -25,9 +25,9 @@ Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
package vip.xiaonuo.sys.modular.user.factory;
import cn.hutool.core.util.ObjectUtil;
-import org.springframework.security.crypto.bcrypt.BCrypt;
import vip.xiaonuo.core.context.constant.ConstantContextHolder;
import vip.xiaonuo.core.enums.CommonStatusEnum;
+import vip.xiaonuo.core.util.CryptogramUtil;
import vip.xiaonuo.sys.core.enums.AdminTypeEnum;
import vip.xiaonuo.sys.core.enums.SexEnum;
import vip.xiaonuo.sys.modular.user.entity.SysUser;
@@ -59,12 +59,12 @@ public class SysUserFactory {
* @date 2020/3/23 16:50
*/
public static void fillBaseUserInfo(SysUser sysUser) {
- //密码为空则设置密码
- if (ObjectUtil.isEmpty(sysUser.getPassword())) {
+ //密码为空则设置密码(密码都为哈希值哦)
+ if (ObjectUtil.isEmpty(sysUser.getPwdHashValue())) {
//没有密码则设置默认密码
String password = ConstantContextHolder.getDefaultPassWord();
- //设置密码为Md5加密后的密码
- sysUser.setPassword(BCrypt.hashpw(password, BCrypt.gensalt()));
+ //设置密码为Sm3的哈希值,这里代表保护密码的完整性
+ sysUser.setPwdHashValue(CryptogramUtil.doHashValue(password));
}
if (ObjectUtil.isEmpty(sysUser.getAvatar())) {
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/result/SysUserResult.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/result/SysUserResult.java
index 5f473f53..48139ede 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/result/SysUserResult.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/result/SysUserResult.java
@@ -26,9 +26,11 @@ package vip.xiaonuo.sys.modular.user.result;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
+import vip.xiaonuo.core.pojo.base.wrapper.BaseWrapper;
import vip.xiaonuo.sys.modular.emp.result.SysEmpInfo;
import java.util.Date;
+import java.util.Map;
/**
* 系统用户结果
@@ -37,7 +39,7 @@ import java.util.Date;
* @date 2020/4/2 9:19
*/
@Data
-public class SysUserResult {
+public class SysUserResult implements BaseWrapper {
/**
* 主键
@@ -99,4 +101,9 @@ public class SysUserResult {
* 状态(字典 0正常 1停用 2删除)
*/
private Integer status;
+
+ @Override
+ public Map doWrap(Object beWrappedModel) {
+ return null;
+ }
}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java
index ea4d44ff..8b5d8843 100644
--- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java
@@ -36,7 +36,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import me.zhyd.oauth.enums.AuthUserGender;
import me.zhyd.oauth.model.AuthUser;
-import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import vip.xiaonuo.core.consts.CommonConstant;
@@ -50,6 +49,7 @@ import vip.xiaonuo.core.exception.enums.PermissionExceptionEnum;
import vip.xiaonuo.core.exception.enums.StatusExceptionEnum;
import vip.xiaonuo.core.factory.PageFactory;
import vip.xiaonuo.core.pojo.page.PageResult;
+import vip.xiaonuo.core.util.CryptogramUtil;
import vip.xiaonuo.core.util.PoiUtil;
import vip.xiaonuo.sys.core.enums.AdminTypeEnum;
import vip.xiaonuo.sys.core.enums.OauthSexEnum;
@@ -67,10 +67,8 @@ import vip.xiaonuo.sys.modular.user.result.SysUserResult;
import vip.xiaonuo.sys.modular.user.service.SysUserDataScopeService;
import vip.xiaonuo.sys.modular.user.service.SysUserRoleService;
import vip.xiaonuo.sys.modular.user.service.SysUserService;
-
import javax.annotation.Resource;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
/**
* 系统用户service接口实现类
@@ -108,8 +106,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
//根据关键字模糊查询(姓名,账号,手机号)
if (ObjectUtil.isNotEmpty(sysUserParam.getSearchValue())) {
queryWrapper.and(q -> q.like("sys_user.account", sysUserParam.getSearchValue())
- .or().like("sys_user.name", sysUserParam.getSearchValue())
- .or().like("sys_user.phone", sysUserParam.getSearchValue()));
+ .or().like("sys_user.name", sysUserParam.getSearchValue()));
}
//根据员工所属机构查询
if (ObjectUtil.isNotEmpty(sysUserParam.getSysEmpParam())) {
@@ -140,6 +137,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
queryWrapper.in("sys_emp.org_id", dataScopeSet);
}
}
+
return new PageResult<>(this.baseMapper.page(PageFactory.defaultPage(), queryWrapper));
}
@@ -189,7 +187,11 @@ public class SysUserServiceImpl extends ServiceImpl impl
BeanUtil.copyProperties(sysUserParam, sysUser);
SysUserFactory.fillAddCommonUserInfo(sysUser);
if(ObjectUtil.isNotEmpty(sysUserParam.getPassword())) {
- sysUser.setPassword(BCrypt.hashpw(sysUserParam.getPassword(), BCrypt.gensalt()));
+ sysUser.setPwdHashValue(CryptogramUtil.doHashValue(sysUserParam.getPassword()));
+ }
+ // 对铭感字段(手机号进行加密保护)
+ if (ConstantContextHolder.getCryptogramConfigs().getFieldEncDec()) {
+ sysUser.setPhone(CryptogramUtil.doEncrypt(sysUserParam.getPhone()));
}
this.save(sysUser);
Long sysUserId = sysUser.getId();
@@ -263,8 +265,15 @@ public class SysUserServiceImpl extends ServiceImpl impl
//设置密码
SysUserFactory.fillBaseUserInfo(sysUser);
if(ObjectUtil.isNotEmpty(sysUserParam.getPassword())) {
- sysUser.setPassword(BCrypt.hashpw(sysUserParam.getPassword(), BCrypt.gensalt()));
+ // 将其哈希掉,存进去
+ sysUser.setPwdHashValue(CryptogramUtil.doHashValue(sysUserParam.getPassword()));
}
+
+ // 对铭感字段(手机号进行加密保护)
+ if (ConstantContextHolder.getCryptogramConfigs().getFieldEncDec()) {
+ sysUser.setPhone(CryptogramUtil.doEncrypt(sysUserParam.getPhone()));
+ }
+
this.updateById(sysUser);
Long sysUserId = sysUser.getId();
//编辑员工信息
@@ -371,10 +380,10 @@ public class SysUserServiceImpl extends ServiceImpl impl
throw new ServiceException(SysUserExceptionEnum.USER_PWD_REPEAT);
}
//原密码错误
- if (!BCrypt.checkpw(sysUserParam.getPassword(), sysUser.getPassword())) {
+ if (!sysUser.getPwdHashValue().equals(CryptogramUtil.doHashValue(sysUserParam.getPassword()))) {
throw new ServiceException(SysUserExceptionEnum.USER_PWD_ERROR);
}
- sysUser.setPassword(BCrypt.hashpw(sysUserParam.getNewPassword(), BCrypt.gensalt()));
+ sysUser.setPwdHashValue(CryptogramUtil.doHashValue(sysUserParam.getNewPassword()));
this.updateById(sysUser);
}
@@ -420,7 +429,7 @@ public class SysUserServiceImpl extends ServiceImpl impl
public void resetPwd(SysUserParam sysUserParam) {
SysUser sysUser = this.querySysUser(sysUserParam);
String password = ConstantContextHolder.getDefaultPassWord();
- sysUser.setPassword(BCrypt.hashpw(password, BCrypt.gensalt()));
+ sysUser.setPwdHashValue(CryptogramUtil.doHashValue(password));
this.updateById(sysUser);
}
diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/wrapper/SysUserWrapper.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/wrapper/SysUserWrapper.java
new file mode 100644
index 00000000..734ea7ac
--- /dev/null
+++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/user/wrapper/SysUserWrapper.java
@@ -0,0 +1,36 @@
+package vip.xiaonuo.sys.modular.user.wrapper;
+
+import cn.hutool.core.util.ObjectUtil;
+import vip.xiaonuo.core.context.constant.ConstantContextHolder;
+import vip.xiaonuo.core.pojo.base.wrapper.BaseWrapper;
+import vip.xiaonuo.core.util.CryptogramUtil;
+import vip.xiaonuo.sys.modular.user.result.SysUserResult;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 用户管理的包装类
+ *
+ * @author yubaoshan
+ */
+public class SysUserWrapper implements BaseWrapper {
+
+ @Override
+ public Map doWrap(SysUserResult sysUserResult) {
+ Map map = new HashMap<>();
+
+ // 是否开启用户表字段加解密,如果是被加密的,返回列表时需要脱敏
+ if (ConstantContextHolder.getCryptogramConfigs().getFieldEncDec()) {
+ if (ObjectUtil.isNotEmpty(sysUserResult.getPhone())) {
+ map.put("phone", CryptogramUtil.doDecrypt(sysUserResult.getPhone()));
+ }
+ }
+
+ // 下面这里其他的字段,需要做翻译脱敏的,下面处理即可
+
+ return map;
+ }
+
+}