Commit ec6edc2e64b35b47a0198a67b85dee446ad52c16

Authored by 谭毅彬
1 parent ccf5b4ec

构建前后端分离/合并打包pom配置,少量代码格式化

Signed-off-by: TanYibin <5491541@qq.com>
.gitignore
... ... @@ -5,6 +5,7 @@
5 5 ## backend
6 6 **/target
7 7 **/logs
  8 +**/static/**
8 9  
9 10 ## front
10 11 **/*.lock
... ...
ant-design-vue-jeecg/.gitignore
1 1 .DS_Store
2 2 node_modules
  3 +node
3 4 /dist
4 5  
5 6 # local env files
... ...
ant-design-vue-jeecg/idea.config.js
... ... @@ -20,5 +20,5 @@ module.exports = {
20 20 '@router': resolve('src/router'),
21 21 '@store': resolve('src/store')
22 22 }
23   - },
24   -}
25 23 \ No newline at end of file
  24 + }
  25 +}
... ...
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
... ... @@ -5,7 +5,7 @@ import { constantRouterMap } from &#39;@/config/router.config&#39;
5 5 Vue.use(Router)
6 6  
7 7 export default new Router({
8   - mode: 'history',
  8 + mode: 'hash',
9 9 base: process.env.BASE_URL,
10 10 scrollBehavior: () => ({ y: 0 }),
11 11 routes: constantRouterMap
... ...
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&lt;SysUser&gt; {
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&lt;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&lt;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&lt;SysUserMapper, SysUser&gt; 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&lt;SysUserMapper, SysUser&gt; 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
1 1 #code_generate_project_path
2   -project_path=E:\\eclipse2018-workspace\\jeecg-boot
  2 +project_path=D:\\code_generate\\jeecg-boot
3 3 #bussi_package[User defined]
4 4 bussi_package=org.jeecg.modules.wms
5 5  
... ...
... ... @@ -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>
... ...