Commit ec6edc2e64b35b47a0198a67b85dee446ad52c16
1 parent
ccf5b4ec
构建前后端分离/合并打包pom配置,少量代码格式化
Signed-off-by: TanYibin <5491541@qq.com>
Showing
21 changed files
with
1585 additions
and
1461 deletions
.gitignore
ant-design-vue-jeecg/.gitignore
ant-design-vue-jeecg/idea.config.js
ant-design-vue-jeecg/pom.xml
... | ... | @@ -10,4 +10,108 @@ |
10 | 10 | </parent> |
11 | 11 | |
12 | 12 | <artifactId>ant-design-vue-jeecg</artifactId> |
13 | + <packaging>pom</packaging> | |
14 | + | |
15 | + <build> | |
16 | + <plugins> | |
17 | + <!-- 删除前端静态资源目录 --> | |
18 | + <plugin> | |
19 | + <groupId>org.apache.maven.plugins</groupId> | |
20 | + <artifactId>maven-clean-plugin</artifactId> | |
21 | + <configuration> | |
22 | + <filesets> | |
23 | + <fileset> | |
24 | + <!-- Vue项目打包自动生成的dist目录 --> | |
25 | + <directory>${project.parent.basedir}/ant-design-vue-jeecg/dist</directory> | |
26 | + </fileset> | |
27 | + <fileset> | |
28 | + <!-- 前端资源目录,即存放前端包目录 --> | |
29 | + <directory>${project.parent.basedir}/huaheng-wms-core/src/main/resources/static</directory> | |
30 | + </fileset> | |
31 | + </filesets> | |
32 | + </configuration> | |
33 | + </plugin> | |
34 | + <!-- 为项目本地下载/安装Node和NPM 运行npm install命令 --> | |
35 | + <plugin> | |
36 | + <groupId>com.github.eirslett</groupId> | |
37 | + <artifactId>frontend-maven-plugin</artifactId> | |
38 | + <version>1.6</version> | |
39 | + <configuration> | |
40 | + <workingDirectory>${project.parent.basedir}/ant-design-vue-jeecg</workingDirectory> | |
41 | + </configuration> | |
42 | + <executions> | |
43 | + <execution> | |
44 | + <id>install node and npm</id> | |
45 | + <goals> | |
46 | + <goal>install-node-and-npm</goal> | |
47 | + </goals> | |
48 | + <configuration> | |
49 | + <nodeVersion>v16.19.0</nodeVersion> | |
50 | + <npmVersion>7.24.0</npmVersion> | |
51 | + </configuration> | |
52 | + </execution> | |
53 | + <!-- Install all project dependencies --> | |
54 | + <execution> | |
55 | + <id>npm install</id> | |
56 | + <goals> | |
57 | + <goal>npm</goal> | |
58 | + </goals> | |
59 | + <phase>generate-resources</phase> | |
60 | + <configuration> | |
61 | + <arguments>install</arguments> | |
62 | + </configuration> | |
63 | + </execution> | |
64 | + <!-- Build and minify static files --> | |
65 | + <execution> | |
66 | + <id>npm run build</id> | |
67 | + <goals> | |
68 | + <goal>npm</goal> | |
69 | + </goals> | |
70 | + <configuration> | |
71 | + <arguments>run build</arguments> | |
72 | + </configuration> | |
73 | + </execution> | |
74 | + </executions> | |
75 | + </plugin> | |
76 | + <!-- 复制前端静态资源目录 --> | |
77 | + <plugin> | |
78 | + <groupId>org.apache.maven.plugins</groupId> | |
79 | + <artifactId>maven-resources-plugin</artifactId> | |
80 | + <!-- 避免font文件的二进制文件格式压缩破坏 --> | |
81 | + <configuration> | |
82 | + <nonFilteredFileExtensions> | |
83 | + <nonFilteredFileExtension>woff</nonFilteredFileExtension> | |
84 | + <nonFilteredFileExtension>woff2</nonFilteredFileExtension> | |
85 | + <nonFilteredFileExtension>eot</nonFilteredFileExtension> | |
86 | + <nonFilteredFileExtension>ttf</nonFilteredFileExtension> | |
87 | + <nonFilteredFileExtension>svg</nonFilteredFileExtension> | |
88 | + </nonFilteredFileExtensions> | |
89 | + </configuration> | |
90 | + <executions> | |
91 | + <execution> | |
92 | + <id>copy static</id> | |
93 | + <phase>generate-resources</phase> | |
94 | + <goals> | |
95 | + <goal>copy-resources</goal> | |
96 | + </goals> | |
97 | + <configuration> | |
98 | + <!-- 复制前端打包文件到这里 --> | |
99 | + <outputDirectory>${project.parent.basedir}/huaheng-wms-core/src/main/resources/static</outputDirectory> | |
100 | + <overwrite>true</overwrite> | |
101 | + <encoding>UTF-8</encoding> | |
102 | + <resources> | |
103 | + <resource> | |
104 | + <!-- 从前端打包的dist目录进行指定文件、文件夹内容的复制,具体根据实际前端代码及目录结构进行配置 --> | |
105 | + <directory>${project.parent.basedir}/ant-design-vue-jeecg/dist</directory> | |
106 | + <includes> | |
107 | + <include>**</include> | |
108 | + </includes> | |
109 | + </resource> | |
110 | + </resources> | |
111 | + </configuration> | |
112 | + </execution> | |
113 | + </executions> | |
114 | + </plugin> | |
115 | + </plugins> | |
116 | + </build> | |
13 | 117 | </project> |
... | ... |
ant-design-vue-jeecg/public/static/config.js
... | ... | @@ -2,10 +2,10 @@ |
2 | 2 | * 存放配置常量(当值不为空时会覆盖env配置) |
3 | 3 | */ |
4 | 4 | window._CONFIG = { |
5 | - //接口父路径 | |
5 | + // 接口父路径 | |
6 | 6 | VUE_APP_API_BASE_URL: '', |
7 | - //单点登录地址 | |
7 | + // 单点登录地址 | |
8 | 8 | VUE_APP_CAS_BASE_URL: '', |
9 | - //文件预览路径 | |
9 | + // 文件预览路径 | |
10 | 10 | VUE_APP_ONLINE_BASE_URL: '' |
11 | -} | |
12 | 11 | \ No newline at end of file |
12 | +} | |
... | ... |
ant-design-vue-jeecg/src/components/layouts/TabLayout.vue
... | ... | @@ -357,16 +357,14 @@ |
357 | 357 | </script> |
358 | 358 | |
359 | 359 | <style lang="less"> |
360 | - | |
361 | - /* | |
362 | - * The following styles are auto-applied to elements with | |
363 | - * transition="page-transition" when their visibility is toggled | |
364 | - * by Vue.js. | |
365 | - * | |
366 | - * You can easily play with the page transition by editing | |
367 | - * these styles. | |
368 | - */ | |
369 | - | |
360 | + /* | |
361 | + * The following styles are auto-applied to elements with | |
362 | + * transition="page-transition" when their visibility is toggled | |
363 | + * by Vue.js. | |
364 | + * | |
365 | + * You can easily play with the page transition by editing | |
366 | + * these styles. | |
367 | + */ | |
370 | 368 | .page-transition-enter { |
371 | 369 | opacity: 0; |
372 | 370 | } |
... | ... |
ant-design-vue-jeecg/src/router/index.js
ant-design-vue-jeecg/vue.config.js
1 | 1 | const path = require('path') |
2 | -const CompressionPlugin = require("compression-webpack-plugin") | |
2 | +const CompressionPlugin = require('compression-webpack-plugin') | |
3 | 3 | |
4 | 4 | function resolve(dir) { |
5 | 5 | return path.join(__dirname, dir) |
... | ... | @@ -14,8 +14,8 @@ module.exports = { |
14 | 14 | */ |
15 | 15 | // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 |
16 | 16 | productionSourceMap: false, |
17 | - //qiankuan打包时放开 | |
18 | - //outputDir: "../dist/main", | |
17 | + // qiankuan打包时放开 | |
18 | + // outputDir: "../dist/main", | |
19 | 19 | // 多入口配置 |
20 | 20 | // pages: { |
21 | 21 | // index: { |
... | ... | @@ -24,10 +24,10 @@ module.exports = { |
24 | 24 | // filename: 'index.html', |
25 | 25 | // } |
26 | 26 | // }, |
27 | - //打包app时放开该配置 | |
28 | - //publicPath:'/', | |
27 | + // 打包app时放开该配置 | |
28 | + publicPath: '/wms/', | |
29 | 29 | configureWebpack: config => { |
30 | - //生产环境取消 console.log | |
30 | + // 生产环境取消 console.log | |
31 | 31 | if (process.env.NODE_ENV === 'production') { |
32 | 32 | config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true |
33 | 33 | } |
... | ... | @@ -40,13 +40,13 @@ module.exports = { |
40 | 40 | .set('@comp', resolve('src/components')) |
41 | 41 | .set('@views', resolve('src/views')) |
42 | 42 | |
43 | - //生产环境,开启js\css压缩 | |
43 | + // 生产环境,开启js\css压缩 | |
44 | 44 | if (process.env.NODE_ENV === 'production') { |
45 | - config.plugin('compressionPlugin').use(new CompressionPlugin({ | |
46 | - test: /\.(js|css|less)$/, // 匹配文件名 | |
47 | - threshold: 10240, // 对超过10k的数据压缩 | |
48 | - deleteOriginalAssets: false // 不删除源文件 | |
49 | - })) | |
45 | + config.plugin('compressionPlugin').use(new CompressionPlugin({ | |
46 | + test: /\.(js|css|less)$/, // 匹配文件名 | |
47 | + threshold: 10240, // 对超过10k的数据压缩 | |
48 | + deleteOriginalAssets: false // 不删除源文件 | |
49 | + })) | |
50 | 50 | } |
51 | 51 | |
52 | 52 | // 配置 webpack 识别 markdown 为普通的文件 |
... | ... | @@ -62,13 +62,12 @@ module.exports = { |
62 | 62 | .rule('vxe') |
63 | 63 | .test(/\.js$/) |
64 | 64 | .include |
65 | - .add(resolve('node_modules/vxe-table')) | |
66 | - .add(resolve('node_modules/vxe-table-plugin-antd')) | |
67 | - .end() | |
65 | + .add(resolve('node_modules/vxe-table')) | |
66 | + .add(resolve('node_modules/vxe-table-plugin-antd')) | |
67 | + .end() | |
68 | 68 | .use() |
69 | 69 | .loader('babel-loader') |
70 | 70 | .end() |
71 | - | |
72 | 71 | }, |
73 | 72 | |
74 | 73 | css: { |
... | ... | @@ -78,9 +77,9 @@ module.exports = { |
78 | 77 | /* less 变量覆盖,用于自定义 ant design 主题 */ |
79 | 78 | 'primary-color': '#1890FF', |
80 | 79 | 'link-color': '#1890FF', |
81 | - 'border-radius-base': '4px', | |
80 | + 'border-radius-base': '4px' | |
82 | 81 | }, |
83 | - javascriptEnabled: true, | |
82 | + javascriptEnabled: true | |
84 | 83 | } |
85 | 84 | } |
86 | 85 | }, |
... | ... | @@ -97,23 +96,22 @@ module.exports = { |
97 | 96 | // 'Access-Control-Allow-Origin': '*', |
98 | 97 | // }, |
99 | 98 | proxy: { |
100 | - /* '/api': { | |
101 | - target: 'https://mock.ihx.me/mock/5baf3052f7da7e07e04a5116/antd-pro', //mock API接口系统 | |
102 | - ws: false, | |
103 | - changeOrigin: true, | |
104 | - pathRewrite: { | |
105 | - '/jeecg-boot': '' //默认所有请求都加了jeecg-boot前缀,需要去掉 | |
106 | - } | |
107 | - },*/ | |
99 | + /* '/api': { | |
100 | + target: 'https://mock.ihx.me/mock/5baf3052f7da7e07e04a5116/antd-pro', // mock API接口系统 | |
101 | + ws: false, | |
102 | + changeOrigin: true, | |
103 | + pathRewrite: { | |
104 | + '/jeecg-boot': '' // 默认所有请求都加了jeecg-boot前缀,需要去掉 | |
105 | + } | |
106 | + }, */ | |
108 | 107 | /* 注意:jeecgboot前端做了改造,此处不需要配置跨域和后台接口(只需要改.env相关配置文件即可) |
109 | - issues/3462 很多人此处做了配置,导致刷新前端404问题,请一定注意*/ | |
108 | + issues/3462 很多人此处做了配置,导致刷新前端404问题,请一定注意 */ | |
110 | 109 | '/jeecg-boot': { |
111 | 110 | target: 'http://localhost:8080', |
112 | 111 | ws: false, |
113 | 112 | changeOrigin: true |
114 | - }, | |
113 | + } | |
115 | 114 | } |
116 | 115 | }, |
117 | - | |
118 | 116 | lintOnSave: undefined |
119 | -} | |
120 | 117 | \ No newline at end of file |
118 | +} | |
... | ... |
huaheng-wms-core/pom.xml
... | ... | @@ -27,7 +27,7 @@ |
27 | 27 | <groupId>org.jeecgframework.boot</groupId> |
28 | 28 | <artifactId>jeecg-boot-base-core</artifactId> |
29 | 29 | </dependency> |
30 | - | |
30 | + | |
31 | 31 | <dependency> |
32 | 32 | <groupId>com.github.abel533</groupId> |
33 | 33 | <artifactId>ECharts</artifactId> |
... | ... | @@ -55,34 +55,24 @@ |
55 | 55 | <artifactId>jimureport-spring-boot-starter</artifactId> |
56 | 56 | <version>1.4.32</version> |
57 | 57 | </dependency> |
58 | - | |
59 | - <dependency> | |
60 | - <groupId>org.jeecgframework.boot</groupId> | |
61 | - <artifactId>jeecg-boot-base-core</artifactId> | |
62 | - </dependency> | |
63 | 58 | </dependencies> |
64 | - | |
59 | + | |
65 | 60 | <build> |
66 | 61 | <plugins> |
67 | - <!--<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> 指定JDK编译版本 --> | |
62 | + <!-- 删除前端静态资源目录 --> | |
68 | 63 | <plugin> |
69 | 64 | <groupId>org.apache.maven.plugins</groupId> |
70 | - <artifactId>maven-compiler-plugin</artifactId> | |
65 | + <artifactId>maven-clean-plugin</artifactId> | |
71 | 66 | <configuration> |
72 | - <source>1.8</source> | |
73 | - <target>1.8</target> | |
74 | - <encoding>UTF-8</encoding> | |
75 | - </configuration> | |
76 | - </plugin> | |
77 | - <!-- 打包跳过测试 --> | |
78 | - <plugin> | |
79 | - <groupId>org.apache.maven.plugins</groupId> | |
80 | - <artifactId>maven-surefire-plugin</artifactId> | |
81 | - <configuration> | |
82 | - <skipTests>true</skipTests> | |
67 | + <filesets> | |
68 | + <fileset> | |
69 | + <!-- 前端资源目录,即:存放前端包目录 --> | |
70 | + <directory>src/main/resources/static</directory> | |
71 | + </fileset> | |
72 | + </filesets> | |
83 | 73 | </configuration> |
84 | 74 | </plugin> |
85 | - <!-- 避免font文件的二进制文件格式压缩破坏 --> | |
75 | + <!-- 复制前端静态资源目录 --> | |
86 | 76 | <plugin> |
87 | 77 | <groupId>org.apache.maven.plugins</groupId> |
88 | 78 | <artifactId>maven-resources-plugin</artifactId> |
... | ... | @@ -95,7 +85,49 @@ |
95 | 85 | <nonFilteredFileExtension>svg</nonFilteredFileExtension> |
96 | 86 | </nonFilteredFileExtensions> |
97 | 87 | </configuration> |
88 | + <executions> | |
89 | + <execution> | |
90 | + <id>copy static</id> | |
91 | + <phase>generate-resources</phase> | |
92 | + <goals> | |
93 | + <goal>copy-resources</goal> | |
94 | + </goals> | |
95 | + <configuration> | |
96 | + <!-- 复制前端打包文件到这里 --> | |
97 | + <outputDirectory>src/main/resources/static</outputDirectory> | |
98 | + <overwrite>true</overwrite> | |
99 | + <resources> | |
100 | + <resource> | |
101 | + <!-- 从前端打包的目录dist进行指定文件、文件夹内容的复制,具体根据实际前端代码及目录结构进行配置 --> | |
102 | + <directory>${project.parent.basedir}/ant-design-vue-jeecg/dist</directory> | |
103 | + <includes> | |
104 | + <include>**</include> | |
105 | + </includes> | |
106 | + </resource> | |
107 | + </resources> | |
108 | + </configuration> | |
109 | + </execution> | |
110 | + </executions> | |
111 | + </plugin> | |
112 | + <!-- 指定JDK编译版本 --> | |
113 | + <plugin> | |
114 | + <groupId>org.apache.maven.plugins</groupId> | |
115 | + <artifactId>maven-compiler-plugin</artifactId> | |
116 | + <configuration> | |
117 | + <source>1.8</source> | |
118 | + <target>1.8</target> | |
119 | + <encoding>UTF-8</encoding> | |
120 | + </configuration> | |
98 | 121 | </plugin> |
122 | + <!-- 打包跳过测试 --> | |
123 | + <plugin> | |
124 | + <groupId>org.apache.maven.plugins</groupId> | |
125 | + <artifactId>maven-surefire-plugin</artifactId> | |
126 | + <configuration> | |
127 | + <skipTests>true</skipTests> | |
128 | + </configuration> | |
129 | + </plugin> | |
130 | + <!-- 避免font文件的二进制文件格式压缩破坏 --> | |
99 | 131 | </plugins> |
100 | 132 | <resources> |
101 | 133 | <resource> |
... | ... | @@ -119,25 +151,25 @@ |
119 | 151 | <profile> |
120 | 152 | <id>dev</id> |
121 | 153 | <activation> |
122 | - <!--默认激活配置 --> | |
154 | + <!-- 默认激活配置 --> | |
123 | 155 | <activeByDefault>true</activeByDefault> |
124 | 156 | </activation> |
125 | 157 | <properties> |
126 | - <!--当前环境 --> | |
158 | + <!-- 当前环境 --> | |
127 | 159 | <profile.name>dev</profile.name> |
128 | - <!--配置文件前缀 --> | |
160 | + <!-- 配置文件前缀 --> | |
129 | 161 | <prefix.name>jeecg</prefix.name> |
130 | - <!--Nacos配置中心地址 --> | |
162 | + <!-- Nacos配置中心地址 --> | |
131 | 163 | <config.server-addr>jeecg-boot-nacos:8848</config.server-addr> |
132 | - <!--Nacos配置中心命名空间,用于支持多环境.这里必须使用ID,不能使用名称,默认为空 --> | |
164 | + <!-- Nacos配置中心命名空间,用于支持多环境.这里必须使用ID,不能使用名称,默认为空 --> | |
133 | 165 | <config.namespace></config.namespace> |
134 | - <!--Nacos用户名 --> | |
166 | + <!-- Nacos用户名 --> | |
135 | 167 | <config.username>nacos</config.username> |
136 | - <!--Nacos密码 --> | |
168 | + <!-- Nacos密码 --> | |
137 | 169 | <config.password>nacos</config.password> |
138 | - <!--Nacos配置分组名称 --> | |
170 | + <!-- Nacos配置分组名称 --> | |
139 | 171 | <config.group>DEFAULT_GROUP</config.group> |
140 | - <!--Nacos服务发现地址 --> | |
172 | + <!-- Nacos服务发现地址 --> | |
141 | 173 | <discovery.server-addr>jeecg-boot-nacos:8848</discovery.server-addr> |
142 | 174 | </properties> |
143 | 175 | </profile> |
... | ... | @@ -145,21 +177,21 @@ |
145 | 177 | <profile> |
146 | 178 | <id>test</id> |
147 | 179 | <properties> |
148 | - <!--当前环境 --> | |
180 | + <!-- 当前环境 --> | |
149 | 181 | <profile.name>test</profile.name> |
150 | - <!--配置文件前缀 --> | |
182 | + <!-- 配置文件前缀 --> | |
151 | 183 | <prefix.name>jeecg</prefix.name> |
152 | - <!--Nacos配置中心地址 --> | |
184 | + <!-- Nacos配置中心地址 --> | |
153 | 185 | <config.server-addr>jeecg-boot-nacos:8848</config.server-addr> |
154 | - <!--Nacos配置中心命名空间,用于支持多环境.这里必须使用ID,不能使用名称,默认为空 --> | |
186 | + <!-- Nacos配置中心命名空间,用于支持多环境.这里必须使用ID,不能使用名称,默认为空 --> | |
155 | 187 | <config.namespace></config.namespace> |
156 | - <!--Nacos用户名 --> | |
188 | + <!-- Nacos用户名 --> | |
157 | 189 | <config.username>nacos</config.username> |
158 | - <!--Nacos密码 --> | |
190 | + <!-- Nacos密码 --> | |
159 | 191 | <config.password>nacos</config.password> |
160 | - <!--Nacos配置分组名称 --> | |
192 | + <!-- Nacos配置分组名称 --> | |
161 | 193 | <config.group>DEFAULT_GROUP</config.group> |
162 | - <!--Nacos服务发现地址 --> | |
194 | + <!-- Nacos服务发现地址 --> | |
163 | 195 | <discovery.server-addr>jeecg-boot-nacos:8848</discovery.server-addr> |
164 | 196 | </properties> |
165 | 197 | </profile> |
... | ... | @@ -167,23 +199,23 @@ |
167 | 199 | <profile> |
168 | 200 | <id>prod</id> |
169 | 201 | <properties> |
170 | - <!--当前环境,生产环境为空 --> | |
202 | + <!-- 当前环境,生产环境为空 --> | |
171 | 203 | <profile.name>prod</profile.name> |
172 | - <!--配置文件前缀 --> | |
204 | + <!-- 配置文件前缀 --> | |
173 | 205 | <prefix.name>jeecg</prefix.name> |
174 | - <!--Nacos配置中心地址 --> | |
206 | + <!-- Nacos配置中心地址 --> | |
175 | 207 | <config.server-addr>jeecg-boot-nacos:8848</config.server-addr> |
176 | - <!--Nacos配置中心命名空间,用于支持多环境.这里必须使用ID,不能使用名称,默认为空 --> | |
208 | + <!-- Nacos配置中心命名空间,用于支持多环境.这里必须使用ID,不能使用名称,默认为空 --> | |
177 | 209 | <config.namespace></config.namespace> |
178 | - <!--Nacos用户名 --> | |
210 | + <!-- Nacos用户名 --> | |
179 | 211 | <config.username>nacos</config.username> |
180 | - <!--Nacos密码 --> | |
212 | + <!-- Nacos密码 --> | |
181 | 213 | <config.password>nacos</config.password> |
182 | - <!--Nacos配置分组名称 --> | |
214 | + <!-- Nacos配置分组名称 --> | |
183 | 215 | <config.group>DEFAULT_GROUP</config.group> |
184 | - <!--Nacos服务发现地址 --> | |
216 | + <!-- Nacos服务发现地址 --> | |
185 | 217 | <discovery.server-addr>jeecg-boot-nacos:8848</discovery.server-addr> |
186 | 218 | </properties> |
187 | 219 | </profile> |
188 | 220 | </profiles> |
189 | 221 | -</project> |
222 | +</project> | |
190 | 223 | \ No newline at end of file |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/JeecgSystemApplication.java
... | ... | @@ -28,7 +28,7 @@ public class JeecgSystemApplication extends SpringBootServletInitializer { |
28 | 28 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { |
29 | 29 | return application.sources(JeecgSystemApplication.class); |
30 | 30 | } |
31 | - | |
31 | + | |
32 | 32 | public static void main(String[] args) throws UnknownHostException { |
33 | 33 | ConfigurableApplicationContext application = SpringApplication.run(JeecgSystemApplication.class, args); |
34 | 34 | Environment env = application.getEnvironment(); |
... | ... | @@ -37,10 +37,12 @@ public class JeecgSystemApplication extends SpringBootServletInitializer { |
37 | 37 | String profiles = env.getProperty("spring.profiles.active"); |
38 | 38 | String path = oConvertUtils.getString(env.getProperty("server.servlet.context-path")); |
39 | 39 | log.info("\n----------------------------------------------------------\n\t" + |
40 | - "Application HUAHENG-WMS4 is running! Access URLs:\n\t" + | |
41 | - "Local: \t\thttp://localhost:" + port + path + "/\n\t" + | |
42 | - "External: \thttp://" + ip + ":" + port + path + "/\n\t" + | |
43 | - "Swagger文档: \thttp://" + ip + ":" + port + path + "/doc.html\n\t" + | |
40 | + "Application HUAHENG WMS4 is running! Access urls:\n\n\t" + | |
41 | + "WEB Local: \t\thttp://localhost:" + port + path + "/index.html\n\t" + | |
42 | + "API Local: \t\thttp://localhost:" + port + path + "/\n\n\t" + | |
43 | + "WEB External: \thttp://" + ip + ":" + port + path + "/index.html\n\t" + | |
44 | + "API External: \thttp://" + ip + ":" + port + path + "/\n\n\t" + | |
45 | + "Swagger文档: \t\thttp://" + ip + ":" + port + path + "/doc.html\n\n\t" + | |
44 | 46 | "The following profiles are active: "+ profiles + "\n" + |
45 | 47 | "----------------------------------------------------------"); |
46 | 48 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/LoginController.java
... | ... | @@ -25,8 +25,6 @@ import org.jeecg.modules.system.entity.SysUser; |
25 | 25 | import org.jeecg.modules.system.model.SysLoginModel; |
26 | 26 | import org.jeecg.modules.system.service.*; |
27 | 27 | import org.jeecg.modules.system.util.RandImageUtil; |
28 | -import org.jeecg.modules.system.vo.SysUserOnlineVO; | |
29 | -import org.jeecg.utils.HuahengJwtUtil; | |
30 | 28 | import org.jeecg.utils.StringUtils; |
31 | 29 | import org.springframework.beans.BeanUtils; |
32 | 30 | import org.springframework.beans.factory.annotation.Autowired; |
... | ... | @@ -44,636 +42,636 @@ import java.util.*; |
44 | 42 | */ |
45 | 43 | @RestController |
46 | 44 | @RequestMapping("/sys") |
47 | -@Api(tags="用户登录") | |
45 | +@Api(tags = "用户登录") | |
48 | 46 | @Slf4j |
49 | 47 | public class LoginController { |
50 | - @Autowired | |
51 | - private ISysUserService sysUserService; | |
52 | - @Autowired | |
53 | - private ISysBaseAPI sysBaseAPI; | |
54 | - @Autowired | |
55 | - private ISysLogService logService; | |
56 | - @Autowired | |
48 | + @Autowired | |
49 | + private ISysUserService sysUserService; | |
50 | + @Autowired | |
51 | + private ISysBaseAPI sysBaseAPI; | |
52 | + @Autowired | |
53 | + private ISysLogService logService; | |
54 | + @Autowired | |
57 | 55 | private RedisUtil redisUtil; |
58 | - @Autowired | |
56 | + @Autowired | |
59 | 57 | private ISysDepartService sysDepartService; |
60 | - @Autowired | |
61 | - private ISysTenantService sysTenantService; | |
62 | - @Autowired | |
63 | - public RedisTemplate redisTemplate; | |
64 | - @Autowired | |
58 | + @Autowired | |
59 | + private ISysTenantService sysTenantService; | |
60 | + @Autowired | |
61 | + public RedisTemplate<String, ?> redisTemplate; | |
62 | + @Autowired | |
65 | 63 | private ISysDictService sysDictService; |
66 | - @Resource | |
67 | - private BaseCommonService baseCommonService; | |
68 | - | |
69 | - @ApiOperation("登录接口") | |
70 | - @RequestMapping(value = "/login", method = RequestMethod.POST) | |
71 | - public Result<JSONObject> login(@RequestBody SysLoginModel sysLoginModel){ | |
72 | - Result<JSONObject> result = new Result<JSONObject>(); | |
73 | - String username = sysLoginModel.getUsername(); | |
74 | - String password = sysLoginModel.getPassword(); | |
75 | - String warehouseCode = sysLoginModel.getWarehouseCode(); | |
76 | - //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 | |
77 | - //前端密码加密,后端进行密码解密 | |
78 | - //password = AesEncryptUtil.desEncrypt(sysLoginModel.getPassword().replaceAll("%2B", "\\+")).trim();//密码解密 | |
79 | - //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 | |
80 | - | |
81 | - //update-begin-author:taoyan date:20190828 for:校验验证码 | |
64 | + @Resource | |
65 | + private BaseCommonService baseCommonService; | |
66 | + | |
67 | + @ApiOperation("登录接口") | |
68 | + @RequestMapping(value = "/login", method = RequestMethod.POST) | |
69 | + public Result<JSONObject> login(@RequestBody SysLoginModel sysLoginModel) { | |
70 | + Result<JSONObject> result = new Result<JSONObject>(); | |
71 | + String username = sysLoginModel.getUsername(); | |
72 | + String password = sysLoginModel.getPassword(); | |
73 | + String warehouseCode = sysLoginModel.getWarehouseCode(); | |
74 | + // update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 | |
75 | + // 前端密码加密,后端进行密码解密 | |
76 | + // password = AesEncryptUtil.desEncrypt(sysLoginModel.getPassword().replaceAll("%2B", "\\+")).trim();//密码解密 | |
77 | + // update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 | |
78 | + | |
79 | + // update-begin-author:taoyan date:20190828 for:校验验证码 | |
82 | 80 | // String captcha = sysLoginModel.getCaptcha(); |
83 | -// if(captcha==null){ | |
81 | +// if (captcha == null) { | |
84 | 82 | // result.error500("验证码无效"); |
85 | 83 | // return result; |
86 | 84 | // } |
87 | 85 | // String lowerCaseCaptcha = captcha.toLowerCase(); |
88 | -// String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+sysLoginModel.getCheckKey(), "utf-8"); | |
89 | -// Object checkCode = redisUtil.get(realKey); | |
90 | -// //当进入登录页时,有一定几率出现验证码错误 #1714 | |
91 | -// if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) { | |
86 | +// String realKey = MD5Util.MD5Encode(lowerCaseCaptcha + sysLoginModel.getCheckKey(), "utf-8"); | |
87 | +// Object checkCode = redisUtil.get(realKey); | |
88 | +// // 当进入登录页时,有一定几率出现验证码错误 #1714 | |
89 | +// if (checkCode == null || !checkCode.toString().equals(lowerCaseCaptcha)) { | |
92 | 90 | // log.warn("验证码错误,key= {} , Ui checkCode= {}, Redis checkCode = {}", sysLoginModel.getCheckKey(), lowerCaseCaptcha, checkCode); |
93 | -// result.error500("验证码错误"); | |
94 | -// return result; | |
95 | -// } | |
96 | - //update-end-author:taoyan date:20190828 for:校验验证码 | |
97 | - | |
98 | - //1. 校验用户是否有效 | |
99 | - //update-begin-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false | |
100 | - LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); | |
101 | - queryWrapper.eq(SysUser::getUsername,username); | |
102 | - SysUser sysUser = sysUserService.getOne(queryWrapper); | |
103 | - //update-end-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false | |
104 | - result = sysUserService.checkUserIsEffective(sysUser); | |
105 | - if(!result.isSuccess()) { | |
106 | - return result; | |
107 | - } | |
108 | - | |
109 | - //2. 校验用户名或密码是否正确 | |
110 | - String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); | |
111 | - String syspassword = sysUser.getPassword(); | |
112 | - if (!syspassword.equals(userpassword)) { | |
113 | - result.error500("用户名或密码错误"); | |
114 | - return result; | |
115 | - } | |
116 | - | |
117 | - if(StringUtils.isEmpty(warehouseCode)) { | |
118 | - result.error500("仓库编码错误"); | |
119 | - return result; | |
120 | - } | |
121 | - | |
122 | - //用户登录信息 | |
123 | - userInfo(sysUser, result, warehouseCode); | |
124 | - //update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码 | |
125 | -// redisUtil.del(realKey); | |
126 | - //update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码 | |
127 | - LoginUser loginUser = new LoginUser(); | |
128 | - BeanUtils.copyProperties(sysUser, loginUser); | |
129 | - baseCommonService.addLog("用户名: " + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null,loginUser); | |
130 | - //update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员 | |
131 | - return result; | |
132 | - } | |
133 | - | |
134 | - | |
135 | - /** | |
136 | - * 【vue3专用】获取用户信息 | |
137 | - */ | |
138 | - @GetMapping("/user/getUserInfo") | |
139 | - public Result<JSONObject> getUserInfo(HttpServletRequest request){ | |
140 | - Result<JSONObject> result = new Result<JSONObject>(); | |
141 | - String username = JwtUtil.getUserNameByToken(request); | |
142 | - String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(request); | |
143 | - if(oConvertUtils.isNotEmpty(username)) { | |
144 | - // 根据用户名查询用户信息 | |
145 | - SysUser sysUser = sysUserService.getUserByName(username); | |
146 | - //用户登录信息 | |
147 | - Result<JSONObject> resultObj=userInfo(sysUser, result, warehouseCode); | |
148 | - JSONObject jsonObject=resultObj.getResult(); | |
149 | - JSONObject obj=new JSONObject(); | |
150 | - obj.put("warehouseCode", warehouseCode); | |
151 | - obj.put("userInfo",jsonObject.get("userInfo")); | |
152 | - obj.put("sysAllDictItems", sysDictService.queryAllDictItems()); | |
153 | - result.setResult(obj); | |
154 | - result.success(""); | |
155 | - } | |
156 | - return result; | |
157 | - | |
158 | - } | |
159 | - | |
160 | - /** | |
161 | - * 退出登录 | |
162 | - * @param request | |
163 | - * @param response | |
164 | - * @return | |
165 | - */ | |
166 | - @RequestMapping(value = "/logout") | |
167 | - public Result<Object> logout(HttpServletRequest request,HttpServletResponse response) { | |
168 | - //用户退出逻辑 | |
169 | - String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); | |
170 | - if(oConvertUtils.isEmpty(token)) { | |
171 | - return Result.error("退出登录失败!"); | |
172 | - } | |
173 | - String username = JwtUtil.getUsername(token); | |
174 | - LoginUser sysUser = sysBaseAPI.getUserByName(username); | |
175 | - if(sysUser!=null) { | |
176 | - //update-begin--Author:wangshuai Date:20200714 for:登出日志没有记录人员 | |
177 | - baseCommonService.addLog("用户名: "+sysUser.getRealname()+",退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); | |
178 | - //update-end--Author:wangshuai Date:20200714 for:登出日志没有记录人员 | |
179 | - log.info(" 用户名: "+sysUser.getRealname()+",退出成功! "); | |
180 | - //清空用户登录Token缓存 | |
181 | - redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token); | |
182 | - //清空用户登录Shiro权限缓存 | |
183 | - redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId()); | |
184 | - //清空用户的缓存信息(包括部门信息),例如sys:cache:user::<username> | |
185 | - redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername())); | |
186 | - //调用shiro的logout | |
187 | - SecurityUtils.getSubject().logout(); | |
188 | - return Result.ok("退出登录成功!"); | |
189 | - }else { | |
190 | - return Result.error("Token无效!"); | |
191 | - } | |
192 | - } | |
193 | - | |
194 | - /** | |
195 | - * 获取访问量 | |
196 | - * @return | |
197 | - */ | |
198 | - @GetMapping("loginfo") | |
199 | - public Result<JSONObject> loginfo() { | |
200 | - Result<JSONObject> result = new Result<JSONObject>(); | |
201 | - JSONObject obj = new JSONObject(); | |
202 | - //update-begin--Author:zhangweijian Date:20190428 for:传入开始时间,结束时间参数 | |
203 | - // 获取一天的开始和结束时间 | |
204 | - Calendar calendar = new GregorianCalendar(); | |
205 | - calendar.set(Calendar.HOUR_OF_DAY, 0); | |
206 | - calendar.set(Calendar.MINUTE, 0); | |
207 | - calendar.set(Calendar.SECOND, 0); | |
208 | - calendar.set(Calendar.MILLISECOND, 0); | |
209 | - Date dayStart = calendar.getTime(); | |
210 | - calendar.add(Calendar.DATE, 1); | |
211 | - Date dayEnd = calendar.getTime(); | |
212 | - // 获取系统访问记录 | |
213 | - Long totalVisitCount = logService.findTotalVisitCount(); | |
214 | - obj.put("totalVisitCount", totalVisitCount); | |
215 | - Long todayVisitCount = logService.findTodayVisitCount(dayStart,dayEnd); | |
216 | - obj.put("todayVisitCount", todayVisitCount); | |
217 | - Long todayIp = logService.findTodayIp(dayStart,dayEnd); | |
218 | - //update-end--Author:zhangweijian Date:20190428 for:传入开始时间,结束时间参数 | |
219 | - obj.put("todayIp", todayIp); | |
220 | - result.setResult(obj); | |
221 | - result.success("登录成功"); | |
222 | - return result; | |
223 | - } | |
224 | - | |
225 | - /** | |
226 | - * 获取访问量 | |
227 | - * @return | |
228 | - */ | |
229 | - @GetMapping("visitInfo") | |
230 | - public Result<List<Map<String,Object>>> visitInfo() { | |
231 | - Result<List<Map<String,Object>>> result = new Result<List<Map<String,Object>>>(); | |
232 | - Calendar calendar = new GregorianCalendar(); | |
233 | - calendar.set(Calendar.HOUR_OF_DAY,0); | |
234 | - calendar.set(Calendar.MINUTE,0); | |
235 | - calendar.set(Calendar.SECOND,0); | |
236 | - calendar.set(Calendar.MILLISECOND,0); | |
91 | +// result.error500("验证码错误"); | |
92 | +// return result; | |
93 | +// } | |
94 | + // update-end-author:taoyan date:20190828 for:校验验证码 | |
95 | + | |
96 | + // 1. 校验用户是否有效 | |
97 | + // update-begin-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false | |
98 | + LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); | |
99 | + queryWrapper.eq(SysUser::getUsername, username); | |
100 | + SysUser sysUser = sysUserService.getOne(queryWrapper); | |
101 | + // update-end-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false | |
102 | + result = sysUserService.checkUserIsEffective(sysUser); | |
103 | + if (!result.isSuccess()) { | |
104 | + return result; | |
105 | + } | |
106 | + | |
107 | + // 2. 校验用户名或密码是否正确 | |
108 | + String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); | |
109 | + String syspassword = sysUser.getPassword(); | |
110 | + if (!syspassword.equals(userpassword)) { | |
111 | + result.error500("用户名或密码错误"); | |
112 | + return result; | |
113 | + } | |
114 | + | |
115 | + if (StringUtils.isEmpty(warehouseCode)) { | |
116 | + result.error500("仓库编码错误"); | |
117 | + return result; | |
118 | + } | |
119 | + | |
120 | + // 用户登录信息 | |
121 | + userInfo(sysUser, result, warehouseCode); | |
122 | + // update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码 | |
123 | +// redisUtil.del(realKey); | |
124 | + // update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码 | |
125 | + LoginUser loginUser = new LoginUser(); | |
126 | + BeanUtils.copyProperties(sysUser, loginUser); | |
127 | + baseCommonService.addLog("用户名: " + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); | |
128 | + // update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员 | |
129 | + return result; | |
130 | + } | |
131 | + | |
132 | + /** | |
133 | + * 【vue3专用】获取用户信息 | |
134 | + */ | |
135 | + @GetMapping("/user/getUserInfo") | |
136 | + public Result<JSONObject> getUserInfo(HttpServletRequest request) { | |
137 | + Result<JSONObject> result = new Result<JSONObject>(); | |
138 | + String username = JwtUtil.getUserNameByToken(request); | |
139 | + String warehouseCode = HuahengJwtUtil.getWarehouseCodeByToken(request); | |
140 | + if (oConvertUtils.isNotEmpty(username)) { | |
141 | + // 根据用户名查询用户信息 | |
142 | + SysUser sysUser = sysUserService.getUserByName(username); | |
143 | + // 用户登录信息 | |
144 | + Result<JSONObject> resultObj = userInfo(sysUser, result, warehouseCode); | |
145 | + JSONObject jsonObject = resultObj.getResult(); | |
146 | + JSONObject obj = new JSONObject(); | |
147 | + obj.put("warehouseCode", warehouseCode); | |
148 | + obj.put("userInfo", jsonObject.get("userInfo")); | |
149 | + obj.put("sysAllDictItems", sysDictService.queryAllDictItems()); | |
150 | + result.setResult(obj); | |
151 | + result.success(""); | |
152 | + } | |
153 | + return result; | |
154 | + | |
155 | + } | |
156 | + | |
157 | + /** | |
158 | + * 退出登录 | |
159 | + * | |
160 | + * @param request | |
161 | + * @param response | |
162 | + * @return | |
163 | + */ | |
164 | + @RequestMapping(value = "/logout") | |
165 | + public Result<Object> logout(HttpServletRequest request, HttpServletResponse response) { | |
166 | + // 用户退出逻辑 | |
167 | + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); | |
168 | + if (oConvertUtils.isEmpty(token)) { | |
169 | + return Result.error("退出登录失败!"); | |
170 | + } | |
171 | + String username = JwtUtil.getUsername(token); | |
172 | + LoginUser sysUser = sysBaseAPI.getUserByName(username); | |
173 | + if (sysUser != null) { | |
174 | + // update-begin--Author:wangshuai Date:20200714 for:登出日志没有记录人员 | |
175 | + baseCommonService.addLog("用户名: " + sysUser.getRealname() + ",退出成功!", CommonConstant.LOG_TYPE_1, null, sysUser); | |
176 | + // update-end--Author:wangshuai Date:20200714 for:登出日志没有记录人员 | |
177 | + log.info(" 用户名: " + sysUser.getRealname() + ",退出成功! "); | |
178 | + // 清空用户登录Token缓存 | |
179 | + redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token); | |
180 | + // 清空用户登录Shiro权限缓存 | |
181 | + redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId()); | |
182 | + // 清空用户的缓存信息(包括部门信息),例如sys:cache:user::<username> | |
183 | + redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername())); | |
184 | + // 调用shiro的logout | |
185 | + SecurityUtils.getSubject().logout(); | |
186 | + return Result.ok("退出登录成功!"); | |
187 | + } else { | |
188 | + return Result.error("Token无效!"); | |
189 | + } | |
190 | + } | |
191 | + | |
192 | + /** | |
193 | + * 获取访问量 | |
194 | + * | |
195 | + * @return | |
196 | + */ | |
197 | + @GetMapping("loginfo") | |
198 | + public Result<JSONObject> loginfo() { | |
199 | + Result<JSONObject> result = new Result<JSONObject>(); | |
200 | + JSONObject obj = new JSONObject(); | |
201 | + // update-begin--Author:zhangweijian Date:20190428 for:传入开始时间,结束时间参数 | |
202 | + // 获取一天的开始和结束时间 | |
203 | + Calendar calendar = new GregorianCalendar(); | |
204 | + calendar.set(Calendar.HOUR_OF_DAY, 0); | |
205 | + calendar.set(Calendar.MINUTE, 0); | |
206 | + calendar.set(Calendar.SECOND, 0); | |
207 | + calendar.set(Calendar.MILLISECOND, 0); | |
208 | + Date dayStart = calendar.getTime(); | |
209 | + calendar.add(Calendar.DATE, 1); | |
210 | + Date dayEnd = calendar.getTime(); | |
211 | + // 获取系统访问记录 | |
212 | + Long totalVisitCount = logService.findTotalVisitCount(); | |
213 | + obj.put("totalVisitCount", totalVisitCount); | |
214 | + Long todayVisitCount = logService.findTodayVisitCount(dayStart, dayEnd); | |
215 | + obj.put("todayVisitCount", todayVisitCount); | |
216 | + Long todayIp = logService.findTodayIp(dayStart, dayEnd); | |
217 | + // update-end--Author:zhangweijian Date:20190428 for:传入开始时间,结束时间参数 | |
218 | + obj.put("todayIp", todayIp); | |
219 | + result.setResult(obj); | |
220 | + result.success("登录成功"); | |
221 | + return result; | |
222 | + } | |
223 | + | |
224 | + /** | |
225 | + * 获取访问量 | |
226 | + * | |
227 | + * @return | |
228 | + */ | |
229 | + @GetMapping("visitInfo") | |
230 | + public Result<List<Map<String, Object>>> visitInfo() { | |
231 | + Result<List<Map<String, Object>>> result = new Result<List<Map<String, Object>>>(); | |
232 | + Calendar calendar = new GregorianCalendar(); | |
233 | + calendar.set(Calendar.HOUR_OF_DAY, 0); | |
234 | + calendar.set(Calendar.MINUTE, 0); | |
235 | + calendar.set(Calendar.SECOND, 0); | |
236 | + calendar.set(Calendar.MILLISECOND, 0); | |
237 | 237 | calendar.add(Calendar.DAY_OF_MONTH, 1); |
238 | 238 | Date dayEnd = calendar.getTime(); |
239 | 239 | calendar.add(Calendar.DAY_OF_MONTH, -7); |
240 | 240 | Date dayStart = calendar.getTime(); |
241 | - List<Map<String,Object>> list = logService.findVisitCount(dayStart, dayEnd); | |
242 | - result.setResult(oConvertUtils.toLowerCasePageList(list)); | |
243 | - return result; | |
244 | - } | |
245 | - | |
246 | - | |
247 | - /** | |
248 | - * 登陆成功选择用户当前部门 | |
249 | - * @param user | |
250 | - * @return | |
251 | - */ | |
252 | - @RequestMapping(value = "/selectDepart", method = RequestMethod.PUT) | |
253 | - public Result<JSONObject> selectDepart(@RequestBody SysUser user) { | |
254 | - Result<JSONObject> result = new Result<JSONObject>(); | |
255 | - String username = user.getUsername(); | |
256 | - if(oConvertUtils.isEmpty(username)) { | |
257 | - LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); | |
258 | - username = sysUser.getUsername(); | |
259 | - } | |
260 | - String orgCode= user.getOrgCode(); | |
261 | - this.sysUserService.updateUserDepart(username, orgCode); | |
262 | - SysUser sysUser = sysUserService.getUserByName(username); | |
263 | - JSONObject obj = new JSONObject(); | |
264 | - obj.put("userInfo", sysUser); | |
265 | - result.setResult(obj); | |
266 | - return result; | |
267 | - } | |
268 | - | |
269 | - /** | |
270 | - * 短信登录接口 | |
271 | - * | |
272 | - * @param jsonObject | |
273 | - * @return | |
274 | - */ | |
275 | - @PostMapping(value = "/sms") | |
276 | - public Result<String> sms(@RequestBody JSONObject jsonObject) { | |
277 | - Result<String> result = new Result<String>(); | |
278 | - String mobile = jsonObject.get("mobile").toString(); | |
279 | - //手机号模式 登录模式: "2" 注册模式: "1" | |
280 | - String smsmode=jsonObject.get("smsmode").toString(); | |
281 | - log.info(mobile); | |
282 | - if(oConvertUtils.isEmpty(mobile)){ | |
283 | - result.setMessage("手机号不允许为空!"); | |
284 | - result.setSuccess(false); | |
285 | - return result; | |
286 | - } | |
287 | - Object object = redisUtil.get(mobile); | |
288 | - if (object != null) { | |
289 | - result.setMessage("验证码10分钟内,仍然有效!"); | |
290 | - result.setSuccess(false); | |
291 | - return result; | |
292 | - } | |
293 | - | |
294 | - //随机数 | |
295 | - String captcha = RandomUtil.randomNumbers(6); | |
296 | - JSONObject obj = new JSONObject(); | |
297 | - obj.put("code", captcha); | |
298 | - try { | |
299 | - boolean b = false; | |
300 | - //注册模板 | |
301 | - if (CommonConstant.SMS_TPL_TYPE_1.equals(smsmode)) { | |
302 | - SysUser sysUser = sysUserService.getUserByPhone(mobile); | |
303 | - if(sysUser!=null) { | |
304 | - result.error500(" 手机号已经注册,请直接登录!"); | |
305 | - baseCommonService.addLog("手机号已经注册,请直接登录!", CommonConstant.LOG_TYPE_1, null); | |
306 | - return result; | |
307 | - } | |
308 | - b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.REGISTER_TEMPLATE_CODE); | |
309 | - }else { | |
310 | - //登录模式,校验用户有效性 | |
311 | - SysUser sysUser = sysUserService.getUserByPhone(mobile); | |
312 | - result = sysUserService.checkUserIsEffective(sysUser); | |
313 | - if(!result.isSuccess()) { | |
314 | - String message = result.getMessage(); | |
315 | - if("该用户不存在,请注册".equals(message)){ | |
316 | - result.error500("该用户不存在或未绑定手机号"); | |
317 | - } | |
318 | - return result; | |
319 | - } | |
320 | - | |
321 | - /** | |
322 | - * smsmode 短信模板方式 0 .登录模板、1.注册模板、2.忘记密码模板 | |
323 | - */ | |
324 | - if (CommonConstant.SMS_TPL_TYPE_0.equals(smsmode)) { | |
325 | - //登录模板 | |
326 | - b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.LOGIN_TEMPLATE_CODE); | |
327 | - } else if(CommonConstant.SMS_TPL_TYPE_2.equals(smsmode)) { | |
328 | - //忘记密码模板 | |
329 | - b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.FORGET_PASSWORD_TEMPLATE_CODE); | |
330 | - } | |
331 | - } | |
332 | - | |
333 | - if (b == false) { | |
334 | - result.setMessage("短信验证码发送失败,请稍后重试"); | |
335 | - result.setSuccess(false); | |
336 | - return result; | |
337 | - } | |
338 | - //验证码10分钟内有效 | |
339 | - redisUtil.set(mobile, captcha, 600); | |
340 | - //update-begin--Author:scott Date:20190812 for:issues#391 | |
341 | - //result.setResult(captcha); | |
342 | - //update-end--Author:scott Date:20190812 for:issues#391 | |
343 | - result.setSuccess(true); | |
344 | - | |
345 | - } catch (ClientException e) { | |
346 | - e.printStackTrace(); | |
347 | - result.error500(" 短信接口未配置,请联系管理员!"); | |
348 | - return result; | |
349 | - } | |
350 | - return result; | |
351 | - } | |
352 | - | |
353 | - | |
354 | - /** | |
355 | - * 手机号登录接口 | |
356 | - * | |
357 | - * @param jsonObject | |
358 | - * @return | |
359 | - */ | |
360 | - @ApiOperation("手机号登录接口") | |
361 | - @PostMapping("/phoneLogin") | |
362 | - public Result<JSONObject> phoneLogin(@RequestBody JSONObject jsonObject) { | |
363 | - Result<JSONObject> result = new Result<JSONObject>(); | |
364 | - String phone = jsonObject.getString("mobile"); | |
365 | - | |
366 | - //校验用户有效性 | |
367 | - SysUser sysUser = sysUserService.getUserByPhone(phone); | |
368 | - result = sysUserService.checkUserIsEffective(sysUser); | |
369 | - if(!result.isSuccess()) { | |
370 | - return result; | |
371 | - } | |
372 | - | |
373 | - String smscode = jsonObject.getString("captcha"); | |
374 | - Object code = redisUtil.get(phone); | |
375 | - if (!smscode.equals(code)) { | |
376 | - result.setMessage("手机验证码错误"); | |
377 | - return result; | |
378 | - } | |
379 | - | |
380 | - String warehouseCode = jsonObject.getString("warehouseCode"); | |
381 | - if(StringUtils.isEmpty(warehouseCode)) { | |
382 | - return Result.error("仓库编码为空"); | |
383 | - } | |
384 | - //用户信息 | |
385 | - userInfo(sysUser, result, warehouseCode); | |
386 | - //添加日志 | |
387 | - baseCommonService.addLog("用户名: " + sysUser.getUsername() + ",登录成功!", CommonConstant.LOG_TYPE_1, null); | |
388 | - | |
389 | - return result; | |
390 | - } | |
391 | - | |
392 | - | |
393 | - /** | |
394 | - * 用户信息 | |
395 | - * | |
396 | - * @param sysUser | |
397 | - * @param result | |
398 | - * @param warehouseCode | |
399 | - * @return | |
400 | - */ | |
401 | - private Result<JSONObject> userInfo(SysUser sysUser, Result<JSONObject> result, String warehouseCode) { | |
402 | - String syspassword = sysUser.getPassword(); | |
403 | - String username = sysUser.getUsername(); | |
404 | - // 获取用户部门信息 | |
405 | - JSONObject obj = new JSONObject(); | |
406 | - List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId().toString()); | |
407 | - obj.put("departs", departs); | |
408 | - if (departs == null || departs.size() == 0) { | |
409 | - obj.put("multi_depart", 0); | |
410 | - } else if (departs.size() == 1) { | |
411 | - sysUserService.updateUserDepart(username, departs.get(0).getOrgCode()); | |
412 | - obj.put("multi_depart", 1); | |
413 | - } else { | |
414 | - //查询当前是否有登录部门 | |
415 | - // update-begin--Author:wangshuai Date:20200805 for:如果用戶为选择部门,数据库为存在上一次登录部门,则取一条存进去 | |
416 | - SysUser sysUserById = sysUserService.getById(sysUser.getId()); | |
417 | - if(oConvertUtils.isEmpty(sysUserById.getOrgCode())){ | |
418 | - sysUserService.updateUserDepart(username, departs.get(0).getOrgCode()); | |
419 | - } | |
420 | - // update-end--Author:wangshuai Date:20200805 for:如果用戶为选择部门,数据库为存在上一次登录部门,则取一条存进去 | |
421 | - obj.put("multi_depart", 2); | |
422 | - } | |
423 | - // update-begin--Author:sunjianlei Date:20210802 for:获取用户租户信息 | |
424 | - String tenantIds = sysUser.getRelTenantIds(); | |
425 | - if (oConvertUtils.isNotEmpty(tenantIds)) { | |
426 | - List<Integer> tenantIdList = new ArrayList<>(); | |
427 | - for(String id: tenantIds.split(",")){ | |
428 | - tenantIdList.add(Integer.valueOf(id)); | |
429 | - } | |
430 | - // 该方法仅查询有效的租户,如果返回0个就说明所有的租户均无效。 | |
431 | - List<SysTenant> tenantList = sysTenantService.queryEffectiveTenant(tenantIdList); | |
432 | - if (tenantList.size() == 0) { | |
433 | - result.error500("与该用户关联的租户均已被冻结,无法登录!"); | |
434 | - return result; | |
435 | - } else { | |
436 | - obj.put("tenantList", tenantList); | |
437 | - } | |
438 | - } | |
439 | - | |
440 | - //删除相同用户名称对应的key | |
441 | - Collection<String> keys = redisTemplate.keys(CommonConstant.PREFIX_USER_TOKEN + "*"); | |
442 | - List<SysUserOnlineVO> onlineList = new ArrayList<SysUserOnlineVO>(); | |
443 | - for (String key : keys) { | |
444 | - String token = (String) redisUtil.get(key); | |
445 | - LoginUser loginUser = sysBaseAPI.getUserByName(JwtUtil.getUsername(token)); | |
446 | - if (loginUser != null) { | |
447 | - if(oConvertUtils.isNotEmpty(username) && loginUser.getUsername().contains(username)){ | |
448 | - log.info(" 强制 "+sysUser.getRealname()+"退出成功! "); | |
449 | - //清空用户登录Token缓存 | |
450 | - redisUtil.del(token); | |
451 | - redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token); | |
452 | - //清空用户登录Shiro权限缓存 | |
453 | - redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId()); | |
454 | - //清空用户的缓存信息(包括部门信息),例如sys:cache:user::<username> | |
455 | - redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername())); | |
456 | - //调用shiro的logout | |
457 | - SecurityUtils.getSubject().logout(); | |
458 | - // | |
459 | - redisUtil.del(key); | |
460 | - } | |
461 | - } | |
462 | - } | |
463 | - | |
464 | - | |
465 | - // update-end--Author:sunjianlei Date:20210802 for:获取用户租户信息 | |
466 | - // 生成token | |
467 | - String token = HuahengJwtUtil.sign(username, syspassword, warehouseCode); | |
468 | - // 设置token缓存有效时间 | |
469 | - redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); | |
470 | - redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); | |
471 | - obj.put("token", token); | |
472 | - obj.put("userInfo", sysUser); | |
473 | - obj.put("sysAllDictItems", sysDictService.queryAllDictItems()); | |
474 | - result.setResult(obj); | |
475 | - result.success("登录成功"); | |
476 | - return result; | |
477 | - } | |
478 | - | |
479 | - /** | |
480 | - * 获取加密字符串 | |
481 | - * @return | |
482 | - */ | |
483 | - @GetMapping(value = "/getEncryptedString") | |
484 | - public Result<Map<String,String>> getEncryptedString(){ | |
485 | - Result<Map<String,String>> result = new Result<Map<String,String>>(); | |
486 | - Map<String,String> map = new HashMap<String,String>(); | |
487 | - map.put("key", EncryptedString.key); | |
488 | - map.put("iv",EncryptedString.iv); | |
489 | - result.setResult(map); | |
490 | - return result; | |
491 | - } | |
492 | - | |
493 | - /** | |
494 | - * 后台生成图形验证码 :有效 | |
495 | - * @param response | |
496 | - * @param key | |
497 | - */ | |
498 | - @ApiOperation("获取验证码") | |
499 | - @GetMapping(value = "/randomImage/{key}") | |
500 | - public Result<String> randomImage(HttpServletResponse response,@PathVariable String key){ | |
501 | - Result<String> res = new Result<String>(); | |
502 | - try { | |
503 | - //生成验证码 | |
504 | - final String BASE_CHECK_CODES = "qwertyuiplkjhgfdsazxcvbnmQWERTYUPLKJHGFDSAZXCVBNM1234567890"; | |
505 | - String code = RandomUtil.randomString(BASE_CHECK_CODES,4); | |
506 | - | |
507 | - //存到redis中 | |
508 | - String lowerCaseCode = code.toLowerCase(); | |
509 | - String realKey = MD5Util.MD5Encode(lowerCaseCode+key, "utf-8"); | |
241 | + List<Map<String, Object>> list = logService.findVisitCount(dayStart, dayEnd); | |
242 | + result.setResult(oConvertUtils.toLowerCasePageList(list)); | |
243 | + return result; | |
244 | + } | |
245 | + | |
246 | + /** | |
247 | + * 登陆成功选择用户当前部门 | |
248 | + * | |
249 | + * @param user | |
250 | + * @return | |
251 | + */ | |
252 | + @RequestMapping(value = "/selectDepart", method = RequestMethod.PUT) | |
253 | + public Result<JSONObject> selectDepart(@RequestBody SysUser user) { | |
254 | + Result<JSONObject> result = new Result<JSONObject>(); | |
255 | + String username = user.getUsername(); | |
256 | + if (oConvertUtils.isEmpty(username)) { | |
257 | + LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); | |
258 | + username = sysUser.getUsername(); | |
259 | + } | |
260 | + String orgCode = user.getOrgCode(); | |
261 | + this.sysUserService.updateUserDepart(username, orgCode); | |
262 | + SysUser sysUser = sysUserService.getUserByName(username); | |
263 | + JSONObject obj = new JSONObject(); | |
264 | + obj.put("userInfo", sysUser); | |
265 | + result.setResult(obj); | |
266 | + return result; | |
267 | + } | |
268 | + | |
269 | + /** | |
270 | + * 短信登录接口 | |
271 | + * | |
272 | + * @param jsonObject | |
273 | + * @return | |
274 | + */ | |
275 | + @PostMapping(value = "/sms") | |
276 | + public Result<JSONObject> sms(@RequestBody JSONObject jsonObject) { | |
277 | + Result<JSONObject> result = new Result<JSONObject>(); | |
278 | + String mobile = jsonObject.get("mobile").toString(); | |
279 | + // 手机号模式 登录模式: "2" 注册模式: "1" | |
280 | + String smsmode = jsonObject.get("smsmode").toString(); | |
281 | + log.info(mobile); | |
282 | + if (oConvertUtils.isEmpty(mobile)) { | |
283 | + result.setMessage("手机号不允许为空!"); | |
284 | + result.setSuccess(false); | |
285 | + return result; | |
286 | + } | |
287 | + Object object = redisUtil.get(mobile); | |
288 | + if (object != null) { | |
289 | + result.setMessage("验证码10分钟内,仍然有效!"); | |
290 | + result.setSuccess(false); | |
291 | + return result; | |
292 | + } | |
293 | + | |
294 | + // 随机数 | |
295 | + String captcha = RandomUtil.randomNumbers(6); | |
296 | + JSONObject obj = new JSONObject(); | |
297 | + obj.put("code", captcha); | |
298 | + try { | |
299 | + boolean b = false; | |
300 | + // 注册模板 | |
301 | + if (CommonConstant.SMS_TPL_TYPE_1.equals(smsmode)) { | |
302 | + SysUser sysUser = sysUserService.getUserByPhone(mobile); | |
303 | + if (sysUser != null) { | |
304 | + result.error500(" 手机号已经注册,请直接登录!"); | |
305 | + baseCommonService.addLog("手机号已经注册,请直接登录!", CommonConstant.LOG_TYPE_1, null); | |
306 | + return result; | |
307 | + } | |
308 | + b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.REGISTER_TEMPLATE_CODE); | |
309 | + } else { | |
310 | + // 登录模式,校验用户有效性 | |
311 | + SysUser sysUser = sysUserService.getUserByPhone(mobile); | |
312 | + result = sysUserService.checkUserIsEffective(sysUser); | |
313 | + if (!result.isSuccess()) { | |
314 | + String message = result.getMessage(); | |
315 | + if ("该用户不存在,请注册".equals(message)) { | |
316 | + result.error500("该用户不存在或未绑定手机号"); | |
317 | + } | |
318 | + return result; | |
319 | + } | |
320 | + | |
321 | + /** | |
322 | + * smsmode 短信模板方式 0 .登录模板、1.注册模板、2.忘记密码模板 | |
323 | + */ | |
324 | + if (CommonConstant.SMS_TPL_TYPE_0.equals(smsmode)) { | |
325 | + // 登录模板 | |
326 | + b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.LOGIN_TEMPLATE_CODE); | |
327 | + } else if (CommonConstant.SMS_TPL_TYPE_2.equals(smsmode)) { | |
328 | + // 忘记密码模板 | |
329 | + b = DySmsHelper.sendSms(mobile, obj, DySmsEnum.FORGET_PASSWORD_TEMPLATE_CODE); | |
330 | + } | |
331 | + } | |
332 | + | |
333 | + if (b == false) { | |
334 | + result.setMessage("短信验证码发送失败,请稍后重试"); | |
335 | + result.setSuccess(false); | |
336 | + return result; | |
337 | + } | |
338 | + // 验证码10分钟内有效 | |
339 | + redisUtil.set(mobile, captcha, 600); | |
340 | + // update-begin--Author:scott Date:20190812 for:issues#391 | |
341 | + // result.setResult(captcha); | |
342 | + // update-end--Author:scott Date:20190812 for:issues#391 | |
343 | + result.setSuccess(true); | |
344 | + | |
345 | + } catch (ClientException e) { | |
346 | + e.printStackTrace(); | |
347 | + result.error500(" 短信接口未配置,请联系管理员!"); | |
348 | + return result; | |
349 | + } | |
350 | + return result; | |
351 | + } | |
352 | + | |
353 | + /** | |
354 | + * 手机号登录接口 | |
355 | + * | |
356 | + * @param jsonObject | |
357 | + * @return | |
358 | + */ | |
359 | + @ApiOperation("手机号登录接口") | |
360 | + @PostMapping("/phoneLogin") | |
361 | + public Result<JSONObject> phoneLogin(@RequestBody JSONObject jsonObject) { | |
362 | + Result<JSONObject> result = new Result<JSONObject>(); | |
363 | + String phone = jsonObject.getString("mobile"); | |
364 | + | |
365 | + // 校验用户有效性 | |
366 | + SysUser sysUser = sysUserService.getUserByPhone(phone); | |
367 | + result = sysUserService.checkUserIsEffective(sysUser); | |
368 | + if (!result.isSuccess()) { | |
369 | + return result; | |
370 | + } | |
371 | + | |
372 | + String smscode = jsonObject.getString("captcha"); | |
373 | + Object code = redisUtil.get(phone); | |
374 | + if (!smscode.equals(code)) { | |
375 | + result.setMessage("手机验证码错误"); | |
376 | + return result; | |
377 | + } | |
378 | + | |
379 | + String warehouseCode = jsonObject.getString("warehouseCode"); | |
380 | + if (StringUtils.isEmpty(warehouseCode)) { | |
381 | + return Result.error("仓库编码为空"); | |
382 | + } | |
383 | + // 用户信息 | |
384 | + userInfo(sysUser, result, warehouseCode); | |
385 | + // 添加日志 | |
386 | + baseCommonService.addLog("用户名: " + sysUser.getUsername() + ",登录成功!", CommonConstant.LOG_TYPE_1, null); | |
387 | + | |
388 | + return result; | |
389 | + } | |
390 | + | |
391 | + /** | |
392 | + * 用户信息 | |
393 | + * | |
394 | + * @param sysUser | |
395 | + * @param result | |
396 | + * @param warehouseCode | |
397 | + * @return | |
398 | + */ | |
399 | + private Result<JSONObject> userInfo(SysUser sysUser, Result<JSONObject> result, String warehouseCode) { | |
400 | + String syspassword = sysUser.getPassword(); | |
401 | + String username = sysUser.getUsername(); | |
402 | + // 获取用户部门信息 | |
403 | + JSONObject obj = new JSONObject(); | |
404 | + List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId().toString()); | |
405 | + obj.put("departs", departs); | |
406 | + if (departs == null || departs.size() == 0) { | |
407 | + obj.put("multi_depart", 0); | |
408 | + } else if (departs.size() == 1) { | |
409 | + sysUserService.updateUserDepart(username, departs.get(0).getOrgCode()); | |
410 | + obj.put("multi_depart", 1); | |
411 | + } else { | |
412 | + // 查询当前是否有登录部门 | |
413 | + // update-begin--Author:wangshuai Date:20200805 for:如果用戶为选择部门,数据库为存在上一次登录部门,则取一条存进去 | |
414 | + SysUser sysUserById = sysUserService.getById(sysUser.getId()); | |
415 | + if (oConvertUtils.isEmpty(sysUserById.getOrgCode())) { | |
416 | + sysUserService.updateUserDepart(username, departs.get(0).getOrgCode()); | |
417 | + } | |
418 | + // update-end--Author:wangshuai Date:20200805 for:如果用戶为选择部门,数据库为存在上一次登录部门,则取一条存进去 | |
419 | + obj.put("multi_depart", 2); | |
420 | + } | |
421 | + // update-begin--Author:sunjianlei Date:20210802 for:获取用户租户信息 | |
422 | + String tenantIds = sysUser.getRelTenantIds(); | |
423 | + if (oConvertUtils.isNotEmpty(tenantIds)) { | |
424 | + List<Integer> tenantIdList = new ArrayList<>(); | |
425 | + for (String id : tenantIds.split(",")) { | |
426 | + tenantIdList.add(Integer.valueOf(id)); | |
427 | + } | |
428 | + // 该方法仅查询有效的租户,如果返回0个就说明所有的租户均无效。 | |
429 | + List<SysTenant> tenantList = sysTenantService.queryEffectiveTenant(tenantIdList); | |
430 | + if (tenantList.size() == 0) { | |
431 | + result.error500("与该用户关联的租户均已被冻结,无法登录!"); | |
432 | + return result; | |
433 | + } else { | |
434 | + obj.put("tenantList", tenantList); | |
435 | + } | |
436 | + } | |
437 | + | |
438 | + // 删除相同用户名称对应的key | |
439 | + Collection<String> keys = redisTemplate.keys(CommonConstant.PREFIX_USER_TOKEN + "*"); | |
440 | + for (String key : keys) { | |
441 | + String token = (String)redisUtil.get(key); | |
442 | + LoginUser loginUser = sysBaseAPI.getUserByName(JwtUtil.getUsername(token)); | |
443 | + if (loginUser != null) { | |
444 | + if (oConvertUtils.isNotEmpty(username) && loginUser.getUsername().contains(username)) { | |
445 | + log.info(" 强制 " + sysUser.getRealname() + "退出成功! "); | |
446 | + // 清空用户登录Token缓存 | |
447 | + redisUtil.del(token); | |
448 | + redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token); | |
449 | + // 清空用户登录Shiro权限缓存 | |
450 | + redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId()); | |
451 | + // 清空用户的缓存信息(包括部门信息),例如sys:cache:user::<username> | |
452 | + redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername())); | |
453 | + // 调用shiro的logout | |
454 | + SecurityUtils.getSubject().logout(); | |
455 | + // | |
456 | + redisUtil.del(key); | |
457 | + } | |
458 | + } | |
459 | + } | |
460 | + // update-end--Author:sunjianlei Date:20210802 for:获取用户租户信息 | |
461 | + // 生成token | |
462 | + String token = HuahengJwtUtil.sign(username, syspassword, warehouseCode); | |
463 | + // 设置token缓存有效时间 | |
464 | + redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); | |
465 | + redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); | |
466 | + obj.put("token", token); | |
467 | + obj.put("userInfo", sysUser); | |
468 | + obj.put("sysAllDictItems", sysDictService.queryAllDictItems()); | |
469 | + result.setResult(obj); | |
470 | + result.success("登录成功"); | |
471 | + return result; | |
472 | + } | |
473 | + | |
474 | + /** | |
475 | + * 获取加密字符串 | |
476 | + * | |
477 | + * @return | |
478 | + */ | |
479 | + @GetMapping(value = "/getEncryptedString") | |
480 | + public Result<Map<String, String>> getEncryptedString() { | |
481 | + Result<Map<String, String>> result = new Result<Map<String, String>>(); | |
482 | + Map<String, String> map = new HashMap<String, String>(); | |
483 | + map.put("key", EncryptedString.key); | |
484 | + map.put("iv", EncryptedString.iv); | |
485 | + result.setResult(map); | |
486 | + return result; | |
487 | + } | |
488 | + | |
489 | + /** | |
490 | + * 后台生成图形验证码 :有效 | |
491 | + * | |
492 | + * @param response | |
493 | + * @param key | |
494 | + */ | |
495 | + @ApiOperation("获取验证码") | |
496 | + @GetMapping(value = "/randomImage/{key}") | |
497 | + public Result<String> randomImage(HttpServletResponse response, @PathVariable String key) { | |
498 | + Result<String> res = new Result<String>(); | |
499 | + try { | |
500 | + // 生成验证码 | |
501 | + final String BASE_CHECK_CODES = "qwertyuiplkjhgfdsazxcvbnmQWERTYUPLKJHGFDSAZXCVBNM1234567890"; | |
502 | + String code = RandomUtil.randomString(BASE_CHECK_CODES, 4); | |
503 | + | |
504 | + // 存到redis中 | |
505 | + String lowerCaseCode = code.toLowerCase(); | |
506 | + String realKey = MD5Util.MD5Encode(lowerCaseCode + key, "utf-8"); | |
510 | 507 | log.info("获取验证码,Redis checkCode = {},key = {}", code, key); |
511 | - redisUtil.set(realKey, lowerCaseCode, 60); | |
512 | - | |
513 | - //返回前端 | |
514 | - String base64 = RandImageUtil.generate(code); | |
515 | - res.setSuccess(true); | |
516 | - res.setResult(base64); | |
517 | - } catch (Exception e) { | |
518 | - res.error500("获取验证码出错"+e.getMessage()); | |
519 | - e.printStackTrace(); | |
520 | - } | |
521 | - return res; | |
522 | - } | |
523 | - | |
524 | - /** | |
525 | - * app登录 | |
526 | - * @param sysLoginModel | |
527 | - * @return | |
528 | - * @throws Exception | |
529 | - */ | |
530 | - @RequestMapping(value = "/mLogin", method = RequestMethod.POST) | |
531 | - public Result<JSONObject> mLogin(@RequestBody SysLoginModel sysLoginModel) throws Exception { | |
532 | - Result<JSONObject> result = new Result<JSONObject>(); | |
533 | - String username = sysLoginModel.getUsername(); | |
534 | - String password = sysLoginModel.getPassword(); | |
535 | - | |
536 | - //1. 校验用户是否有效 | |
537 | - SysUser sysUser = sysUserService.getUserByName(username); | |
538 | - result = sysUserService.checkUserIsEffective(sysUser); | |
539 | - if(!result.isSuccess()) { | |
540 | - return result; | |
541 | - } | |
542 | - | |
543 | - //2. 校验用户名或密码是否正确 | |
544 | - String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); | |
545 | - String syspassword = sysUser.getPassword(); | |
546 | - if (!syspassword.equals(userpassword)) { | |
547 | - result.error500("用户名或密码错误"); | |
548 | - return result; | |
549 | - } | |
550 | - | |
551 | - String orgCode = sysUser.getOrgCode(); | |
552 | - if(oConvertUtils.isEmpty(orgCode)) { | |
553 | - //如果当前用户无选择部门 查看部门关联信息 | |
554 | - List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId().toString()); | |
555 | - //update-begin-author:taoyan date:20220117 for: JTC-1068【app】新建用户,没有设置部门及角色,点击登录提示暂未归属部,一直在登录页面 使用手机号登录 可正常 | |
556 | - if (departs == null || departs.size() == 0) { | |
557 | - /*result.error500("用户暂未归属部门,不可登录!"); | |
558 | - return result;*/ | |
559 | - }else{ | |
560 | - orgCode = departs.get(0).getOrgCode(); | |
561 | - sysUser.setOrgCode(orgCode); | |
562 | - this.sysUserService.updateUserDepart(username, orgCode); | |
563 | - } | |
564 | - //update-end-author:taoyan date:20220117 for: JTC-1068【app】新建用户,没有设置部门及角色,点击登录提示暂未归属部,一直在登录页面 使用手机号登录 可正常 | |
565 | - } | |
566 | - JSONObject obj = new JSONObject(); | |
567 | - //用户登录信息 | |
568 | - obj.put("userInfo", sysUser); | |
569 | - | |
570 | - // 生成token | |
571 | - String token = JwtUtil.sign(username, syspassword); | |
572 | - // 设置超时时间 | |
573 | - redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); | |
574 | - redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME*2 / 1000); | |
575 | - | |
576 | - //token 信息 | |
577 | - obj.put("token", token); | |
578 | - result.setResult(obj); | |
579 | - result.setSuccess(true); | |
580 | - result.setCode(200); | |
581 | - baseCommonService.addLog("用户名: " + username + ",登录成功[移动端]!", CommonConstant.LOG_TYPE_1, null); | |
582 | - return result; | |
583 | - } | |
584 | - | |
585 | - /** | |
586 | - * 图形验证码 | |
587 | - * @param sysLoginModel | |
588 | - * @return | |
589 | - */ | |
590 | - @RequestMapping(value = "/checkCaptcha", method = RequestMethod.POST) | |
591 | - public Result<?> checkCaptcha(@RequestBody SysLoginModel sysLoginModel){ | |
592 | - String captcha = sysLoginModel.getCaptcha(); | |
593 | - String checkKey = sysLoginModel.getCheckKey(); | |
594 | - if(captcha==null){ | |
595 | - return Result.error("验证码无效"); | |
596 | - } | |
597 | - String lowerCaseCaptcha = captcha.toLowerCase(); | |
598 | - String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+checkKey, "utf-8"); | |
599 | - Object checkCode = redisUtil.get(realKey); | |
600 | - if(checkCode==null || !checkCode.equals(lowerCaseCaptcha)) { | |
601 | - return Result.error("验证码错误"); | |
602 | - } | |
603 | - return Result.ok(); | |
604 | - } | |
605 | - /** | |
606 | - * 登录二维码 | |
607 | - */ | |
608 | - @ApiOperation(value = "登录二维码", notes = "登录二维码") | |
609 | - @GetMapping("/getLoginQrcode") | |
610 | - public Result<?> getLoginQrcode() { | |
611 | - String qrcodeId = CommonConstant.LOGIN_QRCODE_PRE+IdWorker.getIdStr(); | |
612 | - //定义二维码参数 | |
613 | - Map params = new HashMap(5); | |
614 | - params.put("qrcodeId", qrcodeId); | |
615 | - //存放二维码唯一标识30秒有效 | |
616 | - redisUtil.set(CommonConstant.LOGIN_QRCODE + qrcodeId, qrcodeId, 30); | |
617 | - return Result.OK(params); | |
618 | - } | |
619 | - /** | |
620 | - * 扫码二维码 | |
621 | - */ | |
622 | - @ApiOperation(value = "扫码登录二维码", notes = "扫码登录二维码") | |
623 | - @PostMapping("/scanLoginQrcode") | |
624 | - public Result<?> scanLoginQrcode(@RequestParam String qrcodeId, @RequestParam String token) { | |
625 | - Object check = redisUtil.get(CommonConstant.LOGIN_QRCODE + qrcodeId); | |
626 | - if (oConvertUtils.isNotEmpty(check)) { | |
627 | - //存放token给前台读取 | |
628 | - redisUtil.set(CommonConstant.LOGIN_QRCODE_TOKEN+qrcodeId, token, 60); | |
629 | - } else { | |
630 | - return Result.error("二维码已过期,请刷新后重试"); | |
631 | - } | |
632 | - return Result.OK("扫码成功"); | |
633 | - } | |
634 | - | |
635 | - | |
636 | - /** | |
637 | - * 获取用户扫码后保存的token | |
638 | - */ | |
639 | - @ApiOperation(value = "获取用户扫码后保存的token", notes = "获取用户扫码后保存的token") | |
640 | - @GetMapping("/getQrcodeToken") | |
641 | - public Result getQrcodeToken(@RequestParam String qrcodeId) { | |
642 | - Object token = redisUtil.get(CommonConstant.LOGIN_QRCODE_TOKEN + qrcodeId); | |
643 | - Map result = new HashMap(); | |
644 | - Object qrcodeIdExpire = redisUtil.get(CommonConstant.LOGIN_QRCODE + qrcodeId); | |
645 | - if (oConvertUtils.isEmpty(qrcodeIdExpire)) { | |
646 | - //二维码过期通知前台刷新 | |
647 | - result.put("token", "-2"); | |
648 | - return Result.OK(result); | |
649 | - } | |
650 | - if (oConvertUtils.isNotEmpty(token)) { | |
651 | - result.put("success", true); | |
652 | - result.put("token", token); | |
653 | - } else { | |
654 | - result.put("token", "-1"); | |
655 | - } | |
656 | - return Result.OK(result); | |
657 | - } | |
658 | - | |
659 | - /** | |
660 | - * 通过用户名获取可以登陆的仓库列表 | |
661 | - */ | |
662 | - @ApiOperation(value = "获取用户仓库", notes = "根据登录名查仓库") | |
663 | - @PostMapping("/getWarehouseByUserCode") | |
664 | - @ResponseBody | |
665 | - public Result getWarehouseByUserCode(@RequestBody SysUser sysUser) | |
666 | - { | |
667 | - String loginName = sysUser.getUsername(); | |
668 | - if (StringUtils.isNotEmpty(loginName)) | |
669 | - { | |
670 | - List<Map<String, Object>> list = sysUserService.getWarehouseByUserCode(loginName); | |
671 | - return Result.OK(list); | |
672 | - } | |
673 | - else | |
674 | - { | |
675 | - return Result.error("用户名不能为空"); | |
676 | - } | |
677 | - } | |
508 | + redisUtil.set(realKey, lowerCaseCode, 60); | |
509 | + | |
510 | + // 返回前端 | |
511 | + String base64 = RandImageUtil.generate(code); | |
512 | + res.setSuccess(true); | |
513 | + res.setResult(base64); | |
514 | + } catch (Exception e) { | |
515 | + res.error500("获取验证码出错" + e.getMessage()); | |
516 | + e.printStackTrace(); | |
517 | + } | |
518 | + return res; | |
519 | + } | |
520 | + | |
521 | + /** | |
522 | + * app登录 | |
523 | + * | |
524 | + * @param sysLoginModel | |
525 | + * @return | |
526 | + * @throws Exception | |
527 | + */ | |
528 | + @RequestMapping(value = "/mLogin", method = RequestMethod.POST) | |
529 | + public Result<JSONObject> mLogin(@RequestBody SysLoginModel sysLoginModel) throws Exception { | |
530 | + Result<JSONObject> result = new Result<JSONObject>(); | |
531 | + String username = sysLoginModel.getUsername(); | |
532 | + String password = sysLoginModel.getPassword(); | |
533 | + | |
534 | + // 1. 校验用户是否有效 | |
535 | + SysUser sysUser = sysUserService.getUserByName(username); | |
536 | + result = sysUserService.checkUserIsEffective(sysUser); | |
537 | + if (!result.isSuccess()) { | |
538 | + return result; | |
539 | + } | |
540 | + | |
541 | + // 2. 校验用户名或密码是否正确 | |
542 | + String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); | |
543 | + String syspassword = sysUser.getPassword(); | |
544 | + if (!syspassword.equals(userpassword)) { | |
545 | + result.error500("用户名或密码错误"); | |
546 | + return result; | |
547 | + } | |
548 | + | |
549 | + String orgCode = sysUser.getOrgCode(); | |
550 | + if (oConvertUtils.isEmpty(orgCode)) { | |
551 | + // 如果当前用户无选择部门 查看部门关联信息 | |
552 | + List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId().toString()); | |
553 | + // update-begin-author:taoyan date:20220117 for: JTC-1068【app】新建用户,没有设置部门及角色,点击登录提示暂未归属部,一直在登录页面 使用手机号登录 可正常 | |
554 | + if (departs == null || departs.size() == 0) { | |
555 | + /* | |
556 | + * result.error500("用户暂未归属部门,不可登录!"); | |
557 | + * return result; | |
558 | + */ | |
559 | + } else { | |
560 | + orgCode = departs.get(0).getOrgCode(); | |
561 | + sysUser.setOrgCode(orgCode); | |
562 | + this.sysUserService.updateUserDepart(username, orgCode); | |
563 | + } | |
564 | + // update-end-author:taoyan date:20220117 for: JTC-1068【app】新建用户,没有设置部门及角色,点击登录提示暂未归属部,一直在登录页面 使用手机号登录 可正常 | |
565 | + } | |
566 | + JSONObject obj = new JSONObject(); | |
567 | + // 用户登录信息 | |
568 | + obj.put("userInfo", sysUser); | |
569 | + | |
570 | + // 生成token | |
571 | + String token = JwtUtil.sign(username, syspassword); | |
572 | + // 设置超时时间 | |
573 | + redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); | |
574 | + redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); | |
575 | + | |
576 | + // token 信息 | |
577 | + obj.put("token", token); | |
578 | + result.setResult(obj); | |
579 | + result.setSuccess(true); | |
580 | + result.setCode(200); | |
581 | + baseCommonService.addLog("用户名: " + username + ",登录成功[移动端]!", CommonConstant.LOG_TYPE_1, null); | |
582 | + return result; | |
583 | + } | |
584 | + | |
585 | + /** | |
586 | + * 图形验证码 | |
587 | + * | |
588 | + * @param sysLoginModel | |
589 | + * @return | |
590 | + */ | |
591 | + @RequestMapping(value = "/checkCaptcha", method = RequestMethod.POST) | |
592 | + public Result<?> checkCaptcha(@RequestBody SysLoginModel sysLoginModel) { | |
593 | + String captcha = sysLoginModel.getCaptcha(); | |
594 | + String checkKey = sysLoginModel.getCheckKey(); | |
595 | + if (captcha == null) { | |
596 | + return Result.error("验证码无效"); | |
597 | + } | |
598 | + String lowerCaseCaptcha = captcha.toLowerCase(); | |
599 | + String realKey = MD5Util.MD5Encode(lowerCaseCaptcha + checkKey, "utf-8"); | |
600 | + Object checkCode = redisUtil.get(realKey); | |
601 | + if (checkCode == null || !checkCode.equals(lowerCaseCaptcha)) { | |
602 | + return Result.error("验证码错误"); | |
603 | + } | |
604 | + return Result.ok(); | |
605 | + } | |
606 | + | |
607 | + /** | |
608 | + * 登录二维码 | |
609 | + */ | |
610 | + @ApiOperation(value = "登录二维码", notes = "登录二维码") | |
611 | + @GetMapping("/getLoginQrcode") | |
612 | + public Result<?> getLoginQrcode() { | |
613 | + String qrcodeId = CommonConstant.LOGIN_QRCODE_PRE + IdWorker.getIdStr(); | |
614 | + // 定义二维码参数 | |
615 | + Map<String, String> params = new HashMap<String, String>(5); | |
616 | + params.put("qrcodeId", qrcodeId); | |
617 | + // 存放二维码唯一标识30秒有效 | |
618 | + redisUtil.set(CommonConstant.LOGIN_QRCODE + qrcodeId, qrcodeId, 30); | |
619 | + return Result.OK(params); | |
620 | + } | |
621 | + | |
622 | + /** | |
623 | + * 扫码二维码 | |
624 | + */ | |
625 | + @ApiOperation(value = "扫码登录二维码", notes = "扫码登录二维码") | |
626 | + @PostMapping("/scanLoginQrcode") | |
627 | + public Result<?> scanLoginQrcode(@RequestParam String qrcodeId, @RequestParam String token) { | |
628 | + Object check = redisUtil.get(CommonConstant.LOGIN_QRCODE + qrcodeId); | |
629 | + if (oConvertUtils.isNotEmpty(check)) { | |
630 | + // 存放token给前台读取 | |
631 | + redisUtil.set(CommonConstant.LOGIN_QRCODE_TOKEN + qrcodeId, token, 60); | |
632 | + } else { | |
633 | + return Result.error("二维码已过期,请刷新后重试"); | |
634 | + } | |
635 | + return Result.OK("扫码成功"); | |
636 | + } | |
637 | + | |
638 | + /** | |
639 | + * 获取用户扫码后保存的token | |
640 | + */ | |
641 | + @ApiOperation(value = "获取用户扫码后保存的token", notes = "获取用户扫码后保存的token") | |
642 | + @GetMapping("/getQrcodeToken") | |
643 | + public Result<?> getQrcodeToken(@RequestParam String qrcodeId) { | |
644 | + Object token = redisUtil.get(CommonConstant.LOGIN_QRCODE_TOKEN + qrcodeId); | |
645 | + Map<String, Object> result = new HashMap<String, Object>(); | |
646 | + Object qrcodeIdExpire = redisUtil.get(CommonConstant.LOGIN_QRCODE + qrcodeId); | |
647 | + if (oConvertUtils.isEmpty(qrcodeIdExpire)) { | |
648 | + // 二维码过期通知前台刷新 | |
649 | + result.put("token", "-2"); | |
650 | + return Result.OK(result); | |
651 | + } | |
652 | + if (oConvertUtils.isNotEmpty(token)) { | |
653 | + result.put("success", true); | |
654 | + result.put("token", token); | |
655 | + } else { | |
656 | + result.put("token", "-1"); | |
657 | + } | |
658 | + return Result.OK(result); | |
659 | + } | |
660 | + | |
661 | + /** | |
662 | + * 通过用户名获取可以登陆的仓库列表 | |
663 | + */ | |
664 | + @ApiOperation(value = "获取用户仓库", notes = "根据登录名查仓库") | |
665 | + @PostMapping("/getWarehouseByUserCode") | |
666 | + @ResponseBody | |
667 | + public Result<?> getWarehouseByUserCode(@RequestBody SysUser sysUser) { | |
668 | + String loginName = sysUser.getUsername(); | |
669 | + if (StringUtils.isNotEmpty(loginName)) { | |
670 | + List<Map<String, Object>> list = sysUserService.getWarehouseByUserCode(loginName); | |
671 | + return Result.OK(list); | |
672 | + } else { | |
673 | + return Result.error("用户名不能为空"); | |
674 | + } | |
675 | + } | |
678 | 676 | |
679 | 677 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
1 | 1 | package org.jeecg.modules.system.controller; |
2 | 2 | |
3 | - | |
4 | 3 | import java.io.IOException; |
5 | 4 | import java.util.ArrayList; |
6 | 5 | import java.util.Arrays; |
... | ... | @@ -20,7 +19,6 @@ import org.apache.shiro.SecurityUtils; |
20 | 19 | import org.jeecg.common.api.vo.Result; |
21 | 20 | import org.jeecg.common.aspect.annotation.PermissionData; |
22 | 21 | import org.jeecg.common.constant.CommonConstant; |
23 | -import org.jeecg.common.system.api.ISysBaseAPI; | |
24 | 22 | import org.jeecg.common.system.query.QueryGenerator; |
25 | 23 | import org.jeecg.common.system.util.JwtUtil; |
26 | 24 | import org.jeecg.common.system.vo.LoginUser; |
... | ... | @@ -52,6 +50,7 @@ import org.jeecgframework.poi.excel.entity.ImportParams; |
52 | 50 | import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; |
53 | 51 | import org.springframework.beans.factory.annotation.Autowired; |
54 | 52 | import org.springframework.beans.factory.annotation.Value; |
53 | +import org.springframework.util.CollectionUtils; | |
55 | 54 | import org.springframework.web.bind.annotation.GetMapping; |
56 | 55 | import org.springframework.web.bind.annotation.PostMapping; |
57 | 56 | import org.springframework.web.bind.annotation.RequestBody; |
... | ... | @@ -87,23 +86,18 @@ import lombok.extern.slf4j.Slf4j; |
87 | 86 | @RestController |
88 | 87 | @RequestMapping("/sys/user") |
89 | 88 | public class SysUserController { |
90 | - @Autowired | |
91 | - private ISysBaseAPI sysBaseAPI; | |
92 | 89 | |
93 | - @Autowired | |
94 | - private ISysUserService sysUserService; | |
90 | + @Autowired | |
91 | + private ISysUserService sysUserService; | |
95 | 92 | |
96 | 93 | @Autowired |
97 | 94 | private ISysDepartService sysDepartService; |
98 | 95 | |
99 | - @Autowired | |
100 | - private ISysUserRoleService sysUserRoleService; | |
101 | - | |
102 | - @Autowired | |
103 | - private ISysUserDepartService sysUserDepartService; | |
96 | + @Autowired | |
97 | + private ISysUserRoleService sysUserRoleService; | |
104 | 98 | |
105 | - @Autowired | |
106 | - private ISysUserRoleService userRoleService; | |
99 | + @Autowired | |
100 | + private ISysUserDepartService sysUserDepartService; | |
107 | 101 | |
108 | 102 | @Autowired |
109 | 103 | private ISysDepartRoleUserService departRoleUserService; |
... | ... | @@ -111,8 +105,8 @@ public class SysUserController { |
111 | 105 | @Autowired |
112 | 106 | private ISysDepartRoleService departRoleService; |
113 | 107 | |
114 | - @Autowired | |
115 | - private RedisUtil redisUtil; | |
108 | + @Autowired | |
109 | + private RedisUtil redisUtil; | |
116 | 110 | |
117 | 111 | @Value("${jeecg.path.upload}") |
118 | 112 | private String upLoadPath; |
... | ... | @@ -122,6 +116,7 @@ public class SysUserController { |
122 | 116 | |
123 | 117 | /** |
124 | 118 | * 获取用户列表数据 |
119 | + * | |
125 | 120 | * @param user |
126 | 121 | * @param pageNo |
127 | 122 | * @param pageSize |
... | ... | @@ -129,173 +124,174 @@ public class SysUserController { |
129 | 124 | * @return |
130 | 125 | */ |
131 | 126 | @PermissionData(pageComponent = "system/UserList") |
132 | - @RequestMapping(value = "/list", method = RequestMethod.GET) | |
133 | - public Result<IPage<SysUser>> queryPageList(SysUser user,@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, | |
134 | - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,HttpServletRequest req) { | |
135 | - Result<IPage<SysUser>> result = new Result<IPage<SysUser>>(); | |
136 | - QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap()); | |
137 | - | |
138 | - //update-begin-Author:wangshuai--Date:20211119--for:【vue3】通过部门id查询用户,通过code查询id | |
139 | - //部门ID | |
127 | + @RequestMapping(value = "/list", method = RequestMethod.GET) | |
128 | + public Result<IPage<SysUser>> queryPageList(SysUser user, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
129 | + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { | |
130 | + Result<IPage<SysUser>> result = new Result<IPage<SysUser>>(); | |
131 | + QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap()); | |
132 | + | |
133 | + // update-begin-Author:wangshuai--Date:20211119--for:【vue3】通过部门id查询用户,通过code查询id | |
134 | + // 部门ID | |
140 | 135 | String departId = req.getParameter("departId"); |
141 | - if(oConvertUtils.isNotEmpty(departId)){ | |
136 | + if (oConvertUtils.isNotEmpty(departId)) { | |
142 | 137 | LambdaQueryWrapper<SysUserDepart> query = new LambdaQueryWrapper<>(); |
143 | - query.eq(SysUserDepart::getDepId,departId); | |
138 | + query.eq(SysUserDepart::getDepId, departId); | |
144 | 139 | List<SysUserDepart> list = sysUserDepartService.list(query); |
145 | 140 | |
146 | - //List<String> userIds = list.stream().map(SysUserDepart::getUserId).collect(Collectors.toList()); | |
147 | - List<String> userIds=new ArrayList<>(); | |
141 | + // List<String> userIds = list.stream().map(SysUserDepart::getUserId).collect(Collectors.toList()); | |
142 | + List<String> userIds = new ArrayList<>(); | |
148 | 143 | for (SysUserDepart depart : list) { |
149 | 144 | userIds.add(depart.getId().toString()); |
150 | 145 | } |
151 | - queryWrapper.in("id",userIds); | |
146 | + queryWrapper.in("id", userIds); | |
152 | 147 | } |
153 | - //用户ID | |
148 | + // 用户ID | |
154 | 149 | String code = req.getParameter("code"); |
155 | - if(oConvertUtils.isNotEmpty(code)){ | |
156 | - queryWrapper.in("id",Arrays.asList(code.split(","))); | |
150 | + if (oConvertUtils.isNotEmpty(code)) { | |
151 | + queryWrapper.in("id", Arrays.asList(code.split(","))); | |
157 | 152 | pageSize = code.split(",").length; |
158 | 153 | } |
159 | - //update-end-Author:wangshuai--Date:20211119--for:【vue3】通过部门id查询用户,通过code查询id | |
154 | + // update-end-Author:wangshuai--Date:20211119--for:【vue3】通过部门id查询用户,通过code查询id | |
160 | 155 | |
161 | - //update-begin-author:taoyan--date:20220104--for: JTC-372 【用户冻结问题】 online授权、用户组件,选择用户都能看到被冻结的用户 | |
156 | + // update-begin-author:taoyan--date:20220104--for: JTC-372 【用户冻结问题】 online授权、用户组件,选择用户都能看到被冻结的用户 | |
162 | 157 | String status = req.getParameter("status"); |
163 | - if(oConvertUtils.isNotEmpty(status)){ | |
158 | + if (oConvertUtils.isNotEmpty(status)) { | |
164 | 159 | queryWrapper.eq("status", Integer.parseInt(status)); |
165 | 160 | } |
166 | - //update-end-author:taoyan--date:20220104--for: JTC-372 【用户冻结问题】 online授权、用户组件,选择用户都能看到被冻结的用户 | |
167 | - | |
168 | - //TODO 外部模拟登陆临时账号,列表不显示 | |
169 | - queryWrapper.ne("username","_reserve_user_external"); | |
170 | - Page<SysUser> page = new Page<SysUser>(pageNo, pageSize); | |
171 | - IPage<SysUser> pageList = sysUserService.page(page, queryWrapper); | |
172 | - | |
173 | - //批量查询用户的所属部门 | |
174 | - //step.1 先拿到全部的 useids | |
175 | - //step.2 通过 useids,一次性查询用户的所属部门名字 | |
176 | - //List<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList()); | |
177 | - List<String> userIds=new ArrayList<>(); | |
161 | + // update-end-author:taoyan--date:20220104--for: JTC-372 【用户冻结问题】 online授权、用户组件,选择用户都能看到被冻结的用户 | |
162 | + | |
163 | + // TODO 外部模拟登陆临时账号,列表不显示 | |
164 | + queryWrapper.ne("username", "_reserve_user_external"); | |
165 | + Page<SysUser> page = new Page<SysUser>(pageNo, pageSize); | |
166 | + IPage<SysUser> pageList = sysUserService.page(page, queryWrapper); | |
167 | + | |
168 | + // 批量查询用户的所属部门 | |
169 | + // step.1 先拿到全部的 useids | |
170 | + // step.2 通过 useids,一次性查询用户的所属部门名字 | |
171 | + // List<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList()); | |
172 | + List<String> userIds = new ArrayList<>(); | |
178 | 173 | for (SysUser u : pageList.getRecords()) { |
179 | 174 | userIds.add(u.getId().toString()); |
180 | 175 | } |
181 | 176 | |
182 | - if(userIds!=null && userIds.size()>0){ | |
183 | - Map<String,String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); | |
184 | - pageList.getRecords().forEach(item->{ | |
185 | - item.setOrgCodeTxt(useDepNames.get(item.getId())); | |
177 | + if (userIds != null && userIds.size() > 0) { | |
178 | + Map<String, String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); | |
179 | + pageList.getRecords().forEach(item -> { | |
180 | + item.setOrgCodeTxt(useDepNames.get(item.getId().toString())); | |
186 | 181 | }); |
187 | 182 | } |
188 | - result.setSuccess(true); | |
189 | - result.setResult(pageList); | |
190 | - log.info(pageList.toString()); | |
191 | - return result; | |
192 | - } | |
193 | - | |
194 | - //@RequiresRoles({"admin"}) | |
195 | - //@RequiresPermissions("user:add") | |
196 | - @RequestMapping(value = "/add", method = RequestMethod.POST) | |
197 | - public Result<SysUser> add(@RequestBody JSONObject jsonObject) { | |
198 | - Result<SysUser> result = new Result<SysUser>(); | |
199 | - String selectedRoles = jsonObject.getString("selectedroles"); | |
200 | - String selectedDeparts = jsonObject.getString("selecteddeparts"); | |
201 | - try { | |
202 | - SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); | |
203 | - user.setCreateTime(new Date());//设置创建时间 | |
204 | - String salt = oConvertUtils.randomGen(8); | |
205 | - user.setSalt(salt); | |
206 | - String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), salt); | |
207 | - user.setPassword(passwordEncode); | |
208 | - user.setStatus(1); | |
209 | - user.setDelFlag(CommonConstant.DEL_FLAG_0); | |
210 | - // 保存用户走一个service 保证事务 | |
211 | - sysUserService.saveUser(user, selectedRoles, selectedDeparts); | |
212 | - result.success("添加成功!"); | |
213 | - } catch (Exception e) { | |
214 | - log.error(e.getMessage(), e); | |
215 | - result.error500("操作失败"); | |
216 | - } | |
217 | - return result; | |
218 | - } | |
219 | - | |
220 | - //@RequiresRoles({"admin"}) | |
221 | - //@RequiresPermissions("user:edit") | |
222 | - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) | |
223 | - public Result<SysUser> edit(@RequestBody JSONObject jsonObject) { | |
224 | - Result<SysUser> result = new Result<SysUser>(); | |
225 | - try { | |
226 | - SysUser sysUser = sysUserService.getById(jsonObject.getString("id")); | |
227 | - baseCommonService.addLog("编辑用户,id: " +jsonObject.getString("id") ,CommonConstant.LOG_TYPE_2, 2); | |
228 | - if(sysUser==null) { | |
229 | - result.error500("未找到对应实体"); | |
230 | - }else { | |
231 | - SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); | |
232 | - user.setUpdateTime(new Date()); | |
233 | - //String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), sysUser.getSalt()); | |
234 | - user.setPassword(sysUser.getPassword()); | |
235 | - String roles = jsonObject.getString("selectedroles"); | |
183 | + result.setSuccess(true); | |
184 | + result.setResult(pageList); | |
185 | + log.info(pageList.toString()); | |
186 | + return result; | |
187 | + } | |
188 | + | |
189 | + // @RequiresRoles({"admin"}) | |
190 | + // @RequiresPermissions("user:add") | |
191 | + @RequestMapping(value = "/add", method = RequestMethod.POST) | |
192 | + public Result<SysUser> add(@RequestBody JSONObject jsonObject) { | |
193 | + Result<SysUser> result = new Result<SysUser>(); | |
194 | + String selectedRoles = jsonObject.getString("selectedroles"); | |
195 | + String selectedDeparts = jsonObject.getString("selecteddeparts"); | |
196 | + try { | |
197 | + SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); | |
198 | + user.setCreateTime(new Date());// 设置创建时间 | |
199 | + String salt = oConvertUtils.randomGen(8); | |
200 | + user.setSalt(salt); | |
201 | + String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), salt); | |
202 | + user.setPassword(passwordEncode); | |
203 | + user.setStatus(1); | |
204 | + user.setDelFlag(CommonConstant.DEL_FLAG_0); | |
205 | + // 保存用户走一个service 保证事务 | |
206 | + sysUserService.saveUser(user, selectedRoles, selectedDeparts); | |
207 | + result.success("添加成功!"); | |
208 | + } catch (Exception e) { | |
209 | + log.error(e.getMessage(), e); | |
210 | + result.error500("操作失败"); | |
211 | + } | |
212 | + return result; | |
213 | + } | |
214 | + | |
215 | + // @RequiresRoles({"admin"}) | |
216 | + // @RequiresPermissions("user:edit") | |
217 | + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) | |
218 | + public Result<SysUser> edit(@RequestBody JSONObject jsonObject) { | |
219 | + Result<SysUser> result = new Result<SysUser>(); | |
220 | + try { | |
221 | + SysUser sysUser = sysUserService.getById(jsonObject.getString("id")); | |
222 | + baseCommonService.addLog("编辑用户,id: " + jsonObject.getString("id"), CommonConstant.LOG_TYPE_2, 2); | |
223 | + if (sysUser == null) { | |
224 | + result.error500("未找到对应实体"); | |
225 | + } else { | |
226 | + SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); | |
227 | + user.setUpdateTime(new Date()); | |
228 | + // String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), | |
229 | + // sysUser.getSalt()); | |
230 | + user.setPassword(sysUser.getPassword()); | |
231 | + String roles = jsonObject.getString("selectedroles"); | |
236 | 232 | String departs = jsonObject.getString("selecteddeparts"); |
237 | - if(oConvertUtils.isEmpty(departs)){ | |
238 | - //vue3.0前端只传递了departIds | |
239 | - departs=user.getDepartIds(); | |
233 | + if (oConvertUtils.isEmpty(departs)) { | |
234 | + // vue3.0前端只传递了departIds | |
235 | + departs = user.getDepartIds(); | |
240 | 236 | } |
241 | 237 | // 修改用户走一个service 保证事务 |
242 | - sysUserService.editUser(user, roles, departs); | |
243 | - result.success("修改成功!"); | |
244 | - } | |
245 | - } catch (Exception e) { | |
246 | - log.error(e.getMessage(), e); | |
247 | - result.error500("操作失败"); | |
248 | - } | |
249 | - return result; | |
250 | - } | |
251 | - | |
252 | - /** | |
253 | - * 删除用户 | |
254 | - */ | |
255 | - //@RequiresRoles({"admin"}) | |
256 | - @RequestMapping(value = "/delete", method = RequestMethod.DELETE) | |
257 | - public Result<?> delete(@RequestParam(name="id",required=true) String id) { | |
258 | - baseCommonService.addLog("删除用户,id: " +id ,CommonConstant.LOG_TYPE_2, 3); | |
259 | - this.sysUserService.deleteUser(id); | |
260 | - return Result.ok("删除用户成功"); | |
261 | - } | |
262 | - | |
263 | - /** | |
264 | - * 批量删除用户 | |
265 | - */ | |
266 | - //@RequiresRoles({"admin"}) | |
267 | - @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) | |
268 | - public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) { | |
269 | - baseCommonService.addLog("批量删除用户, ids: " +ids ,CommonConstant.LOG_TYPE_2, 3); | |
270 | - this.sysUserService.deleteBatchUsers(ids); | |
271 | - return Result.ok("批量删除用户成功"); | |
272 | - } | |
273 | - | |
274 | - /** | |
275 | - * 冻结&解冻用户 | |
276 | - * @param jsonObject | |
277 | - * @return | |
278 | - */ | |
279 | - //@RequiresRoles({"admin"}) | |
280 | - @RequestMapping(value = "/frozenBatch", method = RequestMethod.PUT) | |
281 | - public Result<SysUser> frozenBatch(@RequestBody JSONObject jsonObject) { | |
282 | - Result<SysUser> result = new Result<SysUser>(); | |
283 | - try { | |
284 | - String ids = jsonObject.getString("ids"); | |
285 | - String status = jsonObject.getString("status"); | |
286 | - String[] arr = ids.split(","); | |
287 | - for (String id : arr) { | |
288 | - if(oConvertUtils.isNotEmpty(id)) { | |
289 | - this.sysUserService.update(new SysUser().setStatus(Integer.parseInt(status)), | |
290 | - new UpdateWrapper<SysUser>().lambda().eq(SysUser::getId,id)); | |
291 | - } | |
292 | - } | |
293 | - } catch (Exception e) { | |
294 | - log.error(e.getMessage(), e); | |
295 | - result.error500("操作失败"+e.getMessage()); | |
296 | - } | |
297 | - result.success("操作成功!"); | |
298 | - return result; | |
238 | + sysUserService.editUser(user, roles, departs); | |
239 | + result.success("修改成功!"); | |
240 | + } | |
241 | + } catch (Exception e) { | |
242 | + log.error(e.getMessage(), e); | |
243 | + result.error500("操作失败"); | |
244 | + } | |
245 | + return result; | |
246 | + } | |
247 | + | |
248 | + /** | |
249 | + * 删除用户 | |
250 | + */ | |
251 | + // @RequiresRoles({"admin"}) | |
252 | + @RequestMapping(value = "/delete", method = RequestMethod.DELETE) | |
253 | + public Result<?> delete(@RequestParam(name = "id", required = true) String id) { | |
254 | + baseCommonService.addLog("删除用户,id: " + id, CommonConstant.LOG_TYPE_2, 3); | |
255 | + this.sysUserService.deleteUser(id); | |
256 | + return Result.ok("删除用户成功"); | |
257 | + } | |
258 | + | |
259 | + /** | |
260 | + * 批量删除用户 | |
261 | + */ | |
262 | + // @RequiresRoles({"admin"}) | |
263 | + @RequestMapping(value = "/deleteBatch", method = RequestMethod.DELETE) | |
264 | + public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { | |
265 | + baseCommonService.addLog("批量删除用户, ids: " + ids, CommonConstant.LOG_TYPE_2, 3); | |
266 | + this.sysUserService.deleteBatchUsers(ids); | |
267 | + return Result.ok("批量删除用户成功"); | |
268 | + } | |
269 | + | |
270 | + /** | |
271 | + * 冻结&解冻用户 | |
272 | + * | |
273 | + * @param jsonObject | |
274 | + * @return | |
275 | + */ | |
276 | + // @RequiresRoles({"admin"}) | |
277 | + @RequestMapping(value = "/frozenBatch", method = RequestMethod.PUT) | |
278 | + public Result<SysUser> frozenBatch(@RequestBody JSONObject jsonObject) { | |
279 | + Result<SysUser> result = new Result<SysUser>(); | |
280 | + try { | |
281 | + String ids = jsonObject.getString("ids"); | |
282 | + String status = jsonObject.getString("status"); | |
283 | + String[] arr = ids.split(","); | |
284 | + for (String id : arr) { | |
285 | + if (oConvertUtils.isNotEmpty(id)) { | |
286 | + this.sysUserService.update(new SysUser().setStatus(Integer.parseInt(status)), new UpdateWrapper<SysUser>().lambda().eq(SysUser::getId, id)); | |
287 | + } | |
288 | + } | |
289 | + } catch (Exception e) { | |
290 | + log.error(e.getMessage(), e); | |
291 | + result.error500("操作失败" + e.getMessage()); | |
292 | + } | |
293 | + result.success("操作成功!"); | |
294 | + return result; | |
299 | 295 | |
300 | 296 | } |
301 | 297 | |
... | ... | @@ -329,10 +325,9 @@ public class SysUserController { |
329 | 325 | return result; |
330 | 326 | } |
331 | 327 | |
332 | - | |
333 | 328 | /** |
334 | - * 校验用户账号是否唯一<br> | |
335 | - * 可以校验其他 需要检验什么就传什么。。。 | |
329 | + * 校验用户账号是否唯一<br> | |
330 | + * 可以校验其他 需要检验什么就传什么。。。 | |
336 | 331 | * |
337 | 332 | * @param sysUser |
338 | 333 | * @return |
... | ... | @@ -340,10 +335,10 @@ public class SysUserController { |
340 | 335 | @RequestMapping(value = "/checkOnlyUser", method = RequestMethod.GET) |
341 | 336 | public Result<Boolean> checkOnlyUser(SysUser sysUser) { |
342 | 337 | Result<Boolean> result = new Result<>(); |
343 | - //如果此参数为false则程序发生异常 | |
338 | + // 如果此参数为false则程序发生异常 | |
344 | 339 | result.setResult(true); |
345 | 340 | try { |
346 | - //通过传入信息查询新的用户信息 | |
341 | + // 通过传入信息查询新的用户信息 | |
347 | 342 | sysUser.setPassword(null); |
348 | 343 | SysUser user = sysUserService.getOne(new QueryWrapper<SysUser>(sysUser)); |
349 | 344 | if (user != null) { |
... | ... | @@ -364,7 +359,7 @@ public class SysUserController { |
364 | 359 | /** |
365 | 360 | * 修改密码 |
366 | 361 | */ |
367 | - //@RequiresRoles({"admin"}) | |
362 | + // @RequiresRoles({"admin"}) | |
368 | 363 | @RequestMapping(value = "/changePassword", method = RequestMethod.PUT) |
369 | 364 | public Result<?> changePassword(@RequestBody SysUser sysUser) { |
370 | 365 | SysUser u = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, sysUser.getUsername())); |
... | ... | @@ -396,7 +391,7 @@ public class SysUserController { |
396 | 391 | } |
397 | 392 | return result; |
398 | 393 | } catch (Exception e) { |
399 | - log.error(e.getMessage(), e); | |
394 | + log.error(e.getMessage(), e); | |
400 | 395 | result.setSuccess(false); |
401 | 396 | result.setMessage("查找过程中出现了异常: " + e.getMessage()); |
402 | 397 | return result; |
... | ... | @@ -426,25 +421,26 @@ public class SysUserController { |
426 | 421 | * @return |
427 | 422 | */ |
428 | 423 | @RequestMapping(value = "/queryUserByDepId", method = RequestMethod.GET) |
429 | - public Result<List<SysUser>> queryUserByDepId(@RequestParam(name = "id", required = true) String id,@RequestParam(name="realname",required=false) String realname) { | |
424 | + public Result<List<SysUser>> queryUserByDepId(@RequestParam(name = "id", required = true) String id, | |
425 | + @RequestParam(name = "realname", required = false) String realname) { | |
430 | 426 | Result<List<SysUser>> result = new Result<>(); |
431 | - //List<SysUser> userList = sysUserDepartService.queryUserByDepId(id); | |
427 | + // List<SysUser> userList = sysUserDepartService.queryUserByDepId(id); | |
432 | 428 | SysDepart sysDepart = sysDepartService.getById(id); |
433 | - List<SysUser> userList = sysUserDepartService.queryUserByDepCode(sysDepart.getOrgCode(),realname); | |
429 | + List<SysUser> userList = sysUserDepartService.queryUserByDepCode(sysDepart.getOrgCode(), realname); | |
434 | 430 | |
435 | - //批量查询用户的所属部门 | |
436 | - //step.1 先拿到全部的 useids | |
437 | - //step.2 通过 useids,一次性查询用户的所属部门名字 | |
438 | - List<String> userIds=new ArrayList<>(); | |
431 | + // 批量查询用户的所属部门 | |
432 | + // step.1 先拿到全部的 useids | |
433 | + // step.2 通过 useids,一次性查询用户的所属部门名字 | |
434 | + List<String> userIds = new ArrayList<>(); | |
439 | 435 | for (SysUser user : userList) { |
440 | 436 | userIds.add(user.getId().toString()); |
441 | 437 | } |
442 | - //List<String> userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList()); | |
443 | - if(userIds!=null && userIds.size()>0){ | |
444 | - Map<String,String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); | |
445 | - userList.forEach(item->{ | |
446 | - //TODO 临时借用这个字段用于页面展示 | |
447 | - item.setOrgCodeTxt(useDepNames.get(item.getId())); | |
438 | + // List<String> userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList()); | |
439 | + if (userIds != null && userIds.size() > 0) { | |
440 | + Map<String, String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); | |
441 | + userList.forEach(item -> { | |
442 | + // TODO 临时借用这个字段用于页面展示 | |
443 | + item.setOrgCodeTxt(useDepNames.get(item.getId().toString())); | |
448 | 444 | }); |
449 | 445 | } |
450 | 446 | |
... | ... | @@ -453,25 +449,23 @@ public class SysUserController { |
453 | 449 | result.setResult(userList); |
454 | 450 | return result; |
455 | 451 | } catch (Exception e) { |
456 | - log.error(e.getMessage(), e); | |
452 | + log.error(e.getMessage(), e); | |
457 | 453 | result.setSuccess(false); |
458 | 454 | return result; |
459 | 455 | } |
460 | 456 | } |
461 | 457 | |
462 | 458 | /** |
463 | - * 用户选择组件 专用 根据用户账号或部门分页查询 | |
459 | + * 用户选择组件 专用 根据用户账号或部门分页查询 | |
460 | + * | |
464 | 461 | * @param departId |
465 | 462 | * @param username |
466 | 463 | * @return |
467 | 464 | */ |
468 | 465 | @RequestMapping(value = "/queryUserComponentData", method = RequestMethod.GET) |
469 | - public Result<IPage<SysUser>> queryUserComponentData( | |
470 | - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, | |
471 | - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, | |
472 | - @RequestParam(name = "departId", required = false) String departId, | |
473 | - @RequestParam(name="realname",required=false) String realname, | |
474 | - @RequestParam(name="username",required=false) String username) { | |
466 | + public Result<IPage<SysUser>> queryUserComponentData(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
467 | + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(name = "departId", required = false) String departId, | |
468 | + @RequestParam(name = "realname", required = false) String realname, @RequestParam(name = "username", required = false) String username) { | |
475 | 469 | IPage<SysUser> pageList = sysUserDepartService.queryDepartUserPageList(departId, username, realname, pageSize, pageNo); |
476 | 470 | return Result.OK(pageList); |
477 | 471 | } |
... | ... | @@ -483,24 +477,24 @@ public class SysUserController { |
483 | 477 | * @param sysUser |
484 | 478 | */ |
485 | 479 | @RequestMapping(value = "/exportXls") |
486 | - public ModelAndView exportXls(SysUser sysUser,HttpServletRequest request) { | |
480 | + public ModelAndView exportXls(SysUser sysUser, HttpServletRequest request) { | |
487 | 481 | // Step.1 组装查询条件 |
488 | 482 | QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(sysUser, request.getParameterMap()); |
489 | - //Step.2 AutoPoi 导出Excel | |
483 | + // Step.2 AutoPoi 导出Excel | |
490 | 484 | ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); |
491 | - //update-begin--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据-------------------- | |
485 | + // update-begin--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据-------------------- | |
492 | 486 | String selections = request.getParameter("selections"); |
493 | - if(!oConvertUtils.isEmpty(selections)){ | |
494 | - queryWrapper.in("id",selections.split(",")); | |
495 | - } | |
496 | - //update-end--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据---------------------- | |
487 | + if (!oConvertUtils.isEmpty(selections)) { | |
488 | + queryWrapper.in("id", CollectionUtils.arrayToList(selections.split(","))); | |
489 | + } | |
490 | + // update-end--Author:kangxiaolin Date:20180825 for:[03]用户导出,如果选择数据则只导出相关数据---------------------- | |
497 | 491 | List<SysUser> pageList = sysUserService.list(queryWrapper); |
498 | 492 | |
499 | - //导出文件名称 | |
493 | + // 导出文件名称 | |
500 | 494 | mv.addObject(NormalExcelConstants.FILE_NAME, "用户列表"); |
501 | 495 | mv.addObject(NormalExcelConstants.CLASS, SysUser.class); |
502 | - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); | |
503 | - ExportParams exportParams = new ExportParams("用户列表数据", "导出人:"+user.getRealname(), "导出信息"); | |
496 | + LoginUser user = (LoginUser)SecurityUtils.getSubject().getPrincipal(); | |
497 | + ExportParams exportParams = new ExportParams("用户列表数据", "导出人:" + user.getRealname(), "导出信息"); | |
504 | 498 | exportParams.setImageBasePath(upLoadPath); |
505 | 499 | mv.addObject(NormalExcelConstants.PARAMS, exportParams); |
506 | 500 | mv.addObject(NormalExcelConstants.DATA_LIST, pageList); |
... | ... | @@ -514,11 +508,11 @@ public class SysUserController { |
514 | 508 | * @param response |
515 | 509 | * @return |
516 | 510 | */ |
517 | - //@RequiresRoles({"admin"}) | |
518 | - //@RequiresPermissions("user:import") | |
511 | + // @RequiresRoles({"admin"}) | |
512 | + // @RequiresPermissions("user:import") | |
519 | 513 | @RequestMapping(value = "/importExcel", method = RequestMethod.POST) |
520 | - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response)throws IOException { | |
521 | - MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; | |
514 | + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) throws IOException { | |
515 | + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request; | |
522 | 516 | Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); |
523 | 517 | // 错误信息 |
524 | 518 | List<String> errorMessage = new ArrayList<>(); |
... | ... | @@ -558,7 +552,7 @@ public class SysUserController { |
558 | 552 | errorMessage.add("第 " + lineNumber + " 行:手机号已经存在,忽略导入。"); |
559 | 553 | } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER_EMAIL)) { |
560 | 554 | errorMessage.add("第 " + lineNumber + " 行:电子邮件已经存在,忽略导入。"); |
561 | - } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER)) { | |
555 | + } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_USER)) { | |
562 | 556 | errorMessage.add("第 " + lineNumber + " 行:违反表唯一性约束。"); |
563 | 557 | } else { |
564 | 558 | errorMessage.add("第 " + lineNumber + " 行:未知错误,忽略导入"); |
... | ... | @@ -585,58 +579,58 @@ public class SysUserController { |
585 | 579 | try { |
586 | 580 | file.getInputStream().close(); |
587 | 581 | } catch (IOException e) { |
588 | - log.error(e.getMessage(), e); | |
582 | + log.error(e.getMessage(), e); | |
589 | 583 | } |
590 | 584 | } |
591 | 585 | } |
592 | - return ImportExcelUtil.imporReturnRes(errorLines,successLines,errorMessage); | |
586 | + return ImportExcelUtil.imporReturnRes(errorLines, successLines, errorMessage); | |
593 | 587 | } |
594 | 588 | |
595 | 589 | /** |
596 | - * @功能:根据id 批量查询 | |
597 | - * @param userIds | |
598 | - * @return | |
599 | - */ | |
600 | - @RequestMapping(value = "/queryByIds", method = RequestMethod.GET) | |
601 | - public Result<Collection<SysUser>> queryByIds(@RequestParam String userIds) { | |
602 | - Result<Collection<SysUser>> result = new Result<>(); | |
603 | - String[] userId = userIds.split(","); | |
604 | - Collection<String> idList = Arrays.asList(userId); | |
605 | - Collection<SysUser> userRole = sysUserService.listByIds(idList); | |
606 | - result.setSuccess(true); | |
607 | - result.setResult(userRole); | |
608 | - return result; | |
609 | - } | |
610 | - | |
611 | - /** | |
612 | - * 首页用户重置密码 | |
613 | - */ | |
614 | - //@RequiresRoles({"admin"}) | |
590 | + * @功能:根据id 批量查询 | |
591 | + * @param userIds | |
592 | + * @return | |
593 | + */ | |
594 | + @RequestMapping(value = "/queryByIds", method = RequestMethod.GET) | |
595 | + public Result<Collection<SysUser>> queryByIds(@RequestParam String userIds) { | |
596 | + Result<Collection<SysUser>> result = new Result<>(); | |
597 | + String[] userId = userIds.split(","); | |
598 | + Collection<String> idList = Arrays.asList(userId); | |
599 | + Collection<SysUser> userRole = sysUserService.listByIds(idList); | |
600 | + result.setSuccess(true); | |
601 | + result.setResult(userRole); | |
602 | + return result; | |
603 | + } | |
604 | + | |
605 | + /** | |
606 | + * 首页用户重置密码 | |
607 | + */ | |
608 | + // @RequiresRoles({"admin"}) | |
615 | 609 | @RequestMapping(value = "/updatePassword", method = RequestMethod.PUT) |
616 | - public Result<?> updatePassword(@RequestBody JSONObject json) { | |
617 | - String username = json.getString("username"); | |
618 | - String oldpassword = json.getString("oldpassword"); | |
619 | - String password = json.getString("password"); | |
620 | - String confirmpassword = json.getString("confirmpassword"); | |
610 | + public Result<?> updatePassword(@RequestBody JSONObject json) { | |
611 | + String username = json.getString("username"); | |
612 | + String oldpassword = json.getString("oldpassword"); | |
613 | + String password = json.getString("password"); | |
614 | + String confirmpassword = json.getString("confirmpassword"); | |
621 | 615 | LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); |
622 | - if(!sysUser.getUsername().equals(username)){ | |
616 | + if (!sysUser.getUsername().equals(username)) { | |
623 | 617 | return Result.error("只允许修改自己的密码!"); |
624 | 618 | } |
625 | - SysUser user = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username)); | |
626 | - if(user==null) { | |
627 | - return Result.error("用户不存在!"); | |
628 | - } | |
629 | - return sysUserService.resetPassword(username,oldpassword,password,confirmpassword); | |
630 | - } | |
619 | + SysUser user = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username)); | |
620 | + if (user == null) { | |
621 | + return Result.error("用户不存在!"); | |
622 | + } | |
623 | + return sysUserService.resetPassword(username, oldpassword, password, confirmpassword); | |
624 | + } | |
631 | 625 | |
632 | 626 | @RequestMapping(value = "/userRoleList", method = RequestMethod.GET) |
633 | - public Result<IPage<SysUser>> userRoleList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, | |
634 | - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { | |
627 | + public Result<IPage<SysUser>> userRoleList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
628 | + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { | |
635 | 629 | Result<IPage<SysUser>> result = new Result<IPage<SysUser>>(); |
636 | 630 | Page<SysUser> page = new Page<SysUser>(pageNo, pageSize); |
637 | 631 | String roleId = req.getParameter("roleId"); |
638 | 632 | String username = req.getParameter("username"); |
639 | - IPage<SysUser> pageList = sysUserService.getUserByRoleId(page,roleId,username); | |
633 | + IPage<SysUser> pageList = sysUserService.getUserByRoleId(page, roleId, username); | |
640 | 634 | result.setSuccess(true); |
641 | 635 | result.setResult(pageList); |
642 | 636 | return result; |
... | ... | @@ -648,18 +642,18 @@ public class SysUserController { |
648 | 642 | * @param |
649 | 643 | * @return |
650 | 644 | */ |
651 | - //@RequiresRoles({"admin"}) | |
645 | + // @RequiresRoles({"admin"}) | |
652 | 646 | @RequestMapping(value = "/addSysUserRole", method = RequestMethod.POST) |
653 | 647 | public Result<String> addSysUserRole(@RequestBody SysUserRoleVO sysUserRoleVO) { |
654 | 648 | Result<String> result = new Result<String>(); |
655 | 649 | try { |
656 | 650 | String sysRoleId = sysUserRoleVO.getRoleId(); |
657 | - for(String sysUserId:sysUserRoleVO.getUserIdList()) { | |
658 | - SysUserRole sysUserRole = new SysUserRole(Integer.valueOf(sysUserId),Integer.valueOf(sysRoleId)); | |
651 | + for (String sysUserId : sysUserRoleVO.getUserIdList()) { | |
652 | + SysUserRole sysUserRole = new SysUserRole(Integer.valueOf(sysUserId), Integer.valueOf(sysRoleId)); | |
659 | 653 | QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<SysUserRole>(); |
660 | - queryWrapper.eq("role_id", sysRoleId).eq("user_id",sysUserId); | |
654 | + queryWrapper.eq("role_id", sysRoleId).eq("user_id", sysUserId); | |
661 | 655 | SysUserRole one = sysUserRoleService.getOne(queryWrapper); |
662 | - if(one==null){ | |
656 | + if (one == null) { | |
663 | 657 | sysUserRoleService.save(sysUserRole); |
664 | 658 | } |
665 | 659 | |
... | ... | @@ -667,30 +661,30 @@ public class SysUserController { |
667 | 661 | result.setMessage("添加成功!"); |
668 | 662 | result.setSuccess(true); |
669 | 663 | return result; |
670 | - }catch(Exception e) { | |
664 | + } catch (Exception e) { | |
671 | 665 | log.error(e.getMessage(), e); |
672 | 666 | result.setSuccess(false); |
673 | 667 | result.setMessage("出错了: " + e.getMessage()); |
674 | 668 | return result; |
675 | 669 | } |
676 | 670 | } |
671 | + | |
677 | 672 | /** |
678 | - * 删除指定角色的用户关系 | |
673 | + * 删除指定角色的用户关系 | |
674 | + * | |
679 | 675 | * @param |
680 | 676 | * @return |
681 | 677 | */ |
682 | - //@RequiresRoles({"admin"}) | |
678 | + // @RequiresRoles({"admin"}) | |
683 | 679 | @RequestMapping(value = "/deleteUserRole", method = RequestMethod.DELETE) |
684 | - public Result<SysUserRole> deleteUserRole(@RequestParam(name="roleId") String roleId, | |
685 | - @RequestParam(name="userId",required=true) String userId | |
686 | - ) { | |
680 | + public Result<SysUserRole> deleteUserRole(@RequestParam(name = "roleId") String roleId, @RequestParam(name = "userId", required = true) String userId) { | |
687 | 681 | Result<SysUserRole> result = new Result<SysUserRole>(); |
688 | 682 | try { |
689 | 683 | QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<SysUserRole>(); |
690 | - queryWrapper.eq("role_id", roleId).eq("user_id",userId); | |
684 | + queryWrapper.eq("role_id", roleId).eq("user_id", userId); | |
691 | 685 | sysUserRoleService.remove(queryWrapper); |
692 | 686 | result.success("删除成功!"); |
693 | - }catch(Exception e) { | |
687 | + } catch (Exception e) { | |
694 | 688 | log.error(e.getMessage(), e); |
695 | 689 | result.error500("删除失败!"); |
696 | 690 | } |
... | ... | @@ -703,18 +697,16 @@ public class SysUserController { |
703 | 697 | * @param |
704 | 698 | * @return |
705 | 699 | */ |
706 | - //@RequiresRoles({"admin"}) | |
700 | + // @RequiresRoles({"admin"}) | |
707 | 701 | @RequestMapping(value = "/deleteUserRoleBatch", method = RequestMethod.DELETE) |
708 | - public Result<SysUserRole> deleteUserRoleBatch( | |
709 | - @RequestParam(name="roleId") String roleId, | |
710 | - @RequestParam(name="userIds",required=true) String userIds) { | |
702 | + public Result<SysUserRole> deleteUserRoleBatch(@RequestParam(name = "roleId") String roleId, @RequestParam(name = "userIds", required = true) String userIds) { | |
711 | 703 | Result<SysUserRole> result = new Result<SysUserRole>(); |
712 | 704 | try { |
713 | 705 | QueryWrapper<SysUserRole> queryWrapper = new QueryWrapper<SysUserRole>(); |
714 | - queryWrapper.eq("role_id", roleId).in("user_id",Arrays.asList(userIds.split(","))); | |
706 | + queryWrapper.eq("role_id", roleId).in("user_id", Arrays.asList(userIds.split(","))); | |
715 | 707 | sysUserRoleService.remove(queryWrapper); |
716 | 708 | result.success("删除成功!"); |
717 | - }catch(Exception e) { | |
709 | + } catch (Exception e) { | |
718 | 710 | log.error(e.getMessage(), e); |
719 | 711 | result.error500("删除失败!"); |
720 | 712 | } |
... | ... | @@ -725,63 +717,58 @@ public class SysUserController { |
725 | 717 | * 部门用户列表 |
726 | 718 | */ |
727 | 719 | @RequestMapping(value = "/departUserList", method = RequestMethod.GET) |
728 | - public Result<IPage<SysUser>> departUserList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, | |
729 | - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { | |
720 | + public Result<IPage<SysUser>> departUserList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
721 | + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { | |
730 | 722 | Result<IPage<SysUser>> result = new Result<IPage<SysUser>>(); |
731 | 723 | Page<SysUser> page = new Page<SysUser>(pageNo, pageSize); |
732 | 724 | String depId = req.getParameter("depId"); |
733 | 725 | String username = req.getParameter("username"); |
734 | - //根据部门ID查询,当前和下级所有的部门IDS | |
726 | + // 根据部门ID查询,当前和下级所有的部门IDS | |
735 | 727 | List<String> subDepids = new ArrayList<>(); |
736 | - //部门id为空时,查询我的部门下所有用户 | |
737 | - if(oConvertUtils.isEmpty(depId)){ | |
738 | - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); | |
739 | - int userIdentity = user.getUserIdentity() != null?user.getUserIdentity():CommonConstant.USER_IDENTITY_1; | |
740 | - if(oConvertUtils.isNotEmpty(userIdentity) && userIdentity == CommonConstant.USER_IDENTITY_2 ){ | |
728 | + // 部门id为空时,查询我的部门下所有用户 | |
729 | + if (oConvertUtils.isEmpty(depId)) { | |
730 | + LoginUser user = (LoginUser)SecurityUtils.getSubject().getPrincipal(); | |
731 | + int userIdentity = user.getUserIdentity() != null ? user.getUserIdentity() : CommonConstant.USER_IDENTITY_1; | |
732 | + if (oConvertUtils.isNotEmpty(userIdentity) && userIdentity == CommonConstant.USER_IDENTITY_2) { | |
741 | 733 | subDepids = sysDepartService.getMySubDepIdsByDepId(user.getDepartIds()); |
742 | 734 | } |
743 | - }else{ | |
735 | + } else { | |
744 | 736 | subDepids = sysDepartService.getSubDepIdsByDepId(depId); |
745 | 737 | } |
746 | - if(subDepids != null && subDepids.size()>0){ | |
747 | - IPage<SysUser> pageList = sysUserService.getUserByDepIds(page,subDepids,username); | |
748 | - //批量查询用户的所属部门 | |
749 | - //step.1 先拿到全部的 useids | |
750 | - //step.2 通过 useids,一次性查询用户的所属部门名字 | |
751 | - List<String> userIds=new ArrayList<>(); | |
738 | + if (subDepids != null && subDepids.size() > 0) { | |
739 | + IPage<SysUser> pageList = sysUserService.getUserByDepIds(page, subDepids, username); | |
740 | + // 批量查询用户的所属部门 | |
741 | + // step.1 先拿到全部的 useids | |
742 | + // step.2 通过 useids,一次性查询用户的所属部门名字 | |
743 | + List<String> userIds = new ArrayList<>(); | |
752 | 744 | for (SysUser s : pageList.getRecords()) { |
753 | 745 | userIds.add(s.getId().toString()); |
754 | 746 | } |
755 | - //List<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList()); | |
756 | - if(userIds!=null && userIds.size()>0){ | |
747 | + // List<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList()); | |
748 | + if (userIds != null && userIds.size() > 0) { | |
757 | 749 | Map<String, String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); |
758 | 750 | pageList.getRecords().forEach(item -> { |
759 | - //批量查询用户的所属部门 | |
760 | - item.setOrgCode(useDepNames.get(item.getId())); | |
751 | + // 批量查询用户的所属部门 | |
752 | + item.setOrgCode(useDepNames.get(item.getId().toString())); | |
761 | 753 | }); |
762 | 754 | } |
763 | 755 | result.setSuccess(true); |
764 | 756 | result.setResult(pageList); |
765 | - }else{ | |
757 | + } else { | |
766 | 758 | result.setSuccess(true); |
767 | 759 | result.setResult(null); |
768 | 760 | } |
769 | 761 | return result; |
770 | 762 | } |
771 | 763 | |
772 | - | |
773 | 764 | /** |
774 | 765 | * 根据 orgCode 查询用户,包括子部门下的用户 |
775 | 766 | * 若某个用户包含多个部门,则会显示多条记录,可自行处理成单条记录 |
776 | 767 | */ |
777 | 768 | @GetMapping("/queryByOrgCode") |
778 | - public Result<?> queryByDepartId( | |
779 | - @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
780 | - @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, | |
781 | - @RequestParam(name = "orgCode") String orgCode, | |
782 | - SysUser userParams | |
783 | - ) { | |
784 | - IPage<SysUserSysDepartModel> pageList = sysUserService.queryUserByOrgCode(orgCode, userParams, new Page(pageNo, pageSize)); | |
769 | + public Result<?> queryByDepartId(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
770 | + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(name = "orgCode") String orgCode, SysUser userParams) { | |
771 | + IPage<SysUserSysDepartModel> pageList = sysUserService.queryUserByOrgCode(orgCode, userParams, new Page<SysUserSysDepartModel>(pageNo, pageSize)); | |
785 | 772 | return Result.ok(pageList); |
786 | 773 | } |
787 | 774 | |
... | ... | @@ -790,13 +777,10 @@ public class SysUserController { |
790 | 777 | * 针对通讯录模块做的接口,将多个部门的用户合并成一条记录,并转成对前端友好的格式 |
791 | 778 | */ |
792 | 779 | @GetMapping("/queryByOrgCodeForAddressList") |
793 | - public Result<?> queryByOrgCodeForAddressList( | |
794 | - @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
795 | - @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, | |
796 | - @RequestParam(name = "orgCode",required = false) String orgCode, | |
797 | - SysUser userParams | |
798 | - ) { | |
799 | - IPage page = new Page(pageNo, pageSize); | |
780 | + public Result<?> queryByOrgCodeForAddressList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
781 | + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(name = "orgCode", required = false) String orgCode, | |
782 | + SysUser userParams) { | |
783 | + IPage<SysUserSysDepartModel> page = new Page<SysUserSysDepartModel>(pageNo, pageSize); | |
800 | 784 | IPage<SysUserSysDepartModel> pageList = sysUserService.queryUserByOrgCode(orgCode, userParams, page); |
801 | 785 | List<SysUserSysDepartModel> list = pageList.getRecords(); |
802 | 786 | |
... | ... | @@ -820,7 +804,7 @@ public class SysUserController { |
820 | 804 | json.put("userId", userId); |
821 | 805 | json.put("departId", item.getDepartId()); |
822 | 806 | json.put("departName", item.getDepartName()); |
823 | -// json.put("avatar", item.getSysUser().getAvatar()); | |
807 | + // json.put("avatar", item.getSysUser().getAvatar()); | |
824 | 808 | resultJson.add(json); |
825 | 809 | hasUser.put(userId, json); |
826 | 810 | } |
... | ... | @@ -834,25 +818,25 @@ public class SysUserController { |
834 | 818 | /** |
835 | 819 | * 给指定部门添加对应的用户 |
836 | 820 | */ |
837 | - //@RequiresRoles({"admin"}) | |
821 | + // @RequiresRoles({"admin"}) | |
838 | 822 | @RequestMapping(value = "/editSysDepartWithUser", method = RequestMethod.POST) |
839 | 823 | public Result<String> editSysDepartWithUser(@RequestBody SysDepartUsersVO sysDepartUsersVO) { |
840 | 824 | Result<String> result = new Result<String>(); |
841 | 825 | try { |
842 | 826 | String sysDepId = sysDepartUsersVO.getDepId(); |
843 | - for(String sysUserId:sysDepartUsersVO.getUserIdList()) { | |
844 | - SysUserDepart sysUserDepart = new SysUserDepart(null,Integer.valueOf(sysUserId),Integer.valueOf(sysDepId)); | |
827 | + for (String sysUserId : sysDepartUsersVO.getUserIdList()) { | |
828 | + SysUserDepart sysUserDepart = new SysUserDepart(null, Integer.valueOf(sysUserId), Integer.valueOf(sysDepId)); | |
845 | 829 | QueryWrapper<SysUserDepart> queryWrapper = new QueryWrapper<SysUserDepart>(); |
846 | - queryWrapper.eq("dep_id", sysDepId).eq("user_id",sysUserId); | |
830 | + queryWrapper.eq("dep_id", sysDepId).eq("user_id", sysUserId); | |
847 | 831 | SysUserDepart one = sysUserDepartService.getOne(queryWrapper); |
848 | - if(one==null){ | |
832 | + if (one == null) { | |
849 | 833 | sysUserDepartService.save(sysUserDepart); |
850 | 834 | } |
851 | 835 | } |
852 | 836 | result.setMessage("添加成功!"); |
853 | 837 | result.setSuccess(true); |
854 | 838 | return result; |
855 | - }catch(Exception e) { | |
839 | + } catch (Exception e) { | |
856 | 840 | log.error(e.getMessage(), e); |
857 | 841 | result.setSuccess(false); |
858 | 842 | result.setMessage("出错了: " + e.getMessage()); |
... | ... | @@ -861,35 +845,34 @@ public class SysUserController { |
861 | 845 | } |
862 | 846 | |
863 | 847 | /** |
864 | - * 删除指定机构的用户关系 | |
848 | + * 删除指定机构的用户关系 | |
865 | 849 | */ |
866 | - //@RequiresRoles({"admin"}) | |
850 | + // @RequiresRoles({"admin"}) | |
867 | 851 | @RequestMapping(value = "/deleteUserInDepart", method = RequestMethod.DELETE) |
868 | - public Result<SysUserDepart> deleteUserInDepart(@RequestParam(name="depId") String depId, | |
869 | - @RequestParam(name="userId",required=true) String userId | |
870 | - ) { | |
852 | + public Result<SysUserDepart> deleteUserInDepart(@RequestParam(name = "depId") String depId, @RequestParam(name = "userId", required = true) String userId) { | |
871 | 853 | Result<SysUserDepart> result = new Result<SysUserDepart>(); |
872 | 854 | try { |
873 | 855 | QueryWrapper<SysUserDepart> queryWrapper = new QueryWrapper<SysUserDepart>(); |
874 | - queryWrapper.eq("dep_id", depId).eq("user_id",userId); | |
856 | + queryWrapper.eq("dep_id", depId).eq("user_id", userId); | |
875 | 857 | boolean b = sysUserDepartService.remove(queryWrapper); |
876 | - if(b){ | |
877 | - List<SysDepartRole> sysDepartRoleList = departRoleService.list(new QueryWrapper<SysDepartRole>().eq("depart_id",depId)); | |
878 | - List<String> roleIds=new ArrayList<>(); | |
858 | + if (b) { | |
859 | + List<SysDepartRole> sysDepartRoleList = departRoleService.list(new QueryWrapper<SysDepartRole>().eq("depart_id", depId)); | |
860 | + List<String> roleIds = new ArrayList<>(); | |
879 | 861 | for (SysDepartRole role : sysDepartRoleList) { |
880 | 862 | roleIds.add(role.getId().toString()); |
881 | 863 | } |
882 | - //List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList()); | |
883 | - if(roleIds != null && roleIds.size()>0){ | |
864 | + // List<String> roleIds = | |
865 | + // sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList()); | |
866 | + if (roleIds != null && roleIds.size() > 0) { | |
884 | 867 | QueryWrapper<SysDepartRoleUser> query = new QueryWrapper<>(); |
885 | - query.eq("user_id",userId).in("drole_id",roleIds); | |
868 | + query.eq("user_id", userId).in("drole_id", roleIds); | |
886 | 869 | departRoleUserService.remove(query); |
887 | 870 | } |
888 | 871 | result.success("删除成功!"); |
889 | - }else{ | |
872 | + } else { | |
890 | 873 | result.error500("当前选中部门与用户无关联关系!"); |
891 | 874 | } |
892 | - }catch(Exception e) { | |
875 | + } catch (Exception e) { | |
893 | 876 | log.error(e.getMessage(), e); |
894 | 877 | result.error500("删除失败!"); |
895 | 878 | } |
... | ... | @@ -899,21 +882,20 @@ public class SysUserController { |
899 | 882 | /** |
900 | 883 | * 批量删除指定机构的用户关系 |
901 | 884 | */ |
902 | - //@RequiresRoles({"admin"}) | |
885 | + // @RequiresRoles({"admin"}) | |
903 | 886 | @RequestMapping(value = "/deleteUserInDepartBatch", method = RequestMethod.DELETE) |
904 | - public Result<SysUserDepart> deleteUserInDepartBatch( | |
905 | - @RequestParam(name="depId") String depId, | |
906 | - @RequestParam(name="userIds",required=true) String userIds) { | |
887 | + public Result<SysUserDepart> deleteUserInDepartBatch(@RequestParam(name = "depId") String depId, | |
888 | + @RequestParam(name = "userIds", required = true) String userIds) { | |
907 | 889 | Result<SysUserDepart> result = new Result<SysUserDepart>(); |
908 | 890 | try { |
909 | 891 | QueryWrapper<SysUserDepart> queryWrapper = new QueryWrapper<SysUserDepart>(); |
910 | - queryWrapper.eq("dep_id", depId).in("user_id",Arrays.asList(userIds.split(","))); | |
892 | + queryWrapper.eq("dep_id", depId).in("user_id", Arrays.asList(userIds.split(","))); | |
911 | 893 | boolean b = sysUserDepartService.remove(queryWrapper); |
912 | - if(b){ | |
913 | - departRoleUserService.removeDeptRoleUser(Arrays.asList(userIds.split(",")),depId); | |
894 | + if (b) { | |
895 | + departRoleUserService.removeDeptRoleUser(Arrays.asList(userIds.split(",")), depId); | |
914 | 896 | } |
915 | 897 | result.success("删除成功!"); |
916 | - }catch(Exception e) { | |
898 | + } catch (Exception e) { | |
917 | 899 | log.error(e.getMessage(), e); |
918 | 900 | result.error500("删除失败!"); |
919 | 901 | } |
... | ... | @@ -921,68 +903,66 @@ public class SysUserController { |
921 | 903 | } |
922 | 904 | |
923 | 905 | /** |
924 | - * 查询当前用户的所有部门/当前部门编码 | |
906 | + * 查询当前用户的所有部门/当前部门编码 | |
907 | + * | |
925 | 908 | * @return |
926 | 909 | */ |
927 | 910 | @RequestMapping(value = "/getCurrentUserDeparts", method = RequestMethod.GET) |
928 | - public Result<Map<String,Object>> getCurrentUserDeparts() { | |
929 | - Result<Map<String,Object>> result = new Result<Map<String,Object>>(); | |
911 | + public Result<Map<String, Object>> getCurrentUserDeparts() { | |
912 | + Result<Map<String, Object>> result = new Result<Map<String, Object>>(); | |
930 | 913 | try { |
931 | - LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); | |
914 | + LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); | |
932 | 915 | List<SysDepart> list = this.sysDepartService.queryUserDeparts(sysUser.getId().toString()); |
933 | - Map<String,Object> map = new HashMap<String,Object>(); | |
916 | + Map<String, Object> map = new HashMap<String, Object>(); | |
934 | 917 | map.put("list", list); |
935 | 918 | map.put("orgCode", sysUser.getOrgCode()); |
936 | 919 | result.setSuccess(true); |
937 | 920 | result.setResult(map); |
938 | - }catch(Exception e) { | |
921 | + } catch (Exception e) { | |
939 | 922 | log.error(e.getMessage(), e); |
940 | 923 | result.error500("查询失败!"); |
941 | 924 | } |
942 | 925 | return result; |
943 | 926 | } |
944 | 927 | |
945 | - | |
946 | - | |
947 | - | |
948 | - /** | |
949 | - * 用户注册接口 | |
950 | - * | |
951 | - * @param jsonObject | |
952 | - * @param user | |
953 | - * @return | |
954 | - */ | |
955 | - @PostMapping("/register") | |
956 | - public Result<JSONObject> userRegister(@RequestBody JSONObject jsonObject, SysUser user) { | |
957 | - Result<JSONObject> result = new Result<JSONObject>(); | |
958 | - String phone = jsonObject.getString("phone"); | |
959 | - String smscode = jsonObject.getString("smscode"); | |
960 | - Object code = redisUtil.get(phone); | |
961 | - String username = jsonObject.getString("username"); | |
962 | - //未设置用户名,则用手机号作为用户名 | |
963 | - if(oConvertUtils.isEmpty(username)){ | |
928 | + /** | |
929 | + * 用户注册接口 | |
930 | + * | |
931 | + * @param jsonObject | |
932 | + * @param user | |
933 | + * @return | |
934 | + */ | |
935 | + @PostMapping("/register") | |
936 | + public Result<JSONObject> userRegister(@RequestBody JSONObject jsonObject, SysUser user) { | |
937 | + Result<JSONObject> result = new Result<JSONObject>(); | |
938 | + String phone = jsonObject.getString("phone"); | |
939 | + String smscode = jsonObject.getString("smscode"); | |
940 | + Object code = redisUtil.get(phone); | |
941 | + String username = jsonObject.getString("username"); | |
942 | + // 未设置用户名,则用手机号作为用户名 | |
943 | + if (oConvertUtils.isEmpty(username)) { | |
964 | 944 | username = phone; |
965 | 945 | } |
966 | - //未设置密码,则随机生成一个密码 | |
967 | - String password = jsonObject.getString("password"); | |
968 | - if(oConvertUtils.isEmpty(password)){ | |
946 | + // 未设置密码,则随机生成一个密码 | |
947 | + String password = jsonObject.getString("password"); | |
948 | + if (oConvertUtils.isEmpty(password)) { | |
969 | 949 | password = RandomUtil.randomString(8); |
970 | 950 | } |
971 | - String email = jsonObject.getString("email"); | |
972 | - SysUser sysUser1 = sysUserService.getUserByName(username); | |
973 | - if (sysUser1 != null) { | |
974 | - result.setMessage("用户名已注册"); | |
975 | - result.setSuccess(false); | |
976 | - return result; | |
977 | - } | |
978 | - SysUser sysUser2 = sysUserService.getUserByPhone(phone); | |
979 | - if (sysUser2 != null) { | |
980 | - result.setMessage("该手机号已注册"); | |
981 | - result.setSuccess(false); | |
982 | - return result; | |
983 | - } | |
984 | - | |
985 | - if(oConvertUtils.isNotEmpty(email)){ | |
951 | + String email = jsonObject.getString("email"); | |
952 | + SysUser sysUser1 = sysUserService.getUserByName(username); | |
953 | + if (sysUser1 != null) { | |
954 | + result.setMessage("用户名已注册"); | |
955 | + result.setSuccess(false); | |
956 | + return result; | |
957 | + } | |
958 | + SysUser sysUser2 = sysUserService.getUserByPhone(phone); | |
959 | + if (sysUser2 != null) { | |
960 | + result.setMessage("该手机号已注册"); | |
961 | + result.setSuccess(false); | |
962 | + return result; | |
963 | + } | |
964 | + | |
965 | + if (oConvertUtils.isNotEmpty(email)) { | |
986 | 966 | SysUser sysUser3 = sysUserService.getUserByEmail(email); |
987 | 967 | if (sysUser3 != null) { |
988 | 968 | result.setMessage("邮箱已被注册"); |
... | ... | @@ -990,37 +970,37 @@ public class SysUserController { |
990 | 970 | return result; |
991 | 971 | } |
992 | 972 | } |
993 | - if(null == code){ | |
973 | + if (null == code) { | |
994 | 974 | result.setMessage("手机验证码失效,请重新获取"); |
995 | 975 | result.setSuccess(false); |
996 | 976 | return result; |
997 | 977 | } |
998 | - if (!smscode.equals(code.toString())) { | |
999 | - result.setMessage("手机验证码错误"); | |
1000 | - result.setSuccess(false); | |
1001 | - return result; | |
1002 | - } | |
1003 | - | |
1004 | - try { | |
1005 | - user.setCreateTime(new Date());// 设置创建时间 | |
1006 | - String salt = oConvertUtils.randomGen(8); | |
1007 | - String passwordEncode = PasswordUtil.encrypt(username, password, salt); | |
1008 | - user.setSalt(salt); | |
1009 | - user.setUsername(username); | |
1010 | - user.setRealname(username); | |
1011 | - user.setPassword(passwordEncode); | |
1012 | - user.setEmail(email); | |
1013 | - user.setPhone(phone); | |
1014 | - user.setStatus(CommonConstant.USER_UNFREEZE); | |
1015 | - user.setDelFlag(CommonConstant.DEL_FLAG_0); | |
1016 | - user.setActivitiSync(CommonConstant.ACT_SYNC_0); | |
1017 | - sysUserService.addUserWithRole(user,"ee8626f80f7c2619917b6236f3a7f02b");//默认临时角色 test | |
1018 | - result.success("注册成功"); | |
1019 | - } catch (Exception e) { | |
1020 | - result.error500("注册失败"); | |
1021 | - } | |
1022 | - return result; | |
1023 | - } | |
978 | + if (!smscode.equals(code.toString())) { | |
979 | + result.setMessage("手机验证码错误"); | |
980 | + result.setSuccess(false); | |
981 | + return result; | |
982 | + } | |
983 | + | |
984 | + try { | |
985 | + user.setCreateTime(new Date());// 设置创建时间 | |
986 | + String salt = oConvertUtils.randomGen(8); | |
987 | + String passwordEncode = PasswordUtil.encrypt(username, password, salt); | |
988 | + user.setSalt(salt); | |
989 | + user.setUsername(username); | |
990 | + user.setRealname(username); | |
991 | + user.setPassword(passwordEncode); | |
992 | + user.setEmail(email); | |
993 | + user.setPhone(phone); | |
994 | + user.setStatus(CommonConstant.USER_UNFREEZE); | |
995 | + user.setDelFlag(CommonConstant.DEL_FLAG_0); | |
996 | + user.setActivitiSync(CommonConstant.ACT_SYNC_0); | |
997 | + sysUserService.addUserWithRole(user, "ee8626f80f7c2619917b6236f3a7f02b");// 默认临时角色 test | |
998 | + result.success("注册成功"); | |
999 | + } catch (Exception e) { | |
1000 | + result.error500("注册失败"); | |
1001 | + } | |
1002 | + return result; | |
1003 | + } | |
1024 | 1004 | |
1025 | 1005 | // /** |
1026 | 1006 | // * 根据用户名或手机号查询用户信息 |
... | ... | @@ -1058,62 +1038,60 @@ public class SysUserController { |
1058 | 1038 | // return result; |
1059 | 1039 | // } |
1060 | 1040 | |
1061 | - /** | |
1062 | - * 用户手机号验证 | |
1063 | - */ | |
1064 | - @PostMapping("/phoneVerification") | |
1065 | - public Result<Map<String,String>> phoneVerification(@RequestBody JSONObject jsonObject) { | |
1066 | - Result<Map<String,String>> result = new Result<Map<String,String>>(); | |
1067 | - String phone = jsonObject.getString("phone"); | |
1068 | - String smscode = jsonObject.getString("smscode"); | |
1069 | - Object code = redisUtil.get(phone); | |
1070 | - if (!smscode.equals(code)) { | |
1071 | - result.setMessage("手机验证码错误"); | |
1072 | - result.setSuccess(false); | |
1073 | - return result; | |
1074 | - } | |
1075 | - //设置有效时间 | |
1076 | - redisUtil.set(phone, smscode,600); | |
1077 | - //新增查询用户名 | |
1078 | - LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>(); | |
1079 | - query.eq(SysUser::getPhone,phone); | |
1041 | + /** | |
1042 | + * 用户手机号验证 | |
1043 | + */ | |
1044 | + @PostMapping("/phoneVerification") | |
1045 | + public Result<Map<String, String>> phoneVerification(@RequestBody JSONObject jsonObject) { | |
1046 | + Result<Map<String, String>> result = new Result<Map<String, String>>(); | |
1047 | + String phone = jsonObject.getString("phone"); | |
1048 | + String smscode = jsonObject.getString("smscode"); | |
1049 | + Object code = redisUtil.get(phone); | |
1050 | + if (!smscode.equals(code)) { | |
1051 | + result.setMessage("手机验证码错误"); | |
1052 | + result.setSuccess(false); | |
1053 | + return result; | |
1054 | + } | |
1055 | + // 设置有效时间 | |
1056 | + redisUtil.set(phone, smscode, 600); | |
1057 | + // 新增查询用户名 | |
1058 | + LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>(); | |
1059 | + query.eq(SysUser::getPhone, phone); | |
1080 | 1060 | SysUser user = sysUserService.getOne(query); |
1081 | - Map<String,String> map = new HashMap<>(); | |
1082 | - map.put("smscode",smscode); | |
1083 | - map.put("username",user.getUsername()); | |
1061 | + Map<String, String> map = new HashMap<>(); | |
1062 | + map.put("smscode", smscode); | |
1063 | + map.put("username", user.getUsername()); | |
1084 | 1064 | result.setResult(map); |
1085 | - result.setSuccess(true); | |
1086 | - return result; | |
1087 | - } | |
1088 | - | |
1089 | - /** | |
1090 | - * 用户更改密码 | |
1091 | - */ | |
1092 | - @GetMapping("/passwordChange") | |
1093 | - public Result<SysUser> passwordChange(@RequestParam(name="username")String username, | |
1094 | - @RequestParam(name="password")String password, | |
1095 | - @RequestParam(name="smscode")String smscode, | |
1096 | - @RequestParam(name="phone") String phone) { | |
1065 | + result.setSuccess(true); | |
1066 | + return result; | |
1067 | + } | |
1068 | + | |
1069 | + /** | |
1070 | + * 用户更改密码 | |
1071 | + */ | |
1072 | + @GetMapping("/passwordChange") | |
1073 | + public Result<SysUser> passwordChange(@RequestParam(name = "username") String username, @RequestParam(name = "password") String password, | |
1074 | + @RequestParam(name = "smscode") String smscode, @RequestParam(name = "phone") String phone) { | |
1097 | 1075 | Result<SysUser> result = new Result<SysUser>(); |
1098 | - if(oConvertUtils.isEmpty(username) || oConvertUtils.isEmpty(password) || oConvertUtils.isEmpty(smscode) || oConvertUtils.isEmpty(phone) ) { | |
1076 | + if (oConvertUtils.isEmpty(username) || oConvertUtils.isEmpty(password) || oConvertUtils.isEmpty(smscode) || oConvertUtils.isEmpty(phone)) { | |
1099 | 1077 | result.setMessage("重置密码失败!"); |
1100 | 1078 | result.setSuccess(false); |
1101 | 1079 | return result; |
1102 | 1080 | } |
1103 | 1081 | |
1104 | - SysUser sysUser=new SysUser(); | |
1105 | - Object object= redisUtil.get(phone); | |
1106 | - if(null==object) { | |
1107 | - result.setMessage("短信验证码失效!"); | |
1082 | + SysUser sysUser = new SysUser(); | |
1083 | + Object object = redisUtil.get(phone); | |
1084 | + if (null == object) { | |
1085 | + result.setMessage("短信验证码失效!"); | |
1108 | 1086 | result.setSuccess(false); |
1109 | 1087 | return result; |
1110 | 1088 | } |
1111 | - if(!smscode.equals(object.toString())) { | |
1112 | - result.setMessage("短信验证码不匹配!"); | |
1089 | + if (!smscode.equals(object.toString())) { | |
1090 | + result.setMessage("短信验证码不匹配!"); | |
1113 | 1091 | result.setSuccess(false); |
1114 | 1092 | return result; |
1115 | 1093 | } |
1116 | - sysUser = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername,username).eq(SysUser::getPhone,phone)); | |
1094 | + sysUser = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username).eq(SysUser::getPhone, phone)); | |
1117 | 1095 | if (sysUser == null) { |
1118 | 1096 | result.setMessage("未找到用户!"); |
1119 | 1097 | result.setSuccess(false); |
... | ... | @@ -1130,80 +1108,78 @@ public class SysUserController { |
1130 | 1108 | } |
1131 | 1109 | } |
1132 | 1110 | |
1111 | + /** | |
1112 | + * 根据TOKEN获取用户的部分信息(返回的数据是可供表单设计器使用的数据) | |
1113 | + * | |
1114 | + * @return | |
1115 | + */ | |
1116 | + @GetMapping("/getUserSectionInfoByToken") | |
1117 | + public Result<?> getUserSectionInfoByToken(HttpServletRequest request, @RequestParam(name = "token", required = false) String token) { | |
1118 | + try { | |
1119 | + String username = null; | |
1120 | + // 如果没有传递token,就从header中获取token并获取用户信息 | |
1121 | + if (oConvertUtils.isEmpty(token)) { | |
1122 | + username = JwtUtil.getUserNameByToken(request); | |
1123 | + } else { | |
1124 | + username = JwtUtil.getUsername(token); | |
1125 | + } | |
1126 | + | |
1127 | + log.debug(" ------ 通过令牌获取部分用户信息,当前用户: " + username); | |
1133 | 1128 | |
1134 | - /** | |
1135 | - * 根据TOKEN获取用户的部分信息(返回的数据是可供表单设计器使用的数据) | |
1136 | - * | |
1137 | - * @return | |
1138 | - */ | |
1139 | - @GetMapping("/getUserSectionInfoByToken") | |
1140 | - public Result<?> getUserSectionInfoByToken(HttpServletRequest request, @RequestParam(name = "token", required = false) String token) { | |
1141 | - try { | |
1142 | - String username = null; | |
1143 | - // 如果没有传递token,就从header中获取token并获取用户信息 | |
1144 | - if (oConvertUtils.isEmpty(token)) { | |
1145 | - username = JwtUtil.getUserNameByToken(request); | |
1146 | - } else { | |
1147 | - username = JwtUtil.getUsername(token); | |
1148 | - } | |
1149 | - | |
1150 | - log.debug(" ------ 通过令牌获取部分用户信息,当前用户: " + username); | |
1151 | - | |
1152 | - // 根据用户名查询用户信息 | |
1153 | - SysUser sysUser = sysUserService.getUserByName(username); | |
1154 | - Map<String, Object> map = new HashMap<String, Object>(); | |
1155 | - map.put("sysUserId", sysUser.getId()); | |
1156 | - map.put("sysUserCode", sysUser.getUsername()); // 当前登录用户登录账号 | |
1157 | - map.put("sysUserName", sysUser.getRealname()); // 当前登录用户真实名称 | |
1158 | - map.put("sysOrgCode", sysUser.getOrgCode()); // 当前登录用户部门编号 | |
1159 | - | |
1160 | - log.debug(" ------ 通过令牌获取部分用户信息,已获取的用户信息: " + map); | |
1161 | - | |
1162 | - return Result.ok(map); | |
1163 | - } catch (Exception e) { | |
1164 | - log.error(e.getMessage(), e); | |
1165 | - return Result.error(500, "查询失败:" + e.getMessage()); | |
1166 | - } | |
1167 | - } | |
1168 | - | |
1169 | - /** | |
1170 | - * 【APP端接口】获取用户列表 根据用户名和真实名 模糊匹配 | |
1171 | - * @param keyword | |
1172 | - * @param pageNo | |
1173 | - * @param pageSize | |
1174 | - * @return | |
1175 | - */ | |
1176 | - @GetMapping("/appUserList") | |
1177 | - public Result<?> appUserList(@RequestParam(name = "keyword", required = false) String keyword, | |
1178 | - @RequestParam(name = "username", required = false) String username, | |
1179 | - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, | |
1180 | - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, | |
1181 | - @RequestParam(name = "syncFlow", required = false) String syncFlow) { | |
1182 | - try { | |
1183 | - //TODO 从查询效率上将不要用mp的封装的page分页查询 建议自己写分页语句 | |
1184 | - LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<SysUser>(); | |
1185 | - if(oConvertUtils.isNotEmpty(syncFlow)){ | |
1129 | + // 根据用户名查询用户信息 | |
1130 | + SysUser sysUser = sysUserService.getUserByName(username); | |
1131 | + Map<String, Object> map = new HashMap<String, Object>(); | |
1132 | + map.put("sysUserId", sysUser.getId()); | |
1133 | + map.put("sysUserCode", sysUser.getUsername()); // 当前登录用户登录账号 | |
1134 | + map.put("sysUserName", sysUser.getRealname()); // 当前登录用户真实名称 | |
1135 | + map.put("sysOrgCode", sysUser.getOrgCode()); // 当前登录用户部门编号 | |
1136 | + | |
1137 | + log.debug(" ------ 通过令牌获取部分用户信息,已获取的用户信息: " + map); | |
1138 | + | |
1139 | + return Result.ok(map); | |
1140 | + } catch (Exception e) { | |
1141 | + log.error(e.getMessage(), e); | |
1142 | + return Result.error(500, "查询失败:" + e.getMessage()); | |
1143 | + } | |
1144 | + } | |
1145 | + | |
1146 | + /** | |
1147 | + * 【APP端接口】获取用户列表 根据用户名和真实名 模糊匹配 | |
1148 | + * | |
1149 | + * @param keyword | |
1150 | + * @param pageNo | |
1151 | + * @param pageSize | |
1152 | + * @return | |
1153 | + */ | |
1154 | + @GetMapping("/appUserList") | |
1155 | + public Result<?> appUserList(@RequestParam(name = "keyword", required = false) String keyword, | |
1156 | + @RequestParam(name = "username", required = false) String username, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, | |
1157 | + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(name = "syncFlow", required = false) String syncFlow) { | |
1158 | + try { | |
1159 | + // TODO 从查询效率上将不要用mp的封装的page分页查询 建议自己写分页语句 | |
1160 | + LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<SysUser>(); | |
1161 | + if (oConvertUtils.isNotEmpty(syncFlow)) { | |
1186 | 1162 | query.eq(SysUser::getActivitiSync, CommonConstant.ACT_SYNC_1); |
1187 | 1163 | } |
1188 | - query.eq(SysUser::getDelFlag,CommonConstant.DEL_FLAG_0); | |
1189 | - if(oConvertUtils.isNotEmpty(username)){ | |
1190 | - if(username.contains(",")){ | |
1191 | - query.in(SysUser::getUsername,username.split(",")); | |
1192 | - }else{ | |
1193 | - query.eq(SysUser::getUsername,username); | |
1164 | + query.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0); | |
1165 | + if (oConvertUtils.isNotEmpty(username)) { | |
1166 | + if (username.contains(",")) { | |
1167 | + query.in(SysUser::getUsername, CollectionUtils.arrayToList(username.split(","))); | |
1168 | + } else { | |
1169 | + query.eq(SysUser::getUsername, username); | |
1194 | 1170 | } |
1195 | - }else{ | |
1171 | + } else { | |
1196 | 1172 | query.and(i -> i.like(SysUser::getUsername, keyword).or().like(SysUser::getRealname, keyword)); |
1197 | 1173 | } |
1198 | - Page<SysUser> page = new Page<>(pageNo, pageSize); | |
1199 | - IPage<SysUser> res = this.sysUserService.page(page, query); | |
1200 | - return Result.ok(res); | |
1201 | - } catch (Exception e) { | |
1202 | - log.error(e.getMessage(), e); | |
1203 | - return Result.error(500, "查询失败:" + e.getMessage()); | |
1204 | - } | |
1174 | + Page<SysUser> page = new Page<>(pageNo, pageSize); | |
1175 | + IPage<SysUser> res = this.sysUserService.page(page, query); | |
1176 | + return Result.ok(res); | |
1177 | + } catch (Exception e) { | |
1178 | + log.error(e.getMessage(), e); | |
1179 | + return Result.error(500, "查询失败:" + e.getMessage()); | |
1180 | + } | |
1205 | 1181 | |
1206 | - } | |
1182 | + } | |
1207 | 1183 | |
1208 | 1184 | /** |
1209 | 1185 | * 获取被逻辑删除的用户列表,无分页 |
... | ... | @@ -1211,19 +1187,19 @@ public class SysUserController { |
1211 | 1187 | * @return logicDeletedUserList |
1212 | 1188 | */ |
1213 | 1189 | @GetMapping("/recycleBin") |
1214 | - public Result getRecycleBin() { | |
1190 | + public Result<?> getRecycleBin() { | |
1215 | 1191 | List<SysUser> logicDeletedUserList = sysUserService.queryLogicDeleted(); |
1216 | 1192 | if (logicDeletedUserList.size() > 0) { |
1217 | 1193 | // 批量查询用户的所属部门 |
1218 | 1194 | // step.1 先拿到全部的 userIds |
1219 | - List<String> userIds=new ArrayList<>(); | |
1195 | + List<String> userIds = new ArrayList<>(); | |
1220 | 1196 | for (SysUser user : logicDeletedUserList) { |
1221 | 1197 | userIds.add(user.getId().toString()); |
1222 | 1198 | } |
1223 | - //List<String> userIds = logicDeletedUserList.stream().map(SysUser::getId).collect(Collectors.toList()); | |
1199 | + // List<String> userIds = logicDeletedUserList.stream().map(SysUser::getId).collect(Collectors.toList()); | |
1224 | 1200 | // step.2 通过 userIds,一次性查询用户的所属部门名字 |
1225 | 1201 | Map<String, String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); |
1226 | - logicDeletedUserList.forEach(item -> item.setOrgCode(useDepNames.get(item.getId()))); | |
1202 | + logicDeletedUserList.forEach(item -> item.setOrgCode(useDepNames.get(item.getId().toString()))); | |
1227 | 1203 | } |
1228 | 1204 | return Result.ok(logicDeletedUserList); |
1229 | 1205 | } |
... | ... | @@ -1235,7 +1211,7 @@ public class SysUserController { |
1235 | 1211 | * @return |
1236 | 1212 | */ |
1237 | 1213 | @RequestMapping(value = "/putRecycleBin", method = RequestMethod.PUT) |
1238 | - public Result putRecycleBin(@RequestBody JSONObject jsonObject, HttpServletRequest request) { | |
1214 | + public Result<?> putRecycleBin(@RequestBody JSONObject jsonObject, HttpServletRequest request) { | |
1239 | 1215 | String userIds = jsonObject.getString("userIds"); |
1240 | 1216 | if (StringUtils.isNotBlank(userIds)) { |
1241 | 1217 | SysUser updateUser = new SysUser(); |
... | ... | @@ -1252,61 +1228,61 @@ public class SysUserController { |
1252 | 1228 | * @param userIds 被删除的用户ID,多个id用半角逗号分割 |
1253 | 1229 | * @return |
1254 | 1230 | */ |
1255 | - //@RequiresRoles({"admin"}) | |
1231 | + // @RequiresRoles({"admin"}) | |
1256 | 1232 | @RequestMapping(value = "/deleteRecycleBin", method = RequestMethod.DELETE) |
1257 | - public Result deleteRecycleBin(@RequestParam("userIds") String userIds) { | |
1233 | + public Result<?> deleteRecycleBin(@RequestParam("userIds") String userIds) { | |
1258 | 1234 | if (StringUtils.isNotBlank(userIds)) { |
1259 | 1235 | sysUserService.removeLogicDeleted(Arrays.asList(userIds.split(","))); |
1260 | 1236 | } |
1261 | 1237 | return Result.ok("删除成功"); |
1262 | 1238 | } |
1263 | 1239 | |
1264 | - | |
1265 | 1240 | /** |
1266 | 1241 | * 移动端修改用户信息 |
1242 | + * | |
1267 | 1243 | * @param jsonObject |
1268 | 1244 | * @return |
1269 | 1245 | */ |
1270 | - @RequestMapping(value = "/appEdit", method = {RequestMethod.PUT,RequestMethod.POST}) | |
1271 | - public Result<SysUser> appEdit(HttpServletRequest request,@RequestBody JSONObject jsonObject) { | |
1246 | + @RequestMapping(value = "/appEdit", method = {RequestMethod.PUT, RequestMethod.POST}) | |
1247 | + public Result<SysUser> appEdit(HttpServletRequest request, @RequestBody JSONObject jsonObject) { | |
1272 | 1248 | Result<SysUser> result = new Result<SysUser>(); |
1273 | 1249 | try { |
1274 | 1250 | String username = JwtUtil.getUserNameByToken(request); |
1275 | 1251 | SysUser sysUser = sysUserService.getUserByName(username); |
1276 | - baseCommonService.addLog("移动端编辑用户,id: " +jsonObject.getString("id") ,CommonConstant.LOG_TYPE_2, 2); | |
1277 | - String realname=jsonObject.getString("realname"); | |
1278 | - String avatar=jsonObject.getString("avatar"); | |
1279 | - String sex=jsonObject.getString("sex"); | |
1280 | - String phone=jsonObject.getString("phone"); | |
1281 | - String email=jsonObject.getString("email"); | |
1282 | - Date birthday=jsonObject.getDate("birthday"); | |
1252 | + baseCommonService.addLog("移动端编辑用户,id: " + jsonObject.getString("id"), CommonConstant.LOG_TYPE_2, 2); | |
1253 | + String realname = jsonObject.getString("realname"); | |
1254 | + String avatar = jsonObject.getString("avatar"); | |
1255 | + String sex = jsonObject.getString("sex"); | |
1256 | + String phone = jsonObject.getString("phone"); | |
1257 | + String email = jsonObject.getString("email"); | |
1258 | + Date birthday = jsonObject.getDate("birthday"); | |
1283 | 1259 | SysUser userPhone = sysUserService.getUserByPhone(phone); |
1284 | - if(sysUser==null) { | |
1260 | + if (sysUser == null) { | |
1285 | 1261 | result.error500("未找到对应用户!"); |
1286 | - }else { | |
1287 | - if(userPhone!=null){ | |
1262 | + } else { | |
1263 | + if (userPhone != null) { | |
1288 | 1264 | String userPhonename = userPhone.getUsername(); |
1289 | - if(!userPhonename.equals(username)){ | |
1265 | + if (!userPhonename.equals(username)) { | |
1290 | 1266 | result.error500("手机号已存在!"); |
1291 | 1267 | return result; |
1292 | 1268 | } |
1293 | 1269 | } |
1294 | - if(StringUtils.isNotBlank(realname)){ | |
1270 | + if (StringUtils.isNotBlank(realname)) { | |
1295 | 1271 | sysUser.setRealname(realname); |
1296 | 1272 | } |
1297 | - if(StringUtils.isNotBlank(avatar)){ | |
1273 | + if (StringUtils.isNotBlank(avatar)) { | |
1298 | 1274 | sysUser.setAvatar(avatar); |
1299 | 1275 | } |
1300 | - if(StringUtils.isNotBlank(sex)){ | |
1276 | + if (StringUtils.isNotBlank(sex)) { | |
1301 | 1277 | sysUser.setSex(Integer.parseInt(sex)); |
1302 | 1278 | } |
1303 | - if(StringUtils.isNotBlank(phone)){ | |
1279 | + if (StringUtils.isNotBlank(phone)) { | |
1304 | 1280 | sysUser.setPhone(phone); |
1305 | 1281 | } |
1306 | - if(StringUtils.isNotBlank(email)){ | |
1282 | + if (StringUtils.isNotBlank(email)) { | |
1307 | 1283 | sysUser.setEmail(email); |
1308 | 1284 | } |
1309 | - if(null != birthday){ | |
1285 | + if (null != birthday) { | |
1310 | 1286 | sysUser.setBirthday(birthday); |
1311 | 1287 | } |
1312 | 1288 | sysUser.setUpdateTime(new Date()); |
... | ... | @@ -1318,20 +1294,22 @@ public class SysUserController { |
1318 | 1294 | } |
1319 | 1295 | return result; |
1320 | 1296 | } |
1297 | + | |
1321 | 1298 | /** |
1322 | 1299 | * 移动端保存设备信息 |
1300 | + * | |
1323 | 1301 | * @param clientId |
1324 | 1302 | * @return |
1325 | 1303 | */ |
1326 | 1304 | @RequestMapping(value = "/saveClientId", method = RequestMethod.GET) |
1327 | - public Result<SysUser> saveClientId(HttpServletRequest request,@RequestParam("clientId")String clientId) { | |
1305 | + public Result<SysUser> saveClientId(HttpServletRequest request, @RequestParam("clientId") String clientId) { | |
1328 | 1306 | Result<SysUser> result = new Result<SysUser>(); |
1329 | 1307 | try { |
1330 | 1308 | String username = JwtUtil.getUserNameByToken(request); |
1331 | 1309 | SysUser sysUser = sysUserService.getUserByName(username); |
1332 | - if(sysUser==null) { | |
1310 | + if (sysUser == null) { | |
1333 | 1311 | result.error500("未找到对应用户!"); |
1334 | - }else { | |
1312 | + } else { | |
1335 | 1313 | sysUser.setClientId(clientId); |
1336 | 1314 | sysUserService.updateById(sysUser); |
1337 | 1315 | } |
... | ... | @@ -1341,74 +1319,78 @@ public class SysUserController { |
1341 | 1319 | } |
1342 | 1320 | return result; |
1343 | 1321 | } |
1322 | + | |
1344 | 1323 | /** |
1345 | 1324 | * 根据userid获取用户信息和部门员工信息 |
1346 | 1325 | * |
1347 | 1326 | * @return Result |
1348 | 1327 | */ |
1349 | 1328 | @GetMapping("/queryChildrenByUsername") |
1350 | - public Result queryChildrenByUsername(@RequestParam("userId") String userId) { | |
1351 | - //获取用户信息 | |
1352 | - Map<String,Object> map=new HashMap<String,Object>(); | |
1329 | + public Result<?> queryChildrenByUsername(@RequestParam("userId") String userId) { | |
1330 | + // 获取用户信息 | |
1331 | + Map<String, Object> map = new HashMap<String, Object>(); | |
1353 | 1332 | SysUser sysUser = sysUserService.getById(userId); |
1354 | 1333 | String username = sysUser.getUsername(); |
1355 | 1334 | Integer identity = sysUser.getUserIdentity(); |
1356 | - map.put("sysUser",sysUser); | |
1357 | - if(identity!=null && identity==2){ | |
1358 | - //获取部门用户信息 | |
1335 | + map.put("sysUser", sysUser); | |
1336 | + if (identity != null && identity == 2) { | |
1337 | + // 获取部门用户信息 | |
1359 | 1338 | String departIds = sysUser.getDepartIds(); |
1360 | - if(StringUtils.isNotBlank(departIds)){ | |
1339 | + if (StringUtils.isNotBlank(departIds)) { | |
1361 | 1340 | List<String> departIdList = Arrays.asList(departIds.split(",")); |
1362 | - List<SysUser> childrenUser = sysUserService.queryByDepIds(departIdList,username); | |
1363 | - map.put("children",childrenUser); | |
1341 | + List<SysUser> childrenUser = sysUserService.queryByDepIds(departIdList, username); | |
1342 | + map.put("children", childrenUser); | |
1364 | 1343 | } |
1365 | 1344 | } |
1366 | 1345 | return Result.ok(map); |
1367 | 1346 | } |
1347 | + | |
1368 | 1348 | /** |
1369 | 1349 | * 移动端查询部门用户信息 |
1350 | + * | |
1370 | 1351 | * @param departId |
1371 | 1352 | * @return |
1372 | 1353 | */ |
1373 | 1354 | @GetMapping("/appQueryByDepartId") |
1374 | - public Result<List<SysUser>> appQueryByDepartId(@RequestParam(name="departId", required = false) String departId) { | |
1355 | + public Result<List<SysUser>> appQueryByDepartId(@RequestParam(name = "departId", required = false) String departId) { | |
1375 | 1356 | Result<List<SysUser>> result = new Result<List<SysUser>>(); |
1376 | - List<String> list=new ArrayList<String> (); | |
1357 | + List<String> list = new ArrayList<String>(); | |
1377 | 1358 | list.add(departId); |
1378 | - List<SysUser> childrenUser = sysUserService.queryByDepIds(list,null); | |
1359 | + List<SysUser> childrenUser = sysUserService.queryByDepIds(list, null); | |
1379 | 1360 | result.setResult(childrenUser); |
1380 | 1361 | return result; |
1381 | 1362 | } |
1363 | + | |
1382 | 1364 | /** |
1383 | 1365 | * 移动端查询用户信息(通过用户名模糊查询) |
1366 | + * | |
1384 | 1367 | * @param keyword |
1385 | 1368 | * @return |
1386 | 1369 | */ |
1387 | 1370 | @GetMapping("/appQueryUser") |
1388 | 1371 | public Result<List<SysUser>> appQueryUser(@RequestParam(name = "keyword", required = false) String keyword, |
1389 | - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, | |
1390 | - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { | |
1372 | + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { | |
1391 | 1373 | Result<List<SysUser>> result = new Result<List<SysUser>>(); |
1392 | - LambdaQueryWrapper<SysUser> queryWrapper =new LambdaQueryWrapper<SysUser>(); | |
1393 | - //TODO 外部模拟登陆临时账号,列表不显示 | |
1394 | - queryWrapper.ne(SysUser::getUsername,"_reserve_user_external"); | |
1395 | - if(StringUtils.isNotBlank(keyword)){ | |
1374 | + LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<SysUser>(); | |
1375 | + // TODO 外部模拟登陆临时账号,列表不显示 | |
1376 | + queryWrapper.ne(SysUser::getUsername, "_reserve_user_external"); | |
1377 | + if (StringUtils.isNotBlank(keyword)) { | |
1396 | 1378 | queryWrapper.and(i -> i.like(SysUser::getUsername, keyword).or().like(SysUser::getRealname, keyword)); |
1397 | 1379 | } |
1398 | 1380 | Page<SysUser> page = new Page<>(pageNo, pageSize); |
1399 | 1381 | IPage<SysUser> pageList = this.sysUserService.page(page, queryWrapper); |
1400 | - //批量查询用户的所属部门 | |
1401 | - //step.1 先拿到全部的 useids | |
1402 | - //step.2 通过 useids,一次性查询用户的所属部门名字 | |
1403 | - List<String> userIds=new ArrayList<>(); | |
1382 | + // 批量查询用户的所属部门 | |
1383 | + // step.1 先拿到全部的 useids | |
1384 | + // step.2 通过 useids,一次性查询用户的所属部门名字 | |
1385 | + List<String> userIds = new ArrayList<>(); | |
1404 | 1386 | for (SysUser user : pageList.getRecords()) { |
1405 | 1387 | userIds.add(user.getId().toString()); |
1406 | 1388 | } |
1407 | - //List<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList()); | |
1408 | - if(userIds!=null && userIds.size()>0){ | |
1409 | - Map<String,String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); | |
1410 | - pageList.getRecords().forEach(item->{ | |
1411 | - item.setOrgCodeTxt(useDepNames.get(item.getId())); | |
1389 | + // List<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList()); | |
1390 | + if (userIds != null && userIds.size() > 0) { | |
1391 | + Map<String, String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); | |
1392 | + pageList.getRecords().forEach(item -> { | |
1393 | + item.setOrgCodeTxt(useDepNames.get(item.getId().toString())); | |
1412 | 1394 | }); |
1413 | 1395 | } |
1414 | 1396 | result.setResult(pageList.getRecords()); |
... | ... | @@ -1417,34 +1399,35 @@ public class SysUserController { |
1417 | 1399 | |
1418 | 1400 | /** |
1419 | 1401 | * 根据用户名修改手机号 |
1402 | + * | |
1420 | 1403 | * @param json |
1421 | 1404 | * @return |
1422 | 1405 | */ |
1423 | 1406 | @RequestMapping(value = "/updateMobile", method = RequestMethod.PUT) |
1424 | - public Result<?> changMobile(@RequestBody JSONObject json,HttpServletRequest request) { | |
1407 | + public Result<?> changMobile(@RequestBody JSONObject json, HttpServletRequest request) { | |
1425 | 1408 | String smscode = json.getString("smscode"); |
1426 | 1409 | String phone = json.getString("phone"); |
1427 | 1410 | Result<SysUser> result = new Result<SysUser>(); |
1428 | - //获取登录用户名 | |
1411 | + // 获取登录用户名 | |
1429 | 1412 | String username = JwtUtil.getUserNameByToken(request); |
1430 | - if(oConvertUtils.isEmpty(username) || oConvertUtils.isEmpty(smscode) || oConvertUtils.isEmpty(phone)) { | |
1413 | + if (oConvertUtils.isEmpty(username) || oConvertUtils.isEmpty(smscode) || oConvertUtils.isEmpty(phone)) { | |
1431 | 1414 | result.setMessage("修改手机号失败!"); |
1432 | 1415 | result.setSuccess(false); |
1433 | 1416 | return result; |
1434 | 1417 | } |
1435 | - Object object= redisUtil.get(phone); | |
1436 | - if(null==object) { | |
1418 | + Object object = redisUtil.get(phone); | |
1419 | + if (null == object) { | |
1437 | 1420 | result.setMessage("短信验证码失效!"); |
1438 | 1421 | result.setSuccess(false); |
1439 | 1422 | return result; |
1440 | 1423 | } |
1441 | - if(!smscode.equals(object.toString())) { | |
1424 | + if (!smscode.equals(object.toString())) { | |
1442 | 1425 | result.setMessage("短信验证码不匹配!"); |
1443 | 1426 | result.setSuccess(false); |
1444 | 1427 | return result; |
1445 | 1428 | } |
1446 | 1429 | SysUser user = sysUserService.getUserByName(username); |
1447 | - if(user==null) { | |
1430 | + if (user == null) { | |
1448 | 1431 | return Result.error("用户不存在!"); |
1449 | 1432 | } |
1450 | 1433 | user.setPhone(phone); |
... | ... | @@ -1452,20 +1435,20 @@ public class SysUserController { |
1452 | 1435 | return Result.ok("手机号设置成功!"); |
1453 | 1436 | } |
1454 | 1437 | |
1455 | - | |
1456 | 1438 | /** |
1457 | 1439 | * 根据对象里面的属性值作in查询 属性可能会变 用户组件用到 |
1440 | + * | |
1458 | 1441 | * @param sysUser |
1459 | 1442 | * @return |
1460 | 1443 | */ |
1461 | 1444 | @GetMapping("/getMultiUser") |
1462 | - public List<SysUser> getMultiUser(SysUser sysUser){ | |
1445 | + public List<SysUser> getMultiUser(SysUser sysUser) { | |
1463 | 1446 | QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(sysUser, null); |
1464 | - //update-begin---author:wangshuai ---date:20220104 for:[JTC-297]已冻结用户仍可设置为代理人------------ | |
1465 | - queryWrapper.eq("status",Integer.parseInt(CommonConstant.STATUS_1)); | |
1466 | - //update-end---author:wangshuai ---date:20220104 for:[JTC-297]已冻结用户仍可设置为代理人------------ | |
1447 | + // update-begin---author:wangshuai ---date:20220104 for:[JTC-297]已冻结用户仍可设置为代理人------------ | |
1448 | + queryWrapper.eq("status", Integer.parseInt(CommonConstant.STATUS_1)); | |
1449 | + // update-end---author:wangshuai ---date:20220104 for:[JTC-297]已冻结用户仍可设置为代理人------------ | |
1467 | 1450 | List<SysUser> ls = this.sysUserService.list(queryWrapper); |
1468 | - for(SysUser user: ls){ | |
1451 | + for (SysUser user : ls) { | |
1469 | 1452 | user.setPassword(null); |
1470 | 1453 | user.setSalt(null); |
1471 | 1454 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/entity/SysPermission.java
... | ... | @@ -2,14 +2,16 @@ package org.jeecg.modules.system.entity; |
2 | 2 | |
3 | 3 | import java.io.Serializable; |
4 | 4 | import java.util.Date; |
5 | + | |
6 | +import org.jeecg.common.aspect.annotation.Dict; | |
7 | + | |
5 | 8 | import com.baomidou.mybatisplus.annotation.IdType; |
6 | 9 | import com.baomidou.mybatisplus.annotation.TableField; |
7 | 10 | import com.baomidou.mybatisplus.annotation.TableId; |
11 | + | |
8 | 12 | import lombok.Data; |
9 | 13 | import lombok.EqualsAndHashCode; |
10 | 14 | import lombok.experimental.Accessors; |
11 | -import org.jeecg.common.aspect.annotation.Dict; | |
12 | -import org.jeecgframework.poi.excel.annotation.Excel; | |
13 | 15 | |
14 | 16 | /** |
15 | 17 | * <p> |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/entity/SysUser.java
... | ... | @@ -3,7 +3,6 @@ package org.jeecg.modules.system.entity; |
3 | 3 | import java.util.Date; |
4 | 4 | |
5 | 5 | import com.baomidou.mybatisplus.annotation.TableLogic; |
6 | -import com.fasterxml.jackson.annotation.JsonIgnore; | |
7 | 6 | import com.fasterxml.jackson.annotation.JsonProperty; |
8 | 7 | import org.jeecg.common.aspect.annotation.Dict; |
9 | 8 | import org.jeecgframework.poi.excel.annotation.Excel; |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/entity/SysUserDepart.java
... | ... | @@ -7,29 +7,31 @@ import com.baomidou.mybatisplus.annotation.TableId; |
7 | 7 | import com.baomidou.mybatisplus.annotation.TableName; |
8 | 8 | |
9 | 9 | import lombok.Data; |
10 | + | |
10 | 11 | @Data |
11 | 12 | @TableName("sys_user_depart") |
12 | 13 | public class SysUserDepart implements Serializable { |
13 | - private static final long serialVersionUID = 1L; | |
14 | + private static final long serialVersionUID = 1L; | |
15 | + | |
16 | + /** | |
17 | + * id | |
18 | + */ | |
19 | + @TableId(type = IdType.AUTO) | |
20 | + private Integer id; | |
21 | + /** 用户id */ | |
22 | + private Integer userId; | |
23 | + /** 部门id */ | |
24 | + private Integer depId; | |
14 | 25 | |
15 | - /** | |
16 | - * id | |
17 | - */ | |
18 | - @TableId(type = IdType.AUTO) | |
19 | - private java.lang.Integer id; | |
20 | - /**用户id*/ | |
21 | - private Integer userId; | |
22 | - /**部门id*/ | |
23 | - private Integer depId; | |
24 | - public SysUserDepart(Integer id, Integer userId, Integer depId) { | |
25 | - super(); | |
26 | - this.id = id; | |
27 | - this.userId = userId; | |
28 | - this.depId = depId; | |
29 | - } | |
26 | + public SysUserDepart(Integer id, Integer userId, Integer depId) { | |
27 | + super(); | |
28 | + this.id = id; | |
29 | + this.userId = userId; | |
30 | + this.depId = depId; | |
31 | + } | |
30 | 32 | |
31 | - public SysUserDepart(Integer id, Integer departId) { | |
32 | - this.userId = id; | |
33 | - this.depId = departId; | |
34 | - } | |
33 | + public SysUserDepart(Integer id, Integer departId) { | |
34 | + this.userId = id; | |
35 | + this.depId = departId; | |
36 | + } | |
35 | 37 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
1 | 1 | package org.jeecg.modules.system.service; |
2 | 2 | |
3 | +import com.alibaba.fastjson.JSONObject; | |
3 | 4 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
4 | 5 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
5 | 6 | import com.baomidou.mybatisplus.core.metadata.IPage; |
... | ... | @@ -192,7 +193,7 @@ public interface ISysUserService extends IService<SysUser> { |
192 | 193 | * @param sysUser |
193 | 194 | * @return |
194 | 195 | */ |
195 | - Result checkUserIsEffective(SysUser sysUser); | |
196 | + Result<JSONObject> checkUserIsEffective(SysUser sysUser); | |
196 | 197 | |
197 | 198 | /** |
198 | 199 | * 查询被逻辑删除的用户 |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java
1 | 1 | package org.jeecg.modules.system.service.impl; |
2 | 2 | |
3 | -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
4 | -import com.baomidou.mybatisplus.core.metadata.IPage; | |
5 | -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |
6 | -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |
3 | +import java.util.ArrayList; | |
4 | +import java.util.HashMap; | |
5 | +import java.util.List; | |
6 | +import java.util.Map; | |
7 | + | |
7 | 8 | import org.jeecg.common.constant.CommonConstant; |
8 | 9 | import org.jeecg.common.util.oConvertUtils; |
9 | 10 | import org.jeecg.modules.system.entity.SysDepart; |
... | ... | @@ -17,11 +18,10 @@ import org.jeecg.modules.system.service.ISysUserService; |
17 | 18 | import org.springframework.beans.factory.annotation.Autowired; |
18 | 19 | import org.springframework.stereotype.Service; |
19 | 20 | |
20 | -import java.util.ArrayList; | |
21 | -import java.util.HashMap; | |
22 | -import java.util.List; | |
23 | -import java.util.Map; | |
24 | -import java.util.stream.Collectors; | |
21 | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |
22 | +import com.baomidou.mybatisplus.core.metadata.IPage; | |
23 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |
24 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |
25 | 25 | |
26 | 26 | /** |
27 | 27 | * <P> |
... | ... | @@ -42,34 +42,32 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S |
42 | 42 | * 根据用户id查询部门信息 |
43 | 43 | */ |
44 | 44 | @Override |
45 | - public List<DepartIdModel> queryDepartIdsOfUser(String userId) { | |
46 | - LambdaQueryWrapper<SysUserDepart> queryUDep = new LambdaQueryWrapper<SysUserDepart>(); | |
47 | - LambdaQueryWrapper<SysDepart> queryDep = new LambdaQueryWrapper<SysDepart>(); | |
48 | - try { | |
49 | - queryUDep.eq(SysUserDepart::getUserId, userId); | |
50 | - List<String> depIdList = new ArrayList<>(); | |
51 | - List<DepartIdModel> depIdModelList = new ArrayList<>(); | |
52 | - List<SysUserDepart> userDepList = this.list(queryUDep); | |
53 | - if(userDepList != null && userDepList.size() > 0) { | |
54 | - for(SysUserDepart userDepart : userDepList) { | |
55 | - depIdList.add(userDepart.getDepId().toString()); | |
56 | - } | |
57 | - queryDep.in(SysDepart::getId, depIdList); | |
58 | - List<SysDepart> depList = sysDepartService.list(queryDep); | |
59 | - if(depList != null || depList.size() > 0) { | |
60 | - for(SysDepart depart : depList) { | |
61 | - depIdModelList.add(new DepartIdModel().convertByUserDepart(depart)); | |
62 | - } | |
63 | - } | |
64 | - return depIdModelList; | |
65 | - } | |
66 | - }catch(Exception e) { | |
67 | - e.fillInStackTrace(); | |
68 | - } | |
69 | - return null; | |
70 | - | |
71 | - | |
72 | - } | |
45 | + public List<DepartIdModel> queryDepartIdsOfUser(String userId) { | |
46 | + LambdaQueryWrapper<SysUserDepart> queryUDep = new LambdaQueryWrapper<SysUserDepart>(); | |
47 | + LambdaQueryWrapper<SysDepart> queryDep = new LambdaQueryWrapper<SysDepart>(); | |
48 | + try { | |
49 | + queryUDep.eq(SysUserDepart::getUserId, userId); | |
50 | + List<String> depIdList = new ArrayList<>(); | |
51 | + List<DepartIdModel> depIdModelList = new ArrayList<>(); | |
52 | + List<SysUserDepart> userDepList = this.list(queryUDep); | |
53 | + if (userDepList != null && userDepList.size() > 0) { | |
54 | + for (SysUserDepart userDepart : userDepList) { | |
55 | + depIdList.add(userDepart.getDepId().toString()); | |
56 | + } | |
57 | + queryDep.in(SysDepart::getId, depIdList); | |
58 | + List<SysDepart> depList = sysDepartService.list(queryDep); | |
59 | + if (depList != null && depList.size() > 0) { | |
60 | + for (SysDepart depart : depList) { | |
61 | + depIdModelList.add(new DepartIdModel().convertByUserDepart(depart)); | |
62 | + } | |
63 | + } | |
64 | + return depIdModelList; | |
65 | + } | |
66 | + } catch (Exception e) { | |
67 | + e.fillInStackTrace(); | |
68 | + } | |
69 | + return null; | |
70 | + } | |
73 | 71 | |
74 | 72 | |
75 | 73 | /** |
... | ... | @@ -120,49 +118,49 @@ public class SysUserDepartServiceImpl extends ServiceImpl<SysUserDepartMapper, S |
120 | 118 | } |
121 | 119 | |
122 | 120 | @Override |
123 | - public IPage<SysUser> queryDepartUserPageList(String departId, String username, String realname, int pageSize, int pageNo) { | |
124 | - IPage<SysUser> pageList = null; | |
125 | - // 部门ID不存在 直接查询用户表即可 | |
126 | - Page<SysUser> page = new Page<SysUser>(pageNo, pageSize); | |
127 | - if(oConvertUtils.isEmpty(departId)){ | |
128 | - LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>(); | |
129 | - //update-begin---author:wangshuai ---date:20220104 for:[JTC-297]已冻结用户仍可设置为代理人------------ | |
130 | - query.eq(SysUser::getStatus,Integer.parseInt(CommonConstant.STATUS_1)); | |
131 | - //update-end---author:wangshuai ---date:20220104 for:[JTC-297]已冻结用户仍可设置为代理人------------ | |
132 | - if(oConvertUtils.isNotEmpty(username)){ | |
133 | - query.like(SysUser::getUsername, username); | |
134 | - } | |
135 | - pageList = sysUserService.page(page, query); | |
136 | - }else{ | |
137 | - // 有部门ID 需要走自定义sql | |
138 | - SysDepart sysDepart = sysDepartService.getById(departId); | |
139 | - pageList = this.baseMapper.queryDepartUserPageList(page, sysDepart.getOrgCode(), username, realname); | |
140 | - } | |
141 | - List<SysUser> userList = pageList.getRecords(); | |
142 | - if(userList!=null && userList.size()>0){ | |
143 | - List<String> userIds =new ArrayList<>(); | |
121 | + public IPage<SysUser> queryDepartUserPageList(String departId, String username, String realname, int pageSize, int pageNo) { | |
122 | + IPage<SysUser> pageList = null; | |
123 | + // 部门ID不存在 直接查询用户表即可 | |
124 | + Page<SysUser> page = new Page<SysUser>(pageNo, pageSize); | |
125 | + if (oConvertUtils.isEmpty(departId)) { | |
126 | + LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>(); | |
127 | + // update-begin---author:wangshuai ---date:20220104 for:[JTC-297]已冻结用户仍可设置为代理人------------ | |
128 | + query.eq(SysUser::getStatus, Integer.parseInt(CommonConstant.STATUS_1)); | |
129 | + // update-end---author:wangshuai ---date:20220104 for:[JTC-297]已冻结用户仍可设置为代理人------------ | |
130 | + if (oConvertUtils.isNotEmpty(username)) { | |
131 | + query.like(SysUser::getUsername, username); | |
132 | + } | |
133 | + pageList = sysUserService.page(page, query); | |
134 | + } else { | |
135 | + // 有部门ID 需要走自定义sql | |
136 | + SysDepart sysDepart = sysDepartService.getById(departId); | |
137 | + pageList = this.baseMapper.queryDepartUserPageList(page, sysDepart.getOrgCode(), username, realname); | |
138 | + } | |
139 | + List<SysUser> userList = pageList.getRecords(); | |
140 | + if (userList != null && userList.size() > 0) { | |
141 | + List<String> userIds = new ArrayList<>(); | |
144 | 142 | |
145 | - //List<String> userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList()); | |
146 | - for (SysUser user : userList) { | |
147 | - userIds.add(user.getId().toString()); | |
148 | - } | |
143 | + // List<String> userIds = userList.stream().map(SysUser::getId).collect(Collectors.toList()); | |
144 | + for (SysUser user : userList) { | |
145 | + userIds.add(user.getId().toString()); | |
146 | + } | |
149 | 147 | |
150 | - Map<String, SysUser> map = new HashMap<String, SysUser>(); | |
151 | - if(userIds!=null && userIds.size()>0){ | |
152 | - // 查部门名称 | |
153 | - Map<String,String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); | |
154 | - userList.forEach(item->{ | |
155 | - //TODO 临时借用这个字段用于页面展示 | |
156 | - item.setOrgCodeTxt(useDepNames.get(item.getId())); | |
157 | - item.setSalt(""); | |
158 | - item.setPassword(""); | |
159 | - // 去重 | |
160 | - map.put(item.getId().toString(), item); | |
161 | - }); | |
162 | - } | |
163 | - pageList.setRecords(new ArrayList<SysUser>(map.values())); | |
164 | - } | |
165 | - return pageList; | |
166 | - } | |
148 | + Map<String, SysUser> map = new HashMap<String, SysUser>(); | |
149 | + if (userIds != null && userIds.size() > 0) { | |
150 | + // 查部门名称 | |
151 | + Map<String, String> useDepNames = sysUserService.getDepNamesByUserIds(userIds); | |
152 | + userList.forEach(item -> { | |
153 | + // TODO 临时借用这个字段用于页面展示 | |
154 | + item.setOrgCodeTxt(useDepNames.get(item.getId().toString())); | |
155 | + item.setSalt(""); | |
156 | + item.setPassword(""); | |
157 | + // 去重 | |
158 | + map.put(item.getId().toString(), item); | |
159 | + }); | |
160 | + } | |
161 | + pageList.setRecords(new ArrayList<SysUser>(map.values())); | |
162 | + } | |
163 | + return pageList; | |
164 | + } | |
167 | 165 | |
168 | 166 | } |
... | ... |
huaheng-wms-core/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
... | ... | @@ -47,6 +47,7 @@ import org.springframework.cache.annotation.CacheEvict; |
47 | 47 | import org.springframework.stereotype.Service; |
48 | 48 | import org.springframework.transaction.annotation.Transactional; |
49 | 49 | |
50 | +import com.alibaba.fastjson.JSONObject; | |
50 | 51 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
51 | 52 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
52 | 53 | import com.baomidou.mybatisplus.core.metadata.IPage; |
... | ... | @@ -342,45 +343,46 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl |
342 | 343 | } |
343 | 344 | |
344 | 345 | |
345 | - @Override | |
346 | - @Transactional(rollbackFor = Exception.class) | |
347 | - @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) | |
348 | - public void editUserWithDepart(SysUser user, String departs) { | |
349 | - this.updateById(user); //更新角色的时候已经更新了一次了,可以再跟新一次 | |
350 | - String[] arr = {}; | |
351 | - if(oConvertUtils.isNotEmpty(departs)){ | |
352 | - arr = departs.split(","); | |
353 | - } | |
354 | - //查询已关联部门 | |
355 | - List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); | |
356 | - if(userDepartList != null && userDepartList.size()>0){ | |
357 | - for(SysUserDepart depart : userDepartList ){ | |
358 | - //修改已关联部门删除部门用户角色关系 | |
359 | - if(!Arrays.asList(arr).contains(depart.getDepId())){ | |
360 | - List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList( | |
361 | - new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId,depart.getDepId())); | |
362 | - | |
363 | - List<String> roleIds=new ArrayList<>(); | |
364 | - for (SysDepartRole role : sysDepartRoleList) { | |
365 | - roleIds.add(role.getId().toString()); | |
366 | - } | |
367 | - //List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList()); | |
368 | - if(roleIds != null && roleIds.size()>0){ | |
369 | - departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId()) | |
370 | - .in(SysDepartRoleUser::getDroleId,roleIds)); | |
371 | - } | |
372 | - } | |
373 | - } | |
374 | - } | |
375 | - //先删后加 | |
376 | - sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); | |
377 | - if(oConvertUtils.isNotEmpty(departs)) { | |
378 | - for (String departId : arr) { | |
379 | - SysUserDepart userDepart = new SysUserDepart(user.getId(), Integer.valueOf(departId)); | |
380 | - sysUserDepartMapper.insert(userDepart); | |
381 | - } | |
382 | - } | |
383 | - } | |
346 | + @Override | |
347 | + @Transactional(rollbackFor = Exception.class) | |
348 | + @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) | |
349 | + public void editUserWithDepart(SysUser user, String departs) { | |
350 | + this.updateById(user); // 更新角色的时候已经更新了一次了,可以再跟新一次 | |
351 | + String[] arr = {}; | |
352 | + if (oConvertUtils.isNotEmpty(departs)) { | |
353 | + arr = departs.split(","); | |
354 | + } | |
355 | + // 查询已关联部门 | |
356 | + List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); | |
357 | + if (userDepartList != null && userDepartList.size() > 0) { | |
358 | + for (SysUserDepart depart : userDepartList) { | |
359 | + // 修改已关联部门删除部门用户角色关系 | |
360 | + if (!Arrays.asList(arr).contains(depart.getDepId())) { | |
361 | + List<SysDepartRole> sysDepartRoleList = | |
362 | + sysDepartRoleMapper.selectList(new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId, depart.getDepId())); | |
363 | + | |
364 | + List<String> roleIds = new ArrayList<>(); | |
365 | + for (SysDepartRole role : sysDepartRoleList) { | |
366 | + roleIds.add(role.getId().toString()); | |
367 | + } | |
368 | + // List<String> roleIds = | |
369 | + // sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList()); | |
370 | + if (roleIds != null && roleIds.size() > 0) { | |
371 | + departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId()) | |
372 | + .in(SysDepartRoleUser::getDroleId, roleIds)); | |
373 | + } | |
374 | + } | |
375 | + } | |
376 | + } | |
377 | + // 先删后加 | |
378 | + sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); | |
379 | + if (oConvertUtils.isNotEmpty(departs)) { | |
380 | + for (String departId : arr) { | |
381 | + SysUserDepart userDepart = new SysUserDepart(user.getId(), Integer.valueOf(departId)); | |
382 | + sysUserDepartMapper.insert(userDepart); | |
383 | + } | |
384 | + } | |
385 | + } | |
384 | 386 | |
385 | 387 | |
386 | 388 | /** |
... | ... | @@ -389,30 +391,30 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl |
389 | 391 | * @return |
390 | 392 | */ |
391 | 393 | @Override |
392 | - public Result<?> checkUserIsEffective(SysUser sysUser) { | |
393 | - Result<?> result = new Result<Object>(); | |
394 | - //情况1:根据用户信息查询,该用户不存在 | |
395 | - if (sysUser == null) { | |
396 | - result.error500("该用户不存在,请注册"); | |
397 | - baseCommonService.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null); | |
398 | - return result; | |
399 | - } | |
400 | - //情况2:根据用户信息查询,该用户已注销 | |
401 | - //update-begin---author:王帅 Date:20200601 for:if条件永远为falsebug------------ | |
402 | - if (CommonConstant.DEL_FLAG_1.equals(sysUser.getDelFlag())) { | |
403 | - //update-end---author:王帅 Date:20200601 for:if条件永远为falsebug------------ | |
404 | - baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null); | |
405 | - result.error500("该用户已注销"); | |
406 | - return result; | |
407 | - } | |
408 | - //情况3:根据用户信息查询,该用户已冻结 | |
409 | - if (CommonConstant.USER_FREEZE.equals(sysUser.getStatus())) { | |
410 | - baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已冻结!", CommonConstant.LOG_TYPE_1, null); | |
411 | - result.error500("该用户已冻结"); | |
412 | - return result; | |
413 | - } | |
414 | - return result; | |
415 | - } | |
394 | + public Result<JSONObject> checkUserIsEffective(SysUser sysUser) { | |
395 | + Result<JSONObject> result = new Result<JSONObject>(); | |
396 | + // 情况1:根据用户信息查询,该用户不存在 | |
397 | + if (sysUser == null) { | |
398 | + result.error500("该用户不存在,请注册"); | |
399 | + baseCommonService.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null); | |
400 | + return result; | |
401 | + } | |
402 | + // 情况2:根据用户信息查询,该用户已注销 | |
403 | + // update-begin---author:王帅 Date:20200601 for:if条件永远为falsebug------------ | |
404 | + if (CommonConstant.DEL_FLAG_1.equals(sysUser.getDelFlag())) { | |
405 | + // update-end---author:王帅 Date:20200601 for:if条件永远为falsebug------------ | |
406 | + baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null); | |
407 | + result.error500("该用户已注销"); | |
408 | + return result; | |
409 | + } | |
410 | + // 情况3:根据用户信息查询,该用户已冻结 | |
411 | + if (CommonConstant.USER_FREEZE.equals(sysUser.getStatus())) { | |
412 | + baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已冻结!", CommonConstant.LOG_TYPE_1, null); | |
413 | + result.error500("该用户已冻结"); | |
414 | + return result; | |
415 | + } | |
416 | + return result; | |
417 | + } | |
416 | 418 | |
417 | 419 | @Override |
418 | 420 | public List<SysUser> queryLogicDeleted() { |
... | ... |
huaheng-wms-core/src/main/resources/banner.txt
1 | 1 | ${AnsiColor.BRIGHT_BLUE} |
2 | - __ __ __ __ _______ __ __ _______ __ _ _______ _ _ __ __ _______ _ ___ | |
3 | -| | | || | | || _ || | | || || | | || | | | _ | || |_| || || | | | | |
4 | -| |_| || | | || |_| || |_| || ___|| |_| || ___| ____ | || || || || _____|| |_| | | |
5 | -| || |_| || || || |___ | || | __ |____| | || || |_____ | | | |
6 | -| || || || || ___|| _ || || | | || ||_____ ||___ | | |
7 | -| _ || || _ || _ || |___ | | | || |_| | | _ || ||_|| | _____| | | | | |
8 | -|__| |__||_______||__| |__||__| |__||_______||_| |__||_______| |__| |__||_| |_||_______| |___| | |
9 | 2 | |
3 | +888 888 888 888 d8888 888 888 8888888888 888b 888 .d8888b. 888 888 888b d888 .d8888b. d8888 | |
4 | +888 888 888 888 d88888 888 888 888 8888b 888 d88P Y88b 888 o 888 8888b d8888 d88P Y88b d8P888 | |
5 | +888 888 888 888 d88P888 888 888 888 88888b 888 888 888 888 d8b 888 88888b.d88888 Y88b. d8P 888 | |
6 | +8888888888 888 888 d88P 888 8888888888 8888888 888Y88b 888 888 888 d888b 888 888Y88888P888 "Y888b. d8P 888 | |
7 | +888 888 888 888 d88P 888 888 888 888 888 Y88b888 888 88888 888d88888b888 888 Y888P 888 "Y88b. d88 888 | |
8 | +888 888 888 888 d88P 888 888 888 888 888 Y88888 888 888 88888P Y88888 888 Y8P 888 "888 8888888888 | |
9 | +888 888 Y88b. .d88P d8888888888 888 888 888 888 Y8888 Y88b d88P 8888P Y8888 888 " 888 Y88b d88P 888 | |
10 | +888 888 "Y88888P" d88P 888 888 888 8888888888 888 Y888 "Y8888P88 888P Y888 888 888 "Y8888P" 888 | |
11 | + | |
10 | 12 | ${AnsiColor.BRIGHT_GREEN} |
11 | 13 | Jeecg Boot Version: 3.1.0 |
12 | 14 | Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version} |
... | ... |
huaheng-wms-core/src/main/resources/jeecg/jeecg_config.properties
pom.xml
... | ... | @@ -10,8 +10,9 @@ |
10 | 10 | </parent> |
11 | 11 | |
12 | 12 | <groupId>com.huaheng.wms</groupId> |
13 | - <version>4.0.1</version> | |
14 | 13 | <artifactId>huaheng-wms4</artifactId> |
14 | + <version>4.0.1</version> | |
15 | + | |
15 | 16 | <packaging>pom</packaging> |
16 | 17 | |
17 | 18 | <name>huaheng-wms4</name> |
... | ... | @@ -40,5 +41,5 @@ |
40 | 41 | </snapshots> |
41 | 42 | </repository> |
42 | 43 | </repositories> |
43 | - | |
44 | + | |
44 | 45 | </project> |
... | ... |