diff --git a/README.md b/README.md index 0ef1004d..5269d6fa 100644 --- a/README.md +++ b/README.md @@ -1,101 +1,101 @@ -### SmartAdmin -**SmartAdmin** 由 **河南·洛阳** [1024 创新实验室](https://www.1024lab.net/) 使用SpringBoot2 和 Vue3 Setup语法糖、 Composition Api (同时支持JavaScript和TypeScript双版本) ,开发出的一套简洁、易用的低代码中后台解决方案! +### **SmartAdmin** -**我们开源一套漂亮的代码和一套整洁的代码规范**,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,保持谦逊,保持学习,**热爱代码,更热爱生活!** +SmartAdmin3.X 由河南·洛阳 [1024 创新实验室](https://www.1024lab.net/)基于SpringBoot + Sa-Token + Mybatis-Plus 和 Vue3 + Vite5 + Ant Design Vue 4 (同时支持JavaScript和TypeScript双版本) ,并以 **「高质量代码」为核心,「简洁、高效、安全」**的快速开发平台。 +**国内首个满足《网络安全》、《数据安全》、三级等保**, 支持登录限制、支持接口国产加解密、支持数据加解密等一系列安全措施的开源项目。 -在线预览:[https://preview.smartadmin.vip](https://preview.smartadmin.vip) -官方文档:[https://smartadmin.vip](https://smartadmin.vip) +**我们开源一套漂亮的代码和一套整洁的代码规范**,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,保持谦逊,保持学习,热爱代码,更热爱生活! -### 理念与思想 +star +fork +GitHub stars +GitHub forks +MIT +### **理念与思想** - 我们分享的不是徒劳无功的各种功能,而是必须有的功能,如:数据变动记录、系统说明文档、版本更新记录、意见反馈、日志、心跳、单号生成器等等。 - 我们分享的还有经过上百家公司验证过的前端、后端、vue3等代码规范,好的规范能让我们敲下的每行代码更铿锵有力! - **我们推崇高质量的代码,身为开发,代码即利剑,键盘上一套行云流水,宛如侠客,事了拂衣去,深藏身与名。** -- **我们推崇团队的高度配合默契、互相帮助,从不加班,而不是一看到别人的代码就头皮发麻,留其 [996.ICU](https://baike.baidu.com/item/996.ICU),我们热爱代码,更热爱生活** - -### 演示图 - - - - - - - - - - - - - - - - - - -
- -### 技术体系 - -- 前端:Vue3.2 + Vue-Router + Pinia + Ant Design Vue 3.X + Vite -- 后端:Java8 + SpringBoot2.X + Mybatis-plus + jwt + druid + mysql - -### 功能特点 - -- 表格:持久化表格自定义列、国际化、水印 等 -- OA办公:公司信息(发票、银行、员工等)、通知公告(阅读记录、次数等) -- 文档:系统手册、意见反馈、更新记录 等 -- 监控:心跳监控、数据库监控 -- 日志:登录日志、操作日志(IP、浏览器、操作系统等设备信息) -- 系统:员工、部门、角色、权限、菜单 等 -- 工具:文件管理、系统参数、数据字典、单号生成 等 -- 代码生成: 基于每个表的配置、在线预览代码、下载 等 -- 更多请查看:[SmartAdmin 业内独有功能亮点](https://smartadmin.vip/views/v2/base/FunctionFeature.html) - -### 前端特点 - -- 提供 js 和 ts 双版本,目录结构及其清晰 -- setup语法糖下Composition Api 代码规范可能只有我们写对了 -- 前端常量维护: vue-enum,拒绝出现魔法数字,常量枚举不可维护的现象 -- 非常漂亮的首页、业内独有的帮助文档、数据变动记录、水印等 -- 业内独有的用户表格自定义列,且保存到数据库 -- 业内最好的api、常量、等写法 -- 独有的本地、开发、测试、预发布、生产 5个env环境配置文件 -- 业内代码最清晰的layout布局写法 -- 业内可能只有我们把main.js中的router加载方式写对了 -- 以上只是一些举例,更多灿若繁星的惊喜和细节,等待着你的发现![去查看](https://smartadmin.vip/views/v2/base/CodeFeature.html) +- **我们推崇团队的高度配合默契、互相帮助,从不加班,而不是一看到别人的代码就头皮发麻,留其 [996.ICU](https://baike.baidu.com/item/996.ICU) 加班。** +- **我们主动思考,保持谦逊,保持学习,热爱代码,更热爱生活。** +- **我们希望你,希望你能花费3分钟认真阅读下面的每一个点,让你感受从未有过的技术体验!** -### 后端特点 +### **技术体系** -- 高质量的 Java 代码、分包结构、和代码注释 -- 业内独创的请求返回码维护,非常值得一看 -- 四层架构(controller, service, manager, dao),为什么要有四层 -- vo, bo, form, entity ,各种 javabean 怎么区分和使用 -- 基于git diff的数据变更留痕功能,忘掉鸡肋的操作记录吧 -- 心跳服务,让你发现有哪些机器再跑,哪些人在偷偷的跑你的 Job -- 支持接口加密解密注解、接口重复提交 -- maven多环境:开发、测试、预发布、生产 环境配置 -- smart-reload,为系统预留钩子,动态加载,在不重启程序前提下执行一些代码 -- 以上只是沧海一粟,更多的细节等待你的发现![去查看](https://smartadmin.vip/views/v2/base/CodeFeature.html) +- 前端:Vue3 + Vite5 + Vue-Router + Pinia + Ant Design Vue 4.X +- 移动端:uniapp + uview2.x +- 后端:SpringBoot + Sa Token + Mybatis-plus + 多种数据库 -### 联系我们 +### **功能亮点** + +- **安全体系**:满足国家三级等保要求,如密码加密、密码复杂度要求、登录错误次数锁定、登录超时退出等关键功能 +- **接口加解密**:支持请求参数和返回内容进行加解密操作,支持国产加密算法和其他国外加密算法 +- **表格自定义列**:支持用户自定义列,并能将用户自定义列持久化到数据库 +- **数据变更记录**:支持基于git diff插件的数据变更记录,查看数据变化更直观方便 +- **在线文档**:支持右侧帮助文档(类似阿里云控制台右侧帮助文档效果)、支持意见反馈、版本记录 等功能 +- **OA办公**:公司信息(发票、银行、员工等)、通知公告(阅读记录、次数等) +- **日志、监控**:服务器心跳日志、登录日志、操作日志(IP、浏览器、操作系统等设备信息) +- **系统功能**:员工、部门、角色、权限、菜单、水印、文件管理、系统参数、数据字典、单号生成 等 +- **代码生成**: 基于每个表的配置、在线预览代码、下载 等 +- **以上只是一些举例,更多灿若繁星的惊喜和细节,等待着你的发现!**:[SmartAdmin 业内独有功能亮点](./FunctionFeature.md) + + +### **代码亮点** + +- **【前端-双版本】:** 提供 js 和 ts 双版本,目录结构及其清晰 +- **【前端-常量维护】:** vue-enum,拒绝出现魔法数字,常量枚举不可维护的现象 +- **【前端-命名】:** 业内最好的api、常量等命名和写法 +- **【前端-多环境支持】:** 独有的本地、开发、测试、预发布、生产 5个env环境配置文件 +- **【前端-layout代码】:** 业内代码最清晰的layout布局写法,小白都能看懂 +- **【前端-main.js】:** 业内可能只有我们把main.js中的router加载方式写对了 +- ----华丽前后端分割线---- +- **【后端-独有目录结构】:** 业内独有的高质量的 Java代码分包结构,适合大、中、小型项目,结构非常清晰 +- **【后端-公共配置文件】:** 业内独有的共用配置文件维护,简化共同配置 +- **【后端-返回码维护】:** 业内独创的请求返回码维护,非常值得一看 +- **【后端-四层架构】:** 四层架构(controller, service, manager, dao),为什么要有四层 +- **【后端-多环境】:** maven多环境:开发、测试、预发布、生产 环境配置 +- **【后端-系统钩子】:** smart-reload,为系统预留钩子,动态加载,在不重启程序前提下执行一些代码 +- 以上只是沧海一粟,更多的细节等待你的发现![去查看](./CodeFeature.md) + +### **演示图** - - - + + - - - + + + + + + + + + +
骚扰“卓大”,拉你入群关注“小镇程序员”,代码与生活、技术与钱途请我们喝杯咖啡
-### 作者 -[1024创新实验室-主任:卓大](https://zhuoda.vip),混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。 -[1024创新实验室(河南·洛阳)](https://1024lab.net) 致力于成为中原领先、国内一流的技术团队,以技术创新为驱动,合作各类项目(软件外包、技术顾问、培训等等)。 +### **联系我们** + +[1024 创新实验室-主任:卓大](https://zhuoda.vip),混迹于各个技术圈,研究过计算机,熟悉点 java,略懂点前端。 +[1024 创新实验室(河南·洛阳)](https://1024lab.net) 致力于成为中原领先、国内一流的技术团队,以技术创新为驱动,合作各类项目(软件外包、技术顾问、培训等等)。 + + + + + + + + + + + + +
加 主任 “卓大” 微信
拉你入群,一起学习
关注 “六边形工程师”
分享:赚钱、代码、生活
请 “1024创新实验室” 喝咖啡
支持我们的开源与分享
+ diff --git a/smart-admin-api/pom.xml b/smart-admin-api/pom.xml index 7211de26..15e54a5e 100644 --- a/smart-admin-api/pom.xml +++ b/smart-admin-api/pom.xml @@ -11,7 +11,7 @@ SmartAdmin project - sa-common + sa-base sa-admin @@ -23,7 +23,8 @@ 2.0.8 3.5.2 3.8.6 - 2.7.0 + 1.7.0 + 4.3.0 2.0.16 1.2.14 1.4.2 @@ -31,14 +32,13 @@ 1.21 2.3.2 0.9.11 - 2.6 + 2.15.0 3.12.0 4.4 1.13 - 4.2.0 2.12.0 - 4.1.1 - 1.3 + 3.3.2 + 5.2.4 1.11.842 2.17.2 5.7.22 @@ -46,6 +46,10 @@ 0.9.1 0.9.0 3.1 + 1.35.0.RC + 2.7.0 + 1.59 + 2.13.4 @@ -92,21 +96,15 @@ - io.springfox - springfox-swagger2 - ${swagger.version} - - - guava - com.google.guava - - + org.springdoc + springdoc-openapi-ui + ${springdoc-openapi-ui.version} - io.springfox - springfox-swagger-ui - ${swagger.version} + com.github.xiaoymin + knife4j-openapi3-spring-boot-starter + ${knife4j.version} @@ -181,48 +179,6 @@ ${commons-codec.version} - - - cn.afterturn - easypoi-spring-boot-starter - ${easypoi.version} - - - - cn.afterturn - easypoi-web - ${easypoi.version} - - - javassist - org.javassist - - - guava - com.google.guava - - - - - - - - - - - - org.apache.poi - poi-scratchpad - ${poi-scratchpad.version} - - - - - org.apache.poi - ooxml-schemas - ${poi-ooxml-schemas.version} - - com.amazonaws aws-java-sdk-s3 @@ -271,6 +227,72 @@ ${velocity-tools.version} + + + + cn.dev33 + sa-token-spring-boot-starter + ${sa-token.version} + + + + + cn.dev33 + sa-token-redis-jackson + ${sa-token.version} + + + + + + + org.lionsoul + ip2region + ${ip2region.version} + + + + org.bouncycastle + bcprov-jdk15on + ${bcprov.version} + + + + com.alibaba + easyexcel + ${easy-excel.version} + + + poi-ooxml-schemas + org.apache.poi + + + + + + org.apache.poi + poi + ${poi.version} + + + + org.apache.poi + poi-ooxml + ${poi.version} + + + + org.apache.poi + poi-scratchpad + ${poi.version} + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson-datatype-jsr310.version} + + diff --git a/smart-admin-api/sa-admin/pom.xml b/smart-admin-api/sa-admin/pom.xml index af0f1935..ab2867cb 100644 --- a/smart-admin-api/sa-admin/pom.xml +++ b/smart-admin-api/sa-admin/pom.xml @@ -19,8 +19,8 @@ net.1024lab - sa-common - ${project.version} + sa-base + 1.0.0 @@ -31,7 +31,7 @@ org.springframework.boot spring-boot-maven-plugin - net.lab1024.sa.admin.SmartAdminApplication + net.lab1024.sa.admin.AdminApplication diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/SmartAdminApplication.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/AdminApplication.java similarity index 57% rename from smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/SmartAdminApplication.java rename to smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/AdminApplication.java index 82975649..01fab9ce 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/SmartAdminApplication.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/AdminApplication.java @@ -1,5 +1,7 @@ package net.lab1024.sa.admin; +import net.lab1024.sa.base.listener.Ip2RegionListener; +import net.lab1024.sa.base.listener.LogVariableListener; import org.apache.ibatis.annotations.Mapper; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; @@ -17,17 +19,23 @@ import org.springframework.scheduling.annotation.EnableScheduling; * @Date 2022-08-29 21:00:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @EnableCaching @EnableScheduling @EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true) -@ComponentScan(basePackages = {"net.lab1024.sa"}) -@MapperScan(value = "net.lab1024.sa", annotationClass = Mapper.class) -@SpringBootApplication(exclude = {UserDetailsServiceAutoConfiguration.class }) -public class SmartAdminApplication { +@ComponentScan(AdminApplication.COMPONENT_SCAN) +@MapperScan(value = AdminApplication.COMPONENT_SCAN, annotationClass = Mapper.class) +@SpringBootApplication(exclude = {UserDetailsServiceAutoConfiguration.class}) +public class AdminApplication { + + public static final String COMPONENT_SCAN = "net.lab1024.sa"; public static void main(String[] args) { - SpringApplication.run(SmartAdminApplication.class, args); + SpringApplication application = new SpringApplication(AdminApplication.class); + // 添加 日志监听器,使 log4j2-spring.xml 可以间接读取到配置文件的属性 + application.addListeners(new LogVariableListener(), new Ip2RegionListener()); + application.run(args); } + } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/common/AdminBaseController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/common/AdminBaseController.java deleted file mode 100644 index f54bbd51..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/common/AdminBaseController.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.lab1024.sa.admin.common; - -/** - * admin 相关的父类 - * - * @Author 1024创新实验室-主任:卓大 - * @Date 2022-06-10 21:00:58 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 - */ -public class AdminBaseController { -} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/JweAspectConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/JweAspectConfig.java deleted file mode 100644 index c4e74ff9..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/JweAspectConfig.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.lab1024.sa.admin.config; - -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.jwe.JweAspect; -import net.lab1024.sa.common.module.support.jwe.JweUserKey; -import net.lab1024.sa.common.module.support.operatelog.core.OperateLogAspect; -import net.lab1024.sa.common.module.support.operatelog.core.OperateLogConfig; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * 操作日志切面 配置 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022-05-30 21:22:12 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Configuration -public class JweAspectConfig { - - /** - * 配置信息 - */ - @Bean - public JweAspect jweConfig() { - return new JweAspect((request -> { - RequestUser requestUser = SmartRequestUtil.getRequestUser(); - JweUserKey userKey = new JweUserKey(); - userKey.setUserId(requestUser.getUserId()); - userKey.setUserName(requestUser.getUserName()); - userKey.setExtData(requestUser.getUserType().getValue().toString()); - return userKey; - })); - } -} \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/MvcConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/MvcConfig.java new file mode 100644 index 00000000..2b550c06 --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/MvcConfig.java @@ -0,0 +1,42 @@ +package net.lab1024.sa.admin.config; + +import net.lab1024.sa.admin.interceptor.AdminInterceptor; +import net.lab1024.sa.base.config.SwaggerConfig; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import javax.annotation.Resource; + +/** + * web相关配置 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2021-09-02 20:21:10 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Configuration +public class MvcConfig implements WebMvcConfigurer { + + @Resource + private AdminInterceptor adminInterceptor; + + + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(adminInterceptor) + .excludePathPatterns(SwaggerConfig.SWAGGER_WHITELIST) + .addPathPatterns("/**"); + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + +} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/OperateLogAspectConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/OperateLogAspectConfig.java index 214502e0..bccbfb4c 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/OperateLogAspectConfig.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/OperateLogAspectConfig.java @@ -1,13 +1,9 @@ package net.lab1024.sa.admin.config; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.operatelog.core.OperateLogAspect; -import net.lab1024.sa.common.module.support.operatelog.core.OperateLogConfig; +import net.lab1024.sa.base.module.support.operatelog.core.OperateLogAspect; +import net.lab1024.sa.base.module.support.operatelog.core.OperateLogConfig; import org.springframework.context.annotation.Configuration; -import javax.servlet.http.HttpServletRequest; - /** * 操作日志切面 配置 * @@ -15,19 +11,17 @@ import javax.servlet.http.HttpServletRequest; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class OperateLogAspectConfig extends OperateLogAspect{ /** * 配置信息 - * @return */ @Override public OperateLogConfig getOperateLogConfig() { - OperateLogConfig config = OperateLogConfig.builder().corePoolSize(4).queueCapacity(1000).build(); - return config; + return OperateLogConfig.builder().corePoolSize(1).queueCapacity(10000).build(); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityConfig.java deleted file mode 100644 index 8f12ba27..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityConfig.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.lab1024.sa.admin.config; - -import net.lab1024.sa.admin.module.system.login.service.LoginService; -import net.lab1024.sa.common.common.security.AbstractSecurityConfig; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.core.userdetails.UserDetails; - -import javax.servlet.http.HttpServletRequest; -import java.util.function.BiFunction; - -/** - * 权限配置 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022-05-30 21:22:12 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Configuration -public class SecurityConfig extends AbstractSecurityConfig { - /** - * 获取TOKEN 解析类 - */ - @Autowired - private LoginService loginService; - - @Override - protected BiFunction userFunction() { - return (token, request) -> loginService.getLoginUserDetail(token, request); - } - - @Override - protected String[] getAuthenticatedUrlPatterns() { - return new String[]{"/**"}; - } - - -} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityMethodConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityMethodConfig.java deleted file mode 100644 index 772b2d5d..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/config/SecurityMethodConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.lab1024.sa.admin.config; - -import net.lab1024.sa.admin.module.system.login.domain.LoginEmployeeDetail; -import net.lab1024.sa.common.common.annoation.SaAuth; -import net.lab1024.sa.common.common.security.SecurityMethodSource; -import net.lab1024.sa.common.common.security.SecurityPermissionCheckService; -import org.springframework.context.annotation.Bean; -import org.springframework.security.access.expression.method.ExpressionBasedAnnotationAttributeFactory; -import org.springframework.security.access.method.MethodSecurityMetadataSource; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; -import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration; -import org.springframework.security.core.Authentication; - -/** - * 1、以类名加方法名为权限字符串的校验模式
- * 2、重写MethodSecurityMetadataSource将优化security配置,只需在方法上加上@saAuth注解,方法上就会存在权限(权限字符串为类名加方法名),而无需另外手动设置,减轻后端开发成本
- * 3、security将不再依据权限字符串进行权限控制,
- * 4、security将依据对应权限字符串下的接口权限进行控制
- * 5、采用此配置原@PreAuthorize依然有效
- * 6、如若无需此配置,需将@EnableGlobalMethodSecurity注解添加至SecurityConfig类上 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2021-08-31 0:01 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@EnableGlobalMethodSecurity(prePostEnabled = true) -public class SecurityMethodConfig extends GlobalMethodSecurityConfiguration { - - @Bean(SaAuth.saAuth) - public SecurityPermissionCheckService securityPermissionCheckService() { - return new SecurityPermissionCheckService() { - @Override - public boolean checkPermission(Authentication authentication, String permission) { - LoginEmployeeDetail loginEmployeeDetail = (LoginEmployeeDetail) authentication.getPrincipal(); - if (loginEmployeeDetail.getAdministratorFlag()) { - return true; - } - return super.permissionJudge(loginEmployeeDetail, permission); - } - }; - } - - @Override - public MethodSecurityMetadataSource customMethodSecurityMetadataSource() { - ExpressionBasedAnnotationAttributeFactory attributeFactory = new ExpressionBasedAnnotationAttributeFactory(this.getExpressionHandler()); - return new SecurityMethodSource(attributeFactory, SaAuth.saAuth); - } -} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminCacheConst.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminCacheConst.java index ebacfdf0..aa4378ca 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminCacheConst.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminCacheConst.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.constant; -import net.lab1024.sa.common.constant.CacheKeyConst; +import net.lab1024.sa.base.constant.CacheKeyConst; /** * 缓存 key @@ -9,7 +9,7 @@ import net.lab1024.sa.common.constant.CacheKeyConst; * @Date 2022-01-07 18:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class AdminCacheConst extends CacheKeyConst { @@ -45,7 +45,7 @@ public class AdminCacheConst extends CacheKeyConst { /** * 分类相关缓存 */ - public static class CATEGORY { + public static class Category { public static final String CATEGORY_ENTITY = "category_cache"; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminRedisKeyConst.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminRedisKeyConst.java index 301c73a8..07cc8f66 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminRedisKeyConst.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminRedisKeyConst.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.constant; -import net.lab1024.sa.common.constant.RedisKeyConst; +import net.lab1024.sa.base.constant.RedisKeyConst; /** * redis key 常量类 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.constant.RedisKeyConst; * @Date 2022-01-07 18:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class AdminRedisKeyConst extends RedisKeyConst { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminSwaggerTagConst.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminSwaggerTagConst.java index a037fa66..9388b482 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminSwaggerTagConst.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminSwaggerTagConst.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.constant; -import net.lab1024.sa.common.constant.SwaggerTagConst; +import net.lab1024.sa.base.constant.SwaggerTagConst; /** * swagger @@ -9,7 +9,7 @@ import net.lab1024.sa.common.constant.SwaggerTagConst; * @Date 2022-01-07 18:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class AdminSwaggerTagConst extends SwaggerTagConst { @@ -48,7 +48,6 @@ public class AdminSwaggerTagConst extends SwaggerTagConst { public static final String SYSTEM_ROLE_MENU = "系统-角色-菜单"; - public static final String SYSTEM_DATA_TRACER = "系统-"; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java new file mode 100644 index 00000000..870b30b6 --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java @@ -0,0 +1,190 @@ +package net.lab1024.sa.admin.interceptor; + +import cn.dev33.satoken.annotation.SaIgnore; +import cn.dev33.satoken.exception.SaTokenException; +import cn.dev33.satoken.stp.StpUtil; +import cn.dev33.satoken.strategy.SaStrategy; +import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee; +import net.lab1024.sa.admin.module.system.login.service.LoginService; +import net.lab1024.sa.base.common.annoation.NoNeedLogin; +import net.lab1024.sa.base.common.code.SystemErrorCode; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.SystemEnvironment; +import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.common.util.SmartResponseUtil; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; + +/** + * admin 拦截器 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/7/26 20:20:33 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@Component +@Slf4j +public class AdminInterceptor implements HandlerInterceptor { + + @Resource + private LoginService loginService; + + @Resource + private SystemEnvironment systemEnvironment; + + @Value("${sa-token.active-timeout}") + private long tokenActiveTimeout; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + + // OPTIONS请求直接return + if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) { + response.setStatus(HttpStatus.NO_CONTENT.value()); + return false; + } + + boolean isHandler = handler instanceof HandlerMethod; + if (!isHandler) { + return true; + } + + try { + // --------------- 第一步: 根据token 获取用户 --------------- + + String tokenValue = StpUtil.getTokenValue(); + boolean debugNumberTokenFlag = isDevDebugNumberToken(tokenValue); + + String loginId = null; + if (debugNumberTokenFlag) { + //开发、测试环境,且为数字的话,则表明为 调试临时用户,即需要调用 sa-token switch + loginId = UserTypeEnum.ADMIN_EMPLOYEE.getValue() + StringConst.COLON + tokenValue; + StpUtil.switchTo(loginId); + } else { + loginId = (String) StpUtil.getLoginIdByToken(tokenValue); + } + + RequestEmployee requestEmployee = loginService.getLoginEmployee(loginId, request); + + // --------------- 第二步: 校验 登录 --------------- + + Method method = ((HandlerMethod) handler).getMethod(); + NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class); + if (noNeedLogin != null) { + checkActiveTimeout(requestEmployee,debugNumberTokenFlag); + return true; + } + + if (requestEmployee == null) { + SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.LOGIN_STATE_INVALID)); + return false; + } + + // 检测token 活跃频率 + checkActiveTimeout(requestEmployee,debugNumberTokenFlag); + + + // --------------- 第三步: 校验 权限 --------------- + + SmartRequestUtil.setRequestUser(requestEmployee); + if (SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { + return true; + } + + SaStrategy.instance.checkMethodAnnotation.accept(method); + + } catch (SaTokenException e) { + /* + * sa-token 异常状态码 + * 具体请看: https://sa-token.cc/doc.html#/fun/exception-code + */ + int code = e.getCode(); + if (code == 11041 || code == 11051) { + SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.NO_PERMISSION)); + } else if (code == 11016) { + SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.LOGIN_ACTIVE_TIMEOUT)); + } else if (code >= 11011 && code <= 11015) { + SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.LOGIN_STATE_INVALID)); + } else { + SmartResponseUtil.write(response, ResponseDTO.error(UserErrorCode.PARAM_ERROR)); + } + return false; + } catch (Throwable e) { + SmartResponseUtil.write(response, ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR)); + log.error(e.getMessage(), e); + return false; + } + + // 通过验证 + return true; + } + + + /** + * 检测:token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结 + */ + private void checkActiveTimeout(RequestEmployee requestEmployee, boolean debugNumberTokenFlag) { + + // 对于开发环境的 数字 debug token ,不需要检测活跃有效期 + if (debugNumberTokenFlag) { + return; + } + + // 用户不在线,也不用检测 + if (requestEmployee == null) { + return; + } + + // 小于1 ,也不需要检测 + if (tokenActiveTimeout < 1) { + return; + } + + StpUtil.checkActiveTimeout(); + } + + + /** + * 是否为开发使用的 debug token + * + * @param token + * @return + */ + private boolean isDevDebugNumberToken(String token) { + if (!StrUtil.isNumeric(token)) { + return false; + } + return systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.DEV + || systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.TEST; + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + // 清除上下文 + SmartRequestUtil.remove(); + // 开发环境,关闭 sa token 的临时切换用户 + if (systemEnvironment.getCurrentEnvironment() == SystemEnvironmentEnum.DEV) { + StpUtil.endSwitch(); + } + } + + +} \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java index cf8d0490..959045d1 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java @@ -1,9 +1,6 @@ package net.lab1024.sa.admin.listener; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.code.ErrorCodeRegister; -import net.lab1024.sa.common.config.ScheduleConfig; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @@ -14,27 +11,14 @@ import org.springframework.stereotype.Component; * @Date 2021-08-26 18:46:32 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Slf4j @Component public class AdminStartupRunner implements CommandLineRunner { - @Autowired - private ScheduleConfig scheduleConfig; @Override public void run(String... args) { - - // 初始化状态码 - int codeCount = ErrorCodeRegister.initialize(); - - //TODO <卓大> :根据实际情况来决定是否开启定时任务 - String destroySchedules = "Spring 定时任务 @Schedule 已启动"; -// destroySchedules = scheduleConfig.destroy(); - - log.info("\n ---------------【1024创新实验室 温馨提示:】 ErrorCode 共计完成初始化: {}个!---------------" + - "\n ---------------【1024创新实验室 温馨提示:】 {}---------------\n", codeCount, destroySchedules); - } } \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/constant/CategoryTypeEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/constant/CategoryTypeEnum.java index 2df51fe3..c3be5116 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/constant/CategoryTypeEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/constant/CategoryTypeEnum.java @@ -3,7 +3,7 @@ package net.lab1024.sa.admin.module.business.category.constant; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 分类类型 枚举 @@ -12,7 +12,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/controller/CategoryController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/controller/CategoryController.java index 5fff565a..460bd1fe 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/controller/CategoryController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/controller/CategoryController.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.business.category.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.business.category.domain.form.CategoryAddForm; import net.lab1024.sa.admin.module.business.category.domain.form.CategoryTreeQueryForm; @@ -10,11 +10,10 @@ import net.lab1024.sa.admin.module.business.category.domain.form.CategoryUpdateF import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO; import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryVO; import net.lab1024.sa.admin.module.business.category.service.CategoryService; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.ResponseDTO; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -25,42 +24,45 @@ import java.util.List; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = AdminSwaggerTagConst.Business.MANAGER_CATEGORY) -public class CategoryController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.Business.MANAGER_CATEGORY) +public class CategoryController { - @Autowired + @Resource private CategoryService categoryService; - @ApiOperation("添加类目 @author 胡克") + @Operation(summary = "添加类目 @author 胡克") @PostMapping("/category/add") + @SaCheckPermission("category:add") public ResponseDTO add(@RequestBody @Valid CategoryAddForm addForm) { return categoryService.add(addForm); } - @ApiOperation("更新类目 @author 胡克") + @Operation(summary = "更新类目 @author 胡克") @PostMapping("/category/update") + @SaCheckPermission("category:update") public ResponseDTO update(@RequestBody @Valid CategoryUpdateForm updateForm) { return categoryService.update(updateForm); } - @ApiOperation("查询类目详情 @author 胡克") + @Operation(summary = "查询类目详情 @author 胡克") @GetMapping("/category/{categoryId}") public ResponseDTO queryDetail(@PathVariable Long categoryId) { return categoryService.queryDetail(categoryId); } - @ApiOperation("查询类目层级树 @author 胡克") + @Operation(summary = "查询类目层级树 @author 胡克") @PostMapping("/category/tree") + @SaCheckPermission("category:tree") public ResponseDTO> queryTree(@RequestBody @Valid CategoryTreeQueryForm queryForm) { return categoryService.queryTree(queryForm); } - @ApiOperation("删除类目 @author 胡克") + @Operation(summary = "删除类目 @author 胡克") @GetMapping("/category/delete/{categoryId}") + @SaCheckPermission("category:delete") public ResponseDTO delete(@PathVariable Long categoryId) { return categoryService.delete(categoryId); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java index c9ac00fd..fbed2e96 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java @@ -16,7 +16,7 @@ import java.util.List; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Component @Mapper @@ -25,9 +25,9 @@ public interface CategoryDao extends BaseMapper { /** * 根据父级id 类型 查询子类 * - * @param parentIdList - * @param deletedFlag - * @return + * @param parentIdList 父级id集合 + * @param deletedFlag 删除标识 + * @return 列表 */ List queryByParentId(@Param("parentIdList") List parentIdList, @Param("deletedFlag") Boolean deletedFlag); @@ -35,10 +35,10 @@ public interface CategoryDao extends BaseMapper { /** * 根据父级id 类型 查询子类 * - * @param parentIdList + * @param parentIdList 父级id集合 * @param categoryType {@link CategoryTypeEnum} - * @param deletedFlag - * @return + * @param deletedFlag 删除标识 + * @return 列表 */ List queryByParentIdAndType(@Param("parentIdList") List parentIdList, @Param("categoryType") Integer categoryType, @@ -46,26 +46,17 @@ public interface CategoryDao extends BaseMapper { /** * 某个类型的所有 - * @param categoryType - * @param deletedFlag - * @return */ List queryByType(@Param("categoryType") Integer categoryType, @Param("deletedFlag") Boolean deletedFlag); /** * 根据类型和id查询 - * @param categoryType - * @param categoryId - * @return */ CategoryEntity selectByTypeAndId(@Param("categoryType") Integer categoryType, @Param("categoryId") Long categoryId); /** * 查看类目 具体条件 看sql - * - * @param entity - * @return */ CategoryEntity selectOne(CategoryEntity entity); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/dto/CategoryBaseDTO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/dto/CategoryBaseDTO.java index 5381ab9c..f62dba24 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/dto/CategoryBaseDTO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/dto/CategoryBaseDTO.java @@ -1,10 +1,10 @@ package net.lab1024.sa.admin.module.business.category.domain.dto; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; @@ -19,26 +19,26 @@ import javax.validation.constraints.NotNull; @Data public class CategoryBaseDTO { - @ApiModelProperty(value = "类目名称", required = true) + @Schema(description = "类目名称", required = true) @NotBlank(message = "类目名称不能为空") @Length(max = 20, message = "类目名称最多20字符") private String categoryName; - @ApiModelPropertyEnum(desc = "分类类型", value = CategoryTypeEnum.class) + @SchemaEnum(desc = "分类类型", value = CategoryTypeEnum.class) @CheckEnum(value = CategoryTypeEnum.class, required = true, message = "分类错误") private Integer categoryType; - @ApiModelProperty("父级类目id|可选") + @Schema(description = "父级类目id|可选") private Long parentId; - @ApiModelProperty("排序|可选") + @Schema(description = "排序|可选") private Integer sort; - @ApiModelProperty("备注|可选") + @Schema(description = "备注|可选") @Length(max = 200, message = "备注最多200字符") private String remark; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") @NotNull(message = "禁用状态不能为空") private Boolean disabledFlag; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/dto/CategorySimpleDTO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/dto/CategorySimpleDTO.java index 7f25e7b2..97d03100 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/dto/CategorySimpleDTO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/dto/CategorySimpleDTO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.category.domain.dto; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -12,15 +12,15 @@ import lombok.Data; @Data public class CategorySimpleDTO { - @ApiModelProperty("类目id") + @Schema(description = "类目id") private Long categoryId; - @ApiModelProperty("类目名称") + @Schema(description = "类目名称") private String categoryName; - @ApiModelProperty("类目层级全称") + @Schema(description = "类目层级全称") private String categoryFullName; - @ApiModelProperty("父级id") + @Schema(description = "父级id") private Long parentId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java index f8ee74af..83933a1d 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_category") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryAddForm.java index 29a37810..4f8f2105 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryAddForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryAddForm.java @@ -1,11 +1,10 @@ package net.lab1024.sa.admin.module.business.category.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; -import net.lab1024.sa.admin.module.business.category.domain.dto.CategoryBaseDTO; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; @@ -18,31 +17,31 @@ import javax.validation.constraints.NotNull; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class CategoryAddForm { - @ApiModelProperty(value = "类目名称", required = true) + @Schema(description = "类目名称", required = true) @NotBlank(message = "类目名称不能为空") @Length(max = 20, message = "类目名称最多20字符") private String categoryName; - @ApiModelPropertyEnum(desc = "分类类型", value = CategoryTypeEnum.class) + @SchemaEnum(desc = "分类类型", value = CategoryTypeEnum.class) @CheckEnum(value = CategoryTypeEnum.class, required = true, message = "分类错误") private Integer categoryType; - @ApiModelProperty("父级类目id|可选") + @Schema(description = "父级类目id|可选") private Long parentId; - @ApiModelProperty("排序|可选") + @Schema(description = "排序|可选") private Integer sort; - @ApiModelProperty("备注|可选") + @Schema(description = "备注|可选") @Length(max = 200, message = "备注最多200字符") private String remark; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") @NotNull(message = "禁用状态不能为空") private Boolean disabledFlag; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryTreeQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryTreeQueryForm.java index 907bca77..87bf072f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryTreeQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryTreeQueryForm.java @@ -1,9 +1,9 @@ package net.lab1024.sa.admin.module.business.category.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; /** * 类目 层级树查询 @@ -12,14 +12,14 @@ import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class CategoryTreeQueryForm { - @ApiModelPropertyEnum(desc = "分类类型|可选", value = CategoryTypeEnum.class) + @SchemaEnum(desc = "分类类型|可选", value = CategoryTypeEnum.class) private Integer categoryType; - @ApiModelProperty("父级类目id|可选") + @Schema(description = "父级类目id|可选") private Long parentId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryUpdateForm.java index 959c7027..8f12dd2f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/form/CategoryUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.category.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.category.domain.dto.CategoryBaseDTO; @@ -13,12 +13,12 @@ import javax.validation.constraints.NotNull; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class CategoryUpdateForm extends CategoryAddForm { - @ApiModelProperty("类目id") + @Schema(description = "类目id") @NotNull(message = "类目id不能为空") private Long categoryId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java index db3ecda3..3c55b658 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.category.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -12,29 +12,29 @@ import java.util.List; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class CategoryTreeVO { - @ApiModelProperty("类目id") + @Schema(description = "类目id") private Long categoryId; - @ApiModelProperty("类目名称") + @Schema(description = "类目名称") private String categoryName; - @ApiModelProperty("类目层级全称") + @Schema(description = "类目层级全称") private String categoryFullName; - @ApiModelProperty("父级id") + @Schema(description = "父级id") private Long parentId; - @ApiModelProperty("类目id") + @Schema(description = "类目id") private Long value; - @ApiModelProperty("类目名称") + @Schema(description = "类目名称") private String label; - @ApiModelProperty("子类") + @Schema(description = "子类") private List children; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryVO.java index 23b71962..14369582 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryVO.java @@ -1,15 +1,10 @@ package net.lab1024.sa.admin.module.business.category.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; -import net.lab1024.sa.admin.module.business.category.domain.dto.CategoryBaseDTO; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import org.hibernate.validator.constraints.Length; +import net.lab1024.sa.base.common.swagger.SchemaEnum; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.time.LocalDateTime; /** @@ -19,30 +14,30 @@ import java.time.LocalDateTime; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class CategoryVO { - @ApiModelProperty(value = "类目名称", required = true) + @Schema(description = "类目名称", required = true) private String categoryName; - @ApiModelPropertyEnum(desc = "分类类型", value = CategoryTypeEnum.class) + @SchemaEnum(desc = "分类类型", value = CategoryTypeEnum.class) private Integer categoryType; - @ApiModelProperty("父级类目id|可选") + @Schema(description = "父级类目id|可选") private Long parentId; - @ApiModelProperty("排序|可选") + @Schema(description = "排序|可选") private Integer sort; - @ApiModelProperty("备注|可选") + @Schema(description = "备注|可选") private String remark; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") private Boolean disabledFlag; - @ApiModelProperty("类目id") + @Schema(description = "类目id") private Long categoryId; private LocalDateTime updateTime; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/manager/CategoryCacheManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/manager/CategoryCacheManager.java index 819d99dc..b320bad5 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/manager/CategoryCacheManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/manager/CategoryCacheManager.java @@ -6,14 +6,14 @@ import net.lab1024.sa.admin.constant.AdminCacheConst; import net.lab1024.sa.admin.module.business.category.dao.CategoryDao; import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity; import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO; -import net.lab1024.sa.common.common.constant.StringConst; -import net.lab1024.sa.common.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -25,21 +25,21 @@ import java.util.stream.Collectors; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service @Slf4j public class CategoryCacheManager { - @Autowired + @Resource private CategoryDao categoryDao; /** * 根据类目id 移除缓存 */ - @CacheEvict(value = {AdminCacheConst.CATEGORY.CATEGORY_ENTITY, AdminCacheConst.CATEGORY.CATEGORY_SUB, AdminCacheConst.CATEGORY.CATEGORY_TREE}, allEntries = true) + @CacheEvict(value = {AdminCacheConst.Category.CATEGORY_ENTITY, AdminCacheConst.Category.CATEGORY_SUB, AdminCacheConst.Category.CATEGORY_TREE}, allEntries = true) public void removeCache() { log.info("clear CATEGORY ,CATEGORY_SUB ,CATEGORY_TREE"); } @@ -47,10 +47,8 @@ public class CategoryCacheManager { /** * 查詢类目 * - * @param categoryId - * @return */ - @Cacheable(AdminCacheConst.CATEGORY.CATEGORY_ENTITY) + @Cacheable(AdminCacheConst.Category.CATEGORY_ENTITY) public CategoryEntity queryCategory(Long categoryId) { return categoryDao.selectById(categoryId); } @@ -58,10 +56,8 @@ public class CategoryCacheManager { /** * 查询类目 子级 * - * @param categoryId - * @return */ - @Cacheable(AdminCacheConst.CATEGORY.CATEGORY_SUB) + @Cacheable(AdminCacheConst.Category.CATEGORY_SUB) public List querySubCategory(Long categoryId) { return categoryDao.queryByParentId(Lists.newArrayList(categoryId), false); } @@ -70,10 +66,8 @@ public class CategoryCacheManager { /** * 查询类目 层级树 * 优先查询缓存 - * - * @return */ - @Cacheable(AdminCacheConst.CATEGORY.CATEGORY_TREE) + @Cacheable(AdminCacheConst.Category.CATEGORY_TREE) public List queryCategoryTree(Long parentId, Integer categoryType) { List allCategoryEntityList = categoryDao.queryByType(categoryType, false); @@ -93,7 +87,6 @@ public class CategoryCacheManager { * 递归查询设置类目子类 * 从缓存查询子类 * - * @param treeList */ private void queryAndSetSubCategory(List treeList, List allCategoryEntityList) { if (CollectionUtils.isEmpty(treeList)) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/service/CategoryQueryService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/service/CategoryQueryService.java index 4f643e66..a04c2ea8 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/service/CategoryQueryService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/service/CategoryQueryService.java @@ -4,15 +4,14 @@ import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.admin.module.business.category.dao.CategoryDao; -import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity; import net.lab1024.sa.admin.module.business.category.domain.dto.CategorySimpleDTO; +import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity; import net.lab1024.sa.admin.module.business.category.manager.CategoryCacheManager; -import net.lab1024.sa.common.common.constant.StringConst; +import net.lab1024.sa.base.common.constant.StringConst; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -24,7 +23,7 @@ import java.util.stream.Collectors; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service @Slf4j @@ -32,10 +31,7 @@ public class CategoryQueryService { private static final Long DEFAULT_CATEGORY_PARENT_ID = 0L; - @Autowired - private CategoryDao categoryDao; - - @Autowired + @Resource private CategoryCacheManager categoryCacheManager; /** @@ -58,9 +54,6 @@ public class CategoryQueryService { /** * 根据 类目id集合 查询未删除的类目集合 - * - * @param categoryIdList - * @return */ public Map queryCategoryList(List categoryIdList) { if (CollectionUtils.isEmpty(categoryIdList)) { @@ -70,7 +63,7 @@ public class CategoryQueryService { Map categoryEntityMap = Maps.newHashMap(); for (Long categoryId : categoryIdList) { CategoryEntity categoryEntity = categoryCacheManager.queryCategory(categoryId); - if(categoryEntity != null){ + if (categoryEntity != null) { categoryEntityMap.put(categoryId, categoryEntity); } } @@ -82,8 +75,6 @@ public class CategoryQueryService { * 根据类目id 递归查询该id的所有子类id 递归查询 * 同时存入缓存 * 注意:查询出来的集合 不包含传递的父类参数 - * - * @param categoryIdList */ public List queryCategorySubId(List categoryIdList) { if (CollectionUtils.isEmpty(categoryIdList)) { @@ -107,8 +98,6 @@ public class CategoryQueryService { /** * 处理类目名称 - * - * @param categoryIdList */ public List queryCategoryName(List categoryIdList) { if (CollectionUtils.isEmpty(categoryIdList)) { @@ -127,9 +116,6 @@ public class CategoryQueryService { /** * 根据类目id 查询类目名称 - * - * @param categoryId - * @return */ public String queryCategoryName(Long categoryId) { CategoryEntity categoryEntity = categoryCacheManager.queryCategory(categoryId); @@ -141,9 +127,6 @@ public class CategoryQueryService { /** * 根据类目id 查询类目详情 包含类目全称 如:医考/医师资格/临床执业 - * - * @param categoryId - * @return */ public CategorySimpleDTO queryCategoryInfo(Long categoryId) { CategoryEntity categoryEntity = categoryCacheManager.queryCategory(categoryId); @@ -163,9 +146,6 @@ public class CategoryQueryService { /** * 递归查询分类和所有父级类目 * ps:特别注意返回的集合中 包含自己 - * - * @param categoryId - * @return */ public List queryCategoryAndParent(Long categoryId) { List parentCategoryList = Lists.newArrayList(); @@ -186,9 +166,6 @@ public class CategoryQueryService { /** * 查询 分类全称 如:医考/医师资格/临床执业 - * - * @param categoryId - * @return */ public String queryFullName(Long categoryId) { List parentCategoryList = this.queryCategoryAndParent(categoryId); @@ -199,13 +176,10 @@ public class CategoryQueryService { /** * 查询 分类全称 如:医考/医师资格/临床执业 - * - * @param categoryIdList - * @return */ public Map queryFullName(List categoryIdList) { if (CollectionUtils.isEmpty(categoryIdList)) { - return Collections.EMPTY_MAP; + return Maps.newHashMap(); } // 循环内查询的缓存 还ok return categoryIdList.stream().collect(Collectors.toMap(Function.identity(), this::queryFullName)); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/service/CategoryService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/service/CategoryService.java index 2dd1ae44..0ee628f0 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/service/CategoryService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/service/CategoryService.java @@ -9,14 +9,14 @@ import net.lab1024.sa.admin.module.business.category.domain.form.CategoryUpdateF import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryTreeVO; import net.lab1024.sa.admin.module.business.category.domain.vo.CategoryVO; import net.lab1024.sa.admin.module.business.category.manager.CategoryCacheManager; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.math.NumberUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -28,25 +28,22 @@ import java.util.Optional; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service public class CategoryService { - @Autowired + @Resource private CategoryDao categoryDao; - @Autowired + @Resource private CategoryQueryService categoryQueryService; - @Autowired + @Resource private CategoryCacheManager categoryCacheManager; /** * 添加类目 - * - * @author 胡克 - * @date 2021/1/20 17:17 */ public ResponseDTO add(CategoryAddForm addForm) { // 校验类目 @@ -73,8 +70,6 @@ public class CategoryService { * 更新类目 * 不能更新父级类目 * - * @author 胡克 - * @date 2021/1/20 17:17 */ public ResponseDTO update(CategoryUpdateForm updateForm) { // 校验类目 @@ -85,9 +80,9 @@ public class CategoryService { } CategoryEntity categoryEntity = SmartBeanUtil.copy(updateForm, CategoryEntity.class); - /** - * 不更新类目类型 - * 不更新父类id + /* + 不更新类目类型 + 不更新父类id */ Integer categoryType = optional.get().getCategoryType(); categoryEntity.setCategoryType(categoryType); @@ -107,9 +102,6 @@ public class CategoryService { /** * 新增/更新 类目时的 校验 * - * @param categoryEntity - * @param isUpdate - * @return */ private ResponseDTO checkCategory(CategoryEntity categoryEntity, boolean isUpdate) { // 校验父级是否存在 @@ -158,8 +150,6 @@ public class CategoryService { /** * 查询 类目详情 * - * @param categoryId - * @return */ public ResponseDTO queryDetail(Long categoryId) { Optional optional = categoryQueryService.queryCategory(categoryId); @@ -174,8 +164,6 @@ public class CategoryService { * 根据父级id 查询所有子类 返回层级树 * 如果父类id 为空 返回所有类目层级 * - * @param queryForm - * @return */ public ResponseDTO> queryTree(CategoryTreeQueryForm queryForm) { if (null == queryForm.getParentId()) { @@ -192,8 +180,6 @@ public class CategoryService { * 删除类目 * 如果有未删除的子类 则无法删除 * - * @param categoryId - * @return */ public ResponseDTO delete(Long categoryId) { Optional optional = categoryQueryService.queryCategory(categoryId); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/constant/GoodsStatusEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/constant/GoodsStatusEnum.java index 8638da70..95d37d55 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/constant/GoodsStatusEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/constant/GoodsStatusEnum.java @@ -3,7 +3,7 @@ package net.lab1024.sa.admin.module.business.goods.constant; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 商品状态 @@ -12,7 +12,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java index 7fa863c2..e9b938a4 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/controller/GoodsController.java @@ -1,23 +1,28 @@ package net.lab1024.sa.admin.module.business.goods.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.alibaba.excel.EasyExcel; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsAddForm; import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsQueryForm; import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsUpdateForm; +import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsExcelVO; import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsVO; import net.lab1024.sa.admin.module.business.goods.service.GoodsService; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.domain.ValidateList; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.ValidateList; +import net.lab1024.sa.base.common.util.SmartResponseUtil; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; +import java.util.List; /** * 商品业务 @@ -26,50 +31,74 @@ import javax.validation.Valid; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = AdminSwaggerTagConst.Business.MANAGER_GOODS) -public class GoodsController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.Business.MANAGER_GOODS) +public class GoodsController { - @Autowired + @Resource private GoodsService goodsService; - @ApiOperation("分页查询 @author 胡克") + @Operation(summary = "分页查询 @author 胡克") @PostMapping("/goods/query") - @PreAuthorize("@saAuth.checkPermission('goods:query')") + @SaCheckPermission("goods:query") public ResponseDTO> query(@RequestBody @Valid GoodsQueryForm queryForm) { return goodsService.query(queryForm); } - @ApiOperation("添加商品 @author 胡克") + @Operation(summary = "添加商品 @author 胡克") @PostMapping("/goods/add") - @PreAuthorize("@saAuth.checkPermission('goods:add')") + @SaCheckPermission("goods:add") public ResponseDTO add(@RequestBody @Valid GoodsAddForm addForm) { return goodsService.add(addForm); } - @ApiOperation("更新商品 @author 胡克") + @Operation(summary = "更新商品 @author 胡克") @PostMapping("/goods/update") - @PreAuthorize("@saAuth.checkPermission('goods:update')") + @SaCheckPermission("goods:update") public ResponseDTO update(@RequestBody @Valid GoodsUpdateForm updateForm) { return goodsService.update(updateForm); } - @ApiOperation("删除 @author 卓大") + @Operation(summary = "删除 @author 卓大") @GetMapping("/goods/delete/{goodsId}") - @PreAuthorize("@saAuth.checkPermission('goods:delete')") + @SaCheckPermission("goods:delete") public ResponseDTO delete(@PathVariable Long goodsId) { return goodsService.delete(goodsId); } - @ApiOperation("批量 @author 卓大") + @Operation(summary = "批量 @author 卓大") @PostMapping("/goods/batchDelete") - @PreAuthorize("@saAuth.checkPermission('goods:batchDelete')") + @SaCheckPermission("goods:batchDelete") public ResponseDTO batchDelete(@RequestBody @Valid ValidateList idList) { return goodsService.batchDelete(idList); } + // --------------- 导出和导入 ------------------- + + @Operation(summary = "导入 @author 卓大") + @PostMapping("/goods/importGoods") + @SaCheckPermission("goods:importGoods") + public ResponseDTO importGoods(@RequestParam MultipartFile file) { + return goodsService.importGoods(file); + } + + @Operation(summary = "导出 @author 卓大") + @GetMapping("/goods/exportGoods") + @SaCheckPermission("goods:exportGoods") + public void exportGoods(HttpServletResponse response) throws IOException { + + List goodsList = goodsService.getAllGoods(); + + // 设置下载消息头 + SmartResponseUtil.setDownloadFileHeader(response, "商品列表.xls", null); + + // 下载 + EasyExcel.write(response.getOutputStream(), GoodsExcelVO.class) + .autoCloseStream(Boolean.FALSE) + .sheet("商品") + .doWrite(goodsList); + } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java index 0493f2e3..148a685d 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java @@ -18,7 +18,7 @@ import java.util.List; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -27,9 +27,6 @@ public interface GoodsDao extends BaseMapper { /** * 分页 查询商品 * - * @param page - * @param query - * @return */ List query(Page page, @Param("query") GoodsQueryForm query); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/entity/GoodsEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/entity/GoodsEntity.java index a2878a66..775074f2 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/entity/GoodsEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/entity/GoodsEntity.java @@ -4,10 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; -import net.lab1024.sa.admin.module.business.category.dao.CategoryDao; -import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldBigDecimal; -import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldLabel; -import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldSql; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -19,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_goods") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java index 27474272..cea581f1 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java @@ -1,13 +1,12 @@ package net.lab1024.sa.admin.module.business.goods.domain.form; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; -import net.lab1024.sa.common.common.json.deserializer.DictValueVoDeserializer; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import org.hibernate.validator.constraints.Length; +import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import javax.validation.constraints.DecimalMin; import javax.validation.constraints.NotBlank; @@ -21,37 +20,37 @@ import java.math.BigDecimal; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class GoodsAddForm { - @ApiModelProperty("商品分类") + @Schema(description = "商品分类") @NotNull(message = "商品分类不能为空") private Long categoryId; - @ApiModelProperty("商品名称") + @Schema(description = "商品名称") @NotBlank(message = "商品名称不能为空") private String goodsName; - @ApiModelPropertyEnum(GoodsStatusEnum.class) + @SchemaEnum(GoodsStatusEnum.class) @CheckEnum(message = "商品状态错误", value = GoodsStatusEnum.class, required = true) private Integer goodsStatus; - @ApiModelProperty("产地") + @Schema(description = "产地") @NotBlank(message = "产地 不能为空 ") @JsonDeserialize(using = DictValueVoDeserializer.class) private String place; - @ApiModelProperty("商品价格") + @Schema(description = "商品价格") @NotNull(message = "商品价格不能为空") @DecimalMin(value = "0", message = "商品价格最低0") private BigDecimal price; - @ApiModelProperty("上架状态") + @Schema(description = "上架状态") @NotNull(message = "上架状态不能为空") private Boolean shelvesFlag; - @ApiModelProperty("备注|可选") + @Schema(description = "备注|可选") private String remark; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java new file mode 100644 index 00000000..4b832166 --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsImportForm.java @@ -0,0 +1,37 @@ +package net.lab1024.sa.admin.module.business.goods.domain.form; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 商品 导入表单 + * + * @Author 1024创新实验室: 胡克 + * @Date 2021-10-25 20:26:54 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class GoodsImportForm { + + @ExcelProperty("商品分类") + private String categoryName; + + @ExcelProperty("商品名称") + private String goodsName; + + @ExcelProperty("商品状态错误") + private String goodsStatus; + + @ExcelProperty("产地") + private String place; + + @ExcelProperty("商品价格") + private BigDecimal price; + + @ExcelProperty("备注") + private String remark; +} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java index e25e3520..128939f8 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java @@ -1,17 +1,13 @@ package net.lab1024.sa.admin.module.business.goods.domain.form; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; -import net.lab1024.sa.common.common.domain.PageParam; -import net.lab1024.sa.common.common.json.deserializer.DictValueVoDeserializer; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.common.domain.PageParam; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; -import javax.validation.constraints.NotBlank; - /** * 商品 分页查询 * @@ -19,28 +15,28 @@ import javax.validation.constraints.NotBlank; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class GoodsQueryForm extends PageParam { - @ApiModelProperty("商品分类") + @Schema(description = "商品分类") private Integer categoryId; - @ApiModelProperty("搜索词") + @Schema(description = "搜索词") @Length(max = 30, message = "搜索词最多30字符") private String searchWord; - @ApiModelPropertyEnum(GoodsStatusEnum.class) + @SchemaEnum(GoodsStatusEnum.class) @CheckEnum(message = "商品状态错误", value = GoodsStatusEnum.class, required = false) private Integer goodsStatus; - @ApiModelProperty("产地") + @Schema(description = "产地") private String place; - @ApiModelProperty("上架状态") + @Schema(description = "上架状态") private Boolean shelvesFlag; - @ApiModelProperty(hidden = true) + @Schema(hidden = true) private Boolean deletedFlag; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsUpdateForm.java index f72656ec..600a22ae 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.goods.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class GoodsUpdateForm extends GoodsAddForm { - @ApiModelProperty("商品id") + @Schema(description = "商品id") @NotNull(message = "商品id不能为空") private Long goodsId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java new file mode 100644 index 00000000..fc7c8d8a --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsExcelVO.java @@ -0,0 +1,43 @@ +package net.lab1024.sa.admin.module.business.goods.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * excel商品 + * + * @Author 1024创新实验室: 胡克 + * @Date 2021-10-25 20:26:54 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GoodsExcelVO { + + @ExcelProperty("商品分类") + private String categoryName; + + @ExcelProperty("商品名称") + private String goodsName; + + @ExcelProperty("商品状态错误") + private String goodsStatus; + + @ExcelProperty("产地") + private String place; + + @ExcelProperty("商品价格") + private BigDecimal price; + + @ExcelProperty("备注") + private String remark; +} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java index fe7eaaf6..686b8e55 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java @@ -1,11 +1,11 @@ package net.lab1024.sa.admin.module.business.goods.domain.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; -import net.lab1024.sa.common.common.json.serializer.DictValueVoSerializer; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; +import net.lab1024.sa.base.common.json.serializer.DictValueVoSerializer; +import net.lab1024.sa.base.common.swagger.SchemaEnum; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -17,37 +17,37 @@ import java.time.LocalDateTime; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class GoodsVO { - @ApiModelProperty("商品分类") + @Schema(description = "商品分类") private Long categoryId; - @ApiModelProperty("商品名称") + @Schema(description = "商品名称") private String goodsName; - @ApiModelPropertyEnum(GoodsStatusEnum.class) + @SchemaEnum(GoodsStatusEnum.class) private Integer goodsStatus; - @ApiModelProperty("产地") + @Schema(description = "产地") @JsonSerialize(using = DictValueVoSerializer.class) private String place; - @ApiModelProperty("商品价格") + @Schema(description = "商品价格") private BigDecimal price; - @ApiModelProperty("上架状态") + @Schema(description = "上架状态") private Boolean shelvesFlag; - @ApiModelProperty("备注|可选") + @Schema(description = "备注|可选") private String remark; - @ApiModelProperty("商品id") + @Schema(description = "商品id") private Long goodsId; - @ApiModelProperty("商品分类") + @Schema(description = "商品分类") private String categoryName; private LocalDateTime updateTime; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/manager/GoodsManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/manager/GoodsManager.java deleted file mode 100644 index 898b6aab..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/manager/GoodsManager.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.lab1024.sa.admin.module.business.goods.manager; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import net.lab1024.sa.admin.module.business.goods.dao.GoodsDao; -import net.lab1024.sa.admin.module.business.goods.domain.entity.GoodsEntity; -import org.springframework.stereotype.Service; - -/** - * 商品 manager - * - * @Author 1024创新实验室: 胡克 - * @Date 2021-10-25 20:26:54 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 - */ -@Service -public class GoodsManager extends ServiceImpl { - -} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java index dfbdd03b..8b7b2d34 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java @@ -1,6 +1,9 @@ package net.lab1024.sa.admin.module.business.goods.service; +import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; import net.lab1024.sa.admin.module.business.category.domain.entity.CategoryEntity; import net.lab1024.sa.admin.module.business.category.service.CategoryQueryService; @@ -8,26 +11,30 @@ import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; import net.lab1024.sa.admin.module.business.goods.dao.GoodsDao; import net.lab1024.sa.admin.module.business.goods.domain.entity.GoodsEntity; import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsAddForm; +import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsImportForm; import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsQueryForm; import net.lab1024.sa.admin.module.business.goods.domain.form.GoodsUpdateForm; +import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsExcelVO; import net.lab1024.sa.admin.module.business.goods.domain.vo.GoodsVO; -import net.lab1024.sa.admin.module.business.goods.manager.GoodsManager; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; -import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.exception.BusinessException; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; +import net.lab1024.sa.base.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.module.support.dict.service.DictService; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import javax.annotation.Resource; +import java.io.IOException; +import java.util.*; import java.util.stream.Collectors; /** @@ -37,29 +44,31 @@ import java.util.stream.Collectors; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service +@Slf4j public class GoodsService { - @Autowired + + @Resource private GoodsDao goodsDao; - @Autowired + @Resource private CategoryQueryService categoryQueryService; - @Autowired + @Resource private DataTracerService dataTracerService; + @Resource + private DictCacheService dictCacheService; + /** * 添加商品 - * - * @param addForm - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO add(GoodsAddForm addForm) { // 商品校验 - ResponseDTO res = this.checkGoods(addForm, null); + ResponseDTO res = this.checkGoods(addForm); if (!res.getOk()) { return res; } @@ -72,14 +81,11 @@ public class GoodsService { /** * 更新商品 - * - * @param updateForm - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO update(GoodsUpdateForm updateForm) { // 商品校验 - ResponseDTO res = this.checkGoods(updateForm, updateForm.getGoodsId()); + ResponseDTO res = this.checkGoods(updateForm); if (!res.getOk()) { return res; } @@ -92,12 +98,8 @@ public class GoodsService { /** * 添加/更新 商品校验 - * - * @param addForm - * @param goodsId 不为空 代表更新商品 - * @return */ - private ResponseDTO checkGoods(GoodsAddForm addForm, Long goodsId) { + private ResponseDTO checkGoods(GoodsAddForm addForm) { // 校验类目id Long categoryId = addForm.getCategoryId(); Optional optional = categoryQueryService.queryCategory(categoryId); @@ -122,8 +124,8 @@ public class GoodsService { return ResponseDTO.userErrorParam("只有售罄的商品才可以删除"); } - batchDelete(Arrays.asList(goodsId)); - dataTracerService.batchDelete(Arrays.asList(goodsId), DataTracerTypeEnum.GOODS); + batchDelete(Collections.singletonList(goodsId)); + dataTracerService.batchDelete(Collections.singletonList(goodsId), DataTracerTypeEnum.GOODS); return ResponseDTO.ok(); } @@ -142,9 +144,6 @@ public class GoodsService { /** * 分页查询 - * - * @param queryForm - * @return */ public ResponseDTO> query(GoodsQueryForm queryForm) { queryForm.setDeletedFlag(false); @@ -165,4 +164,48 @@ public class GoodsService { }); return ResponseDTO.ok(pageResult); } + + /** + * 商品导入 + * + * @param file 上传文件 + * @return 结果 + */ + public ResponseDTO importGoods(MultipartFile file) { + List dataList; + try { + dataList = EasyExcel.read(file.getInputStream()).head(GoodsImportForm.class) + .sheet() + .doReadSync(); + } catch (IOException e) { + log.error(e.getMessage(), e); + throw new BusinessException("数据格式存在问题,无法读取"); + } + + if (CollectionUtils.isEmpty(dataList)) { + return ResponseDTO.userErrorParam("数据为空"); + } + + return ResponseDTO.okMsg("成功导入" + dataList.size() + "条,具体数据为:" + JSON.toJSONString(dataList)); + } + + /** + * 商品导出 + */ + public List getAllGoods() { + List goodsEntityList = goodsDao.selectList(null); + return goodsEntityList.stream() + .map(e -> + GoodsExcelVO.builder() + .goodsStatus(SmartEnumUtil.getEnumDescByValue(e.getGoodsStatus(), GoodsStatusEnum.class)) + .categoryName(categoryQueryService.queryCategoryName(e.getCategoryId())) + .place(dictCacheService.selectValueNameByValueCode(e.getPlace())) + .price(e.getPrice()) + .goodsName(e.getGoodsName()) + .remark(e.getRemark()) + .build() + ) + .collect(Collectors.toList()); + + } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java index 96fbea31..6e1f8ed7 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java @@ -1,19 +1,19 @@ package net.lab1024.sa.admin.module.business.oa.bank; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.business.oa.bank.domain.BankCreateForm; import net.lab1024.sa.admin.module.business.oa.bank.domain.BankQueryForm; import net.lab1024.sa.admin.module.business.oa.bank.domain.BankUpdateForm; import net.lab1024.sa.admin.module.business.oa.bank.domain.BankVO; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -24,34 +24,34 @@ import java.util.List; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @RestController -@Api(tags = {AdminSwaggerTagConst.Business.OA_BANK}) +@Tag(name = AdminSwaggerTagConst.Business.OA_BANK) public class BankController { - @Autowired + @Resource private BankService bankService; - @ApiOperation(value = "分页查询银行信息 @author 善逸") + @Operation(summary = "分页查询银行信息 @author 善逸") @PostMapping("/oa/bank/page/query") - public ResponseDTO> queryByPage(@RequestBody @Valid BankQueryForm queryDTO) { - return bankService.queryByPage(queryDTO); + public ResponseDTO> queryByPage(@RequestBody @Valid BankQueryForm queryForm) { + return bankService.queryByPage(queryForm); } - @ApiOperation(value = "根据企业ID查询银行信息列表 @author 善逸") + @Operation(summary = "根据企业ID查询银行信息列表 @author 善逸") @GetMapping("/oa/bank/query/list/{enterpriseId}") public ResponseDTO> queryList(@PathVariable Long enterpriseId) { return bankService.queryList(enterpriseId); } - @ApiOperation(value = "查询银行信息详情 @author 善逸") + @Operation(summary = "查询银行信息详情 @author 善逸") @GetMapping("/oa/bank/get/{bankId}") public ResponseDTO getDetail(@PathVariable Long bankId) { return bankService.getDetail(bankId); } - @ApiOperation(value = "新建银行信息 @author 善逸") + @Operation(summary = "新建银行信息 @author 善逸") @PostMapping("/oa/bank/create") public ResponseDTO createBank(@RequestBody @Valid BankCreateForm createVO) { RequestUser requestUser = SmartRequestUtil.getRequestUser(); @@ -60,13 +60,13 @@ public class BankController { return bankService.createBank(createVO); } - @ApiOperation(value = "编辑银行信息 @author 善逸") + @Operation(summary = "编辑银行信息 @author 善逸") @PostMapping("/oa/bank/update") public ResponseDTO updateBank(@RequestBody @Valid BankUpdateForm updateVO) { return bankService.updateBank(updateVO); } - @ApiOperation(value = "删除银行信息 @author 善逸") + @Operation(summary = "删除银行信息 @author 善逸") @GetMapping("/oa/bank/delete/{bankId}") public ResponseDTO deleteBank(@PathVariable Long bankId) { return bankService.deleteBank(bankId); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java index a45d406a..bc508070 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -26,36 +26,23 @@ public interface BankDao extends BaseMapper { /** * 根据账号查询 - * @param enterpriseId - * @param accountNumber - * @param excludeBankId - * @param deletedFlag - * @return */ BankEntity queryByAccountNumber(@Param("enterpriseId") Long enterpriseId, @Param("accountNumber") String accountNumber, @Param("excludeBankId") Long excludeBankId, @Param("deletedFlag") Boolean deletedFlag); /** * 删除银行信息 * - * @param bankId - * @param deletedFlag */ void deleteBank(@Param("bankId") Long bankId, @Param("deletedFlag") Boolean deletedFlag); /** * 银行信息分页查询 * - * @param page - * @param queryForm - * @return */ List queryPage(Page page, @Param("queryForm") BankQueryForm queryForm); /** * 查询银行信息详情 - * @param bankId - * @param deletedFlag - * @return */ BankVO getDetail(@Param("bankId") Long bankId, @Param("deletedFlag") Boolean deletedFlag); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankService.java index 48c120bc..72d51457 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankService.java @@ -5,17 +5,17 @@ import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.business.oa.bank.domain.*; import net.lab1024.sa.admin.module.business.oa.enterprise.dao.EnterpriseDao; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerConst; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; -import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerConst; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; import java.util.Objects; @@ -26,53 +26,45 @@ import java.util.Objects; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service @Slf4j public class BankService { - @Autowired + @Resource private BankDao bankDao; - @Autowired + + @Resource private EnterpriseDao enterpriseDao; - @Autowired + @Resource private DataTracerService dataTracerService; /** * 分页查询银行信息 - * - * @param queryDTO - * @return */ - public ResponseDTO> queryByPage(BankQueryForm queryDTO) { - queryDTO.setDeletedFlag(Boolean.FALSE); - Page page = SmartPageUtil.convert2PageQuery(queryDTO); - List bankVOS = bankDao.queryPage(page, queryDTO); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, bankVOS); + public ResponseDTO> queryByPage(BankQueryForm queryForm) { + queryForm.setDeletedFlag(Boolean.FALSE); + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List bankList = bankDao.queryPage(page, queryForm); + PageResult pageResult = SmartPageUtil.convert2PageResult(page, bankList); return ResponseDTO.ok(pageResult); } /** * 根据企业ID查询不分页的银行列表 - * - * @param enterpriseId - * @return */ public ResponseDTO> queryList(Long enterpriseId) { - BankQueryForm queryDTO = new BankQueryForm(); - queryDTO.setEnterpriseId(enterpriseId); - queryDTO.setDeletedFlag(Boolean.FALSE); - List bankVOS = bankDao.queryPage(null, queryDTO); - return ResponseDTO.ok(bankVOS); + BankQueryForm queryForm = new BankQueryForm(); + queryForm.setEnterpriseId(enterpriseId); + queryForm.setDeletedFlag(Boolean.FALSE); + List bankList = bankDao.queryPage(null, queryForm); + return ResponseDTO.ok(bankList); } /** * 查询银行信息详情 - * - * @param bankId - * @return */ public ResponseDTO getDetail(Long bankId) { // 校验银行信息是否存在 @@ -85,9 +77,6 @@ public class BankService { /** * 新建银行信息 - * - * @param createVO - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO createBank(BankCreateForm createVO) { @@ -111,9 +100,6 @@ public class BankService { /** * 编辑银行信息 - * - * @param updateVO - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO updateBank(BankUpdateForm updateVO) { @@ -144,9 +130,6 @@ public class BankService { /** * 删除银行信息 - * - * @param bankId - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO deleteBank(Long bankId) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankCreateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankCreateForm.java index 031ceb75..eaa7b987 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankCreateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankCreateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.bank.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -14,45 +14,45 @@ import javax.validation.constraints.NotNull; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class BankCreateForm { - @ApiModelProperty("开户银行") + @Schema(description = "开户银行") @NotBlank(message = "开户银行不能为空") @Length(max = 200, message = "开户银行最多200字符") private String bankName; - @ApiModelProperty("账户名称") + @Schema(description = "账户名称") @NotBlank(message = "账户名称不能为空") @Length(max = 200, message = "账户名称最多200字符") private String accountName; - @ApiModelProperty("账号") + @Schema(description = "账号") @NotBlank(message = "账号不能为空") @Length(max = 200, message = "账号最多200字符") private String accountNumber; - @ApiModelProperty("备注") + @Schema(description = "备注") @Length(max = 500, message = "备注最多500字符") private String remark; - @ApiModelProperty("是否对公") + @Schema(description = "是否对公") @NotNull(message = "是否对公不能为空") private Boolean businessFlag; - @ApiModelProperty("企业") + @Schema(description = "企业") @NotNull(message = "企业不能为空") private Long enterpriseId; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") @NotNull(message = "禁用状态不能为空") private Boolean disabledFlag; - @ApiModelProperty(value = "创建人", hidden = true) + @Schema(hidden = true) private Long createUserId; - @ApiModelProperty(value = "创建人", hidden = true) + @Schema(hidden = true) private String createUserName; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankEntity.java index 0b3ec08d..a9f0a060 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankEntity.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; -import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldLabel; +import net.lab1024.sa.base.module.support.datatracer.annoation.DataTracerFieldLabel; import java.time.LocalDateTime; @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_oa_bank") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankQueryForm.java index 839b02f6..53a405c0 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.business.oa.bank.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import org.hibernate.validator.constraints.Length; import java.time.LocalDate; @@ -14,27 +14,27 @@ import java.time.LocalDate; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class BankQueryForm extends PageParam { - @ApiModelProperty("企业ID") + @Schema(description = "企业ID") private Long enterpriseId; - @ApiModelProperty("关键字") + @Schema(description = "关键字") @Length(max = 200, message = "关键字最多200字符") private String keywords; - @ApiModelProperty("开始时间") + @Schema(description = "开始时间") private LocalDate startTime; - @ApiModelProperty("结束时间") + @Schema(description = "结束时间") private LocalDate endTime; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") private Boolean disabledFlag; - @ApiModelProperty(value = "删除状态", hidden = true) + @Schema(description = "删除状态", hidden = true) private Boolean deletedFlag; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankUpdateForm.java index db8a2c71..74dca2a7 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.bank.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class BankUpdateForm extends BankCreateForm { - @ApiModelProperty("银行信息ID") + @Schema(description = "银行信息ID") @NotNull(message = "银行信息ID不能为空") private Long bankId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankVO.java index 5cfcb5b6..d263f38c 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/domain/BankVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.bank.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -12,47 +12,47 @@ import java.time.LocalDateTime; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class BankVO { - @ApiModelProperty("银行信息ID") + @Schema(description = "银行信息ID") private Long bankId; - @ApiModelProperty("开户银行") + @Schema(description = "开户银行") private String bankName; - @ApiModelProperty("账户名称") + @Schema(description = "账户名称") private String accountName; - @ApiModelProperty("账号") + @Schema(description = "账号") private String accountNumber; - @ApiModelProperty("备注") + @Schema(description = "备注") private String remark; - @ApiModelProperty("是否对公") + @Schema(description = "是否对公") private Boolean businessFlag; - @ApiModelProperty("企业ID") + @Schema(description = "企业ID") private Long enterpriseId; - @ApiModelProperty("企业名称") + @Schema(description = "企业名称") private String enterpriseName; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") private Boolean disabledFlag; - @ApiModelProperty("创建人ID") + @Schema(description = "创建人ID") private Long createUserId; - @ApiModelProperty("创建人名称") + @Schema(description = "创建人名称") private String createUserName; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseController.java index efc0143b..7b3d3f4a 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseController.java @@ -1,23 +1,29 @@ package net.lab1024.sa.admin.module.business.oa.enterprise; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.alibaba.excel.EasyExcel; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.*; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseEmployeeVO; +import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseExcelVO; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO; -import net.lab1024.sa.common.common.annoation.SaAuth; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.common.util.SmartResponseUtil; +import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog; +import org.apache.commons.collections.CollectionUtils; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; import java.util.List; /** @@ -27,34 +33,53 @@ import java.util.List; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Slf4j @RestController +@Tag(name = AdminSwaggerTagConst.Business.OA_ENTERPRISE) @OperateLog -@Api(tags = {AdminSwaggerTagConst.Business.OA_ENTERPRISE}) public class EnterpriseController { - @Autowired + @Resource private EnterpriseService enterpriseService; - @ApiOperation(value = "分页查询企业模块 @author 开云") + @Operation(summary = "分页查询企业模块 @author 开云") @PostMapping("/oa/enterprise/page/query") - @SaAuth - public ResponseDTO> queryByPage(@RequestBody @Valid EnterpriseQueryForm queryDTO) { - return enterpriseService.queryByPage(queryDTO); + @SaCheckPermission("oa:enterprise:query") + public ResponseDTO> queryByPage(@RequestBody @Valid EnterpriseQueryForm queryForm) { + return enterpriseService.queryByPage(queryForm); } - @ApiOperation(value = "查询企业详情 @author 开云") + @Operation(summary = "导出企业信息 @author 卓大") + @PostMapping("/oa/enterprise/exportExcel") + public void exportExcel(@RequestBody @Valid EnterpriseQueryForm queryForm, HttpServletResponse response) throws IOException { + List data = enterpriseService.getExcelExportData(queryForm); + if (CollectionUtils.isEmpty(data)) { + SmartResponseUtil.write(response, ResponseDTO.userErrorParam("暂无数据")); + return; + } + + // 设置下载消息头 + SmartResponseUtil.setDownloadFileHeader(response, "企业基本信息.xls", null); + + // 下载 + EasyExcel.write(response.getOutputStream(), EnterpriseExcelVO.class) + .autoCloseStream(Boolean.FALSE) + .sheet("企业信息") + .doWrite(data); + } + + @Operation(summary = "查询企业详情 @author 开云") @GetMapping("/oa/enterprise/get/{enterpriseId}") - @SaAuth + @SaCheckPermission("oa:enterprise:detail") public ResponseDTO getDetail(@PathVariable Long enterpriseId) { return ResponseDTO.ok(enterpriseService.getDetail(enterpriseId)); } - @ApiOperation(value = "新建企业 @author 开云") + @Operation(summary = "新建企业 @author 开云") @PostMapping("/oa/enterprise/create") - @SaAuth + @SaCheckPermission("oa:enterprise:add") public ResponseDTO createEnterprise(@RequestBody @Valid EnterpriseCreateForm createVO) { RequestUser requestUser = SmartRequestUtil.getRequestUser(); createVO.setCreateUserId(requestUser.getUserId()); @@ -62,53 +87,50 @@ public class EnterpriseController { return enterpriseService.createEnterprise(createVO); } - @ApiOperation(value = "编辑企业 @author 开云") + @Operation(summary = "编辑企业 @author 开云") @PostMapping("/oa/enterprise/update") - @SaAuth + @SaCheckPermission("oa:enterprise:update") public ResponseDTO updateEnterprise(@RequestBody @Valid EnterpriseUpdateForm updateVO) { return enterpriseService.updateEnterprise(updateVO); } - @ApiOperation(value = "删除企业 @author 开云") + @Operation(summary = "删除企业 @author 开云") @GetMapping("/oa/enterprise/delete/{enterpriseId}") - @SaAuth + @SaCheckPermission("oa:enterprise:delete") public ResponseDTO deleteEnterprise(@PathVariable Long enterpriseId) { return enterpriseService.deleteEnterprise(enterpriseId); } - @ApiOperation(value = "企业列表查询 @author 开云") + @Operation(summary = "按照类型查询企业 @author 开云") @GetMapping("/oa/enterprise/query/list") - @SaAuth public ResponseDTO> queryList(@RequestParam(value = "type", required = false) Integer type) { return enterpriseService.queryList(type); } - @ApiOperation(value = "企业添加员工 @author 罗伊") + @Operation(summary = "企业添加员工 @author 罗伊") @PostMapping("/oa/enterprise/employee/add") - @SaAuth + @SaCheckPermission("oa:enterprise:addEmployee") public ResponseDTO addEmployee(@RequestBody @Valid EnterpriseEmployeeForm enterpriseEmployeeForm) { return enterpriseService.addEmployee(enterpriseEmployeeForm); } - @ApiOperation(value = "查询企业全部员工 @author 罗伊") + @Operation(summary = "查询企业全部员工 @author 罗伊") @PostMapping("/oa/enterprise/employee/list") - @SaAuth public ResponseDTO> employeeList(@RequestBody @Valid List enterpriseIdList) { return ResponseDTO.ok(enterpriseService.employeeList(enterpriseIdList)); } - @ApiOperation(value = "分页查询企业员工 @author 卓大") + @Operation(summary = "分页查询企业员工 @author 卓大") @PostMapping("/oa/enterprise/employee/queryPage") - @SaAuth public ResponseDTO> queryPageEmployeeList(@RequestBody @Valid EnterpriseEmployeeQueryForm queryForm) { return ResponseDTO.ok(enterpriseService.queryPageEmployeeList(queryForm)); } - @ApiOperation(value = "企业删除员工 @author 罗伊") + @Operation(summary = "企业删除员工 @author 罗伊") @PostMapping("/oa/enterprise/employee/delete") - @SaAuth + @SaCheckPermission("oa:enterprise:deleteEmployee") public ResponseDTO deleteEmployee(@RequestBody @Valid EnterpriseEmployeeForm enterpriseEmployeeForm) { return enterpriseService.deleteEmployee(enterpriseEmployeeForm); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseEmployeeManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseEmployeeManager.java index 1ac3fd5e..f90b21ac 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseEmployeeManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseEmployeeManager.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Service; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service public class EnterpriseEmployeeManager extends ServiceImpl { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseService.java index b065d3b8..04954b07 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/EnterpriseService.java @@ -1,6 +1,5 @@ package net.lab1024.sa.admin.module.business.oa.enterprise; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; @@ -10,22 +9,23 @@ import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.Enterpri import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.*; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseEmployeeVO; +import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseExcelVO; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO; import net.lab1024.sa.admin.module.system.department.service.DepartmentService; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; -import net.lab1024.sa.common.module.support.datatracer.domain.form.DataTracerForm; -import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.domain.form.DataTracerForm; +import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -37,57 +37,58 @@ import java.util.stream.Collectors; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service @Slf4j public class EnterpriseService { - @Autowired + @Resource private EnterpriseDao enterpriseDao; - @Autowired + @Resource private EnterpriseEmployeeDao enterpriseEmployeeDao; - @Autowired + @Resource private EnterpriseEmployeeManager enterpriseEmployeeManager; - @Autowired + @Resource private DataTracerService dataTracerService; - @Autowired + @Resource private DepartmentService departmentService; /** * 分页查询企业模块 * - * @param queryDTO - * @return */ - public ResponseDTO> queryByPage(EnterpriseQueryForm queryDTO) { - queryDTO.setDeletedFlag(Boolean.FALSE); - Page page = SmartPageUtil.convert2PageQuery(queryDTO); - List enterpriseVOS = enterpriseDao.queryPage(page, queryDTO); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, enterpriseVOS); + public ResponseDTO> queryByPage(EnterpriseQueryForm queryForm) { + queryForm.setDeletedFlag(Boolean.FALSE); + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List enterpriseList = enterpriseDao.queryPage(page, queryForm); + PageResult pageResult = SmartPageUtil.convert2PageResult(page, enterpriseList); return ResponseDTO.ok(pageResult); } + /** + * 获取导出数据 + */ + public List getExcelExportData(EnterpriseQueryForm queryForm) { + queryForm.setDeletedFlag(false); + return enterpriseDao.selectExcelExportData(queryForm); + } + /** * 查询企业详情 * - * @param enterpriseId - * @return */ public EnterpriseVO getDetail(Long enterpriseId) { - EnterpriseVO enterpriseDetail = enterpriseDao.getDetail(enterpriseId, Boolean.FALSE); - return enterpriseDetail; + return enterpriseDao.getDetail(enterpriseId, Boolean.FALSE); } /** * 新建企业 * - * @param createVO - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO createEnterprise(EnterpriseCreateForm createVO) { @@ -106,8 +107,6 @@ public class EnterpriseService { /** * 编辑企业 * - * @param updateVO - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO updateEnterprise(EnterpriseUpdateForm updateVO) { @@ -144,8 +143,6 @@ public class EnterpriseService { /** * 删除企业 * - * @param enterpriseId - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO deleteEnterprise(Long enterpriseId) { @@ -161,12 +158,10 @@ public class EnterpriseService { /** * 企业列表查询 - * - * @return */ public ResponseDTO> queryList(Integer type) { - List enterpriseListVOS = enterpriseDao.queryList(type, Boolean.FALSE, Boolean.FALSE); - return ResponseDTO.ok(enterpriseListVOS); + List enterpriseList = enterpriseDao.queryList(type, Boolean.FALSE, Boolean.FALSE); + return ResponseDTO.ok(enterpriseList); } //----------------------------------------- 以下为员工相关-------------------------------------------- @@ -174,8 +169,6 @@ public class EnterpriseService { /** * 企业添加员工 * - * @param enterpriseEmployeeForm - * @return */ public synchronized ResponseDTO addEmployee(EnterpriseEmployeeForm enterpriseEmployeeForm) { Long enterpriseId = enterpriseEmployeeForm.getEnterpriseId(); @@ -207,8 +200,6 @@ public class EnterpriseService { /** * 企业删除员工 * - * @param enterpriseEmployeeForm - * @return */ public synchronized ResponseDTO deleteEmployee(EnterpriseEmployeeForm enterpriseEmployeeForm) { Long enterpriseId = enterpriseEmployeeForm.getEnterpriseId(); @@ -224,22 +215,17 @@ public class EnterpriseService { /** * 企业下员工列表 * - * @param enterpriseIdList - * @return */ public List employeeList(List enterpriseIdList) { if (CollectionUtils.isEmpty(enterpriseIdList)) { return Lists.newArrayList(); } - List enterpriseEmployeeVOList = enterpriseEmployeeDao.selectByEnterpriseIdList(enterpriseIdList); - return enterpriseEmployeeVOList; + return enterpriseEmployeeDao.selectByEnterpriseIdList(enterpriseIdList); } /** * 分页查询企业员工 * - * @param queryForm - * @return */ public PageResult queryPageEmployeeList(EnterpriseEmployeeQueryForm queryForm) { Page page = SmartPageUtil.convert2PageQuery(queryForm); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/constant/EnterpriseTypeEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/constant/EnterpriseTypeEnum.java index ddbf5f79..96033550 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/constant/EnterpriseTypeEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/constant/EnterpriseTypeEnum.java @@ -1,7 +1,7 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 企业类型 @@ -10,12 +10,18 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public enum EnterpriseTypeEnum implements BaseEnum { + /** + * 有限企业 + */ NORMAL(1, "有限企业"), + /** + * 外资企业 + */ FOREIGN(2, "外资企业"), ; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java index 5b58609a..ee358cb3 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.form.EnterpriseQueryForm; +import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseExcelVO; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseListVO; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO; import org.apache.ibatis.annotations.Mapper; @@ -19,7 +20,7 @@ import java.util.List; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -28,45 +29,37 @@ public interface EnterpriseDao extends BaseMapper { /** * 根据企业名称查询 * - * @param enterpriseName - * @param excludeEnterpriseId - * @param deletedFlag - * @return */ EnterpriseEntity queryByEnterpriseName(@Param("enterpriseName") String enterpriseName, @Param("excludeEnterpriseId") Long excludeEnterpriseId, @Param("deletedFlag") Boolean deletedFlag); /** * 删除企业 - * - * @param enterpriseId - * @param deletedFlag */ void deleteEnterprise(@Param("enterpriseId") Long enterpriseId, @Param("deletedFlag") Boolean deletedFlag); /** * 企业分页查询 * - * @param page - * @param queryForm - * @return */ List queryPage(Page page, @Param("queryForm") EnterpriseQueryForm queryForm); + /** + * 查询导出的数据 + * + */ + List selectExcelExportData(@Param("queryForm") EnterpriseQueryForm queryForm); + /** * 查询企业详情 * - * @param enterpriseId - * @return */ EnterpriseVO getDetail(@Param("enterpriseId") Long enterpriseId, @Param("deletedFlag") Boolean deletedFlag); /** * 查询列表 * - * @param type - * @param disabledFlag - * @param deletedFlag - * @return */ List queryList(@Param("type") Integer type, @Param("disabledFlag") Boolean disabledFlag, @Param("deletedFlag") Boolean deletedFlag); + + } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java index 93808710..d27d392d 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java @@ -19,7 +19,7 @@ import java.util.List; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -28,61 +28,43 @@ public interface EnterpriseEmployeeDao extends BaseMapper selectByEmployeeIdList(@Param("employeeIdList")Collection employeeIdList); /** * 查询员工关联的企业 - * @param employeeId - * @return */ List selectEnterpriseIdByEmployeeId(@Param("employeeId")Long employeeId); /** * 根据企业查询 - * @param enterpriseIdList - * @return */ List selectByEnterpriseIdList(@Param("enterpriseIdList")Collection enterpriseIdList); /** * 根据企业查询 - * @param enterpriseId - * @return */ List selectByEnterpriseId(@Param("enterpriseId")Long enterpriseId); /** * 查询企业下的所有员工id - * @param enterpriseIdList - * @return */ List selectEmployeeIdByEnterpriseIdList(@Param("enterpriseIdList")Collection enterpriseIdList); /** * 根据员工删除 - * @param enterpriseId - * @param employeeIdList */ void deleteByEnterpriseAndEmployeeIdList(@Param("enterpriseId")Long enterpriseId, @Param("employeeIdList")Collection employeeIdList); /** * 根据员工查询 - * @param enterpriseId - * @param employeeIdList */ List selectByEnterpriseAndEmployeeIdList(@Param("enterpriseId")Long enterpriseId, @Param("employeeIdList")Collection employeeIdList); /** * 删除某员工关联的所有企业 - * @param employeeId */ void deleteByEmployeeId(@Param("employeeId")Long employeeId); /** * 分页查询企业员工 - * @param page - * @param queryForm - * @return */ List queryPageEmployeeList(Page page,@Param("queryForm") EnterpriseEmployeeQueryForm queryForm); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/entity/EnterpriseEmployeeEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/entity/EnterpriseEmployeeEntity.java index a4c9b8ea..a252e66a 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/entity/EnterpriseEmployeeEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/entity/EnterpriseEmployeeEntity.java @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_oa_enterprise_employee") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/entity/EnterpriseEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/entity/EnterpriseEntity.java index 67b4c48e..6bbbf675 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/entity/EnterpriseEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/entity/EnterpriseEntity.java @@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum; -import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldEnum; -import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldLabel; +import net.lab1024.sa.base.module.support.datatracer.annoation.DataTracerFieldEnum; +import net.lab1024.sa.base.module.support.datatracer.annoation.DataTracerFieldLabel; import java.time.LocalDateTime; @@ -17,7 +17,7 @@ import java.time.LocalDateTime; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_oa_enterprise") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseCreateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseCreateForm.java index 4db85d21..b1451e21 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseCreateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseCreateForm.java @@ -2,14 +2,14 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum; -import net.lab1024.sa.common.common.json.deserializer.FileKeyVoDeserializer; -import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.util.SmartVerificationUtil; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer; +import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.util.SmartVerificationUtil; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; @@ -23,79 +23,79 @@ import javax.validation.constraints.Pattern; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class EnterpriseCreateForm { - @ApiModelProperty("企业名称") + @Schema(description = "企业名称") @NotBlank(message = "企业名称不能为空") @Length(max = 200, message = "企业名称最多200字符") private String enterpriseName; - @ApiModelProperty("企业logo") + @Schema(description = "企业logo") @JsonSerialize(using = FileKeyVoSerializer.class) @JsonDeserialize(using = FileKeyVoDeserializer.class) private String enterpriseLogo; - @ApiModelProperty("统一社会信用代码") + @Schema(description = "统一社会信用代码") @NotBlank(message = "统一社会信用代码不能为空") @Length(max = 200, message = "统一社会信用代码最多200字符") private String unifiedSocialCreditCode; - @ApiModelProperty("联系人") + @Schema(description = "联系人") @NotBlank(message = "联系人不能为空") @Length(max = 100, message = "联系人最多100字符") private String contact; - @ApiModelProperty("联系人电话") + @Schema(description = "联系人电话") @NotBlank(message = "联系人电话不能为空") @Pattern(regexp = SmartVerificationUtil.PHONE_REGEXP, message = "手机号格式不正确") private String contactPhone; - @ApiModelPropertyEnum(desc = "类型", value = EnterpriseTypeEnum.class) + @SchemaEnum(desc = "类型", value = EnterpriseTypeEnum.class) @CheckEnum(message = "类型不正确", value = EnterpriseTypeEnum.class) private Integer type; - @ApiModelProperty("邮箱") + @Schema(description = "邮箱") @Pattern(regexp = SmartVerificationUtil.EMAIL, message = "邮箱格式不正确") private String email; - @ApiModelProperty("省份") + @Schema(description = "省份") private Integer province; - @ApiModelProperty("省份名称") + @Schema(description = "省份名称") private String provinceName; - @ApiModelProperty("城市") + @Schema(description = "城市") private Integer city; - @ApiModelProperty("城市名称") + @Schema(description = "城市名称") private String cityName; - @ApiModelProperty("区县") + @Schema(description = "区县") private Integer district; - @ApiModelProperty("区县名称") + @Schema(description = "区县名称") private String districtName; - @ApiModelProperty("详细地址") + @Schema(description = "详细地址") @Length(max = 500, message = "详细地址最多500字符") private String address; - @ApiModelProperty("营业执照") + @Schema(description = "营业执照") @JsonSerialize(using = FileKeyVoSerializer.class) @JsonDeserialize(using = FileKeyVoDeserializer.class) private String businessLicense; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") @NotNull(message = "禁用状态不能为空") private Boolean disabledFlag; - @ApiModelProperty(value = "创建人", hidden = true) + @Schema(description = "创建人", hidden = true) private Long createUserId; - @ApiModelProperty(value = "创建人", hidden = true) + @Schema(description = "创建人", hidden = true) private String createUserName; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseEmployeeForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseEmployeeForm.java index 84897956..a9d3ed00 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseEmployeeForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseEmployeeForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -14,16 +14,16 @@ import java.util.List; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class EnterpriseEmployeeForm { - @ApiModelProperty("企业id") + @Schema(description = "企业id") @NotNull(message = "企业id不能为空") private Long enterpriseId; - @ApiModelProperty("员工信息id") + @Schema(description = "员工信息id") @NotEmpty(message = "员工信息id不能为空") private List employeeIdList; } \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseEmployeeQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseEmployeeQueryForm.java index 33b6a738..880b2ae4 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseEmployeeQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseEmployeeQueryForm.java @@ -1,13 +1,11 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import java.util.List; /** * 查询企业员工 @@ -16,20 +14,20 @@ import java.util.List; * @Date 2021-12-20 21:06:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class EnterpriseEmployeeQueryForm extends PageParam { - @ApiModelProperty("搜索词") + @Schema(description = "搜索词") @Length(max = 20, message = "搜索词最多20字符") private String keyword; - @ApiModelProperty("公司Id") + @Schema(description = "公司Id") @NotNull(message = "公司id 不能为空") private Long enterpriseId; - @ApiModelProperty(value = "删除标识", hidden = true) + @Schema(description = "删除标识", hidden = true) private Boolean deletedFlag; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseQueryForm.java index 06fd5783..78915083 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import org.hibernate.validator.constraints.Length; import java.time.LocalDate; @@ -14,25 +14,25 @@ import java.time.LocalDate; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class EnterpriseQueryForm extends PageParam { - @ApiModelProperty("关键字") + @Schema(description = "关键字") @Length(max = 200, message = "关键字最多200字符") private String keywords; - @ApiModelProperty("开始时间") + @Schema(description = "开始时间") private LocalDate startTime; - @ApiModelProperty("结束时间") + @Schema(description = "结束时间") private LocalDate endTime; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") private Boolean disabledFlag; - @ApiModelProperty(value = "删除状态", hidden = true) + @Schema(description = "删除状态", hidden = true) private Boolean deletedFlag; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseUpdateForm.java index 200e15e7..1aa980ff 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/form/EnterpriseUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class EnterpriseUpdateForm extends EnterpriseCreateForm { - @ApiModelProperty("企业ID") + @Schema(description = "企业ID") @NotNull(message = "企业ID不能为空") private Long enterpriseId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseEmployeeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseEmployeeVO.java index 0e37ee59..18aa2051 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseEmployeeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseEmployeeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,38 +10,38 @@ import lombok.Data; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class EnterpriseEmployeeVO { private Long enterpriseEmployeeId; - @ApiModelProperty("企业ID") + @Schema(description = "企业ID") private Long enterpriseId; - @ApiModelProperty("企业名称") + @Schema(description = "企业名称") private String enterpriseName; - @ApiModelProperty("员工") + @Schema(description = "员工") private Long employeeId; - @ApiModelProperty("登录账号") + @Schema(description = "登录账号") private String loginName; - @ApiModelProperty("员工名称") + @Schema(description = "员工名称") private String actualName; - @ApiModelProperty("手机号码") + @Schema(description = "手机号码") private String phone; - @ApiModelProperty("部门id") + @Schema(description = "部门id") private Long departmentId; - @ApiModelProperty("是否被禁用") + @Schema(description = "是否被禁用") private Boolean disabledFlag; - @ApiModelProperty("部门名称") + @Schema(description = "部门名称") private String departmentName; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java new file mode 100644 index 00000000..023f1b67 --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseExcelVO.java @@ -0,0 +1,48 @@ +package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * 企业信息 + * + * @Author 1024创新实验室: 开云 + * @Date 2022/7/28 20:37:15 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class EnterpriseExcelVO { + + @ExcelProperty("企业名称") + private String enterpriseName; + + @ExcelProperty("统一社会信用代码") + private String unifiedSocialCreditCode; + + @ExcelProperty("企业类型") + private String typeName; + + @ExcelProperty("联系人") + private String contact; + + @ExcelProperty("联系人电话") + private String contactPhone; + + @ExcelProperty("邮箱") + private String email; + + @ExcelProperty("省份名称") + private String provinceName; + + @ExcelProperty("城市名称") + private String cityName; + + @ExcelProperty("区县名称") + private String districtName; + + @ExcelProperty("详细地址") + private String address; + +} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseListVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseListVO.java index 806ff89d..1320292f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseListVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseListVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -12,9 +12,9 @@ import lombok.Data; @Data public class EnterpriseListVO { - @ApiModelProperty("企业ID") + @Schema(description = "企业ID") private Long enterpriseId; - @ApiModelProperty("企业名称") + @Schema(description = "企业名称") private String enterpriseName; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseVO.java index 828424e5..54d9b476 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/domain/vo/EnterpriseVO.java @@ -1,11 +1,11 @@ package net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.oa.enterprise.constant.EnterpriseTypeEnum; -import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; +import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer; +import net.lab1024.sa.base.common.swagger.SchemaEnum; import java.time.LocalDateTime; @@ -16,74 +16,74 @@ import java.time.LocalDateTime; * @Date 2022/7/28 20:37:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class EnterpriseVO { - @ApiModelProperty("企业ID") + @Schema(description = "企业ID") private Long enterpriseId; - @ApiModelProperty("企业名称") + @Schema(description = "企业名称") private String enterpriseName; - @ApiModelProperty("企业logo") + @Schema(description = "企业logo") @JsonSerialize(using = FileKeyVoSerializer.class) private String enterpriseLogo; - @ApiModelProperty("统一社会信用代码") + @Schema(description = "统一社会信用代码") private String unifiedSocialCreditCode; - @ApiModelPropertyEnum(desc = "类型", value = EnterpriseTypeEnum.class) + @SchemaEnum(desc = "类型", value = EnterpriseTypeEnum.class) private Integer type; - @ApiModelProperty("联系人") + @Schema(description = "联系人") private String contact; - @ApiModelProperty("联系人电话") + @Schema(description = "联系人电话") private String contactPhone; - @ApiModelProperty("邮箱") + @Schema(description = "邮箱") private String email; - @ApiModelProperty("省份") + @Schema(description = "省份") private Integer province; - @ApiModelProperty("省份名称") + @Schema(description = "省份名称") private String provinceName; - @ApiModelProperty("城市") + @Schema(description = "城市") private Integer city; - @ApiModelProperty("城市名称") + @Schema(description = "城市名称") private String cityName; - @ApiModelProperty("区县") + @Schema(description = "区县") private Integer district; - @ApiModelProperty("区县名称") + @Schema(description = "区县名称") private String districtName; - @ApiModelProperty("详细地址") + @Schema(description = "详细地址") private String address; - @ApiModelProperty("营业执照") + @Schema(description = "营业执照") @JsonSerialize(using = FileKeyVoSerializer.class) private String businessLicense; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") private Boolean disabledFlag; - @ApiModelProperty("创建人ID") + @Schema(description = "创建人ID") private Long createUserId; - @ApiModelProperty("创建人名称") + @Schema(description = "创建人名称") private String createUserName; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java index 40909dc9..6b481897 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java @@ -1,21 +1,21 @@ package net.lab1024.sa.admin.module.business.oa.invoice; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceAddForm; import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceQueryForm; import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceUpdateForm; import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceVO; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -26,30 +26,29 @@ import java.util.List; * @Date 2022-06-23 19:32:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Slf4j @RestController -@OperateLog -@Api(tags = {AdminSwaggerTagConst.Business.OA_INVOICE}) +@Tag(name = AdminSwaggerTagConst.Business.OA_INVOICE) public class InvoiceController { - @Autowired + @Resource private InvoiceService invoiceService; - @ApiOperation(value = "分页查询发票信息 @author 善逸") + @Operation(summary = "分页查询发票信息 @author 善逸") @PostMapping("/oa/invoice/page/query") - public ResponseDTO> queryByPage(@RequestBody @Valid InvoiceQueryForm queryDTO) { - return invoiceService.queryByPage(queryDTO); + public ResponseDTO> queryByPage(@RequestBody @Valid InvoiceQueryForm queryForm) { + return invoiceService.queryByPage(queryForm); } - @ApiOperation(value = "查询发票信息详情 @author 善逸") + @Operation(summary = "查询发票信息详情 @author 善逸") @GetMapping("/oa/invoice/get/{invoiceId}") public ResponseDTO getDetail(@PathVariable Long invoiceId) { return invoiceService.getDetail(invoiceId); } - @ApiOperation(value = "新建发票信息 @author 善逸") + @Operation(summary = "新建发票信息 @author 善逸") @PostMapping("/oa/invoice/create") public ResponseDTO createInvoice(@RequestBody @Valid InvoiceAddForm createVO) { RequestUser requestUser = SmartRequestUtil.getRequestUser(); @@ -58,19 +57,20 @@ public class InvoiceController { return invoiceService.createInvoice(createVO); } - @ApiOperation(value = "编辑发票信息 @author 善逸") + @Operation(summary = "编辑发票信息 @author 善逸") @PostMapping("/oa/invoice/update") + @OperateLog public ResponseDTO updateInvoice(@RequestBody @Valid InvoiceUpdateForm updateVO) { return invoiceService.updateInvoice(updateVO); } - @ApiOperation(value = "删除发票信息 @author 善逸") + @Operation(summary = "删除发票信息 @author 善逸") @GetMapping("/invoice/delete/{invoiceId}") public ResponseDTO deleteInvoice(@PathVariable Long invoiceId) { return invoiceService.deleteInvoice(invoiceId); } - @ApiOperation(value = "查询列表 @author lidoudou") + @Operation(summary = "查询列表 @author lidoudou") @GetMapping("/oa/invoice/query/list/{enterpriseId}") public ResponseDTO> queryList(@PathVariable Long enterpriseId) { return invoiceService.queryList(enterpriseId); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java index 371a4edb..1336fe5f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022-06-23 19:32:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceService.java index 70afe51d..ce62b2a3 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceService.java @@ -5,17 +5,17 @@ import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.business.oa.enterprise.EnterpriseService; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO; import net.lab1024.sa.admin.module.business.oa.invoice.domain.*; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerConst; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; -import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerConst; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; import java.util.Objects; @@ -26,32 +26,29 @@ import java.util.Objects; * @Date 2022-06-23 19:32:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service @Slf4j public class InvoiceService { - @Autowired + @Resource private InvoiceDao invoiceDao; - @Autowired + @Resource private EnterpriseService enterpriseService; - @Autowired + @Resource private DataTracerService dataTracerService; /** * 分页查询发票信息 - * - * @param queryDTO - * @return */ - public ResponseDTO> queryByPage(InvoiceQueryForm queryDTO) { - queryDTO.setDeletedFlag(Boolean.FALSE); - Page page = SmartPageUtil.convert2PageQuery(queryDTO); - List invoiceVOS = invoiceDao.queryPage(page, queryDTO); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, invoiceVOS); + public ResponseDTO> queryByPage(InvoiceQueryForm queryForm) { + queryForm.setDeletedFlag(Boolean.FALSE); + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List invoiceList = invoiceDao.queryPage(page, queryForm); + PageResult pageResult = SmartPageUtil.convert2PageResult(page, invoiceList); return ResponseDTO.ok(pageResult); } @@ -66,9 +63,6 @@ public class InvoiceService { /** * 查询发票信息详情 - * - * @param invoiceId - * @return */ public ResponseDTO getDetail(Long invoiceId) { // 校验发票信息是否存在 @@ -81,9 +75,6 @@ public class InvoiceService { /** * 新建发票信息 - * - * @param createVO - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO createInvoice(InvoiceAddForm createVO) { @@ -107,9 +98,6 @@ public class InvoiceService { /** * 编辑发票信息 - * - * @param updateVO - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO updateInvoice(InvoiceUpdateForm updateVO) { @@ -140,9 +128,6 @@ public class InvoiceService { /** * 删除发票信息 - - * @param invoiceId - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO deleteInvoice(Long invoiceId) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceAddForm.java index 0a87edee..3dd670c1 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceAddForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceAddForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.invoice.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -14,46 +14,46 @@ import javax.validation.constraints.NotNull; * @Date 2022-06-23 19:32:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class InvoiceAddForm { - @ApiModelProperty("开票抬头") + @Schema(description = "开票抬头") @NotBlank(message = "开票抬头不能为空") @Length(max = 200, message = "开票抬头最多200字符") private String invoiceHeads; - @ApiModelProperty("纳税人识别号") + @Schema(description = "纳税人识别号") @NotBlank(message = "纳税人识别号不能为空") @Length(max = 200, message = "纳税人识别号最多200字符") private String taxpayerIdentificationNumber; - @ApiModelProperty("银行账户") + @Schema(description = "银行账户") @NotBlank(message = "银行账户不能为空") @Length(max = 200, message = "银行账户最多200字符") private String accountNumber; - @ApiModelProperty("开户行") + @Schema(description = "开户行") @NotBlank(message = "开户行不能为空") @Length(max = 200, message = "开户行最多200字符") private String bankName; - @ApiModelProperty("启用状态") + @Schema(description = "启用状态") @NotNull(message = "启用状态不能为空") private Boolean disabledFlag; - @ApiModelProperty("备注") + @Schema(description = "备注") @Length(max = 500, message = "备注最多500字符") private String remark; - @ApiModelProperty("企业") + @Schema(description = "企业") @NotNull(message = "企业不能为空") private Long enterpriseId; - @ApiModelProperty(value = "创建人", hidden = true) + @Schema(description = "创建人", hidden = true) private Long createUserId; - @ApiModelProperty(value = "创建人名称", hidden = true) + @Schema(description = "创建人名称", hidden = true) private String createUserName; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceEntity.java index bc7d563a..3fcde0f9 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceEntity.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; -import net.lab1024.sa.common.module.support.datatracer.annoation.DataTracerFieldLabel; +import net.lab1024.sa.base.module.support.datatracer.annoation.DataTracerFieldLabel; import java.time.LocalDateTime; @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2022-06-23 19:32:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_oa_invoice") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceQueryForm.java index 0883bd3f..497778fb 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.business.oa.invoice.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import org.hibernate.validator.constraints.Length; import java.time.LocalDate; @@ -14,27 +14,27 @@ import java.time.LocalDate; * @Date 2022-06-23 19:32:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class InvoiceQueryForm extends PageParam { - @ApiModelProperty("企业ID") + @Schema(description = "企业ID") private Long enterpriseId; - @ApiModelProperty("关键字") + @Schema(description = "关键字") @Length(max = 200, message = "关键字最多200字符") private String keywords; - @ApiModelProperty("开始时间") + @Schema(description = "开始时间") private LocalDate startTime; - @ApiModelProperty("结束时间") + @Schema(description = "结束时间") private LocalDate endTime; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") private Boolean disabledFlag; - @ApiModelProperty(value = "删除状态", hidden = true) + @Schema(description = "删除状态", hidden = true) private Boolean deletedFlag; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceUpdateForm.java index 053d4934..3a84a640 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.invoice.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022-06-23 19:32:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class InvoiceUpdateForm extends InvoiceAddForm { - @ApiModelProperty("发票信息ID") + @Schema(description = "发票信息ID") @NotNull(message = "发票信息ID不能为空") private Long invoiceId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceVO.java index 2c8fb0e9..2e9e6452 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/domain/InvoiceVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.invoice.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -12,47 +12,47 @@ import java.time.LocalDateTime; * @Date 2022-06-23 19:32:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class InvoiceVO { - @ApiModelProperty("发票信息ID") + @Schema(description = "发票信息ID") private Long invoiceId; - @ApiModelProperty("开票抬头") + @Schema(description = "开票抬头") private String invoiceHeads; - @ApiModelProperty("纳税人识别号") + @Schema(description = "纳税人识别号") private String taxpayerIdentificationNumber; - @ApiModelProperty("银行账户") + @Schema(description = "银行账户") private String accountNumber; - @ApiModelProperty("开户行") + @Schema(description = "开户行") private String bankName; - @ApiModelProperty("备注") + @Schema(description = "备注") private String remark; - @ApiModelProperty("企业") + @Schema(description = "企业") private Long enterpriseId; - @ApiModelProperty("企业名称") + @Schema(description = "企业名称") private String enterpriseName; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") private Boolean disabledFlag; - @ApiModelProperty("创建人ID") + @Schema(description = "创建人ID") private Long createUserId; - @ApiModelProperty("创建人名称") + @Schema(description = "创建人名称") private String createUserName; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/constant/NoticeVisibleRangeDataTypeEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/constant/NoticeVisibleRangeDataTypeEnum.java index 27f4d163..eb4784f8 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/constant/NoticeVisibleRangeDataTypeEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/constant/NoticeVisibleRangeDataTypeEnum.java @@ -3,7 +3,7 @@ package net.lab1024.sa.admin.module.business.oa.notice.constant; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 公告、通知 可见范围类型 @@ -12,14 +12,20 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Getter @AllArgsConstructor public enum NoticeVisibleRangeDataTypeEnum implements BaseEnum { + /** + * 员工 + */ EMPLOYEE(1, "员工"), + /** + * 部门 + */ DEPARTMENT(2, "部门"), ; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/controller/NoticeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/controller/NoticeController.java index 8ac0f311..d54b60cb 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/controller/NoticeController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/controller/NoticeController.java @@ -1,22 +1,23 @@ package net.lab1024.sa.admin.module.business.oa.notice.controller; +import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.extra.servlet.ServletUtil; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.business.oa.notice.domain.form.*; import net.lab1024.sa.admin.module.business.oa.notice.domain.vo.*; import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeEmployeeService; import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeService; import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeTypeService; -import net.lab1024.sa.common.common.annoation.SaAuth; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog; +import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; @@ -28,42 +29,43 @@ import java.util.List; * @Date 2022-08-12 21:40:39 * @Wechat 卓大1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ -@Api(tags = AdminSwaggerTagConst.Business.OA_NOTICE) +@Tag(name = AdminSwaggerTagConst.Business.OA_NOTICE) @RestController +@OperateLog public class NoticeController { - @Autowired + @Resource private NoticeService noticeService; - @Autowired + @Resource private NoticeTypeService noticeTypeService; - @Autowired + @Resource private NoticeEmployeeService noticeEmployeeService; // --------------------- 通知公告类型 ------------------------- - @ApiOperation("通知公告类型-获取全部 @author 卓大") + @Operation(summary = "通知公告类型-获取全部 @author 卓大") @GetMapping("/oa/noticeType/getAll") public ResponseDTO> getAll() { return ResponseDTO.ok(noticeTypeService.getAll()); } - @ApiOperation("通知公告类型-添加 @author 卓大") + @Operation(summary = "通知公告类型-添加 @author 卓大") @GetMapping("/oa/noticeType/add/{name}") public ResponseDTO add(@PathVariable String name) { return noticeTypeService.add(name); } - @ApiOperation("通知公告类型-修改 @author 卓大") + @Operation(summary = "通知公告类型-修改 @author 卓大") @GetMapping("/oa/noticeType/update/{noticeTypeId}/{name}") public ResponseDTO update(@PathVariable Long noticeTypeId, @PathVariable String name) { return noticeTypeService.update(noticeTypeId, name); } - @ApiOperation("通知公告类型-删除 @author 卓大") + @Operation(summary = "通知公告类型-删除 @author 卓大") @GetMapping("/oa/noticeType/delete/{noticeTypeId}") public ResponseDTO deleteNoticeType(@PathVariable Long noticeTypeId) { return noticeTypeService.delete(noticeTypeId); @@ -71,46 +73,49 @@ public class NoticeController { // --------------------- 【管理】通知公告------------------------- - @ApiOperation("【管理】通知公告-分页查询 @author 卓大") + + @Operation(summary = "【管理】通知公告-分页查询 @author 卓大") @PostMapping("/oa/notice/query") - @SaAuth + @SaCheckPermission("oa:notice:query") public ResponseDTO> query(@RequestBody @Valid NoticeQueryForm queryForm) { return ResponseDTO.ok(noticeService.query(queryForm)); } - @ApiOperation("【管理】通知公告-添加 @author 卓大") + @Operation(summary = "【管理】通知公告-添加 @author 卓大") @PostMapping("/oa/notice/add") @RepeatSubmit - @SaAuth + @SaCheckPermission("oa:notice:add") public ResponseDTO add(@RequestBody @Valid NoticeAddForm addForm) { addForm.setCreateUserId(SmartRequestUtil.getRequestUserId()); return noticeService.add(addForm); } - @ApiOperation("【管理】通知公告-更新 @author 卓大") + @Operation(summary = "【管理】通知公告-更新 @author 卓大") @PostMapping("/oa/notice/update") @RepeatSubmit - @SaAuth + @SaCheckPermission("oa:notice:update") public ResponseDTO update(@RequestBody @Valid NoticeUpdateForm updateForm) { return noticeService.update(updateForm); } - @ApiOperation("【管理】通知公告-更新详情 @author 卓大") + @Operation(summary = "【管理】通知公告-更新详情 @author 卓大") @GetMapping("/oa/notice/getUpdateVO/{noticeId}") - @SaAuth + @SaCheckPermission("oa:notice:update") public ResponseDTO getUpdateFormVO(@PathVariable Long noticeId) { return ResponseDTO.ok(noticeService.getUpdateFormVO(noticeId)); } - @ApiOperation("【管理】通知公告-删除 @author 卓大") + @Operation(summary = "【管理】通知公告-删除 @author 卓大") @GetMapping("/oa/notice/delete/{noticeId}") - @SaAuth + @SaCheckPermission("oa:notice:delete") public ResponseDTO delete(@PathVariable Long noticeId) { return noticeService.delete(noticeId); } // --------------------- 【员工】查看 通知公告 ------------------------- - @ApiOperation("【员工】通知公告-查看详情 @author 卓大") + + + @Operation(summary = "【员工】通知公告-查看详情 @author 卓大") @GetMapping("/oa/notice/employee/view/{noticeId}") public ResponseDTO view(@PathVariable Long noticeId, HttpServletRequest request) { return noticeEmployeeService.view( @@ -121,13 +126,13 @@ public class NoticeController { ); } - @ApiOperation("【员工】通知公告-查询全部 @author 卓大") + @Operation(summary = "【员工】通知公告-查询全部 @author 卓大") @PostMapping("/oa/notice/employee/query") public ResponseDTO> queryEmployeeNotice(@RequestBody @Valid NoticeEmployeeQueryForm noticeEmployeeQueryForm) { return noticeEmployeeService.queryList(SmartRequestUtil.getRequestUserId(), noticeEmployeeQueryForm); } - @ApiOperation("【员工】通知公告-查询 查看记录 @author 卓大") + @Operation(summary = "【员工】通知公告-查询 查看记录 @author 卓大") @PostMapping("/oa/notice/employee/queryViewRecord") public ResponseDTO> queryViewRecord(@RequestBody @Valid NoticeViewRecordQueryForm noticeViewRecordQueryForm) { return ResponseDTO.ok(noticeEmployeeService.queryViewRecord(noticeViewRecordQueryForm)); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java index aba10192..d6654a43 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java @@ -24,7 +24,7 @@ import java.util.List; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -35,22 +35,18 @@ public interface NoticeDao extends BaseMapper { /** * 保存可见范围 * - * @param noticeId - * @param visibleRangeFormList */ void insertVisibleRange(@Param("noticeId") Long noticeId, @Param("visibleRangeFormList") List visibleRangeFormList); /** * 删除可见范围 * - * @param noticeId */ void deleteVisibleRange(@Param("noticeId") Long noticeId); /** * 相关可见范围 * - * @param noticeId */ List queryVisibleRange(@Param("noticeId") Long noticeId); @@ -59,9 +55,6 @@ public interface NoticeDao extends BaseMapper { /** * 后管分页查询资讯 * - * @param page - * @param queryForm - * @return */ List query(Page page, @Param("query") NoticeQueryForm queryForm); @@ -69,7 +62,6 @@ public interface NoticeDao extends BaseMapper { /** * 更新删除状态 * - * @param noticeId */ void updateDeletedFlag(@Param("noticeId") Long noticeId); @@ -78,10 +70,6 @@ public interface NoticeDao extends BaseMapper { /** * 查询 员工 查看到的通知公告 * - * @param page - * @param requestEmployeeId - * @param noticeEmployeeQueryForm - * @return */ List queryEmployeeNotice(Page page, @Param("requestEmployeeId") Long requestEmployeeId, @@ -97,10 +85,6 @@ public interface NoticeDao extends BaseMapper { /** * 查询 员工 未读的通知公告 * - * @param page - * @param requestEmployeeId - * @param noticeEmployeeQueryForm - * @return */ List queryEmployeeNotViewNotice(Page page, @Param("requestEmployeeId") Long requestEmployeeId, @@ -117,27 +101,16 @@ public interface NoticeDao extends BaseMapper { /** * 查询通知、公告的 查看记录 - * @param page - * @param noticeViewRecordQueryForm - * @return */ List queryNoticeViewRecordList(Page page,@Param("queryForm") NoticeViewRecordQueryForm noticeViewRecordQueryForm); /** * 保存查看记录 - * @param noticeId - * @param employeeId - * @param ip - * @param userAgent */ void insertViewRecord(@Param("noticeId") Long noticeId, @Param("employeeId") Long employeeId, @Param("ip") String ip, @Param("userAgent") String userAgent,@Param("pageViewCount") Integer pageViewCount); /** * 更新查看记录 - * @param noticeId - * @param requestEmployeeId - * @param ip - * @param userAgent */ void updateViewRecord(@Param("noticeId")Long noticeId, @Param("employeeId")Long requestEmployeeId,@Param("ip") String ip, @Param("userAgent")String userAgent); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java index 456fe4dd..b08e5289 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Component; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/entity/NoticeEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/entity/NoticeEntity.java index 7dfaa513..af7433be 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/entity/NoticeEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/entity/NoticeEntity.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_notice") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/entity/NoticeTypeEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/entity/NoticeTypeEntity.java index c749dced..48c1c8fb 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/entity/NoticeTypeEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/entity/NoticeTypeEntity.java @@ -17,7 +17,7 @@ import java.time.LocalDateTime; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_notice_type") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeAddForm.java index b83ba79a..cf117797 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeAddForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeAddForm.java @@ -1,9 +1,9 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.form; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.json.deserializer.FileKeyVoDeserializer; +import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer; import org.hibernate.validator.constraints.Length; import javax.validation.Valid; @@ -19,60 +19,60 @@ import java.util.List; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeAddForm { - @ApiModelProperty("标题") + @Schema(description = "标题") @NotBlank(message = "标题不能为空") @Length(max = 200, message = "标题最多200字符") private String title; - @ApiModelProperty("分类") + @Schema(description = "分类") @NotNull(message = "分类不能为空") private Long noticeTypeId; - @ApiModelProperty("是否全部可见") + @Schema(description = "是否全部可见") @NotNull(message = "是否全部可见不能为空") private Boolean allVisibleFlag; - @ApiModelProperty("是否定时发布") + @Schema(description = "是否定时发布") @NotNull(message = "是否定时发布不能为空") private Boolean scheduledPublishFlag; - @ApiModelProperty("发布时间") + @Schema(description = "发布时间") @NotNull(message = "发布时间不能为空") private LocalDateTime publishTime; - @ApiModelProperty("纯文本内容") + @Schema(description = "纯文本内容") @NotNull(message = "文本内容不能为空") private String contentText; - @ApiModelProperty("html内容") + @Schema(description = "html内容") @NotNull(message = "html内容不能为空") private String contentHtml; - @ApiModelProperty("附件,多个英文逗号分隔|可选") + @Schema(description = "附件,多个英文逗号分隔|可选") @Length(max = 1000, message = "最多1000字符") @JsonDeserialize(using = FileKeyVoDeserializer.class) private String attachment; - @ApiModelProperty("作者") + @Schema(description = "作者") @NotBlank(message = "作者不能为空") private String author; - @ApiModelProperty("来源") + @Schema(description = "来源") @NotBlank(message = "标题不能为空") private String source; - @ApiModelProperty("文号") + @Schema(description = "文号") private String documentNumber; - @ApiModelProperty(hidden = true) + @Schema(hidden = true) private Long createUserId; - @ApiModelProperty("可见范围设置|可选") + @Schema(description = "可见范围设置|可选") @Valid private List visibleRangeList; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeEmployeeQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeEmployeeQueryForm.java index 0374861c..3f3d90b4 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeEmployeeQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeEmployeeQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import java.time.LocalDate; @@ -13,23 +13,23 @@ import java.time.LocalDate; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeEmployeeQueryForm extends PageParam { - @ApiModelProperty("标题、作者、来源、文号") + @Schema(description = "标题、作者、来源、文号") private String keywords; - @ApiModelProperty("分类") + @Schema(description = "分类") private Long noticeTypeId; - @ApiModelProperty("发布-开始时间") + @Schema(description = "发布-开始时间") private LocalDate publishTimeBegin; - @ApiModelProperty("未读标识") + @Schema(description = "未读标识") private Boolean notViewFlag; - @ApiModelProperty("发布-截止时间") + @Schema(description = "发布-截止时间") private LocalDate publishTimeEnd; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeQueryForm.java index c319b2b6..fb78500d 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import java.time.LocalDate; @@ -13,36 +13,36 @@ import java.time.LocalDate; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeQueryForm extends PageParam { - @ApiModelProperty("分类") + @Schema(description = "分类") private Long noticeTypeId; - @ApiModelProperty("标题、作者、来源") + @Schema(description = "标题、作者、来源") private String keywords; - @ApiModelProperty("文号") + @Schema(description = "文号") private String documentNumber; - @ApiModelProperty("创建人") + @Schema(description = "创建人") private Long createUserId; - @ApiModelProperty("删除标识") + @Schema(description = "删除标识") private Boolean deletedFlag; - @ApiModelProperty("创建-开始时间") + @Schema(description = "创建-开始时间") private LocalDate createTimeBegin; - @ApiModelProperty("创建-截止时间") + @Schema(description = "创建-截止时间") private LocalDate createTimeEnd; - @ApiModelProperty("发布-开始时间") + @Schema(description = "发布-开始时间") private LocalDate publishTimeBegin; - @ApiModelProperty("发布-截止时间") + @Schema(description = "发布-截止时间") private LocalDate publishTimeEnd; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeUpdateForm.java index c2ecb57d..93f812b3 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeUpdateForm extends NoticeAddForm { - @ApiModelProperty("id") + @Schema(description = "id") @NotNull(message = "通知id不能为空") private Long noticeId; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeViewRecordQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeViewRecordQueryForm.java index 7ac41f27..25363569 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeViewRecordQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeViewRecordQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import javax.validation.constraints.NotNull; @@ -13,19 +13,19 @@ import javax.validation.constraints.NotNull; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeViewRecordQueryForm extends PageParam { - @ApiModelProperty("通知公告id") + @Schema(description = "通知公告id") @NotNull(message = "通知公告id不能为空") private Long noticeId; - @ApiModelProperty("部门id") + @Schema(description = "部门id") private Long departmentId; - @ApiModelProperty("关键字") + @Schema(description = "关键字") private String keywords; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeVisibleRangeForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeVisibleRangeForm.java index 7a3b061b..7cf9a50f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeVisibleRangeForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/form/NoticeVisibleRangeForm.java @@ -1,12 +1,12 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import javax.validation.constraints.NotNull; @@ -17,18 +17,18 @@ import javax.validation.constraints.NotNull; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @NoArgsConstructor @AllArgsConstructor public class NoticeVisibleRangeForm { - @ApiModelPropertyEnum(NoticeVisibleRangeDataTypeEnum.class) + @SchemaEnum(NoticeVisibleRangeDataTypeEnum.class) @CheckEnum(value = NoticeVisibleRangeDataTypeEnum.class, required = true, message = "数据类型错误") private Integer dataType; - @ApiModelProperty("员工/部门id") + @Schema(description = "员工/部门id") @NotNull(message = "员工/部门id不能为空") private Long dataId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeDetailVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeDetailVO.java index 72927bee..cecbbcf1 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeDetailVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeDetailVO.java @@ -1,9 +1,9 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer; +import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -16,69 +16,69 @@ import java.time.LocalDateTime; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeDetailVO { - @ApiModelProperty("id") + @Schema(description = "id") private Long noticeId; - @ApiModelProperty("标题") + @Schema(description = "标题") private String title; - @ApiModelProperty("分类") + @Schema(description = "分类") private Long noticeTypeId; - @ApiModelProperty("分类名称") + @Schema(description = "分类名称") private Long noticeTypeName; - @ApiModelProperty("是否全部可见") + @Schema(description = "是否全部可见") @NotNull(message = "是否全部可见不能为空") private Boolean allVisibleFlag; - @ApiModelProperty("是否定时发布") + @Schema(description = "是否定时发布") @NotNull(message = "是否定时发布不能为空") private Boolean scheduledPublishFlag; - @ApiModelProperty("纯文本内容") + @Schema(description = "纯文本内容") private String contentText; - @ApiModelProperty("html内容") + @Schema(description = "html内容") private String contentHtml; - @ApiModelProperty("附件") + @Schema(description = "附件") @JsonSerialize(using = FileKeyVoSerializer.class) private String attachment; - @ApiModelProperty("发布时间") + @Schema(description = "发布时间") @NotNull(message = "发布时间不能为空") private LocalDateTime publishTime; - @ApiModelProperty("作者") + @Schema(description = "作者") @NotBlank(message = "作者不能为空") private String author; - @ApiModelProperty("来源") + @Schema(description = "来源") @NotBlank(message = "标题不能为空") private String source; - @ApiModelProperty("文号") + @Schema(description = "文号") private String documentNumber; - @ApiModelProperty("页面浏览量") + @Schema(description = "页面浏览量") private Integer pageViewCount; - @ApiModelProperty("用户浏览量") + @Schema(description = "用户浏览量") private Integer userViewCount; - @ApiModelProperty("创建人名称") + @Schema(description = "创建人名称") private Long createUserName; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeEmployeeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeEmployeeVO.java index b86044a1..759ba6c7 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeEmployeeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeEmployeeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDate; @@ -12,15 +12,15 @@ import java.time.LocalDate; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeEmployeeVO extends NoticeVO { - @ApiModelProperty("是否查看") + @Schema(description = "是否查看") private Boolean viewFlag; - @ApiModelProperty("发布日期") + @Schema(description = "发布日期") private LocalDate publishDate; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeTypeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeTypeVO.java index 6aa9ee15..26609593 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeTypeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeTypeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,15 +10,15 @@ import lombok.Data; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeTypeVO { - @ApiModelProperty("通知类型id") + @Schema(description = "通知类型id") private Long noticeTypeId; - @ApiModelProperty("通知类型-名称") + @Schema(description = "通知类型-名称") private String noticeTypeName; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeUpdateFormVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeUpdateFormVO.java index 2d82624b..13025599 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeUpdateFormVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeUpdateFormVO.java @@ -1,9 +1,9 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer; +import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer; import java.util.List; @@ -14,22 +14,22 @@ import java.util.List; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeUpdateFormVO extends NoticeVO { - @ApiModelProperty("纯文本内容") + @Schema(description = "纯文本内容") private String contentText; - @ApiModelProperty("html内容") + @Schema(description = "html内容") private String contentHtml; - @ApiModelProperty("附件") + @Schema(description = "附件") @JsonSerialize(using = FileKeyVoSerializer.class) private String attachment; - @ApiModelProperty("可见范围") + @Schema(description = "可见范围") private List visibleRangeList; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeVO.java index 570fa925..459454fd 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -14,62 +14,62 @@ import java.time.LocalDateTime; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeVO { - @ApiModelProperty("id") + @Schema(description = "id") private Long noticeId; - @ApiModelProperty("标题") + @Schema(description = "标题") private String title; - @ApiModelProperty("分类") + @Schema(description = "分类") private Long noticeTypeId; - @ApiModelProperty("分类名称") + @Schema(description = "分类名称") private String noticeTypeName; - @ApiModelProperty("是否全部可见") + @Schema(description = "是否全部可见") private Boolean allVisibleFlag; - @ApiModelProperty("是否定时发布") + @Schema(description = "是否定时发布") private Boolean scheduledPublishFlag; - @ApiModelProperty("发布状态") + @Schema(description = "发布状态") private Boolean publishFlag; - @ApiModelProperty("发布时间") + @Schema(description = "发布时间") private LocalDateTime publishTime; - @ApiModelProperty("作者") + @Schema(description = "作者") @NotBlank(message = "作者不能为空") private String author; - @ApiModelProperty("来源") + @Schema(description = "来源") @NotBlank(message = "标题不能为空") private String source; - @ApiModelProperty("文号") + @Schema(description = "文号") private String documentNumber; - @ApiModelProperty("页面浏览量") + @Schema(description = "页面浏览量") private Integer pageViewCount; - @ApiModelProperty("用户浏览量") + @Schema(description = "用户浏览量") private Integer userViewCount; - @ApiModelProperty("删除标识") + @Schema(description = "删除标识") private Boolean deletedFlag; - @ApiModelProperty("创建人名称") + @Schema(description = "创建人名称") private String createUserName; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeViewRecordVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeViewRecordVO.java index 5b761259..23b1adc9 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeViewRecordVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeViewRecordVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -12,38 +12,38 @@ import java.time.LocalDateTime; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeViewRecordVO { - @ApiModelProperty("员工ID") + @Schema(description = "员工ID") private Long employeeId; - @ApiModelProperty("员工姓名") + @Schema(description = "员工姓名") private String employeeName; - @ApiModelProperty("员工部门名称") + @Schema(description = "员工部门名称") private String departmentName; - @ApiModelProperty("查看次数") + @Schema(description = "查看次数") private Integer pageViewCount; - @ApiModelProperty("首次ip") + @Schema(description = "首次ip") private String firstIp; - @ApiModelProperty("首次用户设备等标识") + @Schema(description = "首次用户设备等标识") private String firstUserAgent; - @ApiModelProperty("首次查看时间") + @Schema(description = "首次查看时间") private LocalDateTime createTime; - @ApiModelProperty("最后一次 ip") + @Schema(description = "最后一次 ip") private String lastIp; - @ApiModelProperty("最后一次 用户设备等标识") + @Schema(description = "最后一次 用户设备等标识") private String lastUserAgent; - @ApiModelProperty("最后一次查看时间") + @Schema(description = "最后一次查看时间") private LocalDateTime updateTime; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeVisibleRangeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeVisibleRangeVO.java index cd3ad235..0206cada 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeVisibleRangeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/domain/vo/NoticeVisibleRangeVO.java @@ -1,9 +1,9 @@ package net.lab1024.sa.admin.module.business.oa.notice.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; /** * 新闻、公告 可见范围数据 VO @@ -12,18 +12,18 @@ import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class NoticeVisibleRangeVO { - @ApiModelPropertyEnum(NoticeVisibleRangeDataTypeEnum.class) + @SchemaEnum(NoticeVisibleRangeDataTypeEnum.class) private Integer dataType; - @ApiModelProperty("员工/部门id") + @Schema(description = "员工/部门id") private Long dataId; - @ApiModelProperty("员工/部门 名称") + @Schema(description = "员工/部门 名称") private String dataName; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/manager/NoticeManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/manager/NoticeManager.java index 662dca05..2a480cb6 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/manager/NoticeManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/manager/NoticeManager.java @@ -3,13 +3,13 @@ package net.lab1024.sa.admin.module.business.oa.notice.manager; import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeDao; import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeEntity; import net.lab1024.sa.admin.module.business.oa.notice.domain.form.NoticeVisibleRangeForm; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; -import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; /** @@ -19,22 +19,19 @@ import java.util.List; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service public class NoticeManager { - @Autowired + @Resource private NoticeDao noticeDao; - @Autowired + @Resource private DataTracerService dataTracerService; /** * 保存 - * - * @param noticeEntity - * @param visibleRangeFormList */ @Transactional(rollbackFor = Throwable.class) public void save(NoticeEntity noticeEntity, List visibleRangeFormList) { @@ -50,8 +47,6 @@ public class NoticeManager { /** * 更新 * - * @param noticeEntity - * @param visibleRangeList */ @Transactional(rollbackFor = Throwable.class) public void update(NoticeEntity old, NoticeEntity noticeEntity, List visibleRangeList) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeEmployeeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeEmployeeService.java index f3c90196..5ac0f389 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeEmployeeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeEmployeeService.java @@ -10,13 +10,13 @@ import net.lab1024.sa.admin.module.business.oa.notice.domain.vo.*; import net.lab1024.sa.admin.module.system.department.service.DepartmentService; import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; import net.lab1024.sa.admin.module.system.employee.service.EmployeeService; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -29,27 +29,25 @@ import java.util.stream.Collectors; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service public class NoticeEmployeeService { - @Autowired + @Resource private NoticeDao noticeDao; - @Autowired + @Resource private NoticeService noticeService; - @Autowired + @Resource private DepartmentService departmentService; - @Autowired + @Resource private EmployeeService employeeService; /** * 查询我的 通知、公告清单 - * - * @return */ public ResponseDTO> queryList(Long requestEmployeeId, NoticeEmployeeQueryForm noticeEmployeeQueryForm) { Page page = SmartPageUtil.convert2PageQuery(noticeEmployeeQueryForm); @@ -92,8 +90,6 @@ public class NoticeEmployeeService { /** * 查询我的 待查看的 通知、公告清单 - * - * @return */ public ResponseDTO view(Long requestEmployeeId, Long noticeId, String ip, String userAgent) { NoticeUpdateFormVO updateFormVO = noticeService.getUpdateFormVO(noticeId); @@ -120,10 +116,6 @@ public class NoticeEmployeeService { /** * 校验是否有查看权限的范围 * - * @param visibleRangeList - * @param employeeId - * @param departmentId - * @return */ public boolean checkVisibleRange(List visibleRangeList, Long employeeId, Long departmentId) { // 员工范围 @@ -147,13 +139,10 @@ public class NoticeEmployeeService { /** * 分页查询 查看记录 - * - * @param noticeViewRecordQueryForm - * @return */ public PageResult queryViewRecord(NoticeViewRecordQueryForm noticeViewRecordQueryForm) { Page page = SmartPageUtil.convert2PageQuery(noticeViewRecordQueryForm); - List noticeViewRecordVOS = noticeDao.queryNoticeViewRecordList(page, noticeViewRecordQueryForm); - return SmartPageUtil.convert2PageResult(page, noticeViewRecordVOS); + List noticeViewRecordList = noticeDao.queryNoticeViewRecordList(page, noticeViewRecordQueryForm); + return SmartPageUtil.convert2PageResult(page, noticeViewRecordList); } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeService.java index dbe3b311..85d31eb4 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeService.java @@ -1,6 +1,7 @@ package net.lab1024.sa.admin.module.business.oa.notice.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Maps; import net.lab1024.sa.admin.module.business.oa.notice.constant.NoticeVisibleRangeDataTypeEnum; import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeDao; import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeEntity; @@ -19,20 +20,19 @@ import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO; import net.lab1024.sa.admin.module.system.department.service.DepartmentService; import net.lab1024.sa.admin.module.system.employee.dao.EmployeeDao; import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; -import net.lab1024.sa.common.common.constant.StringConst; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; -import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Function; @@ -45,37 +45,35 @@ import java.util.stream.Collectors; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service public class NoticeService { - @Autowired + @Resource private NoticeDao noticeDao; - @Autowired + @Resource private NoticeManager noticeManager; - @Autowired + @Resource private EmployeeDao employeeDao; - @Autowired + @Resource private DepartmentDao departmentDao; - @Autowired + @Resource private DepartmentService departmentService; - @Autowired + @Resource private NoticeTypeService noticeTypeService; - @Autowired + @Resource private DataTracerService dataTracerService; /** * 查询 通知、公告 * - * @param queryForm - * @return */ public PageResult query(NoticeQueryForm queryForm) { Page page = SmartPageUtil.convert2PageQuery(queryForm); @@ -87,9 +85,6 @@ public class NoticeService { /** * 添加 - * - * @param addForm - * @return */ public ResponseDTO add(NoticeAddForm addForm) { // 校验并获取可见范围 @@ -112,8 +107,6 @@ public class NoticeService { /** * 校验并返回可见范围 * - * @param form - * @return */ private ResponseDTO checkAndBuildVisibleRange(NoticeAddForm form) { // 校验资讯分类 @@ -126,7 +119,7 @@ public class NoticeService { return ResponseDTO.ok(); } - /** + /* * 校验可见范围 * 非全部可见时 校验选择的员工|部门 */ @@ -144,7 +137,7 @@ public class NoticeService { employeeIdList = employeeIdList.stream().distinct().collect(Collectors.toList()); List dbEmployeeIdList = employeeDao.selectBatchIds(employeeIdList).stream().map(EmployeeEntity::getEmployeeId).collect(Collectors.toList()); Collection subtract = CollectionUtils.subtract(employeeIdList, dbEmployeeIdList); - if (subtract.size() > 0) { + if (!subtract.isEmpty()) { return ResponseDTO.userErrorParam("员工id不存在:" + subtract); } } @@ -158,7 +151,7 @@ public class NoticeService { deptIdList = deptIdList.stream().distinct().collect(Collectors.toList()); List dbDeptIdList = departmentDao.selectBatchIds(deptIdList).stream().map(DepartmentEntity::getDepartmentId).collect(Collectors.toList()); Collection subtract = CollectionUtils.subtract(deptIdList, dbDeptIdList); - if (subtract.size() > 0) { + if (!subtract.isEmpty()) { return ResponseDTO.userErrorParam("部门id不存在:" + subtract); } } @@ -169,8 +162,6 @@ public class NoticeService { /** * 更新 * - * @param updateForm - * @return */ public ResponseDTO update(NoticeUpdateForm updateForm) { @@ -195,8 +186,6 @@ public class NoticeService { /** * 删除 * - * @param noticeId - * @return */ public ResponseDTO delete(Long noticeId) { NoticeEntity noticeEntity = noticeDao.selectById(noticeId); @@ -211,9 +200,6 @@ public class NoticeService { /** * 获取更新表单用的详情 - * - * @param noticeId - * @return */ public NoticeUpdateFormVO getUpdateFormVO(Long noticeId) { NoticeEntity noticeEntity = noticeDao.selectById(noticeId); @@ -232,7 +218,7 @@ public class NoticeService { if (CollectionUtils.isNotEmpty(employeeIdList)) { employeeMap = employeeDao.selectBatchIds(employeeIdList).stream().collect(Collectors.toMap(EmployeeEntity::getEmployeeId, Function.identity())); } else { - employeeMap = new HashMap<>(); + employeeMap = Maps.newHashMap(); } for (NoticeVisibleRangeVO noticeVisibleRange : noticeVisibleRangeList) { if (noticeVisibleRange.getDataType().equals(NoticeVisibleRangeDataTypeEnum.EMPLOYEE.getValue())) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeTypeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeTypeService.java index 23da7364..4485370f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeTypeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/service/NoticeTypeService.java @@ -4,12 +4,12 @@ import cn.hutool.core.util.StrUtil; import net.lab1024.sa.admin.module.business.oa.notice.dao.NoticeTypeDao; import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeTypeEntity; import net.lab1024.sa.admin.module.business.oa.notice.domain.vo.NoticeTypeVO; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -21,12 +21,12 @@ import java.util.stream.Collectors; * @Date 2022-08-12 21:40:39 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Service public class NoticeTypeService { - @Autowired + @Resource private NoticeTypeDao noticeTypeDao; /** diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/DataScope.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/DataScope.java index 7ba28705..3f7307d5 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/DataScope.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/DataScope.java @@ -3,7 +3,7 @@ package net.lab1024.sa.admin.module.system.datascope; import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeTypeEnum; import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeWhereInTypeEnum; -import net.lab1024.sa.admin.module.system.datascope.strategy.DataScopePowerStrategy; +import net.lab1024.sa.admin.module.system.datascope.strategy.AbstractDataScopeStrategy; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -17,7 +17,7 @@ import java.lang.annotation.Target; * @Date 2022-03-18 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @@ -29,25 +29,21 @@ public @interface DataScope { /** * DataScopeWhereInTypeEnum.CUSTOM_STRATEGY类型 才可使用joinSqlImplClazz属性 - * @return */ - Class joinSqlImplClazz() default DataScopePowerStrategy.class; + Class joinSqlImplClazz() default AbstractDataScopeStrategy.class; /** * 多个参数已逗号分隔,本属性主要用于joinSqlImplClazz 实现类跟进参数进行不同的范围控制,如不使用CUSTOM_STRATEGY,可不做配置 - * @return */ String paramName() default ""; /** * * 第几个where 条件 从0开始 - * @return */ int whereIndex() default 0; /** * DataScopeWhereInTypeEnum为CUSTOM_STRATEGY类型时,此属性无效 - * @return */ String joinSql() default ""; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/DataScopeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/DataScopeController.java index 4e143889..348a215b 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/DataScopeController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/DataScopeController.java @@ -1,17 +1,15 @@ package net.lab1024.sa.admin.module.system.datascope; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeAndViewTypeVO; import net.lab1024.sa.admin.module.system.datascope.service.DataScopeService; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.ResponseDTO; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import java.util.List; /** @@ -21,17 +19,16 @@ import java.util.List; * @Date 2022-03-18 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_DATA_SCOPE}) -public class DataScopeController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_DATA_SCOPE) +public class DataScopeController { - @Autowired + @Resource private DataScopeService dataScopeService; - @ApiOperation(value = "获取当前系统所配置的所有数据范围 @author 罗伊") + @Operation(summary = "获取当前系统所配置的所有数据范围 @author 罗伊") @GetMapping("/dataScope/list") public ResponseDTO> dataScopeList() { return dataScopeService.dataScopeList(); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/MyBatisPlugin.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/MyBatisPlugin.java index 2c2f39d1..bddadfd9 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/MyBatisPlugin.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/MyBatisPlugin.java @@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.google.common.collect.Maps; import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeSqlConfig; import net.lab1024.sa.admin.module.system.datascope.service.DataScopeSqlConfigService; -import net.lab1024.sa.common.common.domain.DataScopePlugin; +import net.lab1024.sa.base.common.domain.DataScopePlugin; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.mapping.*; import org.apache.ibatis.plugin.Intercepts; @@ -13,10 +13,10 @@ import org.apache.ibatis.plugin.Plugin; import org.apache.ibatis.plugin.Signature; import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.RowBounds; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Properties; @@ -28,13 +28,13 @@ import java.util.Properties; * @Date 2022-03-18 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Intercepts({@Signature(type = org.apache.ibatis.executor.Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})}) @Component public class MyBatisPlugin extends DataScopePlugin { - @Autowired + @Resource private ApplicationContext applicationContext; @Override diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeTypeEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeTypeEnum.java index 9130631a..130d8178 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeTypeEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeTypeEnum.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.datascope.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 数据范围 类型 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum DataScopeTypeEnum implements BaseEnum { @@ -19,13 +19,13 @@ public enum DataScopeTypeEnum implements BaseEnum { NOTICE(1, 20, "系统通知", "系统通知数据范围"), ; - private Integer value; + private final Integer value; - private Integer sort; + private final Integer sort; - private String name; + private final String name; - private String desc; + private final String desc; DataScopeTypeEnum(Integer value, Integer sort, String name, String desc) { this.value = value; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeViewTypeEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeViewTypeEnum.java index 1ef69302..c6ce9e20 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeViewTypeEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeViewTypeEnum.java @@ -1,7 +1,7 @@ package net.lab1024.sa.admin.module.system.datascope.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** @@ -11,23 +11,35 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum DataScopeViewTypeEnum implements BaseEnum { + /** + * 本人 + */ ME(0, 0, "本人"), + /** + * 部门 + */ DEPARTMENT(1, 5, "本部门"), + /** + * 本部门及下属子部门 + */ DEPARTMENT_AND_SUB(2, 10, "本部门及下属子部门"), + /** + * 全部 + */ ALL(10, 100, "全部"); - private Integer value; - private Integer level; - private String desc; + private final Integer value; + private final Integer level; + private final String desc; DataScopeViewTypeEnum(Integer value, Integer level, String desc) { this.value = value; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeWhereInTypeEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeWhereInTypeEnum.java index dd9293d5..9692a4ab 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeWhereInTypeEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/constant/DataScopeWhereInTypeEnum.java @@ -1,7 +1,7 @@ package net.lab1024.sa.admin.module.system.datascope.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 数据范围 sql where @@ -10,18 +10,27 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum DataScopeWhereInTypeEnum implements BaseEnum { + /** + * 以员工IN + */ EMPLOYEE(0, "以员工IN"), + /** + * 以部门IN + */ DEPARTMENT(1, "以部门IN"), + /** + * 自定义策略 + */ CUSTOM_STRATEGY(2, "自定义策略"); - private Integer value; - private String desc; + private final Integer value; + private final String desc; DataScopeWhereInTypeEnum(Integer value, String desc) { this.value = value; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeAndViewTypeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeAndViewTypeVO.java index 51bd3f57..5787f79a 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeAndViewTypeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeAndViewTypeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.datascope.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -12,24 +12,24 @@ import java.util.List; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DataScopeAndViewTypeVO { - @ApiModelProperty("数据范围类型") + @Schema(description = "数据范围类型") private Integer dataScopeType; - @ApiModelProperty("数据范围名称") + @Schema(description = "数据范围名称") private String dataScopeTypeName; - @ApiModelProperty("描述") + @Schema(description = "描述") private String dataScopeTypeDesc; - @ApiModelProperty("顺序") + @Schema(description = "顺序") private Integer dataScopeTypeSort; - @ApiModelProperty("可见范围列表") + @Schema(description = "可见范围列表") private List viewTypeList; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeDTO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeDTO.java index 01919e95..b0c7ad9f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeDTO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeDTO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.datascope.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; import lombok.Data; @@ -11,22 +11,22 @@ import lombok.Data; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @Builder public class DataScopeDTO { - @ApiModelProperty("数据范围类型") + @Schema(description = "数据范围类型") private Integer dataScopeType; - @ApiModelProperty("数据范围名称") + @Schema(description = "数据范围名称") private String dataScopeTypeName; - @ApiModelProperty("描述") + @Schema(description = "描述") private String dataScopeTypeDesc; - @ApiModelProperty("顺序") + @Schema(description = "顺序") private Integer dataScopeTypeSort; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeSqlConfig.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeSqlConfig.java index 63686b3b..65995c74 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeSqlConfig.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeSqlConfig.java @@ -11,7 +11,7 @@ import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeWhereInTyp * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DataScopeSqlConfig { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeViewTypeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeViewTypeVO.java index 22231d22..17b55fa8 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeViewTypeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/domain/DataScopeViewTypeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.datascope.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Builder; import lombok.Data; @@ -11,18 +11,18 @@ import lombok.Data; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @Builder public class DataScopeViewTypeVO { - @ApiModelProperty("可见范围") + @Schema(description = "可见范围") private Integer viewType; - @ApiModelProperty("可见范围名称") + @Schema(description = "可见范围名称") private String viewTypeName; - @ApiModelProperty("级别,用于表示范围大小") + @Schema(description = "级别,用于表示范围大小") private Integer viewTypeLevel; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeService.java index 7353706e..dbad387e 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeService.java @@ -6,8 +6,8 @@ import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEn import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeAndViewTypeVO; import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeDTO; import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeViewTypeVO; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.springframework.stereotype.Service; import java.util.Comparator; @@ -20,15 +20,13 @@ import java.util.List; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class DataScopeService { /** * 获取所有可以进行数据范围配置的信息 - * - * @return */ public ResponseDTO> dataScopeList() { List dataScopeList = this.getDataScopeType(); @@ -42,8 +40,6 @@ public class DataScopeService { /** * 获取当前系统存在的数据可见范围 - * - * @return */ public List getViewType() { List viewTypeList = Lists.newArrayList(); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java index fc98e24b..b28b5c79 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java @@ -1,25 +1,25 @@ package net.lab1024.sa.admin.module.system.datascope.service; import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.admin.AdminApplication; +import net.lab1024.sa.admin.module.system.datascope.DataScope; import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeTypeEnum; import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEnum; import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeWhereInTypeEnum; import net.lab1024.sa.admin.module.system.datascope.domain.DataScopeSqlConfig; -import net.lab1024.sa.admin.module.system.datascope.DataScope; -import net.lab1024.sa.admin.module.system.datascope.strategy.DataScopePowerStrategy; -import net.lab1024.sa.common.common.util.SmartRequestUtil; +import net.lab1024.sa.admin.module.system.datascope.strategy.AbstractDataScopeStrategy; +import net.lab1024.sa.base.common.util.SmartRequestUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.reflections.Reflections; import org.reflections.scanners.MethodAnnotationsScanner; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; +import javax.annotation.Resource; import java.lang.reflect.Method; import java.util.List; import java.util.Map; @@ -33,7 +33,7 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service @@ -46,16 +46,12 @@ public class DataScopeSqlConfigService { private static final String DEPARTMENT_PARAM = "#departmentIds"; - private ConcurrentHashMap dataScopeMethodMap = new ConcurrentHashMap<>(); + private final ConcurrentHashMap dataScopeMethodMap = new ConcurrentHashMap<>(); - @Autowired + @Resource private DataScopeViewService dataScopeViewService; - @Value("${swagger.package}") - private String scanPackage; - - - @Autowired + @Resource private ApplicationContext applicationContext; @@ -66,11 +62,9 @@ public class DataScopeSqlConfigService { /** * 刷新 所有添加数据范围注解的接口方法配置 - * - * @return */ private Map refreshDataScopeMethodMap() { - Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage(scanPackage)).setScanners(new MethodAnnotationsScanner())); + Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage(AdminApplication.COMPONENT_SCAN)).setScanners(new MethodAnnotationsScanner())); Set methods = reflections.getMethodsAnnotatedWith(DataScope.class); for (Method method : methods) { DataScope dataScopeAnnotation = method.getAnnotation(DataScope.class); @@ -91,19 +85,13 @@ public class DataScopeSqlConfigService { /** * 根据调用的方法获取,此方法的配置信息 * - * @param method - * @return */ public DataScopeSqlConfig getSqlConfig(String method) { - DataScopeSqlConfig sqlConfigDTO = this.dataScopeMethodMap.get(method); - return sqlConfigDTO; + return this.dataScopeMethodMap.get(method); } /** * 组装需要拼接的sql - * @param paramMap - * @param sqlConfigDTO - * @return */ public String getJoinSql(Map paramMap, DataScopeSqlConfig sqlConfigDTO) { DataScopeTypeEnum dataScopeTypeEnum = sqlConfigDTO.getDataScopeType(); @@ -118,7 +106,7 @@ public class DataScopeSqlConfigService { log.warn("data scope custom strategy class is null"); return ""; } - DataScopePowerStrategy powerStrategy = (DataScopePowerStrategy) applicationContext.getBean(sqlConfigDTO.getJoinSqlImplClazz()); + AbstractDataScopeStrategy powerStrategy = (AbstractDataScopeStrategy) applicationContext.getBean(sqlConfigDTO.getJoinSqlImplClazz()); if (powerStrategy == null) { log.warn("data scope custom strategy class:{} ,bean is null", sqlConfigDTO.getJoinSqlImplClazz()); return ""; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java index 6ec1c408..f478c608 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java @@ -2,18 +2,18 @@ package net.lab1024.sa.admin.module.system.datascope.service; import com.google.common.collect.Lists; import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeTypeEnum; +import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEnum; import net.lab1024.sa.admin.module.system.department.service.DepartmentService; import net.lab1024.sa.admin.module.system.employee.dao.EmployeeDao; import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; import net.lab1024.sa.admin.module.system.role.dao.RoleDataScopeDao; import net.lab1024.sa.admin.module.system.role.dao.RoleEmployeeDao; import net.lab1024.sa.admin.module.system.role.domain.entity.RoleDataScopeEntity; -import net.lab1024.sa.admin.module.system.datascope.constant.DataScopeViewTypeEnum; -import net.lab1024.sa.common.common.util.SmartEnumUtil; +import net.lab1024.sa.base.common.util.SmartEnumUtil; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -26,29 +26,25 @@ import java.util.stream.Collectors; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class DataScopeViewService { - @Autowired + @Resource private RoleEmployeeDao roleEmployeeDao; - @Autowired + @Resource private RoleDataScopeDao roleDataScopeDao; - @Autowired + @Resource private EmployeeDao employeeDao; - @Autowired + @Resource private DepartmentService departmentService; /** * 获取某人可以查看的所有人员信息 - * - * @param dataScopeTypeEnum - * @param employeeId - * @return */ public List getCanViewEmployeeId(DataScopeTypeEnum dataScopeTypeEnum, Long employeeId) { DataScopeViewTypeEnum viewType = this.getEmployeeDataScopeViewType(dataScopeTypeEnum, employeeId); @@ -66,10 +62,6 @@ public class DataScopeViewService { /** * 获取某人可以查看的所有部门信息 - * - * @param dataScopeTypeEnum - * @param employeeId - * @return */ public List getCanViewDepartmentId(DataScopeTypeEnum dataScopeTypeEnum, Long employeeId) { DataScopeViewTypeEnum viewType = this.getEmployeeDataScopeViewType(dataScopeTypeEnum, employeeId); @@ -92,15 +84,11 @@ public class DataScopeViewService { public List getDepartmentAndSubIdList(Long employeeId) { EmployeeEntity employeeEntity = employeeDao.selectById(employeeId); - List allDepartmentIds = departmentService.selfAndChildrenIdList(employeeEntity.getDepartmentId()); - return allDepartmentIds; + return departmentService.selfAndChildrenIdList(employeeEntity.getDepartmentId()); } /** * 根据员工id 获取各数据范围最大的可见范围 map - * - * @param employeeId - * @return */ public DataScopeViewTypeEnum getEmployeeDataScopeViewType(DataScopeTypeEnum dataScopeTypeEnum, Long employeeId) { if (employeeId == null) { @@ -128,9 +116,6 @@ public class DataScopeViewService { /** * 获取本人相关 可查看员工id - * - * @param employeeId - * @return */ private List getMeEmployeeIdList(Long employeeId) { return Lists.newArrayList(employeeId); @@ -138,25 +123,17 @@ public class DataScopeViewService { /** * 获取本部门相关 可查看员工id - * - * @param employeeId - * @return */ private List getDepartmentEmployeeIdList(Long employeeId) { EmployeeEntity employeeEntity = employeeDao.selectById(employeeId); - List employeeIdList = employeeDao.getEmployeeIdByDepartmentId(employeeEntity.getDepartmentId(), false); - return employeeIdList; + return employeeDao.getEmployeeIdByDepartmentId(employeeEntity.getDepartmentId(), false); } /** * 获取本部门及下属子部门相关 可查看员工id - * - * @param employeeId - * @return */ private List getDepartmentAndSubEmployeeIdList(Long employeeId) { List allDepartmentIds = getDepartmentAndSubIdList(employeeId); - List employeeIdList = employeeDao.getEmployeeIdByDepartmentIdList(allDepartmentIds, false); - return employeeIdList; + return employeeDao.getEmployeeIdByDepartmentIdList(allDepartmentIds, false); } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/strategy/DataScopePowerStrategy.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/strategy/AbstractDataScopeStrategy.java similarity index 77% rename from smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/strategy/DataScopePowerStrategy.java rename to smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/strategy/AbstractDataScopeStrategy.java index 4611fd57..152bb1ed 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/strategy/DataScopePowerStrategy.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/strategy/AbstractDataScopeStrategy.java @@ -12,16 +12,12 @@ import java.util.Map; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -public abstract class DataScopePowerStrategy { +public abstract class AbstractDataScopeStrategy { /** * 获取joinsql 字符串 - * @param viewTypeEnum - * @param paramMap - * @param sqlConfigDTO - * @return */ public abstract String getCondition(DataScopeViewTypeEnum viewTypeEnum, Map paramMap, DataScopeSqlConfig sqlConfigDTO); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/controller/DepartmentController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/controller/DepartmentController.java index 62e2fe33..bb61a4e2 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/controller/DepartmentController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/controller/DepartmentController.java @@ -1,20 +1,18 @@ package net.lab1024.sa.admin.module.system.department.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.department.domain.form.DepartmentAddForm; import net.lab1024.sa.admin.module.system.department.domain.form.DepartmentUpdateForm; import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentTreeVO; import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO; import net.lab1024.sa.admin.module.system.department.service.DepartmentService; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import net.lab1024.sa.base.common.domain.ResponseDTO; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -25,44 +23,43 @@ import java.util.List; * @Date 2022-01-12 20:37:48 * @Wechat 卓大1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_DEPARTMENT}) -public class DepartmentController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_DEPARTMENT) +public class DepartmentController { - @Autowired + @Resource private DepartmentService departmentService; - @ApiOperation(value = "查询部门树形列表 @author 卓大") + @Operation(summary = "查询部门树形列表 @author 卓大") @GetMapping("/department/treeList") public ResponseDTO> departmentTree() { return departmentService.departmentTree(); } - @ApiOperation(value = "添加部门 @author 卓大") + @Operation(summary = "添加部门 @author 卓大") @PostMapping("/department/add") - @PreAuthorize("@saAuth.checkPermission('system:department:add')") + @SaCheckPermission("system:department:add") public ResponseDTO addDepartment(@Valid @RequestBody DepartmentAddForm createDTO) { return departmentService.addDepartment(createDTO); } - @ApiOperation(value = "更新部门 @author 卓大") + @Operation(summary = "更新部门 @author 卓大") @PostMapping("/department/update") - @PreAuthorize("@saAuth.checkPermission('system:department:update')") + @SaCheckPermission("system:department:update") public ResponseDTO updateDepartment(@Valid @RequestBody DepartmentUpdateForm updateDTO) { return departmentService.updateDepartment(updateDTO); } - @ApiOperation(value = "删除部门 @author 卓大") + @Operation(summary = "删除部门 @author 卓大") @GetMapping("/department/delete/{departmentId}") - @PreAuthorize("@saAuth.checkPermission('system:department:delete')") + @SaCheckPermission("system:department:delete") public ResponseDTO deleteDepartment(@PathVariable Long departmentId) { return departmentService.deleteDepartment(departmentId); } - @ApiOperation(value = "查询部门列表 @author 卓大") + @Operation(summary = "查询部门列表 @author 卓大") @GetMapping("/department/listAll") public ResponseDTO> listAll() { return ResponseDTO.ok(departmentService.listAll()); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java index 25c395ca..3103af3f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java @@ -16,7 +16,7 @@ import java.util.List; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Component @Mapper @@ -25,15 +25,11 @@ public interface DepartmentDao extends BaseMapper { /** * 根据部门id,查询此部门直接子部门的数量 * - * @param departmentId - * @return int 子部门的数量 */ Integer countSubDepartment(@Param("departmentId") Long departmentId); /** * 获取全部部门列表 - * - * @return */ List listAll(); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/entity/DepartmentEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/entity/DepartmentEntity.java index 28f9431b..52882f8d 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/entity/DepartmentEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/entity/DepartmentEntity.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName(value = "t_department") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/form/DepartmentAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/form/DepartmentAddForm.java index 4a10c4c5..25ecc447 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/form/DepartmentAddForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/form/DepartmentAddForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.department.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -13,24 +13,24 @@ import javax.validation.constraints.NotNull; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DepartmentAddForm { - @ApiModelProperty("部门名称") + @Schema(description = "部门名称") @Length(min = 1, max = 50, message = "请输入正确的部门名称(1-50个字符)") @NotNull(message = "请输入正确的部门名称(1-50个字符)") private String name; - @ApiModelProperty("排序") + @Schema(description = "排序") @NotNull(message = "排序值") private Integer sort; - @ApiModelProperty("部门负责人id") + @Schema(description = "部门负责人id") private Long managerId; - @ApiModelProperty("上级部门id (可选)") + @Schema(description = "上级部门id (可选)") private Long parentId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/form/DepartmentUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/form/DepartmentUpdateForm.java index a9516819..6a249198 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/form/DepartmentUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/form/DepartmentUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.department.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DepartmentUpdateForm extends DepartmentAddForm { - @ApiModelProperty("部门id") + @Schema(description = "部门id") @NotNull(message = "部门id不能为空") private Long departmentId; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentEmployeeTreeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentEmployeeTreeVO.java index aba7b263..94bfb713 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentEmployeeTreeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentEmployeeTreeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.department.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO; @@ -13,15 +13,15 @@ import java.util.List; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DepartmentEmployeeTreeVO extends DepartmentVO { - @ApiModelProperty("部门员工列表") + @Schema(description = "部门员工列表") private List employees; - @ApiModelProperty("子部门") + @Schema(description = "子部门") private List children; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentTreeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentTreeVO.java index 4efef78d..7728f22e 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentTreeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentTreeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.department.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -12,21 +12,21 @@ import java.util.List; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DepartmentTreeVO extends DepartmentVO { - @ApiModelProperty("同级上一个元素id") + @Schema(description = "同级上一个元素id") private Long preId; - @ApiModelProperty("同级下一个元素id") + @Schema(description = "同级下一个元素id") private Long nextId; - @ApiModelProperty("子部门") + @Schema(description = "子部门") private List children; - @ApiModelProperty("自己和所有递归子部门的id集合") + @Schema(description = "自己和所有递归子部门的id集合") private List selfAndAllChildrenIdList; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java index 5f546fc9..f52e28b5 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.department.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,27 +10,27 @@ import lombok.Data; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DepartmentVO { - @ApiModelProperty("部门id") + @Schema(description = "部门id") private Long departmentId; - @ApiModelProperty("部门名称") + @Schema(description = "部门名称") private String name; - @ApiModelProperty("部门负责人姓名") + @Schema(description = "部门负责人姓名") private String managerName; - @ApiModelProperty("部门负责人id") + @Schema(description = "部门负责人id") private Long managerId; - @ApiModelProperty("父级部门id") + @Schema(description = "父级部门id") private Long parentId; - @ApiModelProperty("排序") + @Schema(description = "排序") private Integer sort; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentCacheManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentCacheManager.java index f1fc0930..3ed6f350 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentCacheManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentCacheManager.java @@ -7,7 +7,7 @@ import net.lab1024.sa.admin.constant.AdminCacheConst; import net.lab1024.sa.admin.module.system.department.dao.DepartmentDao; import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentTreeVO; import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +15,7 @@ import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -29,42 +30,36 @@ import java.util.stream.Collectors; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service public class DepartmentCacheManager { - @Autowired + @Resource private DepartmentDao departmentDao; private void logClearInfo(String cache) { log.info("clear " + cache); } - // ----------------------- 清空缓存 ----------------------- @CacheEvict(value = {AdminCacheConst.Department.DEPARTMENT_LIST_CACHE, AdminCacheConst.Department.DEPARTMENT_MAP_CACHE, AdminCacheConst.Department.DEPARTMENT_SELF_CHILDREN_CACHE, AdminCacheConst.Department.DEPARTMENT_TREE_CACHE, AdminCacheConst.Department.DEPARTMENT_PATH_CACHE,}, allEntries = true) public void clearCache() { logClearInfo(AdminCacheConst.Department.DEPARTMENT_LIST_CACHE); } - // ----------------------- 查询 ----------------------- /** * 部门列表 - * - * @return */ @Cacheable(AdminCacheConst.Department.DEPARTMENT_LIST_CACHE) public List getDepartmentList() { - List departmentVOList = departmentDao.listAll(); - return departmentVOList; + return departmentDao.listAll(); } /** * 部门map * - * @return */ @Cacheable(AdminCacheConst.Department.DEPARTMENT_MAP_CACHE) public Map getDepartmentMap() { @@ -75,7 +70,6 @@ public class DepartmentCacheManager { /** * 缓存部门树结构 * - * @return */ @Cacheable(AdminCacheConst.Department.DEPARTMENT_TREE_CACHE) public List getDepartmentTree() { @@ -86,21 +80,17 @@ public class DepartmentCacheManager { /** * 缓存某个部门的下级id列表 * - * @param departmentId - * @return */ @Cacheable(AdminCacheConst.Department.DEPARTMENT_SELF_CHILDREN_CACHE) public List getDepartmentSelfAndChildren(Long departmentId) { List departmentVOList = departmentDao.listAll(); - List idList = this.selfAndChildrenIdList(departmentId, departmentVOList); - return idList; + return this.selfAndChildrenIdList(departmentId, departmentVOList); } /** * 部门的路径名称 * - * @return */ @Cacheable(AdminCacheConst.Department.DEPARTMENT_PATH_CACHE) public Map getDepartmentPathMap() { @@ -118,9 +108,6 @@ public class DepartmentCacheManager { /** * 构建父级考点路径 - * - * @param departmentVO - * @param departmentMap */ private String buildDepartmentPath(DepartmentVO departmentVO, Map departmentMap) { if (Objects.equals(departmentVO.getParentId(), NumberUtils.LONG_ZERO)) { @@ -140,8 +127,6 @@ public class DepartmentCacheManager { /** * 构建部门树结构 * - * @param voList - * @return */ public List buildTree(List voList) { if (CollectionUtils.isEmpty(voList)) { @@ -159,8 +144,6 @@ public class DepartmentCacheManager { /** * 构建所有根节点的下级树形结构 * - * @param nodeList - * @param */ private void recursiveBuildTree(List nodeList, List allDepartmentList) { int nodeSize = nodeList.size(); @@ -191,9 +174,6 @@ public class DepartmentCacheManager { /** * 获取子元素 * - * @param departmentId - * @param voList - * @return */ private List getChildren(Long departmentId, List voList) { List childrenEntityList = voList.stream().filter(e -> departmentId.equals(e.getParentId())).collect(Collectors.toList()); @@ -207,8 +187,6 @@ public class DepartmentCacheManager { /** * 通过部门id,获取当前以及下属部门 * - * @param departmentId - * @param voList */ public List selfAndChildrenIdList(Long departmentId, List voList) { List selfAndChildrenIdList = Lists.newArrayList(); @@ -230,10 +208,6 @@ public class DepartmentCacheManager { /** * 递归查询 - * - * @param selfAndChildrenIdList - * @param departmentId - * @param voList */ public void selfAndChildrenRecursion(List selfAndChildrenIdList, Long departmentId, List voList) { List children = this.getChildren(departmentId, voList); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentManager.java deleted file mode 100644 index 8bc49a91..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package net.lab1024.sa.admin.module.system.department.manager; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import net.lab1024.sa.admin.module.system.department.dao.DepartmentDao; -import org.springframework.stereotype.Service; -import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEntity; - -/** - * 部门 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-01-12 20:37:48 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Service -public class DepartmentManager extends ServiceImpl { - - -} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/service/DepartmentService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/service/DepartmentService.java index c82c98db..7b58bca2 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/service/DepartmentService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/service/DepartmentService.java @@ -8,12 +8,12 @@ import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentTreeVO; import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO; import net.lab1024.sa.admin.module.system.department.manager.DepartmentCacheManager; import net.lab1024.sa.admin.module.system.employee.dao.EmployeeDao; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -26,18 +26,18 @@ import java.util.Map; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class DepartmentService { - @Autowired + @Resource private DepartmentDao departmentDao; - @Autowired + @Resource private EmployeeDao employeeDao; - @Autowired + @Resource private DepartmentCacheManager departmentCacheManager; // ---------------------------- 增加、修改、删除 ---------------------------- @@ -45,8 +45,6 @@ public class DepartmentService { /** * 新增添加部门 * - * @param departmentAddForm - * @return AjaxResult */ public ResponseDTO addDepartment(DepartmentAddForm departmentAddForm) { @@ -60,8 +58,6 @@ public class DepartmentService { /** * 更新部门信息 * - * @param updateDTO - * @return */ public ResponseDTO updateDepartment(DepartmentUpdateForm updateDTO) { if (updateDTO.getParentId() == null) { @@ -83,8 +79,6 @@ public class DepartmentService { * 1、需要判断当前部门是否有子部门,有子部门则不允许删除 * 2、需要判断当前部门是否有员工,有员工则不能删除 * - * @param departmentId - * @return */ public ResponseDTO deleteDepartment(Long departmentId) { DepartmentEntity departmentEntity = departmentDao.selectById(departmentId); @@ -119,8 +113,6 @@ public class DepartmentService { /** * 获取部门树形结构 - * - * @return */ public ResponseDTO> departmentTree() { List treeVOList = departmentCacheManager.getDepartmentTree(); @@ -131,8 +123,6 @@ public class DepartmentService { /** * 自身以及所有下级的部门id列表 * - * @param departmentId - * @return */ public List selfAndChildrenIdList(Long departmentId) { return departmentCacheManager.getDepartmentSelfAndChildren(departmentId); @@ -142,7 +132,6 @@ public class DepartmentService { /** * 获取所有部门 * - * @return */ public List listAll() { return departmentCacheManager.getDepartmentList(); @@ -152,7 +141,6 @@ public class DepartmentService { /** * 获取部门 * - * @param departmentId */ public DepartmentVO getDepartmentById(Long departmentId) { return departmentCacheManager.getDepartmentMap().get(departmentId); @@ -160,8 +148,6 @@ public class DepartmentService { /** * 获取部门路径:/公司/研发部/产品组 - * - * @param departmentId */ public String getDepartmentPath(Long departmentId) { return departmentCacheManager.getDepartmentPathMap().get(departmentId); @@ -170,9 +156,6 @@ public class DepartmentService { /** * 查询全部父级部门(不包含自己) * - * @param departmentId - * @return - * @author listen */ public List queryAllParentDepartment(Long departmentId) { List list = new ArrayList<>(); @@ -190,9 +173,6 @@ public class DepartmentService { /** * 查询全部父级部门(不包含自己) * - * @param departmentId - * @return - * @author listen */ public List queryAllParentDepartmentIdList(Long departmentId) { List list = new ArrayList<>(); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java index c5f0f325..05a6b41f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java @@ -1,20 +1,18 @@ package net.lab1024.sa.admin.module.system.employee.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.employee.domain.form.*; import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO; import net.lab1024.sa.admin.module.system.employee.service.EmployeeService; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -25,78 +23,77 @@ import java.util.List; * @Date 2021-12-09 22:57:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @RestController -@OperateLog -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_EMPLOYEE}) -public class EmployeeController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_EMPLOYEE) +public class EmployeeController { - @Autowired + @Resource private EmployeeService employeeService; @PostMapping("/employee/query") - @ApiOperation(value = "员工管理查询 @author 卓大") + @Operation(summary = "员工管理查询 @author 卓大") public ResponseDTO> query(@Valid @RequestBody EmployeeQueryForm query) { return employeeService.queryEmployee(query); } - @ApiOperation(value = "添加员工(返回添加员工的密码) @author 卓大") + @Operation(summary = "添加员工(返回添加员工的密码) @author 卓大") @PostMapping("/employee/add") - @PreAuthorize("@saAuth.checkPermission('system:employee:add')") + @SaCheckPermission("system:employee:add") public ResponseDTO addEmployee(@Valid @RequestBody EmployeeAddForm employeeAddForm) { return employeeService.addEmployee(employeeAddForm); } - @ApiOperation(value = "更新员工 @author 卓大") + @Operation(summary = "更新员工 @author 卓大") @PostMapping("/employee/update") - @PreAuthorize("@saAuth.checkPermission('system:employee:update')") + @SaCheckPermission("system:employee:update") public ResponseDTO updateEmployee(@Valid @RequestBody EmployeeUpdateForm employeeUpdateForm) { return employeeService.updateEmployee(employeeUpdateForm); } - @ApiOperation(value = "更新员工禁用/启用状态 @author 卓大") + @Operation(summary = "更新员工禁用/启用状态 @author 卓大") @GetMapping("/employee/update/disabled/{employeeId}") - @PreAuthorize("@saAuth.checkPermission('system:employee:disabled')") + @SaCheckPermission("system:employee:disabled") public ResponseDTO updateDisableFlag(@PathVariable Long employeeId) { return employeeService.updateDisableFlag(employeeId); } - @ApiOperation(value = "批量删除员工 @author 卓大") + @Operation(summary = "批量删除员工 @author 卓大") @PostMapping("/employee/update/batch/delete") - @PreAuthorize("@saAuth.checkPermission('system:employee:delete')") + @SaCheckPermission("system:employee:delete") public ResponseDTO batchUpdateDeleteFlag(@RequestBody List employeeIdList) { return employeeService.batchUpdateDeleteFlag(employeeIdList); } - @ApiOperation(value = "批量调整员工部门 @author 卓大") + @Operation(summary = "批量调整员工部门 @author 卓大") @PostMapping("/employee/update/batch/department") - @PreAuthorize("@saAuth.checkPermission('system:employee:department:update')") + @SaCheckPermission("system:employee:department:update") public ResponseDTO batchUpdateDepartment(@Valid @RequestBody EmployeeBatchUpdateDepartmentForm batchUpdateDepartmentForm) { return employeeService.batchUpdateDepartment(batchUpdateDepartmentForm); } - @ApiOperation(value = "修改密码 @author 卓大") + @Operation(summary = "修改密码 @author 卓大") @PostMapping("/employee/update/password") public ResponseDTO updatePassword(@Valid @RequestBody EmployeeUpdatePasswordForm updatePasswordForm) { updatePasswordForm.setEmployeeId(SmartRequestUtil.getRequestUserId()); return employeeService.updatePassword(updatePasswordForm); } - @ApiOperation(value = "重置员工密码 @author 卓大") + @Operation(summary = "重置员工密码 @author 卓大") @GetMapping("/employee/update/password/reset/{employeeId}") - @PreAuthorize("@saAuth.checkPermission('system:employee:password:reset')") + @SaCheckPermission("system:employee:password:reset") public ResponseDTO resetPassword(@PathVariable Integer employeeId) { return employeeService.resetPassword(employeeId); } - @ApiOperation(value = "查询员工-根据部门id @author 卓大") + @Operation(summary = "查询员工-根据部门id @author 卓大") @GetMapping("/employee/getAllEmployeeByDepartmentId/{departmentId}") public ResponseDTO> getAllEmployeeByDepartmentId(@PathVariable Long departmentId) { return employeeService.getAllEmployeeByDepartmentId(departmentId, Boolean.FALSE); } - @ApiOperation("查询所有员工 @author 卓大") + @Operation(summary = "查询所有员工 @author 卓大") @GetMapping("/employee/queryAll") public ResponseDTO> queryAllEmployee(@RequestParam(value = "disabledFlag", required = false) Boolean disabledFlag) { return employeeService.queryAllEmployee(disabledFlag); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java index b5bc89dd..c9126970 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java @@ -19,17 +19,13 @@ import java.util.List; * @Date 2021-12-09 22:57:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component public interface EmployeeDao extends BaseMapper { /** * 查询员工列表 - * - * @param page - * @param queryForm - * @return */ List queryEmployee(Page page, @Param("queryForm") EmployeeQueryForm queryForm, @Param("departmentIdList") List departmentIdList); @@ -41,19 +37,12 @@ public interface EmployeeDao extends BaseMapper { /** * 更新单个 - * - * @param employeeId - * @param disabledFlag */ void updateDisableFlag(@Param("employeeId") Long employeeId, @Param("disabledFlag") Boolean disabledFlag); /** * 通过登录名查询 - * - * @param loginName - * @param disabledFlag - * @return */ EmployeeEntity getByLoginName(@Param("loginName") String loginName, @Param("disabledFlag") Boolean disabledFlag); @@ -61,10 +50,6 @@ public interface EmployeeDao extends BaseMapper { /** * 通过姓名查询 - * - * @param actualName - * @param disabledFlag - * @return */ EmployeeEntity getByActualName(@Param("actualName") String actualName, @Param("disabledFlag") Boolean disabledFlag @@ -72,99 +57,61 @@ public interface EmployeeDao extends BaseMapper { /** * 通过手机号查询 - * - * @param phone - * @param disabledFlag - * @return */ EmployeeEntity getByPhone(@Param("phone") String phone, @Param("disabledFlag") Boolean disabledFlag); /** * 获取所有员工 - * - * @return */ List listAll(); /** * 获取某个部门员工数 * - * @param departmentId - * @return */ Integer countByDepartmentId(@Param("departmentId") Long departmentId); /** * 获取一批员工 - * - * @param employeeIds - * @return */ List getEmployeeByIds(@Param("employeeIds") Collection employeeIds); /** * 查询单个员工信息 - * - * @param employeeId - * @return */ EmployeeVO getEmployeeById(@Param("employeeId") Long employeeId); /** * 获取某个部门的员工 - * - * @param departmentId - * @param disabledFlag - * @return */ List selectByDepartmentId(@Param("departmentId") Long departmentId, @Param("disabledFlag") Boolean disabledFlag); /** * 查询某些部门下用户名是xxx的员工 - * - * @param departmentIdList - * @param actualName - * @param disabledFlag - * @return */ List selectByActualName(@Param("departmentIdList") List departmentIdList, @Param("actualName") String actualName, @Param("disabledFlag") Boolean disabledFlag); /** * 获取某批部门的员工Id - * - * @param departmentIds - * @return */ List getEmployeeIdByDepartmentIdList(@Param("departmentIds") List departmentIds, @Param("disabledFlag") Boolean disabledFlag); /** * 获取所有 - * - * @param leaveFlag - * @param disabledFlag - * @return */ List getEmployeeId(@Param("leaveFlag") Boolean leaveFlag, @Param("disabledFlag") Boolean disabledFlag); /** * 获取某个部门的员工Id - * - * @param departmentId - * @param disabledFlag - * @return */ List getEmployeeIdByDepartmentId(@Param("departmentId") Long departmentId, @Param("disabledFlag") Boolean disabledFlag); /** * 员工重置密码 - * - * @param employeeId - * @param password - * @return */ Integer updatePassword(@Param("employeeId") Integer employeeId, @Param("password") String password); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/entity/EmployeeEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/entity/EmployeeEntity.java index b66b5961..b84ba8b8 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/entity/EmployeeEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/entity/EmployeeEntity.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2021-12-09 22:57:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_employee") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java index 09bf252d..367aa81c 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeAddForm.java @@ -1,12 +1,12 @@ package net.lab1024.sa.admin.module.system.employee.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.enumeration.GenderEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.common.enumeration.GenderEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; -import net.lab1024.sa.common.common.util.SmartVerificationUtil; +import net.lab1024.sa.base.common.util.SmartVerificationUtil; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; @@ -19,38 +19,38 @@ import java.util.List; * @Date 2021-12-20 21:06:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class EmployeeAddForm { - @ApiModelProperty("姓名") + @Schema(description = "姓名") @NotNull(message = "姓名不能为空") @Length(max = 30, message = "姓名最多30字符") private String actualName; - @ApiModelProperty("登录账号") + @Schema(description = "登录账号") @NotNull(message = "登录账号不能为空") @Length(max = 30, message = "登录账号最多30字符") private String loginName; - @ApiModelPropertyEnum(GenderEnum.class) + @SchemaEnum(GenderEnum.class) @CheckEnum(value = GenderEnum.class, message = "性别错误") private Integer gender; - @ApiModelProperty("部门id") + @Schema(description = "部门id") @NotNull(message = "部门id不能为空") private Long departmentId; - @ApiModelProperty("是否启用") + @Schema(description = "是否启用") @NotNull(message = "是否被禁用不能为空") private Boolean disabledFlag; - @ApiModelProperty("手机号") + @Schema(description = "手机号") @NotNull(message = "手机号不能为空") @Pattern(regexp = SmartVerificationUtil.PHONE_REGEXP, message = "手机号格式不正确") private String phone; - @ApiModelProperty("角色列表") + @Schema(description = "角色列表") private List roleIdList; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeBatchUpdateDepartmentForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeBatchUpdateDepartmentForm.java index 4a9de07a..b59cfa21 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeBatchUpdateDepartmentForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeBatchUpdateDepartmentForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.employee.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -15,17 +15,17 @@ import java.util.List; * @Date 2021-12-20 21:06:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class EmployeeBatchUpdateDepartmentForm { - @ApiModelProperty("员工id") + @Schema(description = "员工id") @NotEmpty(message = "员工id不能为空") @Size(max = 99, message = "一次最多调整99个员工") private List employeeIdList; - @ApiModelProperty("部门ID") + @Schema(description = "部门ID") @NotNull(message = "部门ID不能为空") private Long departmentId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeQueryForm.java index 8315f206..4052613f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.system.employee.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Size; @@ -15,26 +15,26 @@ import java.util.List; * @Date 2021-12-20 21:06:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class EmployeeQueryForm extends PageParam { - @ApiModelProperty("搜索词") + @Schema(description = "搜索词") @Length(max = 20, message = "搜索词最多20字符") private String keyword; - @ApiModelProperty("部门id") + @Schema(description = "部门id") private Long departmentId; - @ApiModelProperty("是否禁用") + @Schema(description = "是否禁用") private Boolean disabledFlag; - @ApiModelProperty("员工id集合") + @Schema(description = "员工id集合") @Size(max = 99, message = "最多查询99个员工") private List employeeIdList; - @ApiModelProperty(value = "删除标识", hidden = true) + @Schema(description = "删除标识", hidden = true) private Boolean deletedFlag; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateForm.java index 860a66d4..0736f053 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.employee.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2021-12-20 21:06:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class EmployeeUpdateForm extends EmployeeAddForm { - @ApiModelProperty("员工id") + @Schema(description = "员工id") @NotNull(message = "员工id不能为空") private Long employeeId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdatePasswordForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdatePasswordForm.java index d4e4758e..736248f0 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdatePasswordForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdatePasswordForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.system.employee.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.util.SmartVerificationUtil; +import net.lab1024.sa.base.common.util.SmartVerificationUtil; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; @@ -14,20 +14,20 @@ import javax.validation.constraints.Pattern; * @Date 2021-12-20 21:06:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class EmployeeUpdatePasswordForm { - @ApiModelProperty(hidden = true) + @Schema(hidden = true) private Long employeeId; - @ApiModelProperty("原密码") + @Schema(description = "原密码") @NotBlank(message = "原密码不能为空哦") @Pattern(regexp = SmartVerificationUtil.PWD_REGEXP, message = "原密码请输入6-15位(数字|大小写字母|小数点)") private String oldPassword; - @ApiModelProperty("新密码") + @Schema(description = "新密码") @NotBlank(message = "新密码不能为空哦") @Pattern(regexp = SmartVerificationUtil.PWD_REGEXP, message = "新密码请输入6-15位(数字|大小写字母|小数点)") private String newPassword; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateRoleForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateRoleForm.java index 4672565f..e013e6ac 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateRoleForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateRoleForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.employee.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -14,16 +14,16 @@ import java.util.List; * @Date 2021-12-20 20:55:13 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class EmployeeUpdateRoleForm { - @ApiModelProperty("员工id") + @Schema(description = "员工id") @NotNull(message = "员工id不能为空") private Long employeeId; - @ApiModelProperty("角色ids") + @Schema(description = "角色ids") @Size(max = 99, message = "角色最多99") private List roleIdList; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/vo/EmployeeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/vo/EmployeeVO.java index 108a81d7..42110a4d 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/vo/EmployeeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/vo/EmployeeVO.java @@ -1,9 +1,9 @@ package net.lab1024.sa.admin.module.system.employee.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.enumeration.GenderEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; +import net.lab1024.sa.base.common.enumeration.GenderEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; import java.time.LocalDateTime; import java.util.List; @@ -15,44 +15,44 @@ import java.util.List; * @Date 2021-12-21 23:05:56 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class EmployeeVO { - @ApiModelProperty("主键id") + @Schema(description = "主键id") private Long employeeId; - @ApiModelProperty("登录账号") + @Schema(description = "登录账号") private String loginName; - @ApiModelPropertyEnum(GenderEnum.class) + @SchemaEnum(GenderEnum.class) private Integer gender; - @ApiModelProperty("员工名称") + @Schema(description = "员工名称") private String actualName; - @ApiModelProperty("手机号码") + @Schema(description = "手机号码") private String phone; - @ApiModelProperty("部门id") + @Schema(description = "部门id") private Long departmentId; - @ApiModelProperty("是否被禁用") + @Schema(description = "是否被禁用") private Boolean disabledFlag; - @ApiModelProperty("是否 超级管理员") + @Schema(description = "是否 超级管理员") private Boolean administratorFlag; - @ApiModelProperty("部门名称") + @Schema(description = "部门名称") private String departmentName; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("角色列表") + @Schema(description = "角色列表") private List roleIdList; - @ApiModelProperty("角色名称列表") + @Schema(description = "角色名称列表") private List roleNameList; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/manager/EmployeeManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/manager/EmployeeManager.java index f31a3317..2aca93bb 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/manager/EmployeeManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/manager/EmployeeManager.java @@ -3,14 +3,15 @@ package net.lab1024.sa.admin.module.system.employee.manager; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.lab1024.sa.admin.module.system.employee.dao.EmployeeDao; +import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; +import net.lab1024.sa.admin.module.system.role.dao.RoleEmployeeDao; import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEmployeeEntity; -import net.lab1024.sa.admin.module.system.role.manager.RoleEmployeeManager; +import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; +import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; @@ -21,21 +22,23 @@ import java.util.stream.Collectors; * @Date 2021-12-29 21:52:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class EmployeeManager extends ServiceImpl { - @Autowired + @Resource private EmployeeDao employeeDao; - @Autowired - private RoleEmployeeManager roleEmployeeManager; + @Resource + private RoleEmployeeService roleEmployeeService; + + @Resource + private RoleEmployeeDao roleEmployeeDao; /** * 保存员工 * - * @param employee */ @Transactional(rollbackFor = Throwable.class) public void saveEmployee(EmployeeEntity employee, List roleIdList) { @@ -44,14 +47,13 @@ public class EmployeeManager extends ServiceImpl { if (CollectionUtils.isNotEmpty(roleIdList)) { List roleEmployeeList = roleIdList.stream().map(e -> new RoleEmployeeEntity(e, employee.getEmployeeId())).collect(Collectors.toList()); - roleEmployeeManager.saveBatch(roleEmployeeList); + roleEmployeeService.batchInsert(roleEmployeeList); } } /** * 更新员工 * - * @param employee */ @Transactional(rollbackFor = Throwable.class) public void updateEmployee(EmployeeEntity employee, List roleIdList) { @@ -66,16 +68,14 @@ public class EmployeeManager extends ServiceImpl { /** * 更新员工角色 - * - * @param employeeId - * @param roleEmployeeList */ @Transactional(rollbackFor = Throwable.class) public void updateEmployeeRole(Long employeeId, List roleEmployeeList) { - roleEmployeeManager.getBaseMapper().deleteByEmployeeId(employeeId); + + roleEmployeeDao.deleteByEmployeeId(employeeId); if (CollectionUtils.isNotEmpty(roleEmployeeList)) { - roleEmployeeManager.saveBatch(roleEmployeeList); + roleEmployeeService.batchInsert(roleEmployeeList); } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeePermissionService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeePermissionService.java deleted file mode 100644 index 3e6a0297..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeePermissionService.java +++ /dev/null @@ -1,81 +0,0 @@ -package net.lab1024.sa.admin.module.system.employee.service; - -import net.lab1024.sa.admin.module.system.menu.constant.MenuPermsTypeEnum; -import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO; -import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService; -import net.lab1024.sa.admin.module.system.role.service.RoleMenuService; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.stereotype.Service; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * 员工权限校验 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2021-12-29 21:52:46 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Service -public class EmployeePermissionService { - - @Autowired - private RoleEmployeeService roleEmployeeService; - - @Autowired - private RoleMenuService roleMenuService; - - /** - * 构建权限集合 - * - * @param menuAndPointsList - */ - public Set buildAuthorities(List menuAndPointsList) { - HashSet permissionList = new HashSet<>(); - for (MenuVO menu : menuAndPointsList) { - if(menu.getPermsType() == null){ - continue; - } - - String perms = null; - if(menu.getPermsType().equals(MenuPermsTypeEnum.SPRING_SECURITY.getValue())){ - perms = menu.getWebPerms(); - }else{ - perms = menu.getApiPerms(); - } - - if (StringUtils.isEmpty(perms)) { - continue; - } - //接口权限 - String[] split = perms.split(","); - for (String perm : split) { - permissionList.add(perm); - } - } - - Set authorities = new HashSet<>(); - authorities.addAll(permissionList.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toSet())); - return authorities; - } - - /** - * 查询用户拥有的前端菜单项 用于登陆返回 前端动态路由配置 - * - * @param employeeId - * @return - */ - public List getEmployeeMenuAndPointsList(Long employeeId, Boolean administratorFlag) { - List roleIdList = roleEmployeeService.getRoleIdList(employeeId); - return roleMenuService.getMenuList(roleIdList, administratorFlag); - } - -} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java index a315397d..1f734cb8 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java @@ -1,5 +1,6 @@ package net.lab1024.sa.admin.module.system.employee.service; +import cn.dev33.satoken.stp.StpUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; import net.lab1024.sa.admin.module.system.department.dao.DepartmentDao; @@ -13,19 +14,19 @@ import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO; import net.lab1024.sa.admin.module.system.employee.manager.EmployeeManager; import net.lab1024.sa.admin.module.system.role.dao.RoleEmployeeDao; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleEmployeeVO; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.token.TokenService; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.securityprotect.service.ProtectPasswordService; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.RandomStringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; @@ -36,31 +37,30 @@ import java.util.stream.Collectors; * @Date 2021-12-29 21:52:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class EmployeeService { private static final String PASSWORD_SALT_FORMAT = "smart_%s_admin_$^&*"; - @Autowired + @Resource private EmployeeDao employeeDao; - @Autowired + @Resource private DepartmentDao departmentDao; - @Autowired + @Resource private EmployeeManager employeeManager; - @Autowired + @Resource private RoleEmployeeDao roleEmployeeDao; - @Autowired + @Resource private DepartmentService departmentService; - @Autowired - private TokenService tokenService; - + @Resource + private ProtectPasswordService protectPasswordService; public EmployeeEntity getById(Long employeeId) { return employeeDao.selectById(employeeId); @@ -70,8 +70,6 @@ public class EmployeeService { /** * 查询员工列表 * - * @param employeeQueryForm - * @return */ public ResponseDTO> queryEmployee(EmployeeQueryForm employeeQueryForm) { employeeQueryForm.setDeletedFlag(false); @@ -84,8 +82,8 @@ public class EmployeeService { List employeeList = employeeDao.queryEmployee(pageParam, employeeQueryForm, departmentIdList); if (CollectionUtils.isEmpty(employeeList)) { - PageResult PageResult = SmartPageUtil.convert2PageResult(pageParam, employeeList); - return ResponseDTO.ok(PageResult); + PageResult pageResult = SmartPageUtil.convert2PageResult(pageParam, employeeList); + return ResponseDTO.ok(pageResult); } List employeeIdList = employeeList.stream().map(EmployeeVO::getEmployeeId).collect(Collectors.toList()); @@ -99,15 +97,13 @@ public class EmployeeService { e.setRoleNameList(employeeRoleNameListMap.getOrDefault(e.getEmployeeId(), Lists.newArrayList())); e.setDepartmentName(departmentService.getDepartmentPath(e.getDepartmentId())); }); - PageResult PageResult = SmartPageUtil.convert2PageResult(pageParam, employeeList); - return ResponseDTO.ok(PageResult); + PageResult pageResult = SmartPageUtil.convert2PageResult(pageParam, employeeList); + return ResponseDTO.ok(pageResult); } /** * 新增员工 * - * @param employeeAddForm - * @return */ public synchronized ResponseDTO addEmployee(EmployeeAddForm employeeAddForm) { // 校验名称是否重复 @@ -133,8 +129,9 @@ public class EmployeeService { } EmployeeEntity entity = SmartBeanUtil.copy(employeeAddForm, EmployeeEntity.class); + // 设置密码 默认密码 - String password = randomPassword(); + String password = protectPasswordService.randomPassword(); entity.setLoginPwd(getEncryptPwd(password)); // 保存数据 @@ -147,8 +144,6 @@ public class EmployeeService { /** * 更新员工 * - * @param employeeUpdateForm - * @return */ public synchronized ResponseDTO updateEmployee(EmployeeUpdateForm employeeUpdateForm) { @@ -194,8 +189,6 @@ public class EmployeeService { /** * 更新禁用/启用状态 * - * @param employeeId - * @return */ public ResponseDTO updateDisableFlag(Long employeeId) { if (null == employeeId) { @@ -205,13 +198,11 @@ public class EmployeeService { if (null == employeeEntity) { return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST); } - - boolean disableFlag=!employeeEntity.getDisabledFlag(); - employeeEntity.setDisabledFlag(disableFlag); - employeeDao.updateDisableFlag(employeeId, disableFlag); + employeeDao.updateDisableFlag(employeeId, !employeeEntity.getDisabledFlag()); if (employeeEntity.getDisabledFlag()) { - tokenService.batchRemoveRedisToken(employeeId, UserTypeEnum.ADMIN_EMPLOYEE); + // 强制退出登录 + StpUtil.logout(UserTypeEnum.ADMIN_EMPLOYEE.getValue() + StringConst.COLON + employeeId); } return ResponseDTO.ok(); @@ -220,8 +211,6 @@ public class EmployeeService { /** * 批量删除员工 * - * @param employeeIdList 员工ID列表 - * @return */ public ResponseDTO batchUpdateDeleteFlag(List employeeIdList) { if (CollectionUtils.isEmpty(employeeIdList)) { @@ -241,7 +230,8 @@ public class EmployeeService { employeeManager.updateBatchById(deleteList); for (Long employeeId : employeeIdList) { - tokenService.batchRemoveRedisToken(employeeId, UserTypeEnum.ADMIN_EMPLOYEE); + // 强制退出登录 + StpUtil.logout(UserTypeEnum.ADMIN_EMPLOYEE.getValue() + StringConst.COLON + employeeId); } return ResponseDTO.ok(); } @@ -250,8 +240,6 @@ public class EmployeeService { /** * 批量更新部门 * - * @param batchUpdateDepartmentForm - * @return */ public ResponseDTO batchUpdateDepartment(EmployeeBatchUpdateDepartmentForm batchUpdateDepartmentForm) { List employeeIdList = batchUpdateDepartmentForm.getEmployeeIdList(); @@ -275,8 +263,6 @@ public class EmployeeService { /** * 更新密码 * - * @param updatePasswordForm - * @return */ public ResponseDTO updatePassword(EmployeeUpdatePasswordForm updatePasswordForm) { Long employeeId = updatePasswordForm.getEmployeeId(); @@ -293,7 +279,13 @@ public class EmployeeService { // 新旧密码相同 String newPassword = updatePasswordForm.getNewPassword(); if (Objects.equals(updatePasswordForm.getOldPassword(), newPassword)) { - return ResponseDTO.ok(); + return ResponseDTO.userErrorParam("新密码与原始密码相同,请重新输入"); + } + + // 校验密码复杂度 + ResponseDTO validatePassComplexity = protectPasswordService.validatePassComplexity(newPassword); + if (!validatePassComplexity.getOk()) { + return validatePassComplexity; } // 更新密码 @@ -308,8 +300,6 @@ public class EmployeeService { /** * 获取某个部门的员工信息 * - * @param departmentId - * @return */ public ResponseDTO> getAllEmployeeByDepartmentId(Long departmentId, Boolean disabledFlag) { List employeeEntityList = employeeDao.selectByDepartmentId(departmentId, disabledFlag); @@ -337,24 +327,16 @@ public class EmployeeService { /** * 重置密码 * - * @param employeeId - * @return */ public ResponseDTO resetPassword(Integer employeeId) { - String password = randomPassword(); + String password = protectPasswordService.randomPassword(); employeeDao.updatePassword(employeeId, getEncryptPwd(password)); return ResponseDTO.ok(password); } - private String randomPassword() { - return RandomStringUtils.randomNumeric(6) + RandomStringUtils.randomAlphabetic(2).toLowerCase(); - } - /** * 获取 加密后 的密码 * - * @param password - * @return */ public static String getEncryptPwd(String password) { return DigestUtils.md5Hex(String.format(PASSWORD_SALT_FORMAT, password)); @@ -364,7 +346,6 @@ public class EmployeeService { /** * 查询全部员工 * - * @return */ public ResponseDTO> queryAllEmployee(Boolean disabledFlag) { List employeeList = employeeDao.selectEmployeeByDisabledAndDeleted(disabledFlag, Boolean.FALSE); @@ -374,14 +355,9 @@ public class EmployeeService { /** * 根据登录名获取员工 * - * @param loginName - * @return */ public EmployeeEntity getByLoginName(String loginName) { return employeeDao.getByLoginName(loginName, null); } - public static void main(String[] args) { - System.out.println(getEncryptPwd("123456")); - } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java index 1d28888d..06d940bd 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java @@ -1,25 +1,21 @@ package net.lab1024.sa.admin.module.system.login.controller; import cn.hutool.extra.servlet.ServletUtil; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; -import net.lab1024.sa.admin.module.system.login.domain.LoginEmployeeDetail; import net.lab1024.sa.admin.module.system.login.domain.LoginForm; +import net.lab1024.sa.admin.module.system.login.domain.LoginResultVO; import net.lab1024.sa.admin.module.system.login.service.LoginService; -import net.lab1024.sa.common.common.annoation.NoNeedLogin; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.constant.RequestHeaderConst; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.captcha.domain.CaptchaVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; +import net.lab1024.sa.admin.util.AdminRequestUtil; +import net.lab1024.sa.base.common.annoation.NoNeedLogin; +import net.lab1024.sa.base.common.constant.RequestHeaderConst; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.module.support.captcha.domain.CaptchaVO; import org.springframework.web.bind.annotation.*; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; @@ -30,57 +26,37 @@ import javax.validation.Valid; * @Date 2021-12-15 21:05:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @RestController -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_LOGIN}) +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_LOGIN) public class LoginController { - @Autowired + @Resource private LoginService loginService; @NoNeedLogin @PostMapping("/login") - @ApiOperation("登录 @author 卓大") - public ResponseDTO login(@Valid @RequestBody LoginForm loginForm) { - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + @Operation(summary = "登录 @author 卓大") + public ResponseDTO login(@Valid @RequestBody LoginForm loginForm, HttpServletRequest request) { String ip = ServletUtil.getClientIP(request); String userAgent = ServletUtil.getHeaderIgnoreCase(request, RequestHeaderConst.USER_AGENT); return loginService.login(loginForm, ip, userAgent); } - @GetMapping("/login/refresh") - @ApiOperation("刷新用户信息(包含用户基础信息、权限信息等等) @author 卓大") - public ResponseDTO refresh() { - loginService.removeLoginUserDetailCache(SmartRequestUtil.getRequestUserId()); - return ResponseDTO.ok(); - } - @GetMapping("/login/getLoginInfo") - @ApiOperation("获取登录结果信息 @author 卓大") - public ResponseDTO getLoginInfo() { - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - if (authentication == null) { - return ResponseDTO.error(UserErrorCode.LOGIN_STATE_INVALID); - } - - Object principal = authentication.getPrincipal(); - if (!(principal instanceof LoginEmployeeDetail)) { - return ResponseDTO.error(UserErrorCode.LOGIN_STATE_INVALID); - } - - LoginEmployeeDetail loginEmployeeDetail = (LoginEmployeeDetail) authentication.getPrincipal(); - loginEmployeeDetail.setLoginPassword(null); - return ResponseDTO.ok(loginEmployeeDetail); + @Operation(summary = "获取登录结果信息 @author 卓大") + public ResponseDTO getLoginInfo() { + return ResponseDTO.ok(loginService.getLoginResult(AdminRequestUtil.getRequestUser())); } - @ApiOperation("退出登陆 @author 卓大") + @Operation(summary = "退出登陆 @author 卓大") @GetMapping("/login/logout") public ResponseDTO logout(@RequestHeader(value = RequestHeaderConst.TOKEN, required = false) String token) { return loginService.logout(token, SmartRequestUtil.getRequestUser()); } - @ApiOperation("获取验证码 @author 卓大") + @Operation(summary = "获取验证码 @author 卓大") @GetMapping("/login/getCaptcha") @NoNeedLogin public ResponseDTO getCaptcha() { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginEmployeeDetail.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginEmployeeDetail.java deleted file mode 100644 index a8be6eef..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginEmployeeDetail.java +++ /dev/null @@ -1,165 +0,0 @@ -package net.lab1024.sa.admin.module.system.login.domain; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.enumeration.GenderEnum; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.userdetails.UserDetails; - -import java.time.LocalDateTime; -import java.util.Collection; -import java.util.List; -import java.util.Set; - -/** - * 员工登录 - * - * @Author 1024创新实验室: 善逸 - * @Date 2021/8/4 21:15 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 - */ -@Data -public class LoginEmployeeDetail implements UserDetails, RequestUser { - - @ApiModelProperty("token") - private String token; - - @ApiModelProperty("员工id") - private Long employeeId; - - @ApiModelPropertyEnum(UserTypeEnum.class) - private UserTypeEnum userType; - - @ApiModelProperty("登录账号") - private String loginName; - - @ApiModelProperty("员工名称") - private String actualName; - - @ApiModelPropertyEnum(GenderEnum.class) - private Integer gender; - - @ApiModelProperty("手机号码") - private String phone; - - @ApiModelProperty("部门id") - private Long departmentId; - - @ApiModelProperty("部门名称") - private String departmentName; - - @ApiModelProperty("是否为超管") - private Boolean administratorFlag; - - @ApiModelProperty("菜单列表") - private List menuList; - - @JsonIgnore - private String loginPassword; - - @ApiModelProperty("上次登录id") - private String lastLoginIp; - - @ApiModelProperty("上次登录user-agent") - private String lastLoginUserAgent; - - @ApiModelProperty("上次登录时间") - private LocalDateTime lastLoginTime; - - @ApiModelProperty("请求ip") - private String ip; - - @ApiModelProperty("请求user-agent") - private String userAgent; - - /** - * security 权限串 - */ - private Set authorities; - - @Override - public Collection getAuthorities() { - return authorities; - } - - @Override - @JsonIgnore - public String getPassword() { - return this.loginPassword; - } - - @Override - public String getUsername() { - return this.getLoginName(); - } - - /** - * 账户是否未过期,过期无法验证 - */ - @Override - public boolean isAccountNonExpired() { - return true; - } - - /** - * 指定用户是否解锁,锁定的用户无法进行身份验证 - * - * @return - */ - @Override - public boolean isAccountNonLocked() { - return true; - } - - /** - * 指示是否已过期的用户的凭据(密码),过期的凭据防止认证 - * - * @return - */ - @Override - public boolean isCredentialsNonExpired() { - return true; - } - - /** - * 是否可用 ,禁用的用户不能身份验证 - * - * @return - */ - @Override - public boolean isEnabled() { - return true; - } - - @Override - public Long getUserId() { - return employeeId; - } - - @Override - public String getUserName() { - return actualName; - } - - @Override - public UserTypeEnum getUserType() { - return userType; - } - - @Override - public String getIp() { - return this.ip; - } - - @Override - public String getUserAgent() { - return this.userAgent; - } -} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginForm.java index c7e9ffb3..207120c4 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginForm.java @@ -1,16 +1,14 @@ package net.lab1024.sa.admin.module.system.login.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.util.SmartVerificationUtil; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.captcha.domain.CaptchaForm; -import net.lab1024.sa.common.module.support.token.LoginDeviceEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.captcha.domain.CaptchaForm; +import net.lab1024.sa.base.constant.LoginDeviceEnum; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Pattern; /** * 员工登录 @@ -19,23 +17,21 @@ import javax.validation.constraints.Pattern; * @Date 2021-12-19 11:49:45 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class LoginForm extends CaptchaForm { - @ApiModelProperty("登录名") - @NotBlank(message = "登录名不能为空") + @Schema(description = "登录账号") + @NotBlank(message = "登录账号不能为空") @Length(max = 30, message = "登录账号最多30字符") private String loginName; - @ApiModelProperty("密码") + @Schema(description = "密码") @NotBlank(message = "密码不能为空") - @Pattern(regexp = SmartVerificationUtil.PWD_REGEXP, message = "请输入6-15位密码(数字|大小写字母|小数点)") private String password; - @ApiModelProperty(value = "登录终端") - @ApiModelPropertyEnum(LoginDeviceEnum.class) + @SchemaEnum(desc = "登录终端", value = LoginDeviceEnum.class) @CheckEnum(value = LoginDeviceEnum.class, required = true, message = "此终端不允许登录") private Integer loginDevice; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginResultVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginResultVO.java new file mode 100644 index 00000000..4bcd0cbc --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/LoginResultVO.java @@ -0,0 +1,41 @@ +package net.lab1024.sa.admin.module.system.login.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO; +import net.minidev.json.annotate.JsonIgnore; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 登录结果信息 + * + * @Author 1024创新实验室: 开云 + * @Date 2021-12-19 11:49:45 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class LoginResultVO extends RequestEmployee { + + @Schema(description = "token") + private String token; + + @Schema(description = "菜单列表") + private List menuList; + + @Schema(description = "上次登录ip") + private String lastLoginIp; + + @Schema(description = "上次登录ip地区") + private String lastLoginIpRegion; + + @Schema(description = "上次登录user-agent") + private String lastLoginUserAgent; + + @Schema(description = "上次登录时间") + private LocalDateTime lastLoginTime; + +} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/RequestEmployee.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/RequestEmployee.java new file mode 100644 index 00000000..600d8fc9 --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/domain/RequestEmployee.java @@ -0,0 +1,64 @@ +package net.lab1024.sa.admin.module.system.login.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.enumeration.GenderEnum; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; + +/** + * 请求员工登录信息 + * + * @Author 1024创新实验室: 善逸 + * @Date 2021/8/4 21:15 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class RequestEmployee implements RequestUser { + + @Schema(description = "员工id") + private Long employeeId; + + @SchemaEnum(UserTypeEnum.class) + private UserTypeEnum userType; + + @Schema(description = "登录账号") + private String loginName; + + @Schema(description = "员工名称") + private String actualName; + + @SchemaEnum(GenderEnum.class) + private Integer gender; + + @Schema(description = "手机号码") + private String phone; + + @Schema(description = "部门id") + private Long departmentId; + + @Schema(description = "部门名称") + private String departmentName; + + @Schema(description = "是否为超管") + private Boolean administratorFlag; + + @Schema(description = "请求ip") + private String ip; + + @Schema(description = "请求user-agent") + private String userAgent; + + @Override + public Long getUserId() { + return employeeId; + } + + @Override + public String getUserName() { + return actualName; + } +} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java index 95dafbe6..a3071704 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java @@ -1,84 +1,119 @@ package net.lab1024.sa.admin.module.system.login.service; +import cn.dev33.satoken.stp.StpInterface; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.lang.UUID; import cn.hutool.extra.servlet.ServletUtil; import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO; import net.lab1024.sa.admin.module.system.department.service.DepartmentService; import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; -import net.lab1024.sa.admin.module.system.employee.service.EmployeePermissionService; import net.lab1024.sa.admin.module.system.employee.service.EmployeeService; -import net.lab1024.sa.admin.module.system.login.domain.LoginEmployeeDetail; import net.lab1024.sa.admin.module.system.login.domain.LoginForm; +import net.lab1024.sa.admin.module.system.login.domain.LoginResultVO; +import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee; import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO; -import net.lab1024.sa.common.common.constant.RequestHeaderConst; -import net.lab1024.sa.common.common.constant.StringConst; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartEnumUtil; -import net.lab1024.sa.common.module.support.captcha.CaptchaService; -import net.lab1024.sa.common.module.support.captcha.domain.CaptchaVO; -import net.lab1024.sa.common.module.support.config.ConfigKeyEnum; -import net.lab1024.sa.common.module.support.config.ConfigService; -import net.lab1024.sa.common.module.support.loginlog.LoginLogResultEnum; -import net.lab1024.sa.common.module.support.loginlog.LoginLogService; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogEntity; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogVO; -import net.lab1024.sa.common.module.support.token.LoginDeviceEnum; -import net.lab1024.sa.common.module.support.token.TokenService; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO; +import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService; +import net.lab1024.sa.admin.module.system.role.service.RoleMenuService; +import net.lab1024.sa.base.common.code.ErrorCode; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.constant.RequestHeaderConst; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.UserPermission; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.common.util.SmartIpUtil; +import net.lab1024.sa.base.constant.LoginDeviceEnum; +import net.lab1024.sa.base.module.support.captcha.CaptchaService; +import net.lab1024.sa.base.module.support.captcha.domain.CaptchaVO; +import net.lab1024.sa.base.module.support.config.ConfigKeyEnum; +import net.lab1024.sa.base.module.support.config.ConfigService; +import net.lab1024.sa.base.module.support.loginlog.LoginLogResultEnum; +import net.lab1024.sa.base.module.support.loginlog.LoginLogService; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogEntity; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogVO; +import net.lab1024.sa.base.module.support.securityprotect.service.ProtectLoginService; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailEntity; +import net.lab1024.sa.base.module.support.securityprotect.service.ProtectPasswordService; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.time.LocalDateTime; -import java.util.List; +import java.util.*; import java.util.concurrent.ConcurrentMap; +import java.util.stream.Collectors; /** - * 员工 登录服务 + * 登录 * * @Author 1024创新实验室: 开云 * @Date 2021-12-01 22:56:34 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Slf4j @Service -public class LoginService { +public class LoginService implements StpInterface { - @Autowired - private EmployeeService employeeService; + /** + * 万能密码的 sa token loginId 前缀 + */ + private static final String SUPER_PASSWORD_LOGIN_ID_PREFIX = "S"; - @Autowired - private DepartmentService departmentService; - - @Autowired - private TokenService tokenService; - - @Autowired - private CaptchaService captchaService; - - @Autowired - private EmployeePermissionService employeePermissionService; - - @Autowired - private ConfigService configService; - - @Autowired - private LoginLogService loginLogService; + /** + * 最大在线缓存人数 + */ + private static final long CACHE_MAX_ONLINE_PERSON_COUNT = 1000L; /** * 登录信息二级缓存 */ - private ConcurrentMap loginUserDetailCache = new ConcurrentLinkedHashMap.Builder().maximumWeightedCapacity(1000).build(); + private final ConcurrentMap loginEmployeeCache = new ConcurrentLinkedHashMap.Builder().maximumWeightedCapacity(CACHE_MAX_ONLINE_PERSON_COUNT).build(); + + + /** + * 权限 缓存 + */ + private final ConcurrentMap permissionCache = new ConcurrentLinkedHashMap.Builder().maximumWeightedCapacity(CACHE_MAX_ONLINE_PERSON_COUNT).build(); + + @Resource + private EmployeeService employeeService; + + @Resource + private DepartmentService departmentService; + + @Resource + private CaptchaService captchaService; + + @Resource + private ConfigService configService; + + @Resource + private LoginLogService loginLogService; + + @Resource + private RoleEmployeeService roleEmployeeService; + + @Resource + private RoleMenuService roleMenuService; + + @Resource + private ProtectLoginService protectLoginService; + + @Resource + private ProtectPasswordService profectPasswordService; /** * 获取验证码 * - * @return */ public ResponseDTO getCaptcha() { return ResponseDTO.ok(captchaService.generateCaptcha()); @@ -87,23 +122,22 @@ public class LoginService { /** * 员工登陆 * - * @param loginForm * @return 返回用户登录信息 */ - public ResponseDTO login(LoginForm loginForm, String ip, String userAgent) { + public ResponseDTO login(LoginForm loginForm, String ip, String userAgent) { + LoginDeviceEnum loginDeviceEnum = SmartEnumUtil.getEnumByValue(loginForm.getLoginDevice(), LoginDeviceEnum.class); if (loginDeviceEnum == null) { return ResponseDTO.userErrorParam("登录设备暂不支持!"); } + // 校验 图形验证码 ResponseDTO checkCaptcha = captchaService.checkCaptcha(loginForm); if (!checkCaptcha.getOk()) { - return ResponseDTO.error(checkCaptcha); + return ResponseDTO.error(UserErrorCode.PARAM_ERROR,checkCaptcha.getMsg()); } - /** - * 验证账号和账号状态 - */ + // 验证账号和账号状态 EmployeeEntity employeeEntity = employeeService.getByLoginName(loginForm.getLoginName()); if (null == employeeEntity) { return ResponseDTO.userErrorParam("登录名不存在!"); @@ -113,83 +147,209 @@ public class LoginService { saveLoginLog(employeeEntity, ip, userAgent, "账号已禁用", LoginLogResultEnum.LOGIN_FAIL); return ResponseDTO.userErrorParam("您的账号已被禁用,请联系工作人员!"); } - /** - * 验证密码: - * 1、万能密码 - * 2、真实密码 - */ - String superPassword = EmployeeService.getEncryptPwd(configService.getConfigValue(ConfigKeyEnum.SUPER_PASSWORD)); - String requestPassword = EmployeeService.getEncryptPwd(loginForm.getPassword()); - if (!(superPassword.equals(requestPassword) || employeeEntity.getLoginPwd().equals(requestPassword))) { - saveLoginLog(employeeEntity, ip, userAgent, "密码错误", LoginLogResultEnum.LOGIN_FAIL); - return ResponseDTO.userErrorParam("登录名或密码错误!"); + + // 按照等保要求进行登录校验 + ResponseDTO loginFailEntityResponseDTO = protectLoginService.checkLogin(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE); + if (!loginFailEntityResponseDTO.getOk()) { + return ResponseDTO.error(loginFailEntityResponseDTO); } - // 生成 登录token,保存token - Boolean superPasswordFlag = superPassword.equals(requestPassword); - String token = tokenService.generateToken(employeeEntity.getEmployeeId(), employeeEntity.getActualName(), UserTypeEnum.ADMIN_EMPLOYEE, loginDeviceEnum, superPasswordFlag); + // 解密前端加密的密码 + loginForm.setPassword(profectPasswordService.decryptSm2Password(loginForm.getPassword())); - //获取员工登录信息 - LoginEmployeeDetail loginEmployeeDetail = loadLoginInfo(employeeEntity); - loginEmployeeDetail.setToken(token); + // 验证密码: 1、万能密码 或者 2、真实密码 + String superPassword = EmployeeService.getEncryptPwd(configService.getConfigValue(ConfigKeyEnum.SUPER_PASSWORD)); + String requestPassword = EmployeeService.getEncryptPwd(loginForm.getPassword()); + boolean superPasswordFlag = superPassword.equals(requestPassword); + if (!(superPasswordFlag || employeeEntity.getLoginPwd().equals(requestPassword))) { + // 记录登录失败 + saveLoginLog(employeeEntity, ip, userAgent, "密码错误", LoginLogResultEnum.LOGIN_FAIL); + // 记录等级保护次数 + String msg = protectLoginService.recordLoginFail(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE, employeeEntity.getLoginName(), loginFailEntityResponseDTO.getData()); + return msg == null ? ResponseDTO.userErrorParam("登录名或密码错误!") : ResponseDTO.error(UserErrorCode.LOGIN_FAIL_WILL_LOCK, msg); + } + + // 生成 sa-token的 loginId,对于万能密码:受限制sa token 要求loginId唯一,万能密码只能插入一段uuid + String saTokenLoginId = null; + if (superPasswordFlag) { + saTokenLoginId = SUPER_PASSWORD_LOGIN_ID_PREFIX + StringConst.COLON + UUID.randomUUID().toString().replace("-", "") + StringConst.COLON + employeeEntity.getEmployeeId(); + } else { + saTokenLoginId = UserTypeEnum.ADMIN_EMPLOYEE.getValue() + StringConst.COLON + employeeEntity.getEmployeeId(); + } + + // 登录 + StpUtil.login(saTokenLoginId, String.valueOf(loginDeviceEnum.getDesc())); + + // 获取员工信息 + RequestEmployee requestEmployee = loadLoginInfo(employeeEntity); // 放入缓存 - loginUserDetailCache.put(employeeEntity.getEmployeeId(), loginEmployeeDetail); + loginEmployeeCache.put(employeeEntity.getEmployeeId(), requestEmployee); //保存登录记录 saveLoginLog(employeeEntity, ip, userAgent, superPasswordFlag ? "万能密码登录" : loginDeviceEnum.getDesc(), LoginLogResultEnum.LOGIN_SUCCESS); - return ResponseDTO.ok(loginEmployeeDetail); + // 移除登录失败 + protectLoginService.removeLoginFail(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE); + + // 获取登录结果信息 + LoginResultVO loginResultVO = getLoginResult(requestEmployee); + + // 设置 token + loginResultVO.setToken(StpUtil.getTokenValue()); + + // 清除权限缓存 + permissionCache.remove(employeeEntity.getEmployeeId()); + + return ResponseDTO.ok(loginResultVO); + } + + + /** + * 获取登录结果信息 + * + */ + public LoginResultVO getLoginResult(RequestEmployee requestEmployee) { + + // 基础信息xde2 + LoginResultVO loginResultVO = SmartBeanUtil.copy(requestEmployee, LoginResultVO.class); + + // 前端菜单和功能点清单 + List roleList = roleEmployeeService.getRoleIdList(requestEmployee.getEmployeeId()); + List menuAndPointsList = roleMenuService.getMenuList(roleList.stream().map(RoleVO::getRoleId).collect(Collectors.toList()), requestEmployee.getAdministratorFlag()); + loginResultVO.setMenuList(menuAndPointsList); + + // 更新下后端权限缓存 + UserPermission userPermission = getUserPermission(requestEmployee.getUserId()); + permissionCache.put(requestEmployee.getUserId(), userPermission); + + // 上次登录信息 + LoginLogVO loginLogVO = loginLogService.queryLastByUserId(requestEmployee.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE); + if (loginLogVO != null) { + loginResultVO.setLastLoginIp(loginLogVO.getLoginIp()); + loginResultVO.setLastLoginIpRegion(loginLogVO.getLoginIpRegion()); + loginResultVO.setLastLoginTime(loginLogVO.getCreateTime()); + loginResultVO.setLastLoginUserAgent(loginLogVO.getUserAgent()); + } + + return loginResultVO; } /** * 获取登录的用户信息 * - * @return */ - private LoginEmployeeDetail loadLoginInfo(EmployeeEntity employeeEntity) { - LoginEmployeeDetail loginEmployeeDetail = SmartBeanUtil.copy(employeeEntity, LoginEmployeeDetail.class); - loginEmployeeDetail.setUserType(UserTypeEnum.ADMIN_EMPLOYEE); + private RequestEmployee loadLoginInfo(EmployeeEntity employeeEntity) { - //部门信息 + // 基础信息 + RequestEmployee requestEmployee = SmartBeanUtil.copy(employeeEntity, RequestEmployee.class); + requestEmployee.setUserType(UserTypeEnum.ADMIN_EMPLOYEE); + + // 部门信息 DepartmentVO department = departmentService.getDepartmentById(employeeEntity.getDepartmentId()); - loginEmployeeDetail.setDepartmentName(null == department ? StringConst.EMPTY : department.getName()); + requestEmployee.setDepartmentName(null == department ? StringConst.EMPTY : department.getName()); - /** - * 获取前端菜单和后端权限 - * 1、从数据库获取所有的权限 - * 2、拼凑成菜单和后端权限 - */ - List menuAndPointsList = employeePermissionService.getEmployeeMenuAndPointsList(employeeEntity.getEmployeeId(), employeeEntity.getAdministratorFlag()); - //前端菜单 - loginEmployeeDetail.setMenuList(menuAndPointsList); - //后端权限 - loginEmployeeDetail.setAuthorities(employeePermissionService.buildAuthorities(menuAndPointsList)); + return requestEmployee; + } - //上次登录信息 - LoginLogVO loginLogVO = loginLogService.queryLastByUserId(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE); - if (loginLogVO != null) { - loginEmployeeDetail.setLastLoginIp(loginLogVO.getLoginIp()); - loginEmployeeDetail.setLastLoginTime(loginLogVO.getCreateTime()); - loginEmployeeDetail.setLastLoginUserAgent(loginLogVO.getUserAgent()); + + /** + * 根据登陆token 获取员请求工信息 + */ + public RequestEmployee getLoginEmployee(String loginId, HttpServletRequest request) { + if (loginId == null) { + return null; } - return loginEmployeeDetail; + Long requestEmployeeId = getEmployeeIdByLoginId(loginId); + if (requestEmployeeId == null) { + return null; + } + + RequestEmployee requestEmployee = loginEmployeeCache.get(requestEmployeeId); + if (requestEmployee == null) { + // 员工基本信息 + EmployeeEntity employeeEntity = employeeService.getById(requestEmployeeId); + if (employeeEntity == null) { + return null; + } + + requestEmployee = this.loadLoginInfo(employeeEntity); + loginEmployeeCache.put(requestEmployeeId, requestEmployee); + } + + // 更新请求ip和user agent + requestEmployee.setUserAgent(ServletUtil.getHeaderIgnoreCase(request, RequestHeaderConst.USER_AGENT)); + requestEmployee.setIp(ServletUtil.getClientIP(request)); + + return requestEmployee; + } + + /** + * 根据 loginId 获取 员工id + * + */ + Long getEmployeeIdByLoginId(String loginId) { + + if (loginId == null) { + return null; + } + + try { + // 如果是 万能密码 登录的用户 + String employeeIdStr = null; + if (loginId.startsWith(SUPER_PASSWORD_LOGIN_ID_PREFIX)) { + employeeIdStr = loginId.split(StringConst.COLON)[2]; + } else { + employeeIdStr = loginId.substring(2); + } + + return Long.parseLong(employeeIdStr); + } catch (Exception e) { + log.error("loginId parse error , loginId : {}", loginId, e); + return null; + } + } + + + /** + * 退出登录 + * + */ + public ResponseDTO logout(String token, RequestUser requestUser) { + + // sa token 登出 + StpUtil.logoutByTokenValue(token); + + // 清空登录信息缓存 + loginEmployeeCache.remove(requestUser.getUserId()); + + //保存登出日志 + LoginLogEntity loginEntity = LoginLogEntity.builder() + .userId(requestUser.getUserId()) + .userType(requestUser.getUserType().getValue()) + .userName(requestUser.getUserName()) + .userAgent(requestUser.getUserAgent()) + .loginIp(requestUser.getIp()) + .loginIpRegion(SmartIpUtil.getRegion(requestUser.getIp())) + .loginResult(LoginLogResultEnum.LOGIN_OUT.getValue()) + .createTime(LocalDateTime.now()) + .build(); + loginLogService.log(loginEntity); + + return ResponseDTO.ok(); } /** * 保存登录日志 * - * @param employeeEntity - * @param ip - * @param userAgent */ private void saveLoginLog(EmployeeEntity employeeEntity, String ip, String userAgent, String remark, LoginLogResultEnum result) { LoginLogEntity loginEntity = LoginLogEntity.builder() .userId(employeeEntity.getEmployeeId()) .userType(UserTypeEnum.ADMIN_EMPLOYEE.getValue()) - .userName(employeeEntity.getActualName()) + .userName(employeeEntity.getLoginName()) .userAgent(userAgent) .loginIp(ip) .remark(remark) @@ -200,74 +360,73 @@ public class LoginService { } - /** - * 移除用户信息缓存 - * - * @param requestUserId - */ - public void removeLoginUserDetailCache(Long requestUserId) { - loginUserDetailCache.remove(requestUserId); + @Override + public List getPermissionList(Object loginId, String loginType) { + Long employeeId = this.getEmployeeIdByLoginId((String) loginId); + if (employeeId == null) { + return Collections.emptyList(); + } + + UserPermission userPermission = permissionCache.get(employeeId); + if (userPermission == null) { + userPermission = getUserPermission(employeeId); + permissionCache.put(employeeId, userPermission); + } + + return userPermission.getPermissionList(); + } + + @Override + public List getRoleList(Object loginId, String loginType) { + Long employeeId = this.getEmployeeIdByLoginId((String) loginId); + if (employeeId == null) { + return Collections.emptyList(); + } + + UserPermission userPermission = permissionCache.get(employeeId); + if (userPermission == null) { + userPermission = getUserPermission(employeeId); + permissionCache.put(employeeId, userPermission); + } + return userPermission.getRoleList(); } /** - * 根据登陆token 获取员请求工信息 + * 获取用户的权限(包含 角色列表、权限列表) * - * @param - * @return */ - public LoginEmployeeDetail getLoginUserDetail(String token, HttpServletRequest request) { - Long requestUserId = tokenService.getUserIdAndValidateToken(token); - if (requestUserId == null) { - return null; - } - // 查询用户信息 - LoginEmployeeDetail loginEmployeeDetail = loginUserDetailCache.get(requestUserId); - if (loginEmployeeDetail == null) { - // 员工基本信息 - EmployeeEntity employeeEntity = employeeService.getById(requestUserId); - if (employeeEntity == null) { - return null; + private UserPermission getUserPermission(Long employeeId) { + + UserPermission userPermission = new UserPermission(); + userPermission.setPermissionList(new ArrayList<>()); + userPermission.setRoleList(new ArrayList<>()); + + // 角色列表 + List roleList = roleEmployeeService.getRoleIdList(employeeId); + userPermission.getRoleList().addAll(roleList.stream().map(RoleVO::getRoleCode).collect(Collectors.toSet())); + + // 前端菜单和功能点清单 + EmployeeEntity employeeEntity = employeeService.getById(employeeId); + + List menuAndPointsList = roleMenuService.getMenuList(roleList.stream().map(RoleVO::getRoleId).collect(Collectors.toList()), employeeEntity.getAdministratorFlag()); + + // 权限列表 + HashSet permissionSet = new HashSet<>(); + for (MenuVO menu : menuAndPointsList) { + if (menu.getPermsType() == null) { + continue; } - loginEmployeeDetail = this.loadLoginInfo(employeeEntity); - loginEmployeeDetail.setToken(token); - loginUserDetailCache.put(requestUserId, loginEmployeeDetail); + String perms = menu.getApiPerms(); + if (StringUtils.isEmpty(perms)) { + continue; + } + //接口权限 + String[] split = perms.split(","); + permissionSet.addAll(Arrays.asList(split)); } + userPermission.getPermissionList().addAll(permissionSet); - //更新请求ip和user agent - loginEmployeeDetail.setUserAgent(ServletUtil.getHeaderIgnoreCase(request, RequestHeaderConst.USER_AGENT)); - loginEmployeeDetail.setIp(ServletUtil.getClientIP(request)); - - return loginEmployeeDetail; - } - - - /** - * 退出登陆,清除token缓存 - * - * @return - */ - public ResponseDTO logout(String token, RequestUser requestUser) { - loginUserDetailCache.remove(requestUser.getUserId()); - tokenService.removeToken(token); - //保存登出日志 - saveLogoutLog(requestUser, requestUser.getIp(), requestUser.getUserAgent()); - return ResponseDTO.ok(); - } - - /** - * 保存登出日志 - */ - private void saveLogoutLog(RequestUser requestUser, String ip, String userAgent) { - LoginLogEntity loginEntity = LoginLogEntity.builder() - .userId(requestUser.getUserId()) - .userType(requestUser.getUserType().getValue()) - .userName(requestUser.getUserName()) - .userAgent(userAgent) - .loginIp(ip) - .loginResult(LoginLogResultEnum.LOGIN_OUT.getValue()) - .createTime(LocalDateTime.now()) - .build(); - loginLogService.log(loginEntity); + return userPermission; } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/constant/MenuPermsTypeEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/constant/MenuPermsTypeEnum.java index c277026b..724820b4 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/constant/MenuPermsTypeEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/constant/MenuPermsTypeEnum.java @@ -1,7 +1,7 @@ package net.lab1024.sa.admin.module.system.menu.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 权限类型 @@ -10,23 +10,19 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum MenuPermsTypeEnum implements BaseEnum { /** - * SpringSecurity模式 + * sa-token */ - SPRING_SECURITY(1, "SpringSecurity模式"), - /** - * URL模式 - */ - URL(2, "URL模式"), + SA_TOKEN(1, "Sa-Token模式"), ; - private Integer value; + private final Integer value; - private String desc; + private final String desc; MenuPermsTypeEnum(Integer value, String desc) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/constant/MenuTypeEnum.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/constant/MenuTypeEnum.java index 06c21540..c447443c 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/constant/MenuTypeEnum.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/constant/MenuTypeEnum.java @@ -1,7 +1,7 @@ package net.lab1024.sa.admin.module.system.menu.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 菜单类型枚举 @@ -10,7 +10,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum MenuTypeEnum implements BaseEnum { /** @@ -26,9 +26,9 @@ public enum MenuTypeEnum implements BaseEnum { */ POINTS(3, "功能点"); - private Integer value; + private final Integer value; - private String desc; + private final String desc; MenuTypeEnum(Integer value, String desc) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/controller/MenuController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/controller/MenuController.java index d0b921e7..4c83c242 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/controller/MenuController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/controller/MenuController.java @@ -1,22 +1,21 @@ package net.lab1024.sa.admin.module.system.menu.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.menu.domain.form.MenuAddForm; import net.lab1024.sa.admin.module.system.menu.domain.form.MenuUpdateForm; import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuTreeVO; import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO; import net.lab1024.sa.admin.module.system.menu.service.MenuService; -import net.lab1024.sa.common.common.domain.RequestUrlVO; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; +import net.lab1024.sa.base.common.domain.RequestUrlVO; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -27,58 +26,57 @@ import java.util.List; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_MENU}) -public class MenuController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_MENU) +public class MenuController { - @Autowired + @Resource private MenuService menuService; - @ApiOperation(value = "添加菜单 @author 卓大") + @Operation(summary = "添加菜单 @author 卓大") @PostMapping("/menu/add") - @PreAuthorize("@saAuth.checkPermission('system:menu:add')") + @SaCheckPermission("system:menu:add") public ResponseDTO addMenu(@RequestBody @Valid MenuAddForm menuAddForm) { menuAddForm.setCreateUserId(SmartRequestUtil.getRequestUserId()); return menuService.addMenu(menuAddForm); } - @ApiOperation(value = "更新菜单 @author 卓大") + @Operation(summary = "更新菜单 @author 卓大") @PostMapping("/menu/update") - @PreAuthorize("@saAuth.checkPermission('system:menu:update')") + @SaCheckPermission("system:menu:update") public ResponseDTO updateMenu(@RequestBody @Valid MenuUpdateForm menuUpdateForm) { menuUpdateForm.setUpdateUserId(SmartRequestUtil.getRequestUserId()); return menuService.updateMenu(menuUpdateForm); } - @ApiOperation(value = "批量删除菜单 @author 卓大") + @Operation(summary = "批量删除菜单 @author 卓大") @GetMapping("/menu/batchDelete") - @PreAuthorize("@saAuth.checkPermission('system:menu:delete,system:menu:batch:delete')") + @SaCheckPermission("system:menu:batchDelete") public ResponseDTO batchDeleteMenu(@RequestParam("menuIdList") List menuIdList) { return menuService.batchDeleteMenu(menuIdList, SmartRequestUtil.getRequestUserId()); } - @ApiOperation(value = "查询菜单列表 @author 卓大") + @Operation(summary = "查询菜单列表 @author 卓大") @GetMapping("/menu/query") public ResponseDTO> queryMenuList() { return ResponseDTO.ok(menuService.queryMenuList(null)); } - @ApiOperation(value = "查询菜单详情 @author 卓大") + @Operation(summary = "查询菜单详情 @author 卓大") @GetMapping("/menu/detail/{menuId}") public ResponseDTO getMenuDetail(@PathVariable Long menuId) { return menuService.getMenuDetail(menuId); } - @ApiOperation(value = "查询菜单树 @author 卓大") + @Operation(summary = "查询菜单树 @author 卓大") @GetMapping("/menu/tree") public ResponseDTO> queryMenuTree(@RequestParam("onlyMenu") Boolean onlyMenu) { return menuService.queryMenuTree(onlyMenu); } - @ApiOperation(value = "获取所有请求路径 @author 卓大") + @Operation(summary = "获取所有请求路径 @author 卓大") @GetMapping("/menu/auth/url") public ResponseDTO> getAuthUrl() { return menuService.getAuthUrl(); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java index 468046bd..d57d17be 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java @@ -16,7 +16,7 @@ import java.util.List; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -28,7 +28,6 @@ public interface MenuDao extends BaseMapper { * @param menuName 菜单名 * @param parentId 父级id * @param deletedFlag 是否删除 - * @return */ MenuEntity getByMenuName(@Param("menuName") String menuName, @Param("parentId") Long parentId, @Param("deletedFlag") Boolean deletedFlag); @@ -37,7 +36,6 @@ public interface MenuDao extends BaseMapper { * * @param webPerms 前端权限字符串 * @param deletedFlag 是否删除 - * @return */ MenuEntity getByWebPerms(@Param("webPerms") String webPerms, @Param("deletedFlag") Boolean deletedFlag); @@ -56,7 +54,6 @@ public interface MenuDao extends BaseMapper { * @param deletedFlag 是否删除 * @param disabledFlag 是否禁用 * @param menuTypeList 菜单类型集合 - * @return */ List queryMenuList(@Param("deletedFlag") Boolean deletedFlag, @Param("disabledFlag") Boolean disabledFlag, @Param("menuTypeList") List menuTypeList); @@ -67,7 +64,6 @@ public interface MenuDao extends BaseMapper { * @param menuId 菜单id * @param menuType 菜单类型 * @param deletedFlag 删除标记 - * @return */ List getPointListByMenuId(@Param("menuId") Long menuId, @Param("menuType") Integer menuType, @Param("deletedFlag") Boolean deletedFlag); @@ -77,7 +73,6 @@ public interface MenuDao extends BaseMapper { * @param deletedFlag 是否删除 * @param disabledFlag 禁用标识 * @param employeeId 员工id - * @return */ List queryMenuByEmployeeId(@Param("deletedFlag") Boolean deletedFlag, @Param("disabledFlag") Boolean disabledFlag, @@ -89,7 +84,6 @@ public interface MenuDao extends BaseMapper { * @param menuType 菜单类型 * @param deletedFlag 删除 * @param disabledFlag 禁用 - * @return */ List queryMenuByType(@Param("menuType") Integer menuType, @Param("deletedFlag") Boolean deletedFlag, @@ -98,8 +92,6 @@ public interface MenuDao extends BaseMapper { /** * 查询孩子id * - * @param menuIdList - * @return */ List selectMenuIdByParentIdList(@Param("menuIdList") List menuIdList); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/entity/MenuEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/entity/MenuEntity.java index 41fd3061..a25f60a0 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/entity/MenuEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/entity/MenuEntity.java @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; -import net.lab1024.sa.admin.module.system.menu.constant.MenuPermsTypeEnum; import net.lab1024.sa.admin.module.system.menu.constant.MenuTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; import java.time.LocalDateTime; @@ -18,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName(value = "t_menu") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuAddForm.java index afc8e250..e80584b4 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuAddForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuAddForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.menu.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,11 +10,11 @@ import lombok.Data; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class MenuAddForm extends MenuBaseForm { - @ApiModelProperty(hidden = true) + @Schema(hidden = true) private Long createUserId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuBaseForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuBaseForm.java index f404535f..ba388eb7 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuBaseForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuBaseForm.java @@ -1,16 +1,15 @@ package net.lab1024.sa.admin.module.system.menu.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.system.menu.constant.MenuPermsTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; import net.lab1024.sa.admin.module.system.menu.constant.MenuTypeEnum; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.util.List; /** * 菜单基础 @@ -19,68 +18,65 @@ import java.util.List; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class MenuBaseForm { - @ApiModelProperty("菜单名称") + @Schema(description = "菜单名称") @NotBlank(message = "菜单名称不能为空") @Length(max = 30, message = "菜单名称最多30个字符") private String menuName; - @ApiModelPropertyEnum(value = MenuTypeEnum.class, desc = "类型") + @SchemaEnum(value = MenuTypeEnum.class, desc = "类型") @CheckEnum(value = MenuTypeEnum.class, message = "类型错误") private Integer menuType; - @ApiModelProperty("父菜单ID 无上级可传0") + @Schema(description = "父菜单ID 无上级可传0") @NotNull(message = "父菜单ID不能为空") private Long parentId; - @ApiModelProperty("显示顺序") + @Schema(description = "显示顺序") private Integer sort; - @ApiModelProperty("路由地址") + @Schema(description = "路由地址") private String path; - @ApiModelProperty("组件路径") + @Schema(description = "组件路径") private String component; - @ApiModelProperty("是否为外链") + @Schema(description = "是否为外链") @NotNull(message = "是否为外链不能为空") private Boolean frameFlag; - @ApiModelProperty("外链地址") + @Schema(description = "外链地址") private String frameUrl; - @ApiModelProperty("是否缓存") + @Schema(description = "是否缓存") @NotNull(message = "是否缓存不能为空") private Boolean cacheFlag; - @ApiModelProperty("显示状态") + @Schema(description = "显示状态") @NotNull(message = "显示状态不能为空") private Boolean visibleFlag; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") @NotNull(message = "禁用状态不能为空") private Boolean disabledFlag; - @ApiModelPropertyEnum(value = MenuPermsTypeEnum.class, desc = "权限类型 ") + @SchemaEnum(value = MenuPermsTypeEnum.class, desc = "权限类型 ") @CheckEnum(value = MenuPermsTypeEnum.class, message = "权限类型") private Integer permsType; - @ApiModelProperty("前端权限字符串") + @Schema(description = "前端权限字符串") private String webPerms; - @ApiModelProperty("后端端权限字符串") + @Schema(description = "后端端权限字符串") private String apiPerms; - @ApiModelProperty("后端接口权限集合(拆分)") - private List apiPermsList; - - @ApiModelProperty("菜单图标") + @Schema(description = "菜单图标") private String icon; - @ApiModelProperty("功能点关联菜单ID") + @Schema(description = "功能点关联菜单ID") private Long contextMenuId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuPointsOperateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuPointsOperateForm.java index edf28ae7..6a8dcb30 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuPointsOperateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuPointsOperateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.menu.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -15,29 +15,29 @@ import java.util.List; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class MenuPointsOperateForm { - @ApiModelProperty("菜单ID") + @Schema(description = "菜单ID") private Long menuId; - @ApiModelProperty("功能点名称") + @Schema(description = "功能点名称") @NotBlank(message = "功能点不能为空") @Length(max = 30, message = "功能点最多30个字符") private String menuName; - @ApiModelProperty("禁用状态") + @Schema(description = "禁用状态") @NotNull(message = "禁用状态不能为空") private Boolean disabledFlag; - @ApiModelProperty("后端接口权限集合") + @Schema(description = "后端接口权限集合") private List apiPermsList; - @ApiModelProperty("权限字符串") + @Schema(description = "权限字符串") private String webPerms; - @ApiModelProperty("功能点关联菜单ID") + @Schema(description = "功能点关联菜单ID") private Long contextMenuId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuUpdateForm.java index c0a39f1e..9fefb256 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/form/MenuUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.menu.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,15 +12,15 @@ import javax.validation.constraints.NotNull; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class MenuUpdateForm extends MenuBaseForm { - @ApiModelProperty("菜单ID") + @Schema(description = "菜单ID") @NotNull(message = "菜单ID不能为空") private Long menuId; - @ApiModelProperty(hidden = true) + @Schema(hidden = true) private Long updateUserId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuSimpleTreeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuSimpleTreeVO.java index 560aca3e..8257d127 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuSimpleTreeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuSimpleTreeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.menu.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -12,26 +12,26 @@ import java.util.List; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class MenuSimpleTreeVO { - @ApiModelProperty("菜单ID") + @Schema(description = "菜单ID") private Long menuId; - @ApiModelProperty("菜单名称") + @Schema(description = "菜单名称") private String menuName; - @ApiModelProperty("功能点关联菜单ID") + @Schema(description = "功能点关联菜单ID") private Long contextMenuId; - @ApiModelProperty("父级菜单ID") + @Schema(description = "父级菜单ID") private Long parentId; - @ApiModelProperty("菜单类型") + @Schema(description = "菜单类型") private Integer menuType; - @ApiModelProperty("子菜单") + @Schema(description = "子菜单") private List children; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuTreeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuTreeVO.java index 0930c968..5b698135 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuTreeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuTreeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.menu.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -12,11 +12,11 @@ import java.util.List; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class MenuTreeVO extends MenuVO{ - @ApiModelProperty("菜单子集") + @Schema(description = "菜单子集") private List children; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuVO.java index d8e68ad9..e809bda5 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/domain/vo/MenuVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.menu.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.system.menu.domain.form.MenuBaseForm; @@ -13,23 +13,23 @@ import java.time.LocalDateTime; * @Date 2022-03-06 22:04:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class MenuVO extends MenuBaseForm { - @ApiModelProperty("菜单ID") + @Schema(description = "菜单ID") private Long menuId; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("创建人") + @Schema(description = "创建人") private Long createUserId; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; - @ApiModelProperty("更新人") + @Schema(description = "更新人") private Long updateUserId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/manager/MenuManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/manager/MenuManager.java deleted file mode 100644 index d57c81d3..00000000 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/manager/MenuManager.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.lab1024.sa.admin.module.system.menu.manager; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import net.lab1024.sa.admin.module.system.menu.constant.MenuTypeEnum; -import net.lab1024.sa.admin.module.system.menu.dao.MenuDao; -import net.lab1024.sa.admin.module.system.menu.domain.entity.MenuEntity; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 菜单Manager层 - * - * @Author 1024创新实验室: 善逸 - * @Date 2022-03-06 23:45:04 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Service -public class MenuManager extends ServiceImpl { - - /** - * 添加菜单 - * - * @param menuEntity - * @param pointEntityList - */ - @Transactional(rollbackFor = Exception.class) - public void addMenu(MenuEntity menuEntity, List pointEntityList) { - //添加菜单 - save(menuEntity); - //构建功能点 - pointEntityList.forEach(e -> { - e.setParentId(menuEntity.getMenuId()); - e.setMenuType(MenuTypeEnum.POINTS.getValue()); - e.setCreateUserId(menuEntity.getCreateUserId()); - }); - //批量添加功能点 - saveBatch(pointEntityList); - } - - /** - * 更新菜单 - * - * @param menuEntity - * @param savePointList - * @param deletePointList - * @param updatePointList - */ - @Transactional(rollbackFor = Exception.class) - public void updateMenu(MenuEntity menuEntity, List savePointList, List deletePointList, List updatePointList) { - //更新菜单 - updateById(menuEntity); - //构建新增功能点 - savePointList.forEach(e -> { - e.setParentId(menuEntity.getMenuId()); - e.setMenuType(MenuTypeEnum.POINTS.getValue()); - //因为更新操作人在menuEntity的UpdateUserId字段 - e.setCreateUserId(menuEntity.getUpdateUserId()); - }); - //批量添加功能点 - saveBatch(savePointList); - //批量删除功能点 - updateBatchById(deletePointList); - //批量更新功能点 - updateBatchById(updatePointList); - } -} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/service/MenuService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/service/MenuService.java index 4b3fa693..548caf60 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/service/MenuService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/service/MenuService.java @@ -10,16 +10,15 @@ import net.lab1024.sa.admin.module.system.menu.domain.form.MenuBaseForm; import net.lab1024.sa.admin.module.system.menu.domain.form.MenuUpdateForm; import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuTreeVO; import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO; -import net.lab1024.sa.common.common.code.SystemErrorCode; -import net.lab1024.sa.common.common.domain.RequestUrlVO; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import org.apache.commons.lang3.StringUtils; +import net.lab1024.sa.base.common.code.SystemErrorCode; +import net.lab1024.sa.base.common.domain.RequestUrlVO; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.apache.commons.lang3.math.NumberUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -31,22 +30,20 @@ import java.util.stream.Collectors; * @Date 2022-03-08 22:15:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class MenuService { - @Autowired + @Resource private MenuDao menuDao; - @Autowired + @Resource private List authUrl; /** * 添加菜单 * - * @param menuAddForm - * @return */ public synchronized ResponseDTO addMenu(MenuAddForm menuAddForm) { // 校验菜单名称 @@ -55,15 +52,9 @@ public class MenuService { } // 校验前端权限字符串 if (this.validateWebPerms(menuAddForm)) { - return ResponseDTO.userErrorParam("权限字符串已存在"); + return ResponseDTO.userErrorParam("前端权限字符串已存在"); } MenuEntity menuEntity = SmartBeanUtil.copy(menuAddForm, MenuEntity.class); - // 处理接口权限 - List permsList = menuAddForm.getApiPermsList(); - if (!CollectionUtils.isEmpty(permsList)) { - String perms = StringUtils.join(permsList, ","); - menuEntity.setApiPerms(perms); - } menuDao.insert(menuEntity); return ResponseDTO.ok(); } @@ -71,8 +62,6 @@ public class MenuService { /** * 更新菜单 * - * @param menuUpdateForm - * @return */ public synchronized ResponseDTO updateMenu(MenuUpdateForm menuUpdateForm) { //校验菜单是否存在 @@ -89,18 +78,12 @@ public class MenuService { } // 校验前端权限字符串 if (this.validateWebPerms(menuUpdateForm)) { - return ResponseDTO.userErrorParam("权限字符串已存在"); + return ResponseDTO.userErrorParam("前端权限字符串已存在"); } if (menuUpdateForm.getMenuId().equals(menuUpdateForm.getParentId())) { return ResponseDTO.userErrorParam("上级菜单不能为自己"); } MenuEntity menuEntity = SmartBeanUtil.copy(menuUpdateForm, MenuEntity.class); - // 处理接口权限 - List permsList = menuUpdateForm.getApiPermsList(); - if (!CollectionUtils.isEmpty(permsList)) { - String perms = StringUtils.join(permsList, ","); - menuEntity.setApiPerms(perms); - } menuDao.updateById(menuEntity); return ResponseDTO.ok(); } @@ -109,9 +92,6 @@ public class MenuService { /** * 批量删除菜单 * - * @param menuIdList - * @param employeeId - * @return */ public synchronized ResponseDTO batchDeleteMenu(List menuIdList, Long employeeId) { if (CollectionUtils.isEmpty(menuIdList)) { @@ -135,9 +115,6 @@ public class MenuService { /** * 校验菜单名称 * - * @param menuDTO - * @param - * @return true 重复 false 未重复 */ public Boolean validateMenuName(T menuDTO) { MenuEntity menu = menuDao.getByMenuName(menuDTO.getMenuName(), menuDTO.getParentId(), Boolean.FALSE); @@ -154,8 +131,6 @@ public class MenuService { /** * 校验前端权限字符串 * - * @param menuDTO - * @param * @return true 重复 false 未重复 */ public Boolean validateWebPerms(T menuDTO) { @@ -173,22 +148,17 @@ public class MenuService { /** * 查询菜单列表 * - * @return */ public List queryMenuList(Boolean disabledFlag) { List menuVOList = menuDao.queryMenuList(Boolean.FALSE, disabledFlag, null); //根据ParentId进行分组 Map> parentMap = menuVOList.stream().collect(Collectors.groupingBy(MenuVO::getParentId, Collectors.toList())); - List filterMenuVOList = this.filterNoParentMenu(parentMap, NumberUtils.LONG_ZERO); - return filterMenuVOList; + return this.filterNoParentMenu(parentMap, NumberUtils.LONG_ZERO); } /** * 过滤没有上级菜单的菜单列表 * - * @param parentMap - * @param parentId - * @return */ private List filterNoParentMenu(Map> parentMap, Long parentId) { // 获取本级菜单树List @@ -196,14 +166,6 @@ public class MenuService { List childMenu = Lists.newArrayList(); // 循环遍历下级菜单 res.forEach(e -> { - //处理接口权限 - String perms = e.getApiPerms(); - if (StringUtils.isBlank(perms)) { - e.setApiPermsList(Lists.newArrayList()); - } else { - List permsList = Lists.newArrayList(StringUtils.split(perms, ",")); - e.setApiPermsList(permsList); - } List menuList = this.filterNoParentMenu(parentMap, e.getMenuId()); childMenu.addAll(menuList); }); @@ -215,7 +177,6 @@ public class MenuService { * 查询菜单树 * * @param onlyMenu 不查询功能点 - * @return */ public ResponseDTO> queryMenuTree(Boolean onlyMenu) { List menuTypeList = Lists.newArrayList(); @@ -232,7 +193,6 @@ public class MenuService { /** * 构建菜单树 * - * @return */ List buildMenuTree(Map> parentMap, Long parentId) { // 获取本级菜单树List @@ -240,14 +200,6 @@ public class MenuService { .map(e -> SmartBeanUtil.copy(e, MenuTreeVO.class)).collect(Collectors.toList()); // 循环遍历下级菜单 res.forEach(e -> { - //处理接口权限 - String perms = e.getApiPerms(); - if (StringUtils.isBlank(perms)) { - e.setApiPermsList(Lists.newArrayList()); - } else { - List permsList = Lists.newArrayList(StringUtils.split(perms, ",")); - e.setApiPermsList(permsList); - } e.setChildren(this.buildMenuTree(parentMap, e.getMenuId())); }); return res; @@ -256,8 +208,6 @@ public class MenuService { /** * 查询菜单详情 * - * @param menuId - * @return */ public ResponseDTO getMenuDetail(Long menuId) { //校验菜单是否存在 @@ -269,19 +219,11 @@ public class MenuService { return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "菜单已被删除"); } MenuVO menuVO = SmartBeanUtil.copy(selectMenu, MenuVO.class); - //处理接口权限 - String perms = menuVO.getApiPerms(); - if (!StringUtils.isBlank(perms)) { - List permsList = Lists.newArrayList(StringUtils.split(perms, ",")); - menuVO.setApiPermsList(permsList); - } return ResponseDTO.ok(menuVO); } /** * 获取系统所有请求路径 - * - * @return */ public ResponseDTO> getAuthUrl() { return ResponseDTO.ok(authUrl); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleController.java index 4fcdc2d2..edd9d0ea 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleController.java @@ -1,19 +1,17 @@ package net.lab1024.sa.admin.module.system.role.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.role.domain.form.RoleAddForm; import net.lab1024.sa.admin.module.system.role.domain.form.RoleUpdateForm; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO; import net.lab1024.sa.admin.module.system.role.service.RoleService; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import net.lab1024.sa.base.common.domain.ResponseDTO; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -24,44 +22,43 @@ import java.util.List; * @Date 2021-12-14 19:40:28 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_ROLE}) -public class RoleController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_ROLE) +public class RoleController { - @Autowired + @Resource private RoleService roleService; - @ApiOperation("添加角色 @author 卓大") + @Operation(summary = "添加角色 @author 卓大") @PostMapping("/role/add") - @PreAuthorize("@saAuth.checkPermission('system:role:add')") - public ResponseDTO addRole(@Valid @RequestBody RoleAddForm roleAddForm) { + @SaCheckPermission("system:role:add") + public ResponseDTO addRole(@Valid @RequestBody RoleAddForm roleAddForm) { return roleService.addRole(roleAddForm); } - @ApiOperation("删除角色 @author 卓大") + @Operation(summary = "删除角色 @author 卓大") @GetMapping("/role/delete/{roleId}") - @PreAuthorize("@saAuth.checkPermission('system:role:delete')") + @SaCheckPermission("system:role:delete") public ResponseDTO deleteRole(@PathVariable Long roleId) { return roleService.deleteRole(roleId); } - @ApiOperation("更新角色 @author 卓大") + @Operation(summary = "更新角色 @author 卓大") @PostMapping("/role/update") - @PreAuthorize("@saAuth.checkPermission('system:role:update')") + @SaCheckPermission("system:role:update") public ResponseDTO updateRole(@Valid @RequestBody RoleUpdateForm roleUpdateDTO) { return roleService.updateRole(roleUpdateDTO); } - @ApiOperation("获取角色数据 @author 卓大") + @Operation(summary = "获取角色数据 @author 卓大") @GetMapping("/role/get/{roleId}") public ResponseDTO getRole(@PathVariable("roleId") Long roleId) { return roleService.getRoleById(roleId); } - @ApiOperation("获取所有角色 @author 卓大") + @Operation(summary = "获取所有角色 @author 卓大") @GetMapping("/role/getAll") public ResponseDTO> getAllRole() { return roleService.getAllRole(); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleDataScopeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleDataScopeController.java index a2814595..0d059430 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleDataScopeController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleDataScopeController.java @@ -1,18 +1,16 @@ package net.lab1024.sa.admin.module.system.role.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.role.domain.form.RoleDataScopeUpdateForm; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleDataScopeVO; import net.lab1024.sa.admin.module.system.role.service.RoleDataScopeService; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import net.lab1024.sa.base.common.domain.ResponseDTO; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -23,25 +21,24 @@ import java.util.List; * @Date 2022-02-26 22:09:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_ROLE_DATA_SCOPE}) -public class RoleDataScopeController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_ROLE_DATA_SCOPE) +public class RoleDataScopeController { - @Autowired + @Resource private RoleDataScopeService roleDataScopeService; - @ApiOperation(value = "获取某角色所设置的数据范围 @author 卓大") + @Operation(summary = "获取某角色所设置的数据范围 @author 卓大") @GetMapping("/role/dataScope/getRoleDataScopeList/{roleId}") public ResponseDTO> dataScopeListByRole(@PathVariable Long roleId) { return roleDataScopeService.getRoleDataScopeList(roleId); } - @ApiOperation(value = "批量设置某角色数据范围 @author 卓大") + @Operation(summary = "批量设置某角色数据范围 @author 卓大") @PostMapping("/role/dataScope/updateRoleDataScopeList") - @PreAuthorize("@saAuth.checkPermission('system:role:dataScope:update')") + @SaCheckPermission("system:role:dataScope:update") public ResponseDTO updateRoleDataScopeList(@RequestBody @Valid RoleDataScopeUpdateForm roleDataScopeUpdateForm) { return roleDataScopeService.updateRoleDataScopeList(roleDataScopeUpdateForm); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleEmployeeController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleEmployeeController.java index 19ad623c..61a61f21 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleEmployeeController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleEmployeeController.java @@ -1,21 +1,19 @@ package net.lab1024.sa.admin.module.system.role.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO; import net.lab1024.sa.admin.module.system.role.domain.form.RoleEmployeeQueryForm; import net.lab1024.sa.admin.module.system.role.domain.form.RoleEmployeeUpdateForm; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleSelectedVO; import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -26,50 +24,49 @@ import java.util.List; * @Date 2022-02-26 22:09:59 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_ROLE_EMPLOYEE}) -public class RoleEmployeeController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_ROLE_EMPLOYEE) +public class RoleEmployeeController { - @Autowired + @Resource private RoleEmployeeService roleEmployeeService; - @ApiOperation(value = "查询某个角色下的员工列表 @author 卓大") + @Operation(summary = "查询某个角色下的员工列表 @author 卓大") @PostMapping("/role/employee/queryEmployee") public ResponseDTO> queryEmployee(@Valid @RequestBody RoleEmployeeQueryForm roleEmployeeQueryForm) { return roleEmployeeService.queryEmployee(roleEmployeeQueryForm); } - @ApiOperation(value = "获取某个角色下的所有员工列表(无分页) @author 卓大") + @Operation(summary = "获取某个角色下的所有员工列表(无分页) @author 卓大") @GetMapping("/role/employee/getAllEmployeeByRoleId/{roleId}") public ResponseDTO> listAllEmployeeRoleId(@PathVariable Long roleId) { return ResponseDTO.ok(roleEmployeeService.getAllEmployeeByRoleId(roleId)); } - @ApiOperation(value = "从角色成员列表中移除员工 @author 卓大") + @Operation(summary = "从角色成员列表中移除员工 @author 卓大") @GetMapping("/role/employee/removeEmployee") - @PreAuthorize("@saAuth.checkPermission('system:role:employee:delete')") + @SaCheckPermission("system:role:employee:delete") public ResponseDTO removeEmployee(Long employeeId, Long roleId) { return roleEmployeeService.removeRoleEmployee(employeeId, roleId); } - @ApiOperation(value = "从角色成员列表中批量移除员工 @author 卓大") + @Operation(summary = "从角色成员列表中批量移除员工 @author 卓大") @PostMapping("/role/employee/batchRemoveRoleEmployee") - @PreAuthorize("@saAuth.checkPermission('system:role:employee:batch:delete')") + @SaCheckPermission("system:role:employee:batch:delete") public ResponseDTO batchRemoveEmployee(@Valid @RequestBody RoleEmployeeUpdateForm updateForm) { return roleEmployeeService.batchRemoveRoleEmployee(updateForm); } - @ApiOperation(value = "角色成员列表中批量添加员工 @author 卓大") + @Operation(summary = "角色成员列表中批量添加员工 @author 卓大") @PostMapping("/role/employee/batchAddRoleEmployee") - @PreAuthorize("@saAuth.checkPermission('system:role:employee:add')") + @SaCheckPermission("system:role:employee:add") public ResponseDTO addEmployeeList(@Valid @RequestBody RoleEmployeeUpdateForm addForm) { return roleEmployeeService.batchAddRoleEmployee(addForm); } - @ApiOperation(value = "获取员工所有选中的角色和所有角色 @author 卓大") + @Operation(summary = "获取员工所有选中的角色和所有角色 @author 卓大") @GetMapping("/role/employee/getRoles/{employeeId}") public ResponseDTO> getRoleByEmployeeId(@PathVariable Long employeeId) { return ResponseDTO.ok(roleEmployeeService.getRoleInfoListByEmployeeId(employeeId)); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleMenuController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleMenuController.java index 02e7b8c3..4dfaa35f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleMenuController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/controller/RoleMenuController.java @@ -1,18 +1,17 @@ package net.lab1024.sa.admin.module.system.role.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.admin.common.AdminBaseController; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; import net.lab1024.sa.admin.module.system.role.domain.form.RoleMenuUpdateForm; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleMenuTreeVO; import net.lab1024.sa.admin.module.system.role.service.RoleMenuService; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; +import net.lab1024.sa.base.common.domain.ResponseDTO; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; /** @@ -22,24 +21,23 @@ import javax.validation.Valid; * @Date 2022-02-26 21:34:01 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@OperateLog @RestController -@Api(tags = {AdminSwaggerTagConst.System.SYSTEM_ROLE_MENU}) -public class RoleMenuController extends AdminBaseController { +@Tag(name = AdminSwaggerTagConst.System.SYSTEM_ROLE_MENU) +public class RoleMenuController { - @Autowired + @Resource private RoleMenuService roleMenuService; - @ApiOperation("更新角色权限 @author 卓大") + @Operation(summary = "更新角色权限 @author 卓大") @PostMapping("/role/menu/updateRoleMenu") - @PreAuthorize("@saAuth.checkPermission('system:role:menu:update')") + @SaCheckPermission("system:role:menu:update") public ResponseDTO updateRoleMenu(@Valid @RequestBody RoleMenuUpdateForm updateDTO) { return roleMenuService.updateRoleMenu(updateDTO); } - @ApiOperation("获取角色关联菜单权限 @author 卓大") + @Operation(summary = "获取角色关联菜单权限 @author 卓大") @GetMapping("/role/menu/getRoleSelectedMenu/{roleId}") public ResponseDTO getRoleSelectedMenu(@PathVariable Long roleId) { return roleMenuService.getRoleSelectedMenu(roleId); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java index 24ad753a..e05b2998 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java @@ -13,7 +13,7 @@ import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEntity; * @Date 2022-02-26 21:34:01 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -21,9 +21,11 @@ public interface RoleDao extends BaseMapper { /** * 根据角色名称查询 - * @param roleName - * @return */ RoleEntity getByRoleName(@Param("roleName") String roleName); + /** + * 根据角色编码 + */ + RoleEntity getByRoleCode(@Param("roleCode") String roleCode); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java index 281694ec..3ffbc329 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java @@ -16,7 +16,7 @@ import java.util.List; * @Date 2022-02-26 21:34:01 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -24,22 +24,16 @@ public interface RoleDataScopeDao extends BaseMapper { /** * 获取某个角色的设置信息 - * @param roleId - * @return */ List listByRoleId(@Param("roleId") Long roleId); /** * 获取某批角色的所有数据范围配置信息 - * @param roleIdList - * @return */ List listByRoleIdList(@Param("roleIdList") List roleIdList); /** * 删除某个角色的设置信息 - * @param roleId - * @return */ void deleteByRoleId(@Param("roleId") Long roleId); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java index a2eaf954..06f27ca5 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java @@ -2,6 +2,7 @@ package net.lab1024.sa.admin.module.system.role.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -20,7 +21,7 @@ import java.util.List; * @Date 2022-03-07 18:54:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -28,68 +29,55 @@ public interface RoleEmployeeDao extends BaseMapper { /** * 根据员工id 查询所有的角色 - * @param employeeId - * @return + */ + List selectRoleByEmployeeId(@Param("employeeId") Long employeeId); + + /** + * 根据员工id 查询所有的角色io集合 */ List selectRoleIdByEmployeeId(@Param("employeeId") Long employeeId); /** * 根据员工id 查询所有的角色 - * @param employeeIdList - * @return */ List selectRoleIdByEmployeeIdList(@Param("employeeIdList") List employeeIdList); /** * 根据员工id 查询所有的角色 - * @param employeeIdList - * @return */ List selectRoleByEmployeeIdList(@Param("employeeIdList") List employeeIdList); /** * 查询角色下的人员id - * @param roleIdList - * @return */ List selectEmployeeIdByRoleIdList(@Param("roleIdList") List roleIdList); + /** * - * @param page - * @param roleEmployeeQueryForm - * @return */ List selectRoleEmployeeByName(Page page, @Param("queryForm") RoleEmployeeQueryForm roleEmployeeQueryForm); /** * - * @param roleId - * @return */ List selectEmployeeByRoleId(@Param("roleId") Long roleId); /** * 根据员工信息删除 - * @param employeeId */ void deleteByEmployeeId(@Param("employeeId") Long employeeId); /** * 删除某个角色的所有关系 - * @param roleId */ void deleteByRoleId(@Param("roleId")Long roleId); /** * 根据员工和 角色删除关系 - * @param employeeId - * @param roleId */ void deleteByEmployeeIdRoleId(@Param("employeeId") Long employeeId,@Param("roleId")Long roleId); /** * 批量删除某个角色下的某批用户的关联关系 - * @param roleId - * @param employeeIds */ void batchDeleteEmployeeRole(@Param("roleId") Long roleId,@Param("employeeIds")List employeeIds); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java index aed7cdd2..f65361ca 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java @@ -16,7 +16,7 @@ import java.util.List; * @Date 2022-03-07 18:54:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -25,30 +25,24 @@ public interface RoleMenuDao extends BaseMapper { /** * 根据角色ID删除菜单权限 * - * @param roleId */ void deleteByRoleId(@Param("roleId") Long roleId); /** * 根据角色ID查询选择的菜单权限 * - * @param roleId - * @return */ List queryMenuIdByRoleId(@Param("roleId") Long roleId); /** * 根据角色ID集合查询选择的菜单权限 * - * @param roleIdList - * @return */ List selectMenuListByRoleIdList(@Param("roleIdList") List roleIdList, @Param("deletedFlag") Boolean deletedFlag); /** * 查询所有的菜单角色 * - * @return */ List queryAllRoleMenu(); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleDataScopeEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleDataScopeEntity.java index 1f2514e0..40f04f59 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleDataScopeEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleDataScopeEntity.java @@ -16,7 +16,7 @@ import java.time.LocalDateTime; * @Date 2022-03-07 18:54:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_role_data_scope") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleEmployeeEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleEmployeeEntity.java index 4a8b9c46..636bd0b3 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleEmployeeEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleEmployeeEntity.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022-03-07 18:54:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_role_employee") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleEntity.java index 7d963f7b..12e22191 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleEntity.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022-03-07 18:54:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_role") @@ -25,8 +25,19 @@ public class RoleEntity { @TableId(type = IdType.AUTO) private Long roleId; + /** + * 角色名称 + */ private String roleName; + /** + * 角色编码 + */ + private String roleCode; + + /** + * 角色备注 + */ private String remark; /** diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleMenuEntity.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleMenuEntity.java index 36b0d80f..410d2481 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleMenuEntity.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/entity/RoleMenuEntity.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022-03-16 23:00:57 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_role_menu") diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleAddForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleAddForm.java index f34113ea..0ceced68 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleAddForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleAddForm.java @@ -1,5 +1,5 @@ package net.lab1024.sa.admin.module.system.role.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -12,7 +12,7 @@ import javax.validation.constraints.NotNull; * @Date 2022-02-26 19:09:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleAddForm { @@ -20,15 +20,20 @@ public class RoleAddForm { /** * 角色名称 */ - @ApiModelProperty("角色名称") + @Schema(description = "角色名称") @NotNull(message = "角色名称不能为空") @Length(min = 1, max = 20, message = "角色名称(1-20)个字符") private String roleName; + @Schema(description = "角色编码") + @NotNull(message = "角色编码 不能为空") + @Length(min = 1, max = 20, message = "角色编码(1-20)个字符") + private String roleCode; + /** * 角色描述 */ - @ApiModelProperty("角色描述") + @Schema(description = "角色描述") @Length(max = 255, message = "角色描述最多255个字符") private String remark; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleDataScopeUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleDataScopeUpdateForm.java index 6dbff70d..71525e3e 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleDataScopeUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleDataScopeUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.role.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.Valid; @@ -14,16 +14,16 @@ import java.util.List; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleDataScopeUpdateForm { - @ApiModelProperty("角色id") + @Schema(description = "角色id") @NotNull(message = "角色id不能为空") private Long roleId; - @ApiModelProperty("设置信息") + @Schema(description = "设置信息") @Valid private List dataScopeItemList; @@ -31,11 +31,11 @@ public class RoleDataScopeUpdateForm { @Data public static class RoleUpdateDataScopeListFormItem { - @ApiModelProperty("数据范围类型") + @Schema(description = "数据范围类型") @NotNull(message = "数据范围类型不能为空") private Integer dataScopeType; - @ApiModelProperty("可见范围") + @Schema(description = "可见范围") @NotNull(message = "可见范围不能为空") private Integer viewType; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeQueryForm.java index c517d1fb..46b21e81 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.system.role.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; /** * 角色的员工查询 @@ -11,14 +11,14 @@ import net.lab1024.sa.common.common.domain.PageParam; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleEmployeeQueryForm extends PageParam { - @ApiModelProperty("关键字") + @Schema(description = "关键字") private String keywords; - @ApiModelProperty("角色id") + @Schema(description = "角色id") private String roleId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeUpdateForm.java index 3b5f9655..ef849e7c 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleEmployeeUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.role.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -14,16 +14,16 @@ import java.util.List; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleEmployeeUpdateForm { - @ApiModelProperty("角色id") + @Schema(description = "角色id") @NotNull(message = "角色id不能为空") protected Long roleId; - @ApiModelProperty(value = "员工id集合") + @Schema(description = "员工id集合") @NotEmpty(message = "员工id不能为空") protected List employeeIdList; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleMenuUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleMenuUpdateForm.java index 559f67af..46e6c02d 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleMenuUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleMenuUpdateForm.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.role.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -13,7 +13,7 @@ import java.util.List; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleMenuUpdateForm { @@ -21,14 +21,14 @@ public class RoleMenuUpdateForm { /** * 角色id */ - @ApiModelProperty("角色id") + @Schema(description = "角色id") @NotNull(message = "角色id不能为空") private Long roleId; /** * 菜单ID 集合 */ - @ApiModelProperty("菜单ID集合") + @Schema(description = "菜单ID集合") @NotNull(message = "菜单ID不能为空") private List menuIdList; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleQueryForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleQueryForm.java index a1f935fb..cf754e44 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleQueryForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleQueryForm.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.system.role.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; /** * 角色 查询 @@ -11,14 +11,14 @@ import net.lab1024.sa.common.common.domain.PageParam; * @Date 2022-02-26 19:09:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleQueryForm extends PageParam { - @ApiModelProperty("角色名称") + @Schema(description = "角色名称") private String roleName; - @ApiModelProperty("角色id") + @Schema(description = "角色id") private String roleId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleUpdateForm.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleUpdateForm.java index 0b937f26..a29bf2ef 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleUpdateForm.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/form/RoleUpdateForm.java @@ -1,5 +1,5 @@ package net.lab1024.sa.admin.module.system.role.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; * @Date 2022-02-26 19:09:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleUpdateForm extends RoleAddForm { @@ -19,7 +19,7 @@ public class RoleUpdateForm extends RoleAddForm { /** * 角色id */ - @ApiModelProperty("角色id") + @Schema(description = "角色id") @NotNull(message = "角色id不能为空") protected Long roleId; diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleDataScopeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleDataScopeVO.java index dd11deb9..350b6445 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleDataScopeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleDataScopeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.role.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,14 +10,14 @@ import lombok.Data; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleDataScopeVO { - @ApiModelProperty("数据范围id") + @Schema(description = "数据范围id") private Integer dataScopeType; - @ApiModelProperty("可见范围") + @Schema(description = "可见范围") private Integer viewType; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleEmployeeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleEmployeeVO.java index 04e63e33..83d40238 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleEmployeeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleEmployeeVO.java @@ -9,7 +9,7 @@ import lombok.Data; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleEmployeeVO { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleMenuTreeVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleMenuTreeVO.java index 04013481..28091154 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleMenuTreeVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleMenuTreeVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.role.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuSimpleTreeVO; @@ -13,17 +13,17 @@ import java.util.List; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleMenuTreeVO { - @ApiModelProperty("角色ID") + @Schema(description = "角色ID") private Long roleId; - @ApiModelProperty("菜单列表") + @Schema(description = "菜单列表") private List menuTreeList; - @ApiModelProperty("选中的菜单ID") + @Schema(description = "选中的菜单ID") private List selectedMenuId; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleSelectedVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleSelectedVO.java index e8204845..1165cffc 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleSelectedVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleSelectedVO.java @@ -1,6 +1,6 @@ package net.lab1024.sa.admin.module.system.role.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,11 +10,11 @@ import lombok.Data; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleSelectedVO extends RoleVO { - @ApiModelProperty("角色名称") + @Schema(description = "角色名称") private Boolean selected; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleVO.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleVO.java index 7edd1ada..82592f12 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleVO.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/domain/vo/RoleVO.java @@ -1,7 +1,10 @@ package net.lab1024.sa.admin.module.system.role.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotNull; /** * 角色 @@ -10,17 +13,20 @@ import lombok.Data; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RoleVO { - @ApiModelProperty("角色ID") + @Schema(description = "角色ID") private Long roleId; - @ApiModelProperty("角色名称") + @Schema(description = "角色名称") private String roleName; - @ApiModelProperty("角色备注") + @Schema(description = "角色编码") + private String roleCode; + + @Schema(description = "角色备注") private String remark; } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleDataScopeManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleDataScopeManager.java index 1b2aab9d..bc9e0a42 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleDataScopeManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleDataScopeManager.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Service; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class RoleDataScopeManager extends ServiceImpl { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java index c470c878..e403f19f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java @@ -16,7 +16,7 @@ import java.util.List; * @Date 2022-04-08 21:53:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class RoleEmployeeManager extends ServiceImpl { @@ -24,8 +24,6 @@ public class RoleEmployeeManager extends ServiceImpl roleEmployeeList) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleMenuManager.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleMenuManager.java index 32fbe646..a43f3eeb 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleMenuManager.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleMenuManager.java @@ -7,6 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; /** @@ -16,19 +17,17 @@ import java.util.List; * @Date 2022-04-09 19:05:49 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class RoleMenuManager extends ServiceImpl { - @Autowired + @Resource private RoleMenuDao roleMenuDao; /** * 更新角色权限 * - * @param roleId - * @param roleMenuEntityList */ @Transactional(rollbackFor = Exception.class) public void updateRoleMenu(Long roleId, List roleMenuEntityList) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleDataScopeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleDataScopeService.java index 3cc655bc..66d538e8 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleDataScopeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleDataScopeService.java @@ -3,9 +3,9 @@ package net.lab1024.sa.admin.module.system.role.service; import com.google.common.collect.Lists; import net.lab1024.sa.admin.module.system.role.domain.form.RoleDataScopeUpdateForm; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleDataScopeVO; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import net.lab1024.sa.admin.module.system.role.domain.entity.RoleDataScopeEntity; import net.lab1024.sa.admin.module.system.role.manager.RoleDataScopeManager; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +13,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import javax.annotation.Resource; import java.util.List; /** @@ -22,20 +23,18 @@ import java.util.List; * @Date 2021-10-22 23:17:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class RoleDataScopeService { - @Autowired + @Resource private RoleDataScopeManager roleDataScopeManager; /** * 获取某个角色的数据范围设置信息 * - * @param roleId - * @return */ public ResponseDTO> getRoleDataScopeList(Long roleId) { List roleDataScopeEntityList = roleDataScopeManager.getBaseMapper().listByRoleId(roleId); @@ -49,8 +48,6 @@ public class RoleDataScopeService { /** * 批量设置某个角色的数据范围设置信息 * - * @param roleDataScopeUpdateForm - * @return */ @Transactional(rollbackFor = Exception.class) public ResponseDTO updateRoleDataScopeList(RoleDataScopeUpdateForm roleDataScopeUpdateForm) { diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java index 51bf64d4..c0a8cdad 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleEmployeeService.java @@ -1,28 +1,28 @@ package net.lab1024.sa.admin.module.system.role.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.lab1024.sa.admin.module.system.department.dao.DepartmentDao; +import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEntity; +import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO; import net.lab1024.sa.admin.module.system.role.dao.RoleDao; import net.lab1024.sa.admin.module.system.role.dao.RoleEmployeeDao; +import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEmployeeEntity; import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEntity; import net.lab1024.sa.admin.module.system.role.domain.form.RoleEmployeeQueryForm; import net.lab1024.sa.admin.module.system.role.domain.form.RoleEmployeeUpdateForm; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleSelectedVO; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.constant.StringConst; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.admin.module.system.department.dao.DepartmentDao; -import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEntity; -import net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO; -import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEmployeeEntity; +import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO; import net.lab1024.sa.admin.module.system.role.manager.RoleEmployeeManager; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Objects; @@ -35,42 +35,49 @@ import java.util.stream.Collectors; * @Date 2021-10-22 23:17:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class RoleEmployeeService { - @Autowired + @Resource private RoleEmployeeDao roleEmployeeDao; - @Autowired + @Resource private RoleDao roleDao; - @Autowired + @Resource private DepartmentDao departmentDao; - @Autowired + @Resource private RoleEmployeeManager roleEmployeeManager; + + /** + * 批量插入 + * + */ + public void batchInsert(List roleEmployeeList) { + roleEmployeeManager.saveBatch(roleEmployeeList); + } + /** * 通过角色id,分页获取成员员工列表 * - * @param roleEmployeeQueryForm - * @return */ public ResponseDTO> queryEmployee(RoleEmployeeQueryForm roleEmployeeQueryForm) { Page page = SmartPageUtil.convert2PageQuery(roleEmployeeQueryForm); - List employeeDTOS = roleEmployeeDao.selectRoleEmployeeByName(page, roleEmployeeQueryForm) + List employeeList = roleEmployeeDao.selectRoleEmployeeByName(page, roleEmployeeQueryForm) .stream() .filter(Objects::nonNull) .collect(Collectors.toList()); - List departmentIdList = employeeDTOS.stream().filter(e -> e != null && e.getDepartmentId() != null).map(EmployeeVO::getDepartmentId).collect(Collectors.toList()); + List departmentIdList = employeeList.stream().filter(e -> e != null && e.getDepartmentId() != null).map(EmployeeVO::getDepartmentId).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(departmentIdList)) { List departmentEntities = departmentDao.selectBatchIds(departmentIdList); Map departmentIdNameMap = departmentEntities.stream().collect(Collectors.toMap(DepartmentEntity::getDepartmentId, DepartmentEntity::getName)); - employeeDTOS.forEach(e -> { + employeeList.forEach(e -> { e.setDepartmentName(departmentIdNameMap.getOrDefault(e.getDepartmentId(), StringConst.EMPTY)); }); } - PageResult PageResult = SmartPageUtil.convert2PageResult(page, employeeDTOS, EmployeeVO.class); - return ResponseDTO.ok(PageResult); + PageResult pageResult = SmartPageUtil.convert2PageResult(page, employeeList, EmployeeVO.class); + return ResponseDTO.ok(pageResult); } public List getAllEmployeeByRoleId(Long roleId) { @@ -80,9 +87,6 @@ public class RoleEmployeeService { /** * 移除员工角色 * - * @param employeeId - * @param roleId - * @return ResponseDTO */ @Transactional(rollbackFor = Exception.class) public ResponseDTO removeRoleEmployee(Long employeeId, Long roleId) { @@ -96,8 +100,6 @@ public class RoleEmployeeService { /** * 批量删除角色的成员员工 * - * @param roleEmployeeUpdateForm - * @return ResponseDTO */ public ResponseDTO batchRemoveRoleEmployee(RoleEmployeeUpdateForm roleEmployeeUpdateForm) { roleEmployeeDao.batchDeleteEmployeeRole(roleEmployeeUpdateForm.getRoleId(), roleEmployeeUpdateForm.getEmployeeIdList()); @@ -107,8 +109,6 @@ public class RoleEmployeeService { /** * 批量添加角色的成员员工 * - * @param roleEmployeeUpdateForm - * @return */ public ResponseDTO batchAddRoleEmployee(RoleEmployeeUpdateForm roleEmployeeUpdateForm) { Long roleId = roleEmployeeUpdateForm.getRoleId(); @@ -128,8 +128,6 @@ public class RoleEmployeeService { /** * 通过员工id获取员工角色 * - * @param employeeId - * @return */ public List getRoleInfoListByEmployeeId(Long employeeId) { List roleIds = roleEmployeeDao.selectRoleIdByEmployeeId(employeeId); @@ -142,11 +140,9 @@ public class RoleEmployeeService { /** * 根据员工id 查询角色id集合 * - * @param employeeId - * @return */ - public List getRoleIdList(Long employeeId) { - return roleEmployeeDao.selectRoleIdByEmployeeId(employeeId); + public List getRoleIdList(Long employeeId) { + return roleEmployeeDao.selectRoleByEmployeeId(employeeId); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleMenuService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleMenuService.java index e93d106a..9d25bce3 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleMenuService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleMenuService.java @@ -12,14 +12,14 @@ import net.lab1024.sa.admin.module.system.role.domain.entity.RoleMenuEntity; import net.lab1024.sa.admin.module.system.role.domain.form.RoleMenuUpdateForm; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleMenuTreeVO; import net.lab1024.sa.admin.module.system.role.manager.RoleMenuManager; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.math.NumberUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -32,25 +32,23 @@ import java.util.stream.Collectors; * @Date 2021-10-22 23:17:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class RoleMenuService { - @Autowired + @Resource private RoleDao roleDao; - @Autowired + @Resource private RoleMenuDao roleMenuDao; - @Autowired + @Resource private RoleMenuManager roleMenuManager; - @Autowired + @Resource private MenuDao menuDao; /** * 更新角色权限 * - * @param roleMenuUpdateForm - * @return */ public ResponseDTO updateRoleMenu(RoleMenuUpdateForm roleMenuUpdateForm) { //查询角色是否存在 @@ -74,8 +72,6 @@ public class RoleMenuService { /** * 根据角色id集合,查询其所有的菜单权限 * - * @param roleIdList - * @return */ public List getMenuList(List roleIdList, Boolean administratorFlag) { //管理员返回所有菜单 @@ -95,8 +91,6 @@ public class RoleMenuService { /** * 获取角色关联菜单权限 * - * @param roleId - * @return */ public ResponseDTO getRoleSelectedMenu(Long roleId) { RoleMenuTreeVO res = new RoleMenuTreeVO(); @@ -115,7 +109,6 @@ public class RoleMenuService { /** * 构建菜单树 * - * @return */ private List buildMenuTree(Map> parentMap, Long parentId) { // 获取本级菜单树List diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleService.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleService.java index 031d75e0..b69abea3 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleService.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/service/RoleService.java @@ -7,13 +7,13 @@ import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEntity; import net.lab1024.sa.admin.module.system.role.domain.form.RoleAddForm; import net.lab1024.sa.admin.module.system.role.domain.form.RoleUpdateForm; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; /** @@ -23,31 +23,34 @@ import java.util.List; * @Date 2021-08-16 20:19:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class RoleService { - @Autowired + @Resource private RoleDao roleDao; - @Autowired + @Resource private RoleMenuDao roleMenuDao; - @Autowired + @Resource private RoleEmployeeDao roleEmployeeDao; /** * 新增添加角色 - * - * @param roleAddForm - * @return ResponseDTO */ - public ResponseDTO addRole(RoleAddForm roleAddForm) { + public ResponseDTO addRole(RoleAddForm roleAddForm) { RoleEntity existRoleEntity = roleDao.getByRoleName(roleAddForm.getRoleName()); if (null != existRoleEntity) { return ResponseDTO.userErrorParam("角色名称重复"); } + + existRoleEntity = roleDao.getByRoleCode(roleAddForm.getRoleCode()); + if (null != existRoleEntity) { + return ResponseDTO.userErrorParam("角色编码重复,重复的角色为:" + existRoleEntity.getRoleName()); + } + RoleEntity roleEntity = SmartBeanUtil.copy(roleAddForm, RoleEntity.class); roleDao.insert(roleEntity); return ResponseDTO.ok(); @@ -55,12 +58,9 @@ public class RoleService { /** * 根据角色id 删除 - * - * @param roleId - * @return ResponseDTO */ @Transactional(rollbackFor = Exception.class) - public ResponseDTO deleteRole(Long roleId) { + public ResponseDTO deleteRole(Long roleId) { RoleEntity roleEntity = roleDao.selectById(roleId); if (null == roleEntity) { return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST); @@ -73,19 +73,23 @@ public class RoleService { /** * 更新角色 - * - * @param roleUpdateForm - * @return ResponseDTO */ @Transactional(rollbackFor = Exception.class) public ResponseDTO updateRole(RoleUpdateForm roleUpdateForm) { if (null == roleDao.selectById(roleUpdateForm.getRoleId())) { return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST); } + RoleEntity existRoleEntity = roleDao.getByRoleName(roleUpdateForm.getRoleName()); if (null != existRoleEntity && !existRoleEntity.getRoleId().equals(roleUpdateForm.getRoleId())) { return ResponseDTO.userErrorParam("角色名称重复"); } + + existRoleEntity = roleDao.getByRoleCode(roleUpdateForm.getRoleCode()); + if (null != existRoleEntity) { + return ResponseDTO.userErrorParam("角色编码重复,重复的角色为:" + existRoleEntity.getRoleName()); + } + RoleEntity roleEntity = SmartBeanUtil.copy(roleUpdateForm, RoleEntity.class); roleDao.updateById(roleEntity); return ResponseDTO.ok(); @@ -93,9 +97,6 @@ public class RoleService { /** * 根据id获取角色数据 - * - * @param roleId - * @return ResponseDTO */ public ResponseDTO getRoleById(Long roleId) { RoleEntity roleEntity = roleDao.selectById(roleId); @@ -108,8 +109,6 @@ public class RoleService { /** * 获取所有角色列表 - * - * @return ResponseDTO */ public ResponseDTO> getAllRole() { List roleEntityList = roleDao.selectList(null); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminApiEncryptController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminApiEncryptController.java new file mode 100644 index 00000000..cc796725 --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminApiEncryptController.java @@ -0,0 +1,81 @@ +package net.lab1024.sa.admin.module.system.support; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.Data; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.ValidateList; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.apiencrypt.annotation.ApiDecrypt; +import net.lab1024.sa.base.module.support.apiencrypt.annotation.ApiEncrypt; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * + * api 加密 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/21 09:21:20 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@RestController +@Tag(name = SwaggerTagConst.Support.PROTECT) +public class AdminApiEncryptController extends SupportBaseController { + + + @ApiDecrypt + @PostMapping("/apiEncrypt/testRequestEncrypt") + @Operation(summary = "测试 请求加密") + public ResponseDTO testRequestEncrypt(@RequestBody @Valid JweForm form) { + return ResponseDTO.ok(form); + } + + @ApiEncrypt + @PostMapping("/apiEncrypt/testResponseEncrypt") + @Operation(summary = "测试 返回加密") + public ResponseDTO testResponseEncrypt(@RequestBody @Valid JweForm form) { + return ResponseDTO.ok(form); + } + + @ApiDecrypt + @ApiEncrypt + @PostMapping("/apiEncrypt/testDecryptAndEncrypt") + @Operation(summary = "测试 请求参数加密和解密、返回数据加密和解密") + public ResponseDTO testDecryptAndEncrypt(@RequestBody @Valid JweForm form) { + return ResponseDTO.ok(form); + } + + @ApiDecrypt + @ApiEncrypt + @PostMapping("/apiEncrypt/testArray") + @Operation(summary = "测试 数组加密和解密") + public ResponseDTO> testArray(@RequestBody @Valid ValidateList list) { + return ResponseDTO.ok(list); + } + + + @Data + public static class JweForm { + + @NotBlank(message = "姓名 不能为空") + String name; + + @NotNull + @Min(value = 1) + Integer age; + + } + +} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java index 492a063b..9696e5ec 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java @@ -1,17 +1,17 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.cache.CacheService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.cache.CacheService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import java.util.List; /** @@ -21,34 +21,33 @@ import java.util.List; * @Date 2021/10/11 20:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @RestController -@Api(tags = {SwaggerTagConst.Support.CACHE}) +@Tag(name = SwaggerTagConst.Support.CACHE) public class AdminCacheController extends SupportBaseController { - @Autowired + @Resource private CacheService cacheService; - @ApiOperation(value = "获取所有缓存 @author 罗伊") + @Operation(summary = "获取所有缓存 @author 罗伊") @GetMapping("/cache/names") + @SaCheckPermission("support:cache:keys") public ResponseDTO> cacheNames() { return ResponseDTO.ok(cacheService.cacheNames()); } - - @ApiOperation(value = "移除某个缓存 @author 罗伊") - @PreAuthorize("@saAuth.checkPermission('support:cache:delete')") + @Operation(summary = "移除某个缓存 @author 罗伊") @GetMapping("/cache/remove/{cacheName}") + @SaCheckPermission("support:cache:delete") public ResponseDTO removeCache(@PathVariable String cacheName) { cacheService.removeCache(cacheName); return ResponseDTO.ok(); } - - @ApiOperation(value = "获取某个缓存的所有key @author 罗伊") - @PreAuthorize("@saAuth.checkPermission('support:cache:keys')") + @Operation(summary = "获取某个缓存的所有key @author 罗伊") @GetMapping("/cache/keys/{cacheName}") + @SaCheckPermission("support:cache:keys") public ResponseDTO> cacheKeys(@PathVariable String cacheName) { return ResponseDTO.ok(cacheService.cacheKey(cacheName)); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminChangeLogController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminChangeLogController.java index 7c4b1eec..05897f38 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminChangeLogController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminChangeLogController.java @@ -1,17 +1,18 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.domain.ValidateList; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogAddForm; -import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogUpdateForm; -import net.lab1024.sa.common.module.support.changelog.service.ChangeLogService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.ValidateList; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.changelog.domain.form.ChangeLogAddForm; +import net.lab1024.sa.base.module.support.changelog.domain.form.ChangeLogUpdateForm; +import net.lab1024.sa.base.module.support.changelog.service.ChangeLogService; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; /** @@ -23,36 +24,36 @@ import javax.validation.Valid; */ @RestController -@Api(tags = SwaggerTagConst.Support.CHANGE_LOG) -public class AdminChangeLogController { +@Tag(name = SwaggerTagConst.Support.CHANGE_LOG) +public class AdminChangeLogController extends SupportBaseController { - @Autowired + @Resource private ChangeLogService changeLogService; - @ApiOperation("添加 @author 卓大") + @Operation(summary = "添加 @author 卓大") @PostMapping("/changeLog/add") - @PreAuthorize("@saAuth.checkPermission('changeLog:add')") + @SaCheckPermission("support:changeLog:add") public ResponseDTO add(@RequestBody @Valid ChangeLogAddForm addForm) { return changeLogService.add(addForm); } - @ApiOperation("更新 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('changeLog:update')") + @Operation(summary = "更新 @author 卓大") @PostMapping("/changeLog/update") + @SaCheckPermission("support:changeLog:update") public ResponseDTO update(@RequestBody @Valid ChangeLogUpdateForm updateForm) { return changeLogService.update(updateForm); } - @ApiOperation("批量删除 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('changeLog:batchDelete')") + @Operation(summary = "批量删除 @author 卓大") @PostMapping("/changeLog/batchDelete") + @SaCheckPermission("support:changeLog:batchDelete") public ResponseDTO batchDelete(@RequestBody ValidateList idList) { return changeLogService.batchDelete(idList); } - @ApiOperation("单个删除 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('changeLog:delete')") + @Operation(summary = "单个删除 @author 卓大") @GetMapping("/changeLog/delete/{changeLogId}") + @SaCheckPermission("support:changeLog:delete") public ResponseDTO batchDelete(@PathVariable Long changeLogId) { return changeLogService.delete(changeLogId); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminConfigController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminConfigController.java index 78ab1722..b16e9208 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminConfigController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminConfigController.java @@ -1,22 +1,22 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.config.ConfigService; -import net.lab1024.sa.common.module.support.config.domain.ConfigAddForm; -import net.lab1024.sa.common.module.support.config.domain.ConfigQueryForm; -import net.lab1024.sa.common.module.support.config.domain.ConfigUpdateForm; -import net.lab1024.sa.common.module.support.config.domain.ConfigVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.config.ConfigService; +import net.lab1024.sa.base.module.support.config.domain.ConfigAddForm; +import net.lab1024.sa.base.module.support.config.domain.ConfigQueryForm; +import net.lab1024.sa.base.module.support.config.domain.ConfigUpdateForm; +import net.lab1024.sa.base.module.support.config.domain.ConfigVO; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.validation.Valid; /** @@ -26,34 +26,34 @@ import javax.validation.Valid; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@Api(tags = {SwaggerTagConst.Support.CONFIG}) +@Tag(name = SwaggerTagConst.Support.CONFIG) @RestController public class AdminConfigController extends SupportBaseController { - @Autowired + @Resource private ConfigService configService; - @ApiOperation("分页查询系统配置 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('support:config:query')") + @Operation(summary = "分页查询系统配置 @author 卓大") @PostMapping("/config/query") - public ResponseDTO> querySystemConfigPage(@RequestBody @Valid ConfigQueryForm queryForm) { + @SaCheckPermission("support:config:query") + public ResponseDTO> queryConfigPage(@RequestBody @Valid ConfigQueryForm queryForm) { return configService.queryConfigPage(queryForm); } - @ApiOperation("添加配置参数 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('support:config:add')") + @Operation(summary = "添加配置参数 @author 卓大") @PostMapping("/config/add") - public ResponseDTO addSystemConfig(@RequestBody @Valid ConfigAddForm configAddForm) { + @SaCheckPermission("support:config:add") + public ResponseDTO addConfig(@RequestBody @Valid ConfigAddForm configAddForm) { return configService.add(configAddForm); } - @ApiOperation("修改配置参数 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('support:config:update')") + @Operation(summary = "修改配置参数 @author 卓大") @PostMapping("/config/update") - public ResponseDTO updateSystemConfig(@RequestBody @Valid ConfigUpdateForm updateForm) { - return configService.updateSystemConfig(updateForm); + @SaCheckPermission("support:config:update") + public ResponseDTO updateConfig(@RequestBody @Valid ConfigUpdateForm updateForm) { + return configService.updateConfig(updateForm); } } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java index 8f44a918..c6d71678 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java @@ -1,19 +1,22 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.dict.domain.form.*; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.common.module.support.dict.service.DictService; -import org.springframework.beans.factory.annotation.Autowired; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.dict.domain.form.*; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; +import net.lab1024.sa.base.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.module.support.dict.service.DictService; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -24,53 +27,66 @@ import java.util.List; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@Api(tags = {SwaggerTagConst.Support.DICT}) +@Tag(name = SwaggerTagConst.Support.DICT) @RestController public class AdminDictController extends SupportBaseController { - @Autowired + @Resource private DictService dictService; - @ApiOperation("分页查询数据字典KEY - @author 罗伊") + @Resource + private DictCacheService dictCacheService; + + @Operation(summary = "分页查询数据字典KEY - @author 罗伊") @PostMapping("/dict/key/query") public ResponseDTO> keyQuery(@Valid @RequestBody DictKeyQueryForm queryForm) { return dictService.keyQuery(queryForm); } - @ApiOperation("数据字典KEY-添加- @author 罗伊") + @Operation(summary = "数据字典KEY-添加- @author 罗伊") @PostMapping("/dict/key/add") + @SaCheckPermission("support:dict:add") public ResponseDTO keyAdd(@Valid @RequestBody DictKeyAddForm keyAddForm) { return dictService.keyAdd(keyAddForm); } - @ApiOperation("数据字典Value-添加- @author 罗伊") + @Operation(summary = "数据字典缓存-刷新- @author 罗伊") + @GetMapping("/dict/cache/refresh") + @SaCheckPermission("support:dict:refresh") + public ResponseDTO cacheRefresh() { + return dictCacheService.cacheRefresh(); + } + + @Operation(summary = "数据字典Value-添加- @author 罗伊") @PostMapping("/dict/value/add") public ResponseDTO valueAdd(@Valid @RequestBody DictValueAddForm valueAddForm) { return dictService.valueAdd(valueAddForm); } - @ApiOperation("数据字典KEY-更新- @author 罗伊") + @Operation(summary = "数据字典KEY-更新- @author 罗伊") @PostMapping("/dict/key/edit") + @SaCheckPermission("support:dict:edit") public ResponseDTO keyEdit(@Valid @RequestBody DictKeyUpdateForm keyUpdateForm) { return dictService.keyEdit(keyUpdateForm); } - @ApiOperation("数据字典Value-更新- @author 罗伊") + @Operation(summary = "数据字典Value-更新- @author 罗伊") @PostMapping("/dict/value/edit") public ResponseDTO valueEdit(@Valid @RequestBody DictValueUpdateForm valueUpdateForm) { return dictService.valueEdit(valueUpdateForm); } - @ApiOperation("数据字典KEY-删除- @author 罗伊") + @Operation(summary = "数据字典KEY-删除- @author 罗伊") @PostMapping("/dict/key/delete") + @SaCheckPermission("support:dict:delete") public ResponseDTO keyDelete(@RequestBody List keyIdList) { return dictService.keyDelete(keyIdList); } - @ApiOperation("数据字典Value-删除- @author 罗伊") + @Operation(summary = "数据字典Value-删除- @author 罗伊") @PostMapping("/dict/value/delete") public ResponseDTO valueDelete(@RequestBody List valueIdList) { return dictService.valueDelete(valueIdList); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminFileController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminFileController.java index b4528715..453d3749 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminFileController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminFileController.java @@ -1,20 +1,20 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.file.domain.form.FileQueryForm; -import net.lab1024.sa.common.module.support.file.domain.vo.FileVO; -import net.lab1024.sa.common.module.support.file.service.FileService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.file.domain.form.FileQueryForm; +import net.lab1024.sa.base.module.support.file.domain.vo.FileVO; +import net.lab1024.sa.base.module.support.file.service.FileService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.validation.Valid; /** @@ -24,18 +24,18 @@ import javax.validation.Valid; * @Date 2019年10月11日 15:34:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @RestController -@Api(tags = {SwaggerTagConst.Support.FILE}) +@Tag(name = SwaggerTagConst.Support.FILE) public class AdminFileController extends SupportBaseController { - @Autowired + @Resource private FileService fileService; - @ApiOperation("分页查询 @author 1024创新实验室-主任-卓大") - @PreAuthorize("@saAuth.checkPermission('support:file:query')") + @Operation(summary = "分页查询 @author 1024创新实验室-主任-卓大") @PostMapping("/file/queryPage") + @SaCheckPermission("support:file:query") public ResponseDTO> queryPage(@RequestBody @Valid FileQueryForm queryForm) { return ResponseDTO.ok(fileService.queryPage(queryForm)); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHeartBeatController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHeartBeatController.java index 2f91d0be..f9aaf6e4 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHeartBeatController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHeartBeatController.java @@ -1,19 +1,19 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.heartbeat.HeartBeatService; -import net.lab1024.sa.common.module.support.heartbeat.domain.HeartBeatRecordQueryForm; -import net.lab1024.sa.common.module.support.heartbeat.domain.HeartBeatRecordVO; -import org.springframework.beans.factory.annotation.Autowired; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.heartbeat.HeartBeatService; +import net.lab1024.sa.base.module.support.heartbeat.domain.HeartBeatRecordQueryForm; +import net.lab1024.sa.base.module.support.heartbeat.domain.HeartBeatRecordVO; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.validation.Valid; /** @@ -23,17 +23,17 @@ import javax.validation.Valid; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@Api(tags = {SwaggerTagConst.Support.HEART_BEAT}) +@Tag(name = SwaggerTagConst.Support.HEART_BEAT) @RestController public class AdminHeartBeatController extends SupportBaseController { - @Autowired + @Resource private HeartBeatService heartBeatService; @PostMapping("/heartBeat/query") - @ApiOperation("查询心跳记录 @author 卓大") + @Operation(summary = "查询心跳记录 @author 卓大") public ResponseDTO> query(@RequestBody @Valid HeartBeatRecordQueryForm pageParam) { return heartBeatService.pageQuery(pageParam); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHelpDocController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHelpDocController.java index 5d0949e2..51f1d1ff 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHelpDocController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminHelpDocController.java @@ -1,21 +1,21 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.*; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocDetailVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocVO; -import net.lab1024.sa.common.module.support.helpdoc.service.HelpDocCatalogService; -import net.lab1024.sa.common.module.support.helpdoc.service.HelpDocService; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.*; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocDetailVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocVO; +import net.lab1024.sa.base.module.support.helpdoc.service.HelpDocCatalogService; +import net.lab1024.sa.base.module.support.helpdoc.service.HelpDocService; +import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -26,36 +26,34 @@ import java.util.List; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@Api(tags = SwaggerTagConst.Support.HELP_DOC) +@Tag(name = SwaggerTagConst.Support.HELP_DOC) @RestController public class AdminHelpDocController extends SupportBaseController { - @Autowired + @Resource private HelpDocService helpDocService; - @Autowired + @Resource private HelpDocCatalogService helpDocCatalogService; // --------------------- 帮助文档 【目录管理】 ------------------------- - @ApiOperation("帮助文档目录-添加 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('helpDocCatalog:addCategory')") + @Operation(summary = "帮助文档目录-添加 @author 卓大") @PostMapping("/helpDoc/helpDocCatalog/add") public ResponseDTO addHelpDocCatalog(@RequestBody @Valid HelpDocCatalogAddForm helpDocCatalogAddForm) { return helpDocCatalogService.add(helpDocCatalogAddForm); } - @ApiOperation("帮助文档目录-更新 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('helpDocCatalog:edit')") + @Operation(summary = "帮助文档目录-更新 @author 卓大") @PostMapping("/helpDoc/helpDocCatalog/update") public ResponseDTO updateHelpDocCatalog(@RequestBody @Valid HelpDocCatalogUpdateForm helpDocCatalogUpdateForm) { return helpDocCatalogService.update(helpDocCatalogUpdateForm); } - @ApiOperation("帮助文档目录-删除 @author 卓大") + @Operation(summary = "帮助文档目录-删除 @author 卓大") @GetMapping("/helpDoc/helpDocCatalog/delete/{helpDocCatalogId}") public ResponseDTO deleteHelpDocCatalog(@PathVariable Long helpDocCatalogId) { return helpDocCatalogService.delete(helpDocCatalogId); @@ -63,43 +61,41 @@ public class AdminHelpDocController extends SupportBaseController { // --------------------- 帮助文档 【管理:增、删、查、改】------------------------- - @ApiOperation("【管理】帮助文档-分页查询 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('helpDoc:query')") + @Operation(summary = "【管理】帮助文档-分页查询 @author 卓大") @PostMapping("/helpDoc/query") + @SaCheckPermission("support:helpDoc:query") public ResponseDTO> query(@RequestBody @Valid HelpDocQueryForm queryForm) { return ResponseDTO.ok(helpDocService.query(queryForm)); } - @ApiOperation("【管理】帮助文档-获取详情 @author 卓大") + @Operation(summary = "【管理】帮助文档-获取详情 @author 卓大") @GetMapping("/helpDoc/getDetail/{helpDocId}") + @SaCheckPermission("support:helpDoc:add") public ResponseDTO getDetail(@PathVariable Long helpDocId) { return ResponseDTO.ok(helpDocService.getDetail(helpDocId)); } - @ApiOperation("【管理】帮助文档-添加 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('helpDoc:add')") + @Operation(summary = "【管理】帮助文档-添加 @author 卓大") @PostMapping("/helpDoc/add") @RepeatSubmit public ResponseDTO add(@RequestBody @Valid HelpDocAddForm addForm) { return helpDocService.add(addForm); } - @ApiOperation("【管理】帮助文档-更新 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('helpDoc:update')") + @Operation(summary = "【管理】帮助文档-更新 @author 卓大") @PostMapping("/helpDoc/update") @RepeatSubmit public ResponseDTO update(@RequestBody @Valid HelpDocUpdateForm updateForm) { return helpDocService.update(updateForm); } - @ApiOperation("【管理】帮助文档-删除 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('helpDoc:delete')") + @Operation(summary = "【管理】帮助文档-删除 @author 卓大") @GetMapping("/helpDoc/delete/{helpDocId}") public ResponseDTO delete(@PathVariable Long helpDocId) { return helpDocService.delete(helpDocId); } - @ApiOperation("【管理】帮助文档-根据关联id查询 @author 卓大") + @Operation(summary = "【管理】帮助文档-根据关联id查询 @author 卓大") @GetMapping("/helpDoc/queryHelpDocByRelationId/{relationId}") public ResponseDTO> queryHelpDocByRelationId(@PathVariable Long relationId) { return ResponseDTO.ok(helpDocService.queryHelpDocByRelationId(relationId)); diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java index 0fd71522..48d9b716 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminLoginLogController.java @@ -1,20 +1,21 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.loginlog.LoginLogService; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogQueryForm; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.loginlog.LoginLogService; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogQueryForm; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogVO; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** * 登录日志 * @@ -22,18 +23,18 @@ import org.springframework.web.bind.annotation.RestController; * @Date 2022/07/22 19:46:23 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @RestController -@Api(tags = {SwaggerTagConst.Support.LOGIN_LOG}) +@Tag(name = SwaggerTagConst.Support.LOGIN_LOG) public class AdminLoginLogController extends SupportBaseController { - @Autowired + @Resource private LoginLogService loginLogService; - @ApiOperation(value = "分页查询 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('loginLog:query')") + @Operation(summary = "分页查询 @author 卓大") @PostMapping("/loginLog/page/query") + @SaCheckPermission("support:loginLog:query") public ResponseDTO> queryByPage(@RequestBody LoginLogQueryForm queryForm) { return loginLogService.queryByPage(queryForm); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java index 85161a6f..b7c082f7 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminOperateLogController.java @@ -1,18 +1,19 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.operatelog.OperateLogService; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogQueryForm; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.operatelog.OperateLogService; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogQueryForm; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogVO; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; + /** * 操作日志 * @@ -20,25 +21,25 @@ import org.springframework.web.bind.annotation.*; * @Date 2021-12-08 20:48:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @RestController -@Api(tags = {SwaggerTagConst.Support.OPERATE_LOG}) +@Tag(name = SwaggerTagConst.Support.OPERATE_LOG) public class AdminOperateLogController extends SupportBaseController { - @Autowired + @Resource private OperateLogService operateLogService; - @ApiOperation(value = "分页查询 @author 罗伊") - @PreAuthorize("@saAuth.checkPermission('operateLog:query')") + @Operation(summary = "分页查询 @author 罗伊") @PostMapping("/operateLog/page/query") + @SaCheckPermission("support:operateLog:query") public ResponseDTO> queryByPage(@RequestBody OperateLogQueryForm queryForm) { return operateLogService.queryByPage(queryForm); } - @ApiOperation(value = "详情 @author 罗伊") - @PreAuthorize("@saAuth.checkPermission('operateLog:detail')") + @Operation(summary = "详情 @author 罗伊") @GetMapping("/operateLog/detail/{operateLogId}") + @SaCheckPermission("support:operateLog:detail") public ResponseDTO detail(@PathVariable Long operateLogId) { return operateLogService.detail(operateLogId); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminProtectController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminProtectController.java new file mode 100644 index 00000000..faa875a3 --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminProtectController.java @@ -0,0 +1,52 @@ +package net.lab1024.sa.admin.module.system.support; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.ValidateList; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailQueryForm; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailVO; +import net.lab1024.sa.base.module.support.securityprotect.service.ProtectLoginService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * + * 网络安全 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/17 19:07:27 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@RestController +@Tag(name = SwaggerTagConst.Support.PROTECT) +public class AdminProtectController extends SupportBaseController { + + @Resource + private ProtectLoginService protectLoginService; + + @Operation(summary = "分页查询 @author 1024创新实验室-主任-卓大") + @PostMapping("/protect/loginFail/queryPage") + public ResponseDTO> queryPage(@RequestBody @Valid LoginFailQueryForm queryForm) { + return ResponseDTO.ok(protectLoginService.queryPage(queryForm)); + } + + + @Operation(summary = "批量删除 @author 1024创新实验室-主任-卓大") + @PostMapping("/protect/loginFail/batchDelete") + public ResponseDTO batchDelete(@RequestBody ValidateList idList) { + return protectLoginService.batchDelete(idList); + } + + +} diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminReloadController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminReloadController.java index 24637f6e..b8f3214f 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminReloadController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminReloadController.java @@ -1,18 +1,18 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.reload.ReloadService; -import net.lab1024.sa.common.module.support.reload.domain.ReloadForm; -import net.lab1024.sa.common.module.support.reload.domain.ReloadItemVO; -import net.lab1024.sa.common.module.support.reload.domain.ReloadResultVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.reload.ReloadService; +import net.lab1024.sa.base.module.support.reload.domain.ReloadForm; +import net.lab1024.sa.base.module.support.reload.domain.ReloadItemVO; +import net.lab1024.sa.base.module.support.reload.domain.ReloadResultVO; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -23,31 +23,31 @@ import java.util.List; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @RestController -@Api(tags = {SwaggerTagConst.Support.RELOAD}) +@Tag(name = SwaggerTagConst.Support.RELOAD) public class AdminReloadController extends SupportBaseController { - @Autowired + @Resource private ReloadService reloadService; - @ApiOperation(value = "查询reload列表 @author 开云") + @Operation(summary = "查询reload列表 @author 开云") @GetMapping("/reload/query") public ResponseDTO> query() { return reloadService.query(); } - @ApiOperation(value = "获取reload result @author 开云") - @PreAuthorize("@saAuth.checkPermission('support:reload:result')") + @Operation(summary = "获取reload result @author 开云") @GetMapping("/reload/result/{tag}") + @SaCheckPermission("support:reload:result") public ResponseDTO> queryReloadResult(@PathVariable("tag") String tag) { return reloadService.queryReloadItemResult(tag); } - @ApiOperation(value = "通过tag更新标识 @author 开云") - @PreAuthorize("@saAuth.checkPermission('support:reload:execute')") + @Operation(summary = "通过tag更新标识 @author 开云") @PostMapping("/reload/update") + @SaCheckPermission("support:reload:update") public ResponseDTO updateByTag(@RequestBody @Valid ReloadForm reloadForm) { return reloadService.updateByTag(reloadForm); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSerialNumberController.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSerialNumberController.java index 329a2aaf..df492690 100644 --- a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSerialNumberController.java +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminSerialNumberController.java @@ -1,27 +1,27 @@ package net.lab1024.sa.admin.module.system.support; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartEnumUtil; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberIdEnum; -import net.lab1024.sa.common.module.support.serialnumber.dao.SerialNumberDao; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberEntity; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberGenerateForm; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberRecordEntity; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberRecordQueryForm; -import net.lab1024.sa.common.module.support.serialnumber.service.SerialNumberRecordService; -import net.lab1024.sa.common.module.support.serialnumber.service.SerialNumberService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum; +import net.lab1024.sa.base.module.support.serialnumber.dao.SerialNumberDao; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberEntity; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberGenerateForm; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberRecordEntity; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberRecordQueryForm; +import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberRecordService; +import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @@ -32,24 +32,24 @@ import java.util.List; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@Api(tags = SwaggerTagConst.Support.SERIAL_NUMBER) +@Tag(name = SwaggerTagConst.Support.SERIAL_NUMBER) @RestController public class AdminSerialNumberController extends SupportBaseController { - @Autowired + @Resource private SerialNumberDao serialNumberDao; - @Autowired + @Resource private SerialNumberService serialNumberService; - @Autowired + @Resource private SerialNumberRecordService serialNumberRecordService; - @ApiOperation("生成单号 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('support:serial:number:generate')") + @Operation(summary = "生成单号 @author 卓大") @PostMapping("/serialNumber/generate") + @SaCheckPermission("support:serialNumber:generate") public ResponseDTO> generate(@RequestBody @Valid SerialNumberGenerateForm generateForm) { SerialNumberIdEnum serialNumberIdEnum = SmartEnumUtil.getEnumByValue(generateForm.getSerialNumberId(), SerialNumberIdEnum.class); if (null == serialNumberIdEnum) { @@ -58,15 +58,15 @@ public class AdminSerialNumberController extends SupportBaseController { return ResponseDTO.ok(serialNumberService.generate(serialNumberIdEnum, generateForm.getCount())); } - @ApiOperation("获取所有单号定义 @author 卓大") + @Operation(summary = "获取所有单号定义 @author 卓大") @GetMapping("/serialNumber/all") public ResponseDTO> getAll() { return ResponseDTO.ok(serialNumberDao.selectList(null)); } - @ApiOperation("获取生成记录 @author 卓大") - @PreAuthorize("@saAuth.checkPermission('support:serial:number:record')") + @Operation(summary = "获取生成记录 @author 卓大") @PostMapping("/serialNumber/queryRecord") + @SaCheckPermission("support:serialNumber:record") public ResponseDTO> queryRecord(@RequestBody @Valid SerialNumberRecordQueryForm queryForm) { return ResponseDTO.ok(serialNumberRecordService.query(queryForm)); } diff --git a/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/util/AdminRequestUtil.java b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/util/AdminRequestUtil.java new file mode 100644 index 00000000..c7e466b6 --- /dev/null +++ b/smart-admin-api/sa-admin/src/main/java/net/lab1024/sa/admin/util/AdminRequestUtil.java @@ -0,0 +1,29 @@ +package net.lab1024.sa.admin.util; + +import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.util.SmartRequestUtil; + +/** + * admin 端的请求工具类 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/7/28 19:39:21 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ +public final class AdminRequestUtil { + + + public static RequestEmployee getRequestUser() { + return (RequestEmployee) SmartRequestUtil.getRequestUser(); + } + + public static Long getRequestUserId() { + RequestUser requestUser = getRequestUser(); + return null == requestUser ? null : requestUser.getUserId(); + } + + +} diff --git a/smart-admin-api/sa-admin/src/main/resources/dev/application.yaml b/smart-admin-api/sa-admin/src/main/resources/dev/application.yaml index d485d2fc..a65c37f0 100644 --- a/smart-admin-api/sa-admin/src/main/resources/dev/application.yaml +++ b/smart-admin-api/sa-admin/src/main/resources/dev/application.yaml @@ -1,25 +1,51 @@ -server: - servlet: - context-path: '/' - port: 1024 - # tomcat 配置,主要用于 配置 访问日志(便于将来排查错误) - tomcat: - basedir: ${localPath:/home}/logs/smart_admin_v2/dev/tomcat-logs - accesslog: - enabled: true - pattern: '%t %{X-Forwarded-For}i %a "%r" %s %D (%D ms)' +############################################################################################################# +# # +# 为了减少重复配置,本配置文件为此sa-admin的独有配置,更多配置请查看 sa-base 项目中的 sa-base.yaml 通用配置文件。 # +# 其中此文件中配置可以覆盖 sa-base.yaml 中的通用配置,具体实现类请看类:YamlProcessor.java # +# # +############################################################################################################# +# 项目配置: 名称、日志目录 +project: + name: sa-admin + log-directory: /home/smart-admin/${project.name}/${spring.profiles.active} + +# 项目端口和url根路径 +server: + port: 1024 + servlet: + context-path: / + +# 环境 spring: profiles: active: '@profiles.active@' -# 项目配置 -project: - name: sa-admin - module: net.lab1024.sa.admin.module - # swagger文档 swagger: host: localhost:${server.port} tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst + +####################################### 安全等级保护 相关配置 ################################################## +# # +# 建议开启 "三级等保" 所要求的配置,具体如下: # +# 1)连续登录失败 5 次锁定账户 30 分钟, # +# 2)登录超时时长建议为 30分钟,超过此时间没有访问系统会重新要求登录 # +# 3)密码复杂度至少三种字符,最小 8 位 # +# # +############################################################################################################# + +classified-protect: + # 连续登录失败次数则锁定,-1表示不受限制,可以一直尝试登录 + login-max-fail-times: 5 + # 连续登录失败锁定时间(单位:秒),-1表示不锁定,建议锁定30分钟 + login-fail-locked-seconds: 1800 + # 密码复杂度开启(默认复杂度为:至少三种字符,最小 8 位), true 开启,false 不开启,建议开启 + password-complexity-enabled: true + +sa-token: + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: 1800 + # token 有效期(单位:秒) 1天(86400秒),-1 代表永久有效 + timeout: 86400 \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/resources/dev/log4j2.xml b/smart-admin-api/sa-admin/src/main/resources/dev/log4j2-spring.xml similarity index 62% rename from smart-admin-api/sa-admin/src/main/resources/dev/log4j2.xml rename to smart-admin-api/sa-admin/src/main/resources/dev/log4j2-spring.xml index a110f0a4..14e3eea5 100644 --- a/smart-admin-api/sa-admin/src/main/resources/dev/log4j2.xml +++ b/smart-admin-api/sa-admin/src/main/resources/dev/log4j2-spring.xml @@ -5,15 +5,15 @@ --> - $${env:localPath:-/home}/logs/smart_admin_v2/dev + - + @@ -24,14 +24,14 @@ - - + + - + @@ -42,14 +42,14 @@ - - + + - + @@ -60,14 +60,14 @@ - - + + - + @@ -78,15 +78,34 @@ - - + + + + + + + + + + + + + + + + + + + + diff --git a/smart-admin-api/sa-admin/src/main/resources/dev/spy.properties b/smart-admin-api/sa-admin/src/main/resources/dev/spy.properties index 9877f620..667e1ea1 100644 --- a/smart-admin-api/sa-admin/src/main/resources/dev/spy.properties +++ b/smart-admin-api/sa-admin/src/main/resources/dev/spy.properties @@ -1,4 +1,4 @@ -#相关的包 +#相关的包 modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory # 日志格式 logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger diff --git a/smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/enterprise/EnterpriseMapper.xml b/smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/enterprise/EnterpriseMapper.xml index 11ed88ac..1484e713 100644 --- a/smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/enterprise/EnterpriseMapper.xml +++ b/smart-admin-api/sa-admin/src/main/resources/mapper/business/oa/enterprise/EnterpriseMapper.xml @@ -16,6 +16,7 @@ AND enterprise_id != #{excludeEnterpriseId} + + + + + + + \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/resources/mapper/system/role/RoleEmployeeMapper.xml b/smart-admin-api/sa-admin/src/main/resources/mapper/system/role/RoleEmployeeMapper.xml index ae1e7b5a..9e0a1379 100644 --- a/smart-admin-api/sa-admin/src/main/resources/mapper/system/role/RoleEmployeeMapper.xml +++ b/smart-admin-api/sa-admin/src/main/resources/mapper/system/role/RoleEmployeeMapper.xml @@ -7,6 +7,13 @@ type="net.lab1024.sa.admin.module.system.employee.domain.vo.EmployeeVO"> + + + + \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/resources/pre/application.yaml b/smart-admin-api/sa-admin/src/main/resources/pre/application.yaml index 0f3c730a..a65c37f0 100644 --- a/smart-admin-api/sa-admin/src/main/resources/pre/application.yaml +++ b/smart-admin-api/sa-admin/src/main/resources/pre/application.yaml @@ -1,25 +1,51 @@ -server: - servlet: - context-path: '/' - port: 1024 - # tomcat 配置,主要用于 配置 访问日志(便于将来排查错误) - tomcat: - basedir: ${localPath:/home}/logs/smart_admin_v2/pre/tomcat-logs - accesslog: - enabled: true - pattern: '%t %{X-Forwarded-For}i %a "%r" %s %D (%D ms)' +############################################################################################################# +# # +# 为了减少重复配置,本配置文件为此sa-admin的独有配置,更多配置请查看 sa-base 项目中的 sa-base.yaml 通用配置文件。 # +# 其中此文件中配置可以覆盖 sa-base.yaml 中的通用配置,具体实现类请看类:YamlProcessor.java # +# # +############################################################################################################# +# 项目配置: 名称、日志目录 +project: + name: sa-admin + log-directory: /home/smart-admin/${project.name}/${spring.profiles.active} + +# 项目端口和url根路径 +server: + port: 1024 + servlet: + context-path: / + +# 环境 spring: profiles: active: '@profiles.active@' -# 项目配置 -project: - name: sa-admin - module: net.lab1024.sa.admin.module - # swagger文档 swagger: host: localhost:${server.port} tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst + +####################################### 安全等级保护 相关配置 ################################################## +# # +# 建议开启 "三级等保" 所要求的配置,具体如下: # +# 1)连续登录失败 5 次锁定账户 30 分钟, # +# 2)登录超时时长建议为 30分钟,超过此时间没有访问系统会重新要求登录 # +# 3)密码复杂度至少三种字符,最小 8 位 # +# # +############################################################################################################# + +classified-protect: + # 连续登录失败次数则锁定,-1表示不受限制,可以一直尝试登录 + login-max-fail-times: 5 + # 连续登录失败锁定时间(单位:秒),-1表示不锁定,建议锁定30分钟 + login-fail-locked-seconds: 1800 + # 密码复杂度开启(默认复杂度为:至少三种字符,最小 8 位), true 开启,false 不开启,建议开启 + password-complexity-enabled: true + +sa-token: + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: 1800 + # token 有效期(单位:秒) 1天(86400秒),-1 代表永久有效 + timeout: 86400 \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/resources/test/log4j2.xml b/smart-admin-api/sa-admin/src/main/resources/pre/log4j2-spring.xml similarity index 62% rename from smart-admin-api/sa-admin/src/main/resources/test/log4j2.xml rename to smart-admin-api/sa-admin/src/main/resources/pre/log4j2-spring.xml index 035d17e0..d03ceca1 100644 --- a/smart-admin-api/sa-admin/src/main/resources/test/log4j2.xml +++ b/smart-admin-api/sa-admin/src/main/resources/pre/log4j2-spring.xml @@ -5,15 +5,15 @@ --> - $${env:localPath:-/home}/logs/smart_admin_v2/test + - + @@ -24,14 +24,14 @@ - - + + - + @@ -42,14 +42,14 @@ - - + + - + @@ -60,14 +60,14 @@ - - + + - + @@ -78,15 +78,34 @@ - - + + + + + + + + + + + + + + + + + + + + diff --git a/smart-admin-api/sa-admin/src/main/resources/prod/application.yaml b/smart-admin-api/sa-admin/src/main/resources/prod/application.yaml index 770833ba..a65c37f0 100644 --- a/smart-admin-api/sa-admin/src/main/resources/prod/application.yaml +++ b/smart-admin-api/sa-admin/src/main/resources/prod/application.yaml @@ -1,25 +1,51 @@ -server: - servlet: - context-path: '/' - port: 1024 - # tomcat 配置,主要用于 配置 访问日志(便于将来排查错误) - tomcat: - basedir: ${localPath:/home}/logs/smart_admin_v2/prod/tomcat-logs - accesslog: - enabled: true - pattern: '%t %{X-Forwarded-For}i %a "%r" %s %D (%D ms)' +############################################################################################################# +# # +# 为了减少重复配置,本配置文件为此sa-admin的独有配置,更多配置请查看 sa-base 项目中的 sa-base.yaml 通用配置文件。 # +# 其中此文件中配置可以覆盖 sa-base.yaml 中的通用配置,具体实现类请看类:YamlProcessor.java # +# # +############################################################################################################# +# 项目配置: 名称、日志目录 +project: + name: sa-admin + log-directory: /home/smart-admin/${project.name}/${spring.profiles.active} + +# 项目端口和url根路径 +server: + port: 1024 + servlet: + context-path: / + +# 环境 spring: profiles: active: '@profiles.active@' -# 项目配置 -project: - name: sa-admin - module: net.lab1024.sa.admin.module - # swagger文档 swagger: host: localhost:${server.port} tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst + +####################################### 安全等级保护 相关配置 ################################################## +# # +# 建议开启 "三级等保" 所要求的配置,具体如下: # +# 1)连续登录失败 5 次锁定账户 30 分钟, # +# 2)登录超时时长建议为 30分钟,超过此时间没有访问系统会重新要求登录 # +# 3)密码复杂度至少三种字符,最小 8 位 # +# # +############################################################################################################# + +classified-protect: + # 连续登录失败次数则锁定,-1表示不受限制,可以一直尝试登录 + login-max-fail-times: 5 + # 连续登录失败锁定时间(单位:秒),-1表示不锁定,建议锁定30分钟 + login-fail-locked-seconds: 1800 + # 密码复杂度开启(默认复杂度为:至少三种字符,最小 8 位), true 开启,false 不开启,建议开启 + password-complexity-enabled: true + +sa-token: + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: 1800 + # token 有效期(单位:秒) 1天(86400秒),-1 代表永久有效 + timeout: 86400 \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/resources/prod/log4j2.xml b/smart-admin-api/sa-admin/src/main/resources/prod/log4j2-spring.xml similarity index 62% rename from smart-admin-api/sa-admin/src/main/resources/prod/log4j2.xml rename to smart-admin-api/sa-admin/src/main/resources/prod/log4j2-spring.xml index dafcb3d0..e0b752ba 100644 --- a/smart-admin-api/sa-admin/src/main/resources/prod/log4j2.xml +++ b/smart-admin-api/sa-admin/src/main/resources/prod/log4j2-spring.xml @@ -5,15 +5,15 @@ --> - $${env:localPath:-/home}/logs/smart_admin_v2/prod + - + @@ -24,14 +24,14 @@ - - + + - + @@ -42,14 +42,14 @@ - - + + - + @@ -60,14 +60,14 @@ - - + + - + @@ -78,15 +78,34 @@ - - + + + + + + + + + + + + + + + + + + + + diff --git a/smart-admin-api/sa-admin/src/main/resources/test/application.yaml b/smart-admin-api/sa-admin/src/main/resources/test/application.yaml index 4acfd4ca..a65c37f0 100644 --- a/smart-admin-api/sa-admin/src/main/resources/test/application.yaml +++ b/smart-admin-api/sa-admin/src/main/resources/test/application.yaml @@ -1,25 +1,51 @@ -server: - servlet: - context-path: '/' - port: 1024 - # tomcat 配置,主要用于 配置 访问日志(便于将来排查错误) - tomcat: - basedir: ${localPath:/home}/logs/smart_admin_v2/test/tomcat-logs - accesslog: - enabled: true - pattern: '%t %{X-Forwarded-For}i %a "%r" %s %D (%D ms)' +############################################################################################################# +# # +# 为了减少重复配置,本配置文件为此sa-admin的独有配置,更多配置请查看 sa-base 项目中的 sa-base.yaml 通用配置文件。 # +# 其中此文件中配置可以覆盖 sa-base.yaml 中的通用配置,具体实现类请看类:YamlProcessor.java # +# # +############################################################################################################# +# 项目配置: 名称、日志目录 +project: + name: sa-admin + log-directory: /home/smart-admin/${project.name}/${spring.profiles.active} + +# 项目端口和url根路径 +server: + port: 1024 + servlet: + context-path: / + +# 环境 spring: profiles: active: '@profiles.active@' -# 项目配置 -project: - name: sa-admin - module: net.lab1024.sa.admin.module - # swagger文档 swagger: host: localhost:${server.port} tag-class: net.lab1024.sa.admin.constant.AdminSwaggerTagConst + +####################################### 安全等级保护 相关配置 ################################################## +# # +# 建议开启 "三级等保" 所要求的配置,具体如下: # +# 1)连续登录失败 5 次锁定账户 30 分钟, # +# 2)登录超时时长建议为 30分钟,超过此时间没有访问系统会重新要求登录 # +# 3)密码复杂度至少三种字符,最小 8 位 # +# # +############################################################################################################# + +classified-protect: + # 连续登录失败次数则锁定,-1表示不受限制,可以一直尝试登录 + login-max-fail-times: 5 + # 连续登录失败锁定时间(单位:秒),-1表示不锁定,建议锁定30分钟 + login-fail-locked-seconds: 1800 + # 密码复杂度开启(默认复杂度为:至少三种字符,最小 8 位), true 开启,false 不开启,建议开启 + password-complexity-enabled: true + +sa-token: + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: 1800 + # token 有效期(单位:秒) 1天(86400秒),-1 代表永久有效 + timeout: 86400 \ No newline at end of file diff --git a/smart-admin-api/sa-admin/src/main/resources/pre/log4j2.xml b/smart-admin-api/sa-admin/src/main/resources/test/log4j2-spring.xml similarity index 62% rename from smart-admin-api/sa-admin/src/main/resources/pre/log4j2.xml rename to smart-admin-api/sa-admin/src/main/resources/test/log4j2-spring.xml index 70c3f924..d03ceca1 100644 --- a/smart-admin-api/sa-admin/src/main/resources/pre/log4j2.xml +++ b/smart-admin-api/sa-admin/src/main/resources/test/log4j2-spring.xml @@ -5,15 +5,15 @@ --> - $${env:localPath:-/home}/logs/smart_admin_v2/pre + - + @@ -24,14 +24,14 @@ - - + + - + @@ -42,14 +42,14 @@ - - + + - + @@ -60,14 +60,14 @@ - - + + - + @@ -78,15 +78,34 @@ - - + + + + + + + + + + + + + + + + + + + + diff --git a/smart-admin-api/sa-admin/src/main/resources/test/spy.properties b/smart-admin-api/sa-admin/src/main/resources/test/spy.properties index 9877f620..667e1ea1 100644 --- a/smart-admin-api/sa-admin/src/main/resources/test/spy.properties +++ b/smart-admin-api/sa-admin/src/main/resources/test/spy.properties @@ -1,4 +1,4 @@ -#相关的包 +#相关的包 modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory # 日志格式 logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger diff --git a/smart-admin-api/sa-admin/src/test/java/net/lab1024/sa/admin/SmartAdminApplicationTest.java b/smart-admin-api/sa-admin/src/test/java/net/lab1024/sa/admin/AdminApplicationTest.java similarity index 94% rename from smart-admin-api/sa-admin/src/test/java/net/lab1024/sa/admin/SmartAdminApplicationTest.java rename to smart-admin-api/sa-admin/src/test/java/net/lab1024/sa/admin/AdminApplicationTest.java index 864741d1..0d8d4235 100644 --- a/smart-admin-api/sa-admin/src/test/java/net/lab1024/sa/admin/SmartAdminApplicationTest.java +++ b/smart-admin-api/sa-admin/src/test/java/net/lab1024/sa/admin/AdminApplicationTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @ExtendWith(SpringExtension.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) -public class SmartAdminApplicationTest { +public class AdminApplicationTest { @BeforeEach public void before() { diff --git a/smart-admin-api/sa-common/pom.xml b/smart-admin-api/sa-base/pom.xml similarity index 81% rename from smart-admin-api/sa-common/pom.xml rename to smart-admin-api/sa-base/pom.xml index 6a5d2b38..9965994f 100644 --- a/smart-admin-api/sa-common/pom.xml +++ b/smart-admin-api/sa-base/pom.xml @@ -5,14 +5,14 @@ net.1024lab sa-parent 1.0.0 - ../pom.xml + ../pom.xml - sa-common + sa-base 1.0.0 - sa-common - sa-common project + sa-base + sa-base project @@ -49,12 +49,19 @@ - + - org.springframework.boot - spring-boot-starter-security + cn.dev33 + sa-token-spring-boot-starter + + cn.dev33 + sa-token-redis-jackson + + + + org.springframework.boot spring-boot-starter-log4j2 @@ -122,8 +129,13 @@ - io.springfox - springfox-swagger2 + org.springdoc + springdoc-openapi-ui + + + + com.github.xiaoymin + knife4j-openapi3-spring-boot-starter @@ -131,11 +143,6 @@ okhttp - - io.springfox - springfox-swagger-ui - - com.alibaba fastjson @@ -156,18 +163,6 @@ kaptcha - - - cn.afterturn - easypoi-spring-boot-starter - - - - cn.afterturn - easypoi-web - - - com.googlecode.concurrentlinkedhashmap concurrentlinkedhashmap-lru @@ -183,15 +178,6 @@ aws-java-sdk-s3 - - - - - - - org.apache.poi - poi-scratchpad - org.apache.commons @@ -221,15 +207,54 @@ com.auth0 jwks-rsa + org.apache.velocity velocity-engine-core + org.apache.velocity.tools velocity-tools-generic + + org.lionsoul + ip2region + + + + org.bouncycastle + bcprov-jdk15on + + + + com.alibaba + easyexcel + + + + org.apache.poi + poi + + + + org.apache.poi + poi-ooxml + + + + org.apache.poi + poi-scratchpad + + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/annoation/NoNeedLogin.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/annoation/NoNeedLogin.java similarity index 78% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/annoation/NoNeedLogin.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/annoation/NoNeedLogin.java index e8100629..87e10e1d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/annoation/NoNeedLogin.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/annoation/NoNeedLogin.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.annoation; +package net.lab1024.sa.base.common.annoation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -12,7 +12,7 @@ import java.lang.annotation.Target; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCode.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCode.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCode.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCode.java index f67cc95c..31eed10c 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCode.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCode.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.code; +package net.lab1024.sa.base.common.code; /** * 错误码
@@ -8,7 +8,7 @@ package net.lab1024.sa.common.common.code; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public interface ErrorCode { @@ -29,22 +29,17 @@ public interface ErrorCode { /** * 错误码 - * - * @return */ int getCode(); /** * 错误消息 * - * @return */ String getMsg(); /** * 错误等级 - * - * @return */ String getLevel(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCodeRangeContainer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCodeRangeContainer.java similarity index 92% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCodeRangeContainer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCodeRangeContainer.java index db8cce84..73c5b3ae 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCodeRangeContainer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCodeRangeContainer.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.code; +package net.lab1024.sa.base.common.code; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -17,7 +17,7 @@ import java.util.stream.Stream; * @Date 2021/09/27 22:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ class ErrorCodeRangeContainer { @@ -37,9 +37,6 @@ class ErrorCodeRangeContainer { * 注册状态码 * 校验是否重复 是否越界 * - * @param clazz - * @param start - * @param end */ static void register(Class clazz, int start, int end) { String simpleName = clazz.getSimpleName(); @@ -70,7 +67,7 @@ class ErrorCodeRangeContainer { // 循环校验code并存储 List codeList = Stream.of(clazz.getEnumConstants()).map(codeEnum -> { - Integer code = codeEnum.getCode(); + int code = codeEnum.getCode(); if (code < start || code > end) { throw new IllegalArgumentException(String.format("<> error: %s[%d,%d] code %d out of range", simpleName, start, end, code)); } @@ -91,11 +88,6 @@ class ErrorCodeRangeContainer { /** * 是否存在于其他范围 - * - * @param start - * @param end - * @param range - * @return */ private static boolean isExistOtherRange(int start, int end, ImmutablePair range) { if (start >= range.getLeft() && start <= range.getRight()) { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCodeRegister.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCodeRegister.java similarity index 81% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCodeRegister.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCodeRegister.java index 43fe18a1..4fa925ab 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/ErrorCodeRegister.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/ErrorCodeRegister.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.common.code; +package net.lab1024.sa.base.common.code; -import static net.lab1024.sa.common.common.code.ErrorCodeRangeContainer.register; +import static net.lab1024.sa.base.common.code.ErrorCodeRangeContainer.register; /** * 注册code状态码
@@ -12,7 +12,7 @@ import static net.lab1024.sa.common.common.code.ErrorCodeRangeContainer.register * @Date 2021/09/27 23:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class ErrorCodeRegister { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/SystemErrorCode.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/SystemErrorCode.java similarity index 81% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/SystemErrorCode.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/SystemErrorCode.java index f3fc67ec..f3e0c39b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/SystemErrorCode.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/SystemErrorCode.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.code; +package net.lab1024.sa.base.common.code; import lombok.AllArgsConstructor; import lombok.Getter; @@ -10,12 +10,15 @@ import lombok.Getter; * @Date 2021/10/24 20:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Getter @AllArgsConstructor public enum SystemErrorCode implements ErrorCode { + /** + * 系统错误 + */ SYSTEM_ERROR(10001, "系统似乎出现了点小问题"), ; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/UnexpectedErrorCode.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/UnexpectedErrorCode.java similarity index 81% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/UnexpectedErrorCode.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/UnexpectedErrorCode.java index 2fc735d3..c1517e70 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/UnexpectedErrorCode.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/UnexpectedErrorCode.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.code; +package net.lab1024.sa.base.common.code; import lombok.AllArgsConstructor; import lombok.Getter; @@ -10,13 +10,20 @@ import lombok.Getter; * @Date 2021/09/27 22:10:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Getter @AllArgsConstructor public enum UnexpectedErrorCode implements ErrorCode { + /** + * 业务错误 + */ BUSINESS_HANDING(20001, "呃~ 业务繁忙,请稍后重试"), + + /** + * id错误 + */ PAY_ORDER_ID_ERROR(20002, "付款单id发生了异常,请联系技术人员排查"), ; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/UserErrorCode.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/UserErrorCode.java similarity index 68% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/UserErrorCode.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/UserErrorCode.java index 6178661a..f6dcfeb2 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/code/UserErrorCode.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/code/UserErrorCode.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.code; +package net.lab1024.sa.base.common.code; import lombok.AllArgsConstructor; import lombok.Getter; @@ -10,7 +10,7 @@ import lombok.Getter; * @Date 2021/09/21 22:12:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Getter @AllArgsConstructor @@ -24,7 +24,7 @@ public enum UserErrorCode implements ErrorCode { REPEAT_SUBMIT(30004, "亲~您操作的太快了,请稍等下再操作~"), - NO_PERMISSION(30005, "对不起,您无法访问此资源哦~"), + NO_PERMISSION(30005, "对不起,您没有权限访问此内容哦~"), DEVELOPING(30006, "系統正在紧急开发中,敬请期待~"), @@ -32,7 +32,12 @@ public enum UserErrorCode implements ErrorCode { USER_STATUS_ERROR(30008, "用户状态异常"), - FORM_REPEAT_SUBMIT(30009, "请勿重复提交"); + FORM_REPEAT_SUBMIT(30009, "请勿重复提交"), + + LOGIN_FAIL_LOCK(30010, "登录连续失败已经被锁定,无法登录"), + LOGIN_FAIL_WILL_LOCK(30011, "登录连续失败将会锁定提醒"), + + LOGIN_ACTIVE_TIMEOUT(30012, "长时间未操作系统,需要重新登录"); private final int code; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/constant/RequestHeaderConst.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java similarity index 72% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/constant/RequestHeaderConst.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java index 674e4dd4..fe5acb62 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/constant/RequestHeaderConst.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/constant/RequestHeaderConst.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.constant; +package net.lab1024.sa.base.common.constant; /** * 请求消息头常量 @@ -7,7 +7,7 @@ package net.lab1024.sa.common.common.constant; * @Date 2022-05-15 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class RequestHeaderConst { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/constant/StringConst.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/constant/StringConst.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/constant/StringConst.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/constant/StringConst.java index 2a40152d..e9e8fdf1 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/constant/StringConst.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/constant/StringConst.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.constant; +package net.lab1024.sa.base.common.constant; /** * 字符串常量 @@ -7,7 +7,7 @@ package net.lab1024.sa.common.common.constant; * @Date 2021-10-14 23:16:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class StringConst { @@ -41,4 +41,9 @@ public class StringConst { */ public static final String EMPTY = ""; + /** + * 全局通用 冒号 + */ + public static final String COLON = ":"; + } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/controller/SupportBaseController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/controller/SupportBaseController.java similarity index 54% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/controller/SupportBaseController.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/controller/SupportBaseController.java index 5c135dec..4449af25 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/controller/SupportBaseController.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/controller/SupportBaseController.java @@ -1,7 +1,8 @@ -package net.lab1024.sa.common.common.controller; +package net.lab1024.sa.base.common.controller; -import net.lab1024.sa.common.constant.UrlPrefixConst; +import net.lab1024.sa.base.constant.SwaggerTagConst; import org.springframework.web.bind.annotation.RequestMapping; + /** * 支撑类业务路由基类 * @@ -9,8 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping; * @Date 2022-04-24 20:43:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@RequestMapping(UrlPrefixConst.SUPPORT) +@RequestMapping(SwaggerTagConst.Support.URL_PREFIX) public class SupportBaseController { } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/DataScopePlugin.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/DataScopePlugin.java similarity index 69% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/DataScopePlugin.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/DataScopePlugin.java index 8963f216..0fe704c6 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/DataScopePlugin.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/DataScopePlugin.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; import org.apache.ibatis.plugin.Interceptor; @@ -9,7 +9,7 @@ import org.apache.ibatis.plugin.Interceptor; * @Date 2021-11-15 17:20:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public abstract class DataScopePlugin implements Interceptor { } \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/PageParam.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/PageParam.java similarity index 68% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/PageParam.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/PageParam.java index 8ffb7d75..f9550d87 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/PageParam.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/PageParam.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -18,24 +18,24 @@ import java.util.List; * @Date 2020/04/28 16:19 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class PageParam { - @ApiModelProperty(value = "页码(不能为空)", required = true, example = "1") + @Schema(description = "页码(不能为空)", example = "1") @NotNull(message = "分页参数不能为空") private Integer pageNum; - @ApiModelProperty(value = "每页数量(不能为空)", required = true, example = "10") + @Schema(description = "每页数量(不能为空)", example = "10") @NotNull(message = "每页数量不能为空") @Max(value = 200, message = "每页最大为200") private Integer pageSize; - @ApiModelProperty("是否查询总条数") + @Schema(description = "是否查询总条数") protected Boolean searchCount; - @ApiModelProperty("排序字段集合") + @Schema(description = "排序字段集合") @Size(max = 10, message = "排序字段最多10") @Valid private List sortItemList; @@ -46,11 +46,11 @@ public class PageParam { @Data public static class SortItem { - @ApiModelProperty("true正序|false倒序") + @Schema(description = "true正序|false倒序") @NotNull(message = "排序规则不能为空") private Boolean isAsc; - @ApiModelProperty(value = "排序字段") + @Schema(description = "排序字段") @NotBlank(message = "排序字段不能为空") @Length(max = 30, message = "排序字段最多30") private String column; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/PageResult.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/PageResult.java similarity index 57% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/PageResult.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/PageResult.java index 0f75f991..14274b3d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/PageResult.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/PageResult.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @@ -12,7 +12,7 @@ import java.util.List; * @Date 2020/04/28 16:19 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class PageResult { @@ -20,34 +20,34 @@ public class PageResult { /** * 当前页 */ - @ApiModelProperty(value = "当前页") + @Schema(description = "当前页") private Long pageNum; /** * 每页的数量 */ - @ApiModelProperty(value = "每页的数量") + @Schema(description = "每页的数量") private Long pageSize; /** * 总记录数 */ - @ApiModelProperty(value = "总记录数") + @Schema(description = "总记录数") private Long total; /** * 总页数 */ - @ApiModelProperty(value = "总页数") + @Schema(description = "总页数") private Long pages; /** * 结果集 */ - @ApiModelProperty(value = "结果集") + @Schema(description = "结果集") private List list; - @ApiModelProperty("是否为空") + @Schema(description = "是否为空") private Boolean emptyFlag; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/RequestUrlVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/RequestUrlVO.java similarity index 50% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/RequestUrlVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/RequestUrlVO.java index 3b8e0be3..4669c2db 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/RequestUrlVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/RequestUrlVO.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,17 +10,17 @@ import lombok.Data; * @Date 2021/9/1 20:15 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class RequestUrlVO { - @ApiModelProperty("注释说明") + @Schema(description = "注释说明") private String comment; - @ApiModelProperty("controller.method") + @Schema(description = "controller.method") private String name; - @ApiModelProperty("url") + @Schema(description = "url") private String url; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/RequestUser.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/RequestUser.java similarity index 78% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/RequestUser.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/RequestUser.java index afce6da7..9886436b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/RequestUser.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/RequestUser.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; /** * 请求用户 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.enumeration.UserTypeEnum; * @Date 2021-12-21 19:55:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public interface RequestUser { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ResponseDTO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ResponseDTO.java similarity index 70% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ResponseDTO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ResponseDTO.java index 4aaaf8e5..bb244811 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ResponseDTO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ResponseDTO.java @@ -1,9 +1,12 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.code.ErrorCode; -import net.lab1024.sa.common.common.code.UserErrorCode; +import net.lab1024.sa.base.common.code.ErrorCode; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.enumeration.DataTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; import org.apache.commons.lang3.StringUtils; /** @@ -13,31 +16,47 @@ import org.apache.commons.lang3.StringUtils; * @Date 2021-10-31 21:06:11 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data +@Schema public class ResponseDTO { public static final int OK_CODE = 0; public static final String OK_MSG = "success"; + @Schema(description = "返回码") private Integer code; + @Schema(description = "级别") private String level; private String msg; private Boolean ok; + @Schema(description = "返回数据") private T data; + @SchemaEnum(value = DataTypeEnum.class,desc = "数据类型") + private Integer dataType; + public ResponseDTO(Integer code, String level, boolean ok, String msg, T data) { this.code = code; this.level = level; this.ok = ok; this.msg = msg; this.data = data; + this.dataType = DataTypeEnum.NORMAL.getValue(); + } + + public ResponseDTO(Integer code, String level, boolean ok, String msg) { + this.code = code; + this.level = level; + this.ok = ok; + this.msg = msg; + this.dataType = DataTypeEnum.NORMAL.getValue(); } public ResponseDTO(ErrorCode errorCode, boolean ok, String msg, T data) { @@ -50,6 +69,7 @@ public class ResponseDTO { this.msg = errorCode.getMsg(); } this.data = data; + this.dataType = DataTypeEnum.NORMAL.getValue(); } public static ResponseDTO ok() { @@ -85,8 +105,8 @@ public class ResponseDTO { return new ResponseDTO<>(errorCode, ok, null, null); } - public static ResponseDTO error(ResponseDTO responseDTO) { - return new ResponseDTO<>(responseDTO.getCode(), responseDTO.getLevel(), responseDTO.getOk(), responseDTO.getMsg(), responseDTO.getData()); + public static ResponseDTO error(ResponseDTO responseDTO) { + return new ResponseDTO<>(responseDTO.getCode(), responseDTO.getLevel(), responseDTO.getOk(), responseDTO.getMsg(), null); } public static ResponseDTO error(ErrorCode errorCode, String msg) { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnvironment.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/SystemEnvironment.java similarity index 73% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnvironment.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/SystemEnvironment.java index 8cf4b845..232b292b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/SystemEnvironment.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/SystemEnvironment.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum; +import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum; /** * 系统环境 @@ -12,7 +12,7 @@ import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum; * @Date 2021/8/13 21:06:11 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/UserPermission.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/UserPermission.java new file mode 100644 index 00000000..c10897d0 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/UserPermission.java @@ -0,0 +1,31 @@ +package net.lab1024.sa.base.common.domain; + +import lombok.Data; + +import java.util.List; + +/** + * sa-token 所需的权限信息 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/8/26 15:23:10 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@Data +public class UserPermission { + + /** + * 权限列表 + */ + private List permissionList; + + /** + * 角色列表 + */ + private List roleList; + + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ValidateData.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ValidateData.java similarity index 75% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ValidateData.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ValidateData.java index a9aff002..dee1f8cc 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ValidateData.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ValidateData.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; import lombok.Data; @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; * @Date 2020/10/16 21:06:11 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class ValidateData { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ValidateList.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ValidateList.java similarity index 96% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ValidateList.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ValidateList.java index c2ccb33c..188e3f44 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/domain/ValidateList.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/domain/ValidateList.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.domain; +package net.lab1024.sa.base.common.domain; import javax.validation.Valid; import javax.validation.constraints.NotEmpty; @@ -11,7 +11,7 @@ import java.util.*; * @Date 2020-02-03 17:37 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class ValidateList implements List { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/BaseEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/BaseEnum.java similarity index 88% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/BaseEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/BaseEnum.java index c7eaf693..6593aa9e 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/BaseEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/BaseEnum.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.enumeration; +package net.lab1024.sa.base.common.enumeration; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONAware; @@ -16,7 +16,7 @@ import java.util.Objects; * @Date 2018-07-17 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public interface BaseEnum { @@ -74,8 +74,8 @@ public interface BaseEnum { enumJson = enumJson.replaceAll("\"", ""); enumJson = enumJson.replaceAll("\t", "  "); enumJson = enumJson.replaceAll("\n", "
"); - String prefix = "
export const
" + CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, clazz.getSimpleName() + " =
"); - return prefix + "" + enumJson + "
"; + String prefix = "
export const " + CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, clazz.getSimpleName() + " =
"); + return prefix + enumJson + "
"; } @Data diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/DataTypeEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/DataTypeEnum.java new file mode 100644 index 00000000..6cb068c0 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/DataTypeEnum.java @@ -0,0 +1,32 @@ +package net.lab1024.sa.base.common.enumeration; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/25 09:47:13 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@Getter +@AllArgsConstructor +public enum DataTypeEnum implements BaseEnum { + + /** + *普通数据 + */ + NORMAL(1, "普通数据"), + + /** + * 加密数据 + */ + ENCRYPT(10, "加密数据"), + ; + private final Integer value; + + private final String desc; + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/GenderEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/GenderEnum.java similarity index 81% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/GenderEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/GenderEnum.java index 548d02e1..cbfbc390 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/GenderEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/GenderEnum.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.enumeration; +package net.lab1024.sa.base.common.enumeration; import lombok.AllArgsConstructor; import lombok.Getter; @@ -10,7 +10,7 @@ import lombok.Getter; * @Date 2019/09/24 16:50 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvironmentEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/SystemEnvironmentEnum.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvironmentEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/SystemEnvironmentEnum.java index bccaecbd..c4167fd7 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/SystemEnvironmentEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/SystemEnvironmentEnum.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.enumeration; +package net.lab1024.sa.base.common.enumeration; import lombok.AllArgsConstructor; @@ -11,7 +11,7 @@ import lombok.Getter; * @Date 2020-10-15 22:45:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/UserTypeEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/UserTypeEnum.java similarity index 82% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/UserTypeEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/UserTypeEnum.java index c34670b9..60bec4df 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/enumeration/UserTypeEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/enumeration/UserTypeEnum.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.enumeration; +package net.lab1024.sa.base.common.enumeration; /** * 用户类型 @@ -7,7 +7,7 @@ package net.lab1024.sa.common.common.enumeration; * @Date 2022/10/19 21:46:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public enum UserTypeEnum implements BaseEnum { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/exception/BusinessException.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/exception/BusinessException.java similarity index 83% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/exception/BusinessException.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/exception/BusinessException.java index 19b6b958..481210d2 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/exception/BusinessException.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/exception/BusinessException.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.common.exception; +package net.lab1024.sa.base.common.exception; -import net.lab1024.sa.common.common.code.ErrorCode; +import net.lab1024.sa.base.common.code.ErrorCode; /** * 业务逻辑异常,全局异常拦截后统一返回ResponseCodeConst.SYSTEM_ERROR @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.code.ErrorCode; * @Date 2020/8/25 21:57 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class BusinessException extends RuntimeException { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/DictValueVoDeserializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/DictValueVoDeserializer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java index e61f1133..86eba416 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/DictValueVoDeserializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.json.deserializer; +package net.lab1024.sa.base.common.json.deserializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictValueVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; import java.io.IOException; import java.util.ArrayList; @@ -21,7 +21,7 @@ import java.util.stream.Collectors; * @Date 2022-08-12 22:17:53 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j public class DictValueVoDeserializer extends JsonDeserializer { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/FileKeyVoDeserializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/FileKeyVoDeserializer.java similarity index 90% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/FileKeyVoDeserializer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/FileKeyVoDeserializer.java index 66d5bdb6..f2ebab1a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/FileKeyVoDeserializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/FileKeyVoDeserializer.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.json.deserializer; +package net.lab1024.sa.base.common.json.deserializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.module.support.file.domain.vo.FileVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileVO; import java.io.IOException; import java.util.ArrayList; @@ -22,7 +22,7 @@ import java.util.stream.Collectors; * @Date 2022-11-24 17:15:23 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j public class FileKeyVoDeserializer extends JsonDeserializer { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/LongJsonDeserializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/LongJsonDeserializer.java similarity index 87% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/LongJsonDeserializer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/LongJsonDeserializer.java index debb4875..01117eb3 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/deserializer/LongJsonDeserializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/LongJsonDeserializer.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.json.deserializer; +package net.lab1024.sa.base.common.json.deserializer; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; @@ -14,7 +14,7 @@ import java.io.IOException; * @Date 2020-06-02 22:55:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class LongJsonDeserializer extends JsonDeserializer { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/BigDecimalNullZeroSerializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/BigDecimalNullZeroSerializer.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/BigDecimalNullZeroSerializer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/BigDecimalNullZeroSerializer.java index b0174ddf..aac0566e 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/BigDecimalNullZeroSerializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/BigDecimalNullZeroSerializer.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.json.serializer; +package net.lab1024.sa.base.common.json.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; @@ -14,7 +14,7 @@ import java.math.BigDecimal; * @Date 2020/8/20 21:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class BigDecimalNullZeroSerializer extends JsonSerializer { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/DictValueVoSerializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/DictValueVoSerializer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java index 5398bb0d..7a81a14e 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/DictValueVoSerializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/DictValueVoSerializer.java @@ -1,14 +1,14 @@ -package net.lab1024.sa.common.common.json.serializer; +package net.lab1024.sa.base.common.json.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.google.common.collect.Lists; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictValueVO; -import net.lab1024.sa.common.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; +import net.lab1024.sa.base.module.support.dict.service.DictCacheService; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; +import javax.annotation.Resource; import java.io.IOException; import java.util.Arrays; import java.util.List; @@ -20,11 +20,11 @@ import java.util.List; * @Date 2022-08-12 22:17:53 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class DictValueVoSerializer extends JsonSerializer { - @Autowired + @Resource private DictCacheService dictCacheService; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/FileKeySerializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/FileKeySerializer.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/FileKeySerializer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/FileKeySerializer.java index d63d492b..7f5be303 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/FileKeySerializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/FileKeySerializer.java @@ -1,13 +1,13 @@ -package net.lab1024.sa.common.common.json.serializer; +package net.lab1024.sa.base.common.json.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.file.service.FileService; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.module.support.file.service.FileService; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; +import javax.annotation.Resource; import java.io.IOException; /** @@ -17,11 +17,11 @@ import java.io.IOException; * @Date 2020/8/15 22:06 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class FileKeySerializer extends JsonSerializer { - @Autowired + @Resource private FileService fileService; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/FileKeyVoSerializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/FileKeyVoSerializer.java similarity index 78% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/FileKeyVoSerializer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/FileKeyVoSerializer.java index 8f27dc1e..707b7327 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/FileKeyVoSerializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/FileKeyVoSerializer.java @@ -1,14 +1,14 @@ -package net.lab1024.sa.common.common.json.serializer; +package net.lab1024.sa.base.common.json.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.google.common.collect.Lists; -import net.lab1024.sa.common.module.support.file.domain.vo.FileVO; -import net.lab1024.sa.common.module.support.file.service.FileService; +import net.lab1024.sa.base.module.support.file.domain.vo.FileVO; +import net.lab1024.sa.base.module.support.file.service.FileService; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; +import javax.annotation.Resource; import java.io.IOException; import java.util.Arrays; import java.util.List; @@ -20,11 +20,11 @@ import java.util.List; * @Date 2020/8/15 22:06 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class FileKeyVoSerializer extends JsonSerializer { - @Autowired + @Resource private FileService fileService; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/LongJsonSerializer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/LongJsonSerializer.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/LongJsonSerializer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/LongJsonSerializer.java index 05a140a3..3a4a1dd0 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/json/serializer/LongJsonSerializer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/json/serializer/LongJsonSerializer.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.json.serializer; +package net.lab1024.sa.base.common.json.serializer; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; @@ -14,7 +14,7 @@ import java.io.IOException; * @Date 2020-06-02 22:55:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class LongJsonSerializer extends JsonSerializer { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/ApiModelPropertyEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SchemaEnum.java similarity index 75% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/ApiModelPropertyEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SchemaEnum.java index c306f00b..b0a94214 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/ApiModelPropertyEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SchemaEnum.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.common.swagger; +package net.lab1024.sa.base.common.swagger; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -14,16 +14,15 @@ import java.lang.annotation.Target; * @Date 2019/05/16 23:18 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) -public @interface ApiModelPropertyEnum { +public @interface SchemaEnum { /** * 枚举类对象 * - * @return */ Class value(); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SchemaEnumPropertyCustomizer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SchemaEnumPropertyCustomizer.java new file mode 100644 index 00000000..d487b0e2 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SchemaEnumPropertyCustomizer.java @@ -0,0 +1,52 @@ +package net.lab1024.sa.base.common.swagger; + +import io.swagger.v3.core.converter.AnnotatedType; +import io.swagger.v3.oas.models.media.Schema; +import net.lab1024.sa.base.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import org.springdoc.core.customizers.PropertyCustomizer; +import org.springframework.stereotype.Component; + +import java.lang.annotation.Annotation; + +/** + * + * 自定义枚举类文档 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/12/25 23:28:51 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Component +public class SchemaEnumPropertyCustomizer implements PropertyCustomizer { + + @Override + public Schema customize(Schema schema, AnnotatedType type) { + if (type.getCtxAnnotations() == null) { + return schema; + } + + StringBuilder description = new StringBuilder(); + for (Annotation ctxAnnotation : type.getCtxAnnotations()) { + if (ctxAnnotation.annotationType().equals(CheckEnum.class) && ((CheckEnum) ctxAnnotation).required()) { + description.append("【必填】"); + } + } + + for (Annotation ctxAnnotation : type.getCtxAnnotations()) { + if (ctxAnnotation.annotationType().equals(SchemaEnum.class)) { + description.append(((SchemaEnum) ctxAnnotation).desc()); + Class clazz = ((SchemaEnum) ctxAnnotation).value(); + description.append(BaseEnum.getInfo(clazz)); + } + } + + if (description.length() > 0) { + schema.setDescription(description.toString()); + } + return schema; + } + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SmartOperationCustomizer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SmartOperationCustomizer.java new file mode 100644 index 00000000..041182de --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/swagger/SmartOperationCustomizer.java @@ -0,0 +1,114 @@ +package net.lab1024.sa.base.common.swagger; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaMode; +import io.swagger.v3.oas.models.Operation; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.apiencrypt.annotation.ApiDecrypt; +import net.lab1024.sa.base.module.support.apiencrypt.annotation.ApiEncrypt; +import org.springdoc.core.customizers.OperationCustomizer; +import org.springframework.web.method.HandlerMethod; + +import java.util.ArrayList; +import java.util.List; + +/** + * 权限、接口加解密等 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/12/26 13:47:39 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ + +public class SmartOperationCustomizer implements OperationCustomizer { + + @Override + public Operation customize(Operation operation, HandlerMethod handlerMethod) { + + List noteList = new ArrayList<>(); + + // 请求参数加密 + List encryptBuilderList = new ArrayList<>(); + + if (handlerMethod.getMethodAnnotation(ApiDecrypt.class) != null || + handlerMethod.getBeanType().getAnnotation(ApiDecrypt.class) != null) { + encryptBuilderList.add("【请求参数加密】"); + } + + if (handlerMethod.getMethodAnnotation(ApiEncrypt.class) != null || + handlerMethod.getBeanType().getAnnotation(ApiEncrypt.class) != null) { + encryptBuilderList.add("【返回结果加密】"); + } + + if (!encryptBuilderList.isEmpty()) { + noteList.add("
接口安全:" + SmartStringUtil.join(",", encryptBuilderList) + ""); + } + + // 权限 + noteList.addAll(getPermission(handlerMethod)); + + // 更新 + operation.setDescription(SmartStringUtil.join("
", noteList)); + + return operation; + } + + + private List getPermission(HandlerMethod handlerMethod) { + List values = new ArrayList<>(); + + StringBuilder permissionStringBuilder = new StringBuilder(); + SaCheckPermission classPermissions = handlerMethod.getBeanType().getAnnotation(SaCheckPermission.class); + if (classPermissions != null) { + permissionStringBuilder.append(""); + permissionStringBuilder.append("类:").append(getAnnotationNote(classPermissions.value(), classPermissions.mode())); + permissionStringBuilder.append("
"); + } + + SaCheckPermission methodPermission = handlerMethod.getMethodAnnotation(SaCheckPermission.class); + if (methodPermission != null) { + permissionStringBuilder.append(""); + permissionStringBuilder.append("方法:").append(getAnnotationNote(methodPermission.value(), methodPermission.mode())); + permissionStringBuilder.append("
"); + } + + if (permissionStringBuilder.length() > 0) { + permissionStringBuilder.insert(0, "权限校验:
"); + values.add(permissionStringBuilder.toString()); + } + + + StringBuilder roleStringBuilder = new StringBuilder(); + SaCheckRole classCheckRole = handlerMethod.getBeanType().getAnnotation(SaCheckRole.class); + if (classCheckRole != null) { + roleStringBuilder.append(""); + roleStringBuilder.append("类:").append(getAnnotationNote(classCheckRole.value(), classCheckRole.mode())); + roleStringBuilder.append("
"); + } + + SaCheckPermission methodCheckRole = handlerMethod.getMethodAnnotation(SaCheckPermission.class); + if (methodCheckRole != null) { + roleStringBuilder.append(""); + roleStringBuilder.append("方法:").append(getAnnotationNote(methodCheckRole.value(), methodCheckRole.mode())); + roleStringBuilder.append("
"); + } + + if (roleStringBuilder.length() > 0) { + roleStringBuilder.insert(0, "角色校验:
"); + values.add(roleStringBuilder.toString()); + } + + return values; + } + + private String getAnnotationNote(String[] values, SaMode mode) { + if (mode.equals(SaMode.AND)) { + return String.join(" 且 ", values); + } else { + return String.join(" 或 ", values); + } + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartBeanUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBeanUtil.java similarity index 95% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartBeanUtil.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBeanUtil.java index ec36b2b2..d0c4bf12 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartBeanUtil.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBeanUtil.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.util; +package net.lab1024.sa.base.common.util; import org.springframework.beans.BeanUtils; @@ -17,7 +17,7 @@ import java.util.stream.Collectors; * @Date 2018-01-15 10:48:23 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class SmartBeanUtil { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartBigDecimalUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBigDecimalUtil.java similarity index 98% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartBigDecimalUtil.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBigDecimalUtil.java index a1ff2da6..fdd2a65a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartBigDecimalUtil.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBigDecimalUtil.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.util; +package net.lab1024.sa.base.common.util; import java.math.BigDecimal; import java.math.RoundingMode; @@ -10,7 +10,7 @@ import java.math.RoundingMode; * @Date 2018/01/17 13:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class SmartBigDecimalUtil { diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartDateFormatterEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartDateFormatterEnum.java new file mode 100644 index 00000000..c19c07bb --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartDateFormatterEnum.java @@ -0,0 +1,79 @@ +package net.lab1024.sa.base.common.util; + + +import java.time.format.DateTimeFormatter; + +/** + * @Author 1024创新实验室: 胡克 + * @Date 2023/12/5 21:26:25 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * 1024创新实验室 ( https://1024lab.net ),2012-2023 + */ +public enum SmartDateFormatterEnum { + /** + * 日期格式 :年月日 yyyy-MM-dd + * 例:2021-10-15 + */ + YMD(DateTimeFormatter.ofPattern("yyyy-MM-dd")), + + /** + * 日期格式 :年月日 时分 yyyy-MM-dd HH:mm + * 例:2021-10-15 10:15 + */ + YMD_HM(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")), + + /** + * 日期格式 :年月日 时分秒 yyyy-MM-dd HH:mm:ss + * 例:2021-10-15 10:15:00 + */ + YMD_HMS(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), + + /** + * 日期格式 :年月 yyyy-MM + * 例:2021-10 + */ + YM(DateTimeFormatter.ofPattern("yyyy-MM")), + + /** + * 日期格式:年月 MM-dd + * 例:10-15 + */ + MD(DateTimeFormatter.ofPattern("MM-dd")), + + /** + * 日期格式:年月 MM月dd日 + * 例:10月15日 + */ + CHINESE_MD(DateTimeFormatter.ofPattern("MM月dd日")), + + /** + * 日期格式 : yyyyMMddHHmmss + * 例:20091225091010 + */ + YMDHMS(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")), + + /** + * 日期格式 :时分秒 HH:mm:ss + * 例:10:15:00 + */ + HMS(DateTimeFormatter.ofPattern("HH:mm:ss")), + + /** + * 日期格式 :时分 HH:mm + * 例:10:15 + */ + HM(DateTimeFormatter.ofPattern("HH:mm")) + + ; + + private final DateTimeFormatter formatter; + + SmartDateFormatterEnum(DateTimeFormatter formatter) { + this.formatter = formatter; + } + + public DateTimeFormatter getFormatter() { + return formatter; + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartEnumUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartEnumUtil.java similarity index 96% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartEnumUtil.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartEnumUtil.java index 40c34a95..290c4ad5 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartEnumUtil.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartEnumUtil.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.common.util; +package net.lab1024.sa.base.common.util; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -20,7 +20,7 @@ import java.util.stream.Stream; * @Date 2017/10/10 18:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class SmartEnumUtil { diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartIpUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartIpUtil.java new file mode 100644 index 00000000..2ab51037 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartIpUtil.java @@ -0,0 +1,84 @@ +package net.lab1024.sa.base.common.util; + +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.constant.StringConst; +import org.lionsoul.ip2region.xdb.Searcher; + +import java.util.ArrayList; +import java.util.List; + +/** + * IP工具类 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/9/14 15:35:11 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ +@Slf4j +public class SmartIpUtil { + + private static Searcher IP_SEARCHER; + + /** + * 初始化数据 + * + * @param filePath + */ + public static void init(String filePath) { + + try { + byte[] cBuff = Searcher.loadContentFromFile(filePath); + IP_SEARCHER = Searcher.newWithBuffer(cBuff); + + } catch (Throwable e) { + log.error("初始化ip2region.xdb文件失败,报错信息:[{}]", e.getMessage(), e); + throw new RuntimeException("系统异常!"); + } + } + + + /** + * 自定义解析ip地址 + * + * @param ipStr ipStr + * @return 返回结果例 [河南省, 洛阳市, 洛龙区] + */ + public static List getRegionList(String ipStr) { + try { + List regionList = new ArrayList<>(); + if (SmartStringUtil.isEmpty(ipStr)) { + return regionList; + } + ipStr = ipStr.trim(); + String region = IP_SEARCHER.search(ipStr); + String[] split = region.split("\\|"); + for (String str : split) { + regionList.add(str); + } + return regionList; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + /** + * 自定义解析ip地址 + * + * @param ipStr ipStr + * @return 返回结果例 河南省|洛阳市|洛龙区 + */ + public static String getRegion(String ipStr) { + try { + if (SmartStringUtil.isEmpty(ipStr)) { + return StringConst.EMPTY; + } + ipStr = ipStr.trim(); + return IP_SEARCHER.search(ipStr); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartLocalDateUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartLocalDateUtil.java new file mode 100644 index 00000000..101c6edb --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartLocalDateUtil.java @@ -0,0 +1,124 @@ +package net.lab1024.sa.base.common.util; + +import java.time.*; +import java.time.format.TextStyle; +import java.time.temporal.ChronoUnit; +import java.util.Date; +import java.util.Locale; + + +/** + * @Author 1024创新实验室:胡克 + * @Date 2023/12/5 22:25:43 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * 1024创新实验室 ( https://1024lab.net ),2012-2023 + */ +public class SmartLocalDateUtil { + + + /** + * 格式化 LocalDateTime 返回对应格式字符串 + * + * @param time + * @param formatterEnum {@link SmartDateFormatterEnum} + * @return + */ + public static String format(LocalDateTime time, SmartDateFormatterEnum formatterEnum) { + return time.format(formatterEnum.getFormatter()); + } + + /** + * 格式化 LocalDate返回对应格式字符串 + * + * @param date + * @param formatterEnum {@link SmartDateFormatterEnum} + * @return + */ + public static String format(LocalDate date, SmartDateFormatterEnum formatterEnum) { + return date.format(formatterEnum.getFormatter()); + } + + /** + * 解析时间字符串 返回LocalDateTime + * + * @param time + * @param formatterEnum {@link SmartDateFormatterEnum} + * @return + */ + public static LocalDateTime parse(String time, SmartDateFormatterEnum formatterEnum) { + return LocalDateTime.parse(time, formatterEnum.getFormatter()); + } + + /** + * 解析时间字符串 返回 LocalDate + * + * @param time + * @param formatterEnum {@link SmartDateFormatterEnum} + * @return + */ + public static LocalDate parseDate(String time, SmartDateFormatterEnum formatterEnum) { + return LocalDate.parse(time, formatterEnum.getFormatter()); + } + + /** + * 获取指定日期时间戳 + * + * @param time + * @return + */ + public static Long getTimestamp(LocalDateTime time) { + return time.toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); + } + + /** + * 获取当前时间戳(秒) + * + * @return + */ + public static long nowSecond() { + return System.currentTimeMillis() / 1000; + } + + /** + * 将时间格式化为 星期几,例:星期一 ... 星期日 + * + * @param localDate + * @return + */ + public static String formatToChineseWeek(LocalDate localDate) { + return localDate.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE); + } + + /** + * 将时间格式化为 周几,例:周一 ... 周日 + * + * @param localDate + * @return + */ + public static String formatToChineseWeekZhou(LocalDate localDate) { + return formatToChineseWeek(localDate).replace("星期", "周"); + } + + public static LocalDateTime toLocalDateTime(Date date) { + return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime(); + } + + /** + * 获取当天剩余时间 单位 + * + * @param unit 时间单位 + * @return + */ + public static Long getDayBalanceTime(ChronoUnit unit) { + LocalDateTime now = LocalDateTime.now(); + return Duration.between(now, now.plusDays(1L).with(LocalTime.MIN)).get(unit); + } + + public static void main(String[] args) { + System.out.println(SmartLocalDateUtil.format(LocalDateTime.now(), SmartDateFormatterEnum.YMD_HMS)); + System.out.println(SmartLocalDateUtil.format(LocalDateTime.now(), SmartDateFormatterEnum.YMD_HM)); + System.out.println(SmartLocalDateUtil.parse("2021-10-15 10:10:00", SmartDateFormatterEnum.YMD_HMS)); + } + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartPageUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartPageUtil.java similarity index 60% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartPageUtil.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartPageUtil.java index 63ac5d7b..4e2f24c0 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartPageUtil.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartPageUtil.java @@ -1,12 +1,16 @@ -package net.lab1024.sa.common.common.util; +package net.lab1024.sa.base.common.util; import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.core.toolkit.sql.SqlInjectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; -import net.lab1024.sa.common.common.domain.PageParam; -import net.lab1024.sa.common.common.domain.PageResult; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.exception.BusinessException; import org.apache.commons.collections4.CollectionUtils; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -17,45 +21,50 @@ import java.util.stream.Collectors; * @Date 2020-04-23 20:51:40 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ +@Slf4j public class SmartPageUtil { /** * 转换为查询参数 - * - * @param baseDTO - * @return */ - public static Page convert2PageQuery(PageParam baseDTO) { - Page page = new Page<>(baseDTO.getPageNum(), baseDTO.getPageSize()); - // 设置排序字段 - List sortItemList = baseDTO.getSortItemList(); - if (CollectionUtils.isNotEmpty(sortItemList)) { - List orderItemList = sortItemList.stream().map(e -> new OrderItem(e.getColumn(), e.getIsAsc())).collect(Collectors.toList()); - page.setOrders(orderItemList); + public static Page convert2PageQuery(PageParam pageParam) { + Page page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize()); + + List sortItemList = pageParam.getSortItemList(); + if (CollectionUtils.isEmpty(sortItemList)) { + return page; } + + // 设置排序字段并检测是否含有sql注入 + List orderItemList = new ArrayList<>(); + for (PageParam.SortItem sortItem : sortItemList) { + + if (SmartStringUtil.isEmpty(sortItem.getColumn())) { + continue; + } + + if (SqlInjectionUtils.check(sortItem.getColumn())) { + log.error("《存在SQL注入:》 : {}", sortItem.getColumn()); + throw new BusinessException("存在SQL注入风险,请联系技术工作人员!"); + } + + orderItemList.add(new OrderItem(sortItem.getColumn(), sortItem.getIsAsc())); + } + page.setOrders(orderItemList); return page; } /** - * 转换为 PageResultDTO 对象 - * - * @param page - * @param sourceList 原list - * @param targetClazz 目标类 - * @return + * 转换为 PageResult 对象 */ public static PageResult convert2PageResult(Page page, List sourceList, Class targetClazz) { return convert2PageResult(page, SmartBeanUtil.copyList(sourceList, targetClazz)); } /** - * 转换为 PageResultDTO 对象 - * - * @param page - * @param sourceList list - * @return + * 转换为 PageResult 对象 */ public static PageResult convert2PageResult(Page page, List sourceList) { PageResult pageResult = new PageResult<>(); @@ -70,10 +79,6 @@ public class SmartPageUtil { /** * 转换分页结果对象 - * - * @param pageResult - * @param targetClazz - * @return */ public static PageResult convert2PageResult(PageResult pageResult, Class targetClazz) { PageResult newPageResult = new PageResult<>(); @@ -92,20 +97,20 @@ public class SmartPageUtil { int count = list.size(); int pages = count % pageSize == 0 ? count / pageSize : (count / pageSize + 1); int fromIndex = (pageNum - 1) * pageSize; - int toIndex = pageNum * pageSize > count ? count : pageNum * pageSize; + int toIndex = Math.min(pageNum * pageSize, count); if (pageNum > pages) { pageRet.setList(Lists.newLinkedList()); pageRet.setPageNum(pageNum.longValue()); - pageRet.setPages(Long.valueOf(pages)); - pageRet.setTotal(Long.valueOf(count)); + pageRet.setPages((long) pages); + pageRet.setTotal((long) count); return pageRet; } List pageList = list.subList(fromIndex, toIndex); pageRet.setList(pageList); pageRet.setPageNum(pageNum.longValue()); - pageRet.setPages(Long.valueOf(pages)); - pageRet.setTotal(Long.valueOf(count)); + pageRet.setPages((long) pages); + pageRet.setTotal((long) count); return pageRet; } } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartRequestUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartRequestUtil.java similarity index 59% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartRequestUtil.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartRequestUtil.java index 40210ba2..ab6e5746 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartRequestUtil.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartRequestUtil.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.common.util; +package net.lab1024.sa.base.common.util; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.RequestUser; /** * 请求用户 工具类 @@ -10,19 +10,19 @@ import net.lab1024.sa.common.common.domain.RequestUser; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j public class SmartRequestUtil { - private static final ThreadLocal requestThreadLocal = new ThreadLocal<>(); + private static final ThreadLocal REQUEST_THREAD_LOCAL = new ThreadLocal<>(); public static void setRequestUser(RequestUser requestUser) { - requestThreadLocal.set(requestUser); + REQUEST_THREAD_LOCAL.set(requestUser); } public static RequestUser getRequestUser() { - return requestThreadLocal.get(); + return REQUEST_THREAD_LOCAL.get(); } public static Long getRequestUserId() { @@ -30,8 +30,9 @@ public class SmartRequestUtil { return null == requestUser ? null : requestUser.getUserId(); } + public static void remove() { - requestThreadLocal.remove(); + REQUEST_THREAD_LOCAL.remove(); } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartResponseUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartResponseUtil.java new file mode 100644 index 00000000..dc45634c --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartResponseUtil.java @@ -0,0 +1,65 @@ +package net.lab1024.sa.base.common.util; + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.MediaTypeFactory; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +/** + * 返回工具栏 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/11/25 18:51:32 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@Slf4j +public class SmartResponseUtil { + + public static void write(HttpServletResponse response, ResponseDTO responseDTO) { + // 重置response + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + + try { + response.getWriter().write(JSON.toJSONString(responseDTO)); + response.flushBuffer(); + } catch (IOException ex) { + log.error(ex.getMessage(), ex); + throw new RuntimeException(ex); + } + } + + public static void setDownloadFileHeader(HttpServletResponse response, String fileName) { + setDownloadFileHeader(response, fileName, null); + } + + public static void setDownloadFileHeader(HttpServletResponse response, String fileName, Long fileSize) { + response.setCharacterEncoding("utf-8"); + try { + if (fileSize != null) { + response.setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(fileSize)); + } + + if (SmartStringUtil.isNotEmpty(fileName)) { + response.setHeader(HttpHeaders.CONTENT_TYPE, MediaTypeFactory.getMediaType(fileName).orElse(MediaType.APPLICATION_OCTET_STREAM) + ";charset=utf-8"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20")); + response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION); + } + } catch (UnsupportedEncodingException e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e); + } + } + + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartStringUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartStringUtil.java similarity index 96% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartStringUtil.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartStringUtil.java index 230863a0..da8ff289 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartStringUtil.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartStringUtil.java @@ -1,12 +1,9 @@ -package net.lab1024.sa.common.common.util; +package net.lab1024.sa.base.common.util; import cn.hutool.core.util.StrUtil; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; /** * 独有的字符串工具类 @@ -15,7 +12,7 @@ import java.util.Set; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class SmartStringUtil extends StrUtil { @@ -27,9 +24,7 @@ public class SmartStringUtil extends StrUtil { } String[] splitArr = str.split(split); HashSet set = new HashSet(splitArr.length); - for (String string : splitArr) { - set.add(string); - } + Collections.addAll(set, splitArr); return set; } @@ -39,9 +34,7 @@ public class SmartStringUtil extends StrUtil { } String[] splitArr = str.split(split); ArrayList list = new ArrayList(splitArr.length); - for (String string : splitArr) { - list.add(string); - } + list.addAll(Arrays.asList(splitArr)); return list; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartVerificationUtil.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartVerificationUtil.java similarity index 97% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartVerificationUtil.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartVerificationUtil.java index 5360e160..aec6a8e1 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartVerificationUtil.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartVerificationUtil.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.common.util; +package net.lab1024.sa.base.common.util; import java.util.regex.Pattern; @@ -9,7 +9,7 @@ import java.util.regex.Pattern; * @Date 2017/11/06 10:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class SmartVerificationUtil { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/validator/enumeration/CheckEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/validator/enumeration/CheckEnum.java similarity index 84% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/validator/enumeration/CheckEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/validator/enumeration/CheckEnum.java index dd708b3c..5bbe8576 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/validator/enumeration/CheckEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/validator/enumeration/CheckEnum.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.common.validator.enumeration; +package net.lab1024.sa.base.common.validator.enumeration; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; import javax.validation.Constraint; import javax.validation.Payload; @@ -17,7 +17,7 @@ import java.lang.annotation.Target; * @Date 2017/11/11 15:31 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) @@ -34,7 +34,6 @@ public @interface CheckEnum { /** * 枚举类对象 必须实现BaseEnum接口 * - * @return */ Class value(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/validator/enumeration/EnumValidator.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/validator/enumeration/EnumValidator.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/validator/enumeration/EnumValidator.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/validator/enumeration/EnumValidator.java index bd7ea126..72891be1 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/validator/enumeration/EnumValidator.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/common/validator/enumeration/EnumValidator.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.common.validator.enumeration; +package net.lab1024.sa.base.common.validator.enumeration; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; @@ -16,7 +16,7 @@ import java.util.stream.Stream; * @Date 2017/11/11 15:34 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class EnumValidator implements ConstraintValidator { @@ -57,8 +57,6 @@ public class EnumValidator implements ConstraintValidator { /** * 校验集合类型 * - * @param list - * @return */ private boolean checkList(List list) { if (required && list.isEmpty()) { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/AsyncConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/AsyncConfig.java similarity index 94% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/AsyncConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/AsyncConfig.java index 9d39c7cd..4a14ab41 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/AsyncConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/AsyncConfig.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import lombok.extern.slf4j.Slf4j; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; @@ -18,7 +18,7 @@ import java.util.Arrays; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Configuration @@ -27,7 +27,7 @@ public class AsyncConfig { /** * 线程池 配置bean名称 */ - public static final String ASYNC_EXECUTOR_THREAD_NAME = "smart-admin-async-executor"; + public static final String ASYNC_EXECUTOR_THREAD_NAME = "smart-async-executor"; /** * 配置线程池 diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/CorsFilterConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/CorsFilterConfig.java similarity index 91% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/CorsFilterConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/CorsFilterConfig.java index 7cea2f08..33080cdd 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/CorsFilterConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/CorsFilterConfig.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -14,7 +14,7 @@ import org.springframework.web.filter.CorsFilter; * @Date 2021/11/15 20:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class CorsFilterConfig { @@ -24,8 +24,6 @@ public class CorsFilterConfig { /** * 跨域配置 - * - * @return */ @Bean public CorsFilter corsFilter () { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DataSourceConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java similarity index 95% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DataSourceConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java index cb937a0b..4fb6945e 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DataSourceConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import com.alibaba.druid.filter.Filter; import com.alibaba.druid.filter.stat.StatFilter; @@ -10,12 +10,11 @@ import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.DataScopePlugin; +import net.lab1024.sa.base.common.domain.DataScopePlugin; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.aop.support.JdkRegexpMethodPointcut; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; @@ -40,7 +39,7 @@ import java.util.Map; * @Date 2017-11-28 15:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Configuration @@ -87,13 +86,14 @@ public class DataSourceConfig { @Value("${spring.datasource.druid.login.enabled}") boolean druidLoginEnable; + @Value("${spring.datasource.druid.method.pointcut}") String methodPointcut; - @Autowired + @javax.annotation.Resource private MybatisPlusInterceptor paginationInterceptor; - @Autowired(required = false) + @javax.annotation.Resource private DataScopePlugin dataScopePlugin; @Bean @@ -117,7 +117,7 @@ public class DataSourceConfig { ArrayList arrayList = new ArrayList<>(); StatFilter statFilter = new StatFilter(); statFilter.setMergeSql(true); - statFilter.setSlowSqlMillis(500); + statFilter.setSlowSqlMillis(1000); statFilter.setLogSlowSql(true); arrayList.add(statFilter); druidDataSource.setProxyFilters(arrayList); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DateConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DateConfig.java similarity index 96% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DateConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DateConfig.java index 5faee795..a5ae138b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/DateConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/DateConfig.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.LocalDateTimeUtil; @@ -23,7 +23,7 @@ import java.time.format.DateTimeParseException; * @Date 2017-11-28 15:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class DateConfig { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/FileCloudConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java similarity index 59% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/FileCloudConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java index c7285969..acc12680 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/FileCloudConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import com.amazonaws.ClientConfiguration; import com.amazonaws.Protocol; @@ -8,13 +8,15 @@ import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import lombok.Data; -import net.lab1024.sa.common.module.support.file.service.FileStorageCloudServiceImpl; -import net.lab1024.sa.common.module.support.file.service.FileStorageLocalServiceImpl; -import net.lab1024.sa.common.module.support.file.service.IFileStorageService; +import net.lab1024.sa.base.module.support.file.service.FileStorageCloudServiceImpl; +import net.lab1024.sa.base.module.support.file.service.FileStorageLocalServiceImpl; +import net.lab1024.sa.base.module.support.file.service.IFileStorageService; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * 文件上传 配置 @@ -23,11 +25,15 @@ import org.springframework.context.annotation.Configuration; * @Date 2019-09-02 23:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @Configuration -public class FileCloudConfig { +public class FileConfig implements WebMvcConfigurer { + + private static final String MODE_CLOUD = "cloud"; + + private static final String MODE_LOCAL = "local"; @Value("${file.storage.cloud.region}") private String region; @@ -44,11 +50,17 @@ public class FileCloudConfig { @Value("${file.storage.cloud.secret-key}") private String secretKey; - @Value("${file.storage.cloud.url.expire}") - private Long urlExpire; + @Value("${file.storage.cloud.private-url-expire-seconds}") + private Long privateUrlExpireSeconds; - @Value("${file.storage.cloud.url.public}") - private String publicUrl; + @Value("${file.storage.cloud.url-prefix}") + private String urlPrefix; + + @Value("${file.storage.local.upload-path}") + private String uploadPath; + + @Value("${file.storage.mode}") + private String mode; /** * 初始化 云oss client 配置 @@ -60,26 +72,32 @@ public class FileCloudConfig { public AmazonS3 initAmazonS3() { ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTPS); - AmazonS3 s3Client = AmazonS3ClientBuilder.standard() + return AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey))) .withClientConfiguration(clientConfig) .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, region)) - .withPathStyleAccessEnabled(false) + .withPathStyleAccessEnabled(true) .build(); - return s3Client; } @Bean - @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = "cloud") + @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = MODE_CLOUD) public IFileStorageService initCloudFileService() { return new FileStorageCloudServiceImpl(); } @Bean - @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = "local") + @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = MODE_LOCAL) public IFileStorageService initLocalFileService() { return new FileStorageLocalServiceImpl(); } + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + if (MODE_LOCAL.equals(mode)) { + String path = uploadPath.endsWith("/") ? uploadPath : uploadPath + "/"; + registry.addResourceHandler(FileStorageLocalServiceImpl.UPLOAD_MAPPING + "/**").addResourceLocations("file:" + path); + } + } } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/HeartBeatConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/HeartBeatConfig.java similarity index 67% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/HeartBeatConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/HeartBeatConfig.java index 56e8765f..5f04e5ac 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/HeartBeatConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/HeartBeatConfig.java @@ -1,12 +1,13 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; -import net.lab1024.sa.common.module.support.heartbeat.core.HeartBeatManager; -import net.lab1024.sa.common.module.support.heartbeat.core.IHeartBeatRecordHandler; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.module.support.heartbeat.core.HeartBeatManager; +import net.lab1024.sa.base.module.support.heartbeat.core.IHeartBeatRecordHandler; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import javax.annotation.Resource; + /** * 心跳配置 * @@ -14,7 +15,7 @@ import org.springframework.context.annotation.Configuration; * @Date 2018/10/9 18:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class HeartBeatConfig { @@ -25,7 +26,7 @@ public class HeartBeatConfig { @Value("${heart-beat.interval-seconds}") private Long intervalSeconds; - @Autowired + @Resource private IHeartBeatRecordHandler heartBeatRecordHandler; @Bean diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/MybatisPlusConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/MybatisPlusConfig.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/MybatisPlusConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/MybatisPlusConfig.java index f946abea..59887aab 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/MybatisPlusConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/MybatisPlusConfig.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; @@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @EnableTransactionManagement @Configuration diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RedisConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java similarity index 74% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RedisConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java index 7002d53d..f6616e46 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RedisConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RedisConfig.java @@ -1,9 +1,12 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.beans.factory.annotation.Autowired; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; @@ -11,6 +14,8 @@ import org.springframework.data.redis.core.*; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; +import javax.annotation.Resource; + /** * redis配置 * @@ -18,22 +23,29 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class RedisConfig { - @Autowired + @Resource private RedisConnectionFactory factory; @Bean public RedisTemplate redisTemplate() { Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); + om.registerModule(new JavaTimeModule()) + .configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false) + .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + .configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS, false) + .setSerializationInclusion(JsonInclude.Include.NON_NULL); + om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); - RedisTemplate template = new RedisTemplate(); + RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(factory); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(jackson2JsonRedisSerializer); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RepeatSubmitConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java similarity index 66% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RepeatSubmitConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java index fcfdd5ee..c62caa51 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RepeatSubmitConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; -import net.lab1024.sa.common.common.constant.StringConst; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.repeatsubmit.RepeatSubmitAspect; -import net.lab1024.sa.common.module.support.repeatsubmit.ticket.RepeatSubmitCaffeineTicket; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.module.support.repeatsubmit.RepeatSubmitAspect; +import net.lab1024.sa.base.module.support.repeatsubmit.ticket.RepeatSubmitCaffeineTicket; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -14,7 +14,7 @@ import org.springframework.context.annotation.Configuration; * @Date 2021/10/9 18:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class RepeatSubmitConfig { @@ -27,8 +27,6 @@ public class RepeatSubmitConfig { /** * 获取指明某个用户的凭证 - * - * @return */ private String ticket(String servletPath) { Long userId = SmartRequestUtil.getRequestUserId(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RestTemplateConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RestTemplateConfig.java similarity index 97% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RestTemplateConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RestTemplateConfig.java index d14004c3..1a3cdf4a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/RestTemplateConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/RestTemplateConfig.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import okhttp3.ConnectionPool; @@ -33,7 +33,7 @@ import java.util.concurrent.TimeUnit; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class RestTemplateConfig { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/ScheduleConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/ScheduleConfig.java similarity index 90% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/ScheduleConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/ScheduleConfig.java index a156a41b..721428e7 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/ScheduleConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/ScheduleConfig.java @@ -1,7 +1,6 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import lombok.extern.slf4j.Slf4j; -import org.apache.logging.log4j.util.Strings; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; @@ -18,7 +17,7 @@ import java.util.stream.Collectors; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Configuration diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java new file mode 100644 index 00000000..0f7f3542 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/SwaggerConfig.java @@ -0,0 +1,81 @@ +package net.lab1024.sa.base.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.constant.RequestHeaderConst; +import net.lab1024.sa.base.common.swagger.SmartOperationCustomizer; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import org.springdoc.core.GroupedOpenApi; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; +import org.springframework.context.annotation.Configuration; + +/** + * springdoc-openapi 配置 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2020-03-25 22:54:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Slf4j +@Configuration +@Conditional(SystemEnvironmentConfig.class) +public class SwaggerConfig { + + public static final String[] SWAGGER_WHITELIST = { + "/swagger-ui/**", + "/swagger-ui/index.html", + "/swagger-ui.html", + "/swagger-ui.html/**", + "/v3/api-docs", + "/v3/api-docs/**", + "/doc.html", + }; + + @Bean + public OpenAPI api() { + return new OpenAPI() + .components(components()) + .info(new Info() + .title("SmartAdmin 3.X 接口文档") + .contact(new Contact().name("1024创新实验室").email("lab1024@163.com").url("https://1024lab.net")) + .version("v3.X") + .description("**以「高质量代码」为核心,「简洁、高效、安全」**基于 SpringBoot + Sa-Token + Mybatis-Plus 和 Vue3 + Vite5 + Ant Design (同时支持JavaScript和TypeScript双版本) 的快速开发平台。" + + "
**国内首个满足《网络安全》、《数据安全》、三级等保**, 支持登录限制、支持国产接口加解密等安全、支持数据加解密等一系列安全体系的开源项目。" + + "
**我们开源一套漂亮的代码和一套整洁的代码规范**,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,保持谦逊,保持学习,热爱代码,更热爱生活!") + ) + .addSecurityItem(new SecurityRequirement().addList(RequestHeaderConst.TOKEN)); + } + + private Components components() { + return new Components() + .addSecuritySchemes(RequestHeaderConst.TOKEN, new SecurityScheme().type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name(RequestHeaderConst.TOKEN)); + } + + @Bean + public GroupedOpenApi businessApi() { + return GroupedOpenApi.builder() + .group("业务接口") + .pathsToMatch("/**") + .pathsToExclude(SwaggerTagConst.Support.URL_PREFIX + "/**") + .addOperationCustomizer(new SmartOperationCustomizer()) + .build(); + + } + + @Bean + public GroupedOpenApi supportApi() { + return GroupedOpenApi.builder() + .group("支撑接口(Support)") + .pathsToMatch(SwaggerTagConst.Support.URL_PREFIX + "/**") + .addOperationCustomizer(new SmartOperationCustomizer()) + .build(); + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvironmentConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/SystemEnvironmentConfig.java similarity index 70% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvironmentConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/SystemEnvironmentConfig.java index 1af9577a..caa641d5 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SystemEnvironmentConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/SystemEnvironmentConfig.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; -import net.lab1024.sa.common.common.domain.SystemEnvironment; -import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum; -import net.lab1024.sa.common.common.util.SmartEnumUtil; +import net.lab1024.sa.base.common.domain.SystemEnvironment; +import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum; +import net.lab1024.sa.base.common.util.SmartEnumUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -18,7 +18,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; * @Date 2021/08/13 18:56 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class SystemEnvironmentConfig implements Condition { @@ -29,13 +29,23 @@ public class SystemEnvironmentConfig implements Condition { @Value("${project.name}") private String projectName; + /** + * 判断是否开启swagger + */ @Override public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { - String property = conditionContext.getEnvironment().getProperty("spring.profiles.active"); - return StringUtils.isNotBlank(property) && !SystemEnvironmentEnum.PROD.equalsValue(property); + return isDevOrTest(conditionContext); } - @Bean + /** + * 是否为:开发环境和 测试环境 + */ + private boolean isDevOrTest(ConditionContext conditionContext) { + String property = conditionContext.getEnvironment().getProperty("spring.profiles.active"); + return StringUtils.isNotBlank(property) && (SystemEnvironmentEnum.TEST.equalsValue(property) || SystemEnvironmentEnum.DEV.equalsValue(property)); + } + + @Bean("systemEnvironment") public SystemEnvironment initEnvironment() { SystemEnvironmentEnum currentEnvironment = SmartEnumUtil.getEnumByValue(systemEnvironment, SystemEnvironmentEnum.class); if (currentEnvironment == null) { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/UrlConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/UrlConfig.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/UrlConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/UrlConfig.java index 6e8ae116..7939a606 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/UrlConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/UrlConfig.java @@ -1,13 +1,13 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; +import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.annoation.NoNeedLogin; -import net.lab1024.sa.common.common.annoation.SaAuth; -import net.lab1024.sa.common.common.domain.RequestUrlVO; +import net.lab1024.sa.base.common.annoation.NoNeedLogin; +import net.lab1024.sa.base.common.domain.RequestUrlVO; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -16,6 +16,7 @@ import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; +import javax.annotation.Resource; import java.lang.reflect.Method; import java.util.List; import java.util.Map; @@ -29,19 +30,17 @@ import java.util.stream.Collectors; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration @Slf4j public class UrlConfig { - @Autowired - private RequestMappingHandlerMapping requestMappingHandlerMapping; + @Resource + private RequestMappingHandlerMapping requestMappingHandlerMapping; /** * 获取每个方法的请求路径 - * - * @return */ @Bean public Map> methodUrlMap() { @@ -50,6 +49,9 @@ public class UrlConfig { Map map = requestMappingHandlerMapping.getHandlerMethods(); for (Map.Entry entry : map.entrySet()) { RequestMappingInfo requestMappingInfo = entry.getKey(); + if(requestMappingInfo.getPatternsCondition() == null){ + continue; + } Set urls = requestMappingInfo.getPatternsCondition().getPatterns(); if (CollectionUtils.isEmpty(urls)) { @@ -72,14 +74,19 @@ public class UrlConfig { List authUrlList = Lists.newArrayList(); for (Map.Entry> entry : methodUrlMap.entrySet()) { Method method = entry.getKey(); - SaAuth saAuth = method.getAnnotation(SaAuth.class); - if (null == saAuth) { + // 忽略权限 + SaIgnore ignore = method.getAnnotation(SaIgnore.class); + if (null != ignore) { continue; } - List requestUrlList = this.buildRequestUrl(method, entry.getValue()); + NoNeedLogin noNeedLogin = method.getAnnotation(NoNeedLogin.class); + if (null != noNeedLogin) { + continue; + } + Set urlSet = entry.getValue(); + List requestUrlList = this.buildRequestUrl(method, urlSet); authUrlList.addAll(requestUrlList); } - log.info("需要权限校验的URL:{}", authUrlList.stream().map(e -> e.getUrl()).collect(Collectors.toList())); return authUrlList; } @@ -96,9 +103,9 @@ public class UrlConfig { String name = controllerName + "." + methodName; //swagger 说明信息 String methodComment = null; - ApiOperation apiOperation = method.getAnnotation(ApiOperation.class); + Operation apiOperation = method.getAnnotation(Operation.class); if (apiOperation != null) { - methodComment = apiOperation.value(); + methodComment = apiOperation.summary(); } for (String url : urlSet) { RequestUrlVO requestUrlVO = new RequestUrlVO(); @@ -131,20 +138,5 @@ public class UrlConfig { return noNeedLoginUrlList; } - /** - * 获取忽略的url信息 - * - * @return - */ - @Bean - public List ignoreUrlList() { - List ignoreUrlList = Lists.newArrayList(); - ignoreUrlList.add("/swagger-ui.html"); - ignoreUrlList.add("/swagger-resources/**"); - ignoreUrlList.add("/webjars/**"); - ignoreUrlList.add("/druid/**"); - ignoreUrlList.add("/*/api-docs"); - return ignoreUrlList; - } } \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/PostProcessorConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/YamlProcessor.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/PostProcessorConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/YamlProcessor.java index 827b499b..2c8fdd04 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/PostProcessorConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/config/YamlProcessor.java @@ -1,10 +1,12 @@ -package net.lab1024.sa.common.config; +package net.lab1024.sa.base.config; import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.util.SmartStringUtil; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.EnvironmentPostProcessor; import org.springframework.boot.env.YamlPropertySourceLoader; import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource; @@ -21,16 +23,23 @@ import java.util.List; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration @Slf4j -public class PostProcessorConfig implements EnvironmentPostProcessor { +@Order(value = 0) +public class YamlProcessor implements EnvironmentPostProcessor { private final YamlPropertySourceLoader loader = new YamlPropertySourceLoader(); @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { + + String filePath = environment.getProperty("project.log-path"); + if (SmartStringUtil.isNotEmpty(filePath)) { + System.setProperty("project.log-path", filePath); + } + MutablePropertySources propertySources = environment.getPropertySources(); this.loadProperty(propertySources); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/CacheKeyConst.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java similarity index 62% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/CacheKeyConst.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java index ef91a805..852f6272 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/CacheKeyConst.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.constant; +package net.lab1024.sa.base.constant; /** * 缓存key常量 @@ -7,7 +7,7 @@ package net.lab1024.sa.common.constant; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class CacheKeyConst { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/LoginDeviceEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/LoginDeviceEnum.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/LoginDeviceEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/LoginDeviceEnum.java index 3fa94198..3b503be0 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/LoginDeviceEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/LoginDeviceEnum.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.token; +package net.lab1024.sa.base.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 登录设备类型 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2021-11-29 19:48:35 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum LoginDeviceEnum implements BaseEnum { diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/RedisKeyConst.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/RedisKeyConst.java new file mode 100644 index 00000000..f4e70413 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/RedisKeyConst.java @@ -0,0 +1,27 @@ +package net.lab1024.sa.base.constant; + +/** + * redis key 常量类 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2022-05-30 21:22:12 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +public class RedisKeyConst { + + public static final String SEPARATOR = ":"; + + public static class Support { + + public static final String FILE_PRIVATE_VO = "file:private:"; + + public static final String SERIAL_NUMBER_LAST_INFO = "serial-number:last-info"; + + public static final String SERIAL_NUMBER = "serial-number:"; + + public static final String CAPTCHA = "captcha:"; + + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/ReloadConst.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/ReloadConst.java similarity index 74% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/ReloadConst.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/ReloadConst.java index 635dc382..bcdfc381 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/ReloadConst.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/ReloadConst.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.constant; +package net.lab1024.sa.base.constant; /** * reload 项目 @@ -7,7 +7,7 @@ package net.lab1024.sa.common.constant; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class ReloadConst { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/SwaggerTagConst.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/SwaggerTagConst.java similarity index 85% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/SwaggerTagConst.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/SwaggerTagConst.java index ebc7bdb4..a6b9e562 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/SwaggerTagConst.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/constant/SwaggerTagConst.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.constant; +package net.lab1024.sa.base.constant; /** * swagger @@ -7,12 +7,14 @@ package net.lab1024.sa.common.constant; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class SwaggerTagConst { public static class Support { + public static final String URL_PREFIX = "/support"; + public static final String CACHE = "业务支撑-缓存"; public static final String CAPTCHA = "业务支撑-验证码"; @@ -44,6 +46,8 @@ public class SwaggerTagConst { public static final String FEEDBACK = "业务支撑-意见反馈"; public static final String TABLE_COLUMN = "业务支撑-列自定义"; + + public static final String PROTECT = "业务支撑-网络安全"; } } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/handler/GlobalExceptionHandler.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/handler/GlobalExceptionHandler.java index 66da1df0..01d6356e 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/handler/GlobalExceptionHandler.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/handler/GlobalExceptionHandler.java @@ -1,15 +1,16 @@ -package net.lab1024.sa.common.handler; +package net.lab1024.sa.base.handler; +import cn.dev33.satoken.exception.NotPermissionException; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.code.SystemErrorCode; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.domain.SystemEnvironment; -import net.lab1024.sa.common.common.exception.BusinessException; +import net.lab1024.sa.base.common.code.SystemErrorCode; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.SystemEnvironment; +import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum; +import net.lab1024.sa.base.common.exception.BusinessException; import org.springframework.beans.TypeMismatchException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.converter.HttpMessageNotReadableException; -import org.springframework.security.access.AccessDeniedException; import org.springframework.validation.BindException; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; @@ -20,6 +21,7 @@ import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; @@ -30,13 +32,13 @@ import java.util.stream.Collectors; * @Date 2020/8/25 21:57 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @ControllerAdvice public class GlobalExceptionHandler { - @Autowired + @Resource private SystemEnvironment systemEnvironment; /** @@ -78,14 +80,22 @@ public class GlobalExceptionHandler { } /** - * 权限异常 + * sa-token 权限异常处理 + * + * @param e 权限异常 + * @return 错误结果 */ @ResponseBody - @ExceptionHandler({AccessDeniedException.class}) - public ResponseDTO permissionExceptionHandler(AccessDeniedException e) { + @ExceptionHandler(NotPermissionException.class) + public ResponseDTO permissionException(NotPermissionException e) { + // 开发环境 方便调试 + if (SystemEnvironmentEnum.PROD != systemEnvironment.getCurrentEnvironment()) { + return ResponseDTO.error(UserErrorCode.NO_PERMISSION, e.getMessage()); + } return ResponseDTO.error(UserErrorCode.NO_PERMISSION); } + /** * 业务异常 */ @@ -101,8 +111,8 @@ public class GlobalExceptionHandler { /** * 其他全部异常 * - * @param e - * @return + * @param e 全局异常 + * @return 错误结果 */ @ResponseBody @ExceptionHandler(Throwable.class) diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/Ip2RegionListener.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/Ip2RegionListener.java new file mode 100644 index 00000000..0055d159 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/Ip2RegionListener.java @@ -0,0 +1,76 @@ +package net.lab1024.sa.base.listener; + +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.util.SmartIpUtil; +import org.apache.commons.io.FileUtils; +import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; +import org.springframework.boot.context.logging.LoggingApplicationListener; +import org.springframework.context.ApplicationListener; +import org.springframework.core.annotation.Order; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.io.ClassPathResource; + +import java.io.File; +import java.io.IOException; + +/** + * 初初始化ip工具类 + * + * @Author 1024创新实验室: zhuoda + * @Date 2023-09-03 23:45:26 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Order(value = LoggingApplicationListener.DEFAULT_ORDER) +@Slf4j +public class Ip2RegionListener implements ApplicationListener { + + private static final String IP_FILE_NAME = "ip2region.xdb"; + + private static final String LOG_DIRECTORY = "project.log-directory"; + + @Override + public void onApplicationEvent(ApplicationEnvironmentPreparedEvent applicationEvent) { + + ConfigurableEnvironment environment = applicationEvent.getEnvironment(); + String logDirectoryPath = environment.getProperty(LOG_DIRECTORY); + if (logDirectoryPath == null) { + throw new ExceptionInInitializerError("环境变量为空:" + LOG_DIRECTORY); + } + System.setProperty(LOG_DIRECTORY, logDirectoryPath); + + // 1、从jar中的ip2region.xdb文件复制到服务器目录中 + File logDirectoryFile = new File(logDirectoryPath); + if (!logDirectoryFile.exists()) { + logDirectoryFile.mkdirs(); + } + + String tempFilePath = null; + if (logDirectoryPath.endsWith("/")) { + tempFilePath = logDirectoryPath + IP_FILE_NAME; + } else { + tempFilePath = logDirectoryPath + "/" + IP_FILE_NAME; + } + + File tempFile = new File(tempFilePath); + try { + FileUtils.copyInputStreamToFile(new ClassPathResource(IP_FILE_NAME).getInputStream(), tempFile); + + // 2、初始化 + SmartIpUtil.init(tempFilePath); + + + } catch (IOException e) { + log.error("无法复制ip数据文件 ip2region.xdb", e); + throw new ExceptionInInitializerError("无法复制ip数据文件"); + } finally { + if (tempFile.exists()) { + tempFile.delete(); + } + } + + } + + +} \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/LogVariableListener.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/LogVariableListener.java new file mode 100644 index 00000000..407445ce --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/LogVariableListener.java @@ -0,0 +1,32 @@ +package net.lab1024.sa.base.listener; + +import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; +import org.springframework.boot.context.logging.LoggingApplicationListener; +import org.springframework.context.ApplicationListener; +import org.springframework.core.annotation.Order; +import org.springframework.core.env.ConfigurableEnvironment; + +/** + * 将application.yam l中的日志路径变量:project.log-path注入到 log4j2.xml + * + * @Author 1024创新实验室: zhuoda + * @Date 2023-09-03 23:45:26 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Order(value = LoggingApplicationListener.DEFAULT_ORDER - 1) +public class LogVariableListener implements ApplicationListener { + + private static final String LOG_DIRECTORY = "project.log-directory"; + + @Override + public void onApplicationEvent(ApplicationEnvironmentPreparedEvent applicationEvent) { + + ConfigurableEnvironment environment = applicationEvent.getEnvironment(); + String filePath = environment.getProperty(LOG_DIRECTORY); + if (filePath != null) { + System.setProperty(LOG_DIRECTORY, filePath); + } + } +} \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/WebServerListener.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/WebServerListener.java new file mode 100644 index 00000000..19fe7793 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/listener/WebServerListener.java @@ -0,0 +1,99 @@ +package net.lab1024.sa.base.listener; + +import cn.hutool.core.net.NetUtil; +import cn.hutool.core.util.URLUtil; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.code.ErrorCodeRegister; +import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.module.support.reload.ReloadCommand; +import net.lab1024.sa.base.module.support.reload.core.SmartReloadManager; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; +import org.springframework.boot.web.context.WebServerApplicationContext; +import org.springframework.boot.web.context.WebServerInitializedEvent; +import org.springframework.boot.web.server.WebServer; +import org.springframework.context.ApplicationListener; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.annotation.Order; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +/** + * 启动监听器 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2021-12-23 23:45:26 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Slf4j +@Component +@Order(value = 1024) +public class WebServerListener implements ApplicationListener { + + @Value("${reload.interval-seconds}") + private Integer intervalSeconds; + + @Override + public void onApplicationEvent(WebServerInitializedEvent webServerInitializedEvent) { + WebServerApplicationContext context = webServerInitializedEvent.getApplicationContext(); + // 初始化reload + initReload(context); + // 项目信息 + showProjectMessage(webServerInitializedEvent); + } + + /** + * 显示项目信息 + */ + private void showProjectMessage(WebServerInitializedEvent webServerInitializedEvent) { + WebServerApplicationContext context = webServerInitializedEvent.getApplicationContext(); + Environment env = context.getEnvironment(); + + //获取服务信息 + String ip = NetUtil.getLocalhost().getHostAddress(); + Integer port = webServerInitializedEvent.getWebServer().getPort(); + String contextPath = env.getProperty("server.servlet.context-path"); + if (contextPath == null) { + contextPath = ""; + } + String profile = env.getProperty("spring.profiles.active"); + SystemEnvironmentEnum environmentEnum = SmartEnumUtil.getEnumByValue(profile, SystemEnvironmentEnum.class); + String projectName = env.getProperty("project.name"); + //拼接服务地址 + String title = String.format("-------------【%s】 服务已成功启动 (%s started successfully)-------------", projectName, projectName); + + // 初始化状态码 + int codeCount = ErrorCodeRegister.initialize(); + String localhostUrl = URLUtil.normalize(String.format("http://localhost:%d%s", port, contextPath), false, true); + String externalUrl = URLUtil.normalize(String.format("http://%s:%d%s", ip, port, contextPath), false, true); + String swaggerUrl = URLUtil.normalize(String.format("http://localhost:%d%s/swagger-ui/index.html", port, contextPath), false, true); + String knife4jUrl = URLUtil.normalize(String.format("http://localhost:%d%s/doc.html", port, contextPath), false, true); + log.warn("\n{}\n" + + "\t当前启动环境:\t{} , {}" + + "\n\t返回码初始化:\t完成{}个返回码初始化" + + "\n\t服务本机地址:\t{}" + + "\n\t服务外网地址:\t{}" + + "\n\tSwagger地址:\t{}" + + "\n\tknife4j地址:\t{}" + + "\n-------------------------------------------------------------------------------------\n", + title, profile, environmentEnum.getDesc(), codeCount, localhostUrl, externalUrl, swaggerUrl, knife4jUrl); + } + + /** + * 初始化reload + */ + private void initReload(WebServerApplicationContext applicationContext) { + //将applicationContext转换为ConfigurableApplicationContext + ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) applicationContext; + + //获取BeanFactory + DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableApplicationContext.getAutowireCapableBeanFactory(); + + //动态注册bean + SmartReloadManager reloadManager = new SmartReloadManager(applicationContext.getBean(ReloadCommand.class), intervalSeconds); + defaultListableBeanFactory.registerSingleton("smartReloadManager", reloadManager); + } +} \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java new file mode 100644 index 00000000..ea087e4d --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java @@ -0,0 +1,92 @@ +package net.lab1024.sa.base.module.support.apiencrypt.advice; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.apiencrypt.annotation.ApiDecrypt; +import net.lab1024.sa.base.module.support.apiencrypt.domain.ApiEncryptForm; +import net.lab1024.sa.base.module.support.apiencrypt.service.ApiEncryptService; +import org.apache.commons.io.IOUtils; +import org.springframework.core.MethodParameter; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpInputMessage; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdviceAdapter; + +import javax.annotation.Resource; +import java.io.InputStream; +import java.lang.reflect.Type; + +/** + * 解密 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/21 11:41:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@Slf4j +@ControllerAdvice +public class DecryptRequestAdvice extends RequestBodyAdviceAdapter { + + private static final String ENCODING = "UTF-8"; + + @Resource + private ApiEncryptService apiEncryptService; + + @Override + public boolean supports(MethodParameter methodParameter, Type targetType, Class> converterType) { + return methodParameter.hasMethodAnnotation(ApiDecrypt.class) || methodParameter.hasParameterAnnotation(ApiDecrypt.class) || methodParameter.getContainingClass().isAnnotationPresent(ApiDecrypt.class); + } + + @Override + public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { + try { + String bodyStr = IOUtils.toString(inputMessage.getBody(), ENCODING); + ApiEncryptForm apiEncryptForm = JSONObject.parseObject(bodyStr, ApiEncryptForm.class); + if (SmartStringUtil.isEmpty(apiEncryptForm.getEncryptData())) { + return inputMessage; + } + String decrypt = apiEncryptService.decrypt(apiEncryptForm.getEncryptData()); + return new DecryptHttpInputMessage(inputMessage.getHeaders(), IOUtils.toInputStream(decrypt, ENCODING)); + } catch (Exception e) { + log.error("", e); + return inputMessage; + } + } + + @Override + public Object afterBodyRead(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { + return body; + } + + @Override + public Object handleEmptyBody(Object body, HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { + return body; + } + + static class DecryptHttpInputMessage implements HttpInputMessage { + private final HttpHeaders headers; + + private final InputStream body; + + public DecryptHttpInputMessage(HttpHeaders headers, InputStream body) { + this.headers = headers; + this.body = body; + } + + @Override + public InputStream getBody() { + return body; + } + + @Override + public HttpHeaders getHeaders() { + return headers; + } + } + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java new file mode 100644 index 00000000..c90e2c2a --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java @@ -0,0 +1,55 @@ +package net.lab1024.sa.base.module.support.apiencrypt.advice; + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.enumeration.DataTypeEnum; +import net.lab1024.sa.base.module.support.apiencrypt.annotation.ApiEncrypt; +import net.lab1024.sa.base.module.support.apiencrypt.service.ApiEncryptService; +import org.springframework.core.MethodParameter; +import org.springframework.http.MediaType; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.server.ServerHttpRequest; +import org.springframework.http.server.ServerHttpResponse; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; + +import javax.annotation.Resource; + +/** + * 加密 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/24 09:52:58 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + + +@Slf4j +@ControllerAdvice +public class EncryptResponseAdvice implements ResponseBodyAdvice { + + @Resource + private ApiEncryptService apiEncryptService; + + @Override + public boolean supports(MethodParameter returnType, Class> converterType) { + return returnType.hasMethodAnnotation(ApiEncrypt.class) || returnType.getContainingClass().isAnnotationPresent(ApiEncrypt.class); + } + + @Override + public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { + if (body.getData() == null) { + return body; + } + + String encrypt = apiEncryptService.encrypt(JSON.toJSONString(body.getData())); + body.setData(encrypt); + body.setDataType(DataTypeEnum.ENCRYPT.getValue()); + return body; + } +} + + diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/annotation/ApiDecrypt.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/annotation/ApiDecrypt.java new file mode 100644 index 00000000..bedfc903 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/annotation/ApiDecrypt.java @@ -0,0 +1,20 @@ +package net.lab1024.sa.base.module.support.apiencrypt.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 解密注解 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/21 11:41:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD}) +public @interface ApiDecrypt { +} \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/annotation/ApiEncrypt.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/annotation/ApiEncrypt.java new file mode 100644 index 00000000..4b6950db --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/annotation/ApiEncrypt.java @@ -0,0 +1,20 @@ +package net.lab1024.sa.base.module.support.apiencrypt.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 加密注解 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/21 11:41:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE, ElementType.METHOD}) +public @interface ApiEncrypt { +} \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/domain/ApiEncryptForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/domain/ApiEncryptForm.java new file mode 100644 index 00000000..31e3aeec --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/domain/ApiEncryptForm.java @@ -0,0 +1,20 @@ +package net.lab1024.sa.base.module.support.apiencrypt.domain; + +import lombok.Data; + +/** + * 加密数据的表单 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/21 11:41:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ + + +@Data +public class ApiEncryptForm { + + private String encryptData; +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptService.java new file mode 100644 index 00000000..6c65708e --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptService.java @@ -0,0 +1,30 @@ +package net.lab1024.sa.base.module.support.apiencrypt.service; + +/** + * 接口加密、解密 Service + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/21 11:41:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ + +public interface ApiEncryptService { + + /** + * 解密 + * @param data + * @return + */ + String decrypt(String data); + + /** + * 加密 + * + * @param data + * @return + */ + String encrypt(String data); + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptServiceAesImpl.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptServiceAesImpl.java new file mode 100644 index 00000000..3c329043 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptServiceAesImpl.java @@ -0,0 +1,75 @@ +package net.lab1024.sa.base.module.support.apiencrypt.service; + +import cn.hutool.crypto.symmetric.AES; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.constant.StringConst; +import org.bouncycastle.jce.provider.BouncyCastleProvider; + +import java.io.UnsupportedEncodingException; +import java.security.Security; +import java.util.Base64; + +/** + * AES 加密和解密 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/21 11:41:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ + + +@Slf4j +//@Service +public class ApiEncryptServiceAesImpl implements ApiEncryptService { + + private static final String CHARSET = "UTF-8"; + + private static final String AES_KEY = "1024abcd1024abcd1024abcd1024abcd"; + + static { + Security.addProvider(new BouncyCastleProvider()); + } + + @Override + public String encrypt(String data) { + try { + + // AES 加密 并转为 base64 + AES aes = new AES(AES_KEY.getBytes(CHARSET)); + return aes.encryptBase64(data); + + + } catch (Exception e) { + log.error(e.getMessage(), e); + return StringConst.EMPTY; + } + } + + @Override + public String decrypt(String data) { + try { + // 第一步: Base64 解码 + byte[] base64Decode = Base64.getDecoder().decode(data); + + // 第二步: AES 解密 + AES aes = new AES(AES_KEY.getBytes(CHARSET)); + byte[] decryptedBytes = aes.decrypt(base64Decode); + return new String(decryptedBytes, CHARSET); + + } catch (Exception e) { + log.error(e.getMessage(), e); + return StringConst.EMPTY; + } + } + + public static void main(String[] args) throws UnsupportedEncodingException { + String s = "{\"age\":100,\"name\":\"卓大\"}"; + String jsonString = JSON.toJSONString(s); + AES aes = new AES(AES_KEY.getBytes(CHARSET)); + System.out.println(new String(aes.encryptBase64(jsonString))); + } + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptServiceSmImpl.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptServiceSmImpl.java new file mode 100644 index 00000000..4bf1fdbf --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/service/ApiEncryptServiceSmImpl.java @@ -0,0 +1,104 @@ +package net.lab1024.sa.base.module.support.apiencrypt.service; + +import cn.hutool.crypto.symmetric.SM4; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.constant.StringConst; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.springframework.stereotype.Service; + +import java.security.Security; +import java.util.Base64; + +/** + * 国产 SM4 加密 和 解密 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/21 11:41:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ + +@Slf4j +@Service +public class ApiEncryptServiceSmImpl implements ApiEncryptService { + + private static final String CHARSET = "UTF-8"; + private static final String SM4_KEY = "1024abcd1024abcd1024abcd1024abcd"; + + static { + Security.addProvider(new BouncyCastleProvider()); + } + + + @Override + public String encrypt(String data) { + try { + + // 第一步: SM4 加密 + SM4 sm4 = new SM4(hexToBytes(SM4_KEY)); + String encryptHex = sm4.encryptHex(data); + + // 第二步: Base64 编码 + return new String(Base64.getEncoder().encode(encryptHex.getBytes(CHARSET)), CHARSET); + + } catch (Exception e) { + log.error(e.getMessage(), e); + return StringConst.EMPTY; + } + } + + + @Override + public String decrypt(String data) { + try { + + // 第一步: Base64 解码 + byte[] base64Decode = Base64.getDecoder().decode(data); + + // 第二步: SM4 解密 + SM4 sm4 = new SM4(hexToBytes(SM4_KEY)); + return sm4.decryptStr(new String(base64Decode)); + + } catch (Exception e) { + log.error(e.getMessage(), e); + return StringConst.EMPTY; + } + } + + + /** + * 16 进制串转字节数组 + * + * @param hex 16进制字符串 + * @return byte数组 + */ + public static byte[] hexToBytes(String hex) { + int length = hex.length(); + byte[] result; + if (length % 2 == 1) { + length++; + result = new byte[(length / 2)]; + hex = "0" + hex; + } else { + result = new byte[(length / 2)]; + } + int j = 0; + for (int i = 0; i < length; i += 2) { + result[j] = hexToByte(hex.substring(i, i + 2)); + j++; + } + return result; + } + + /** + * 16 进制字符转字节 + * + * @param hex 16进制字符 0x00到0xFF + * @return byte + */ + private static byte hexToByte(String hex) { + return (byte) Integer.parseInt(hex, 16); + } + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/cache/CacheService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java similarity index 85% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/cache/CacheService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java index 7697929c..16326aa0 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/cache/CacheService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.cache; +package net.lab1024.sa.base.module.support.cache; import com.google.common.collect.Lists; -import net.lab1024.sa.common.constant.ReloadConst; -import net.lab1024.sa.common.module.support.reload.core.annoation.SmartReload; +import net.lab1024.sa.base.constant.ReloadConst; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; import org.springframework.cache.caffeine.CaffeineCache; import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.stereotype.Service; @@ -20,7 +20,7 @@ import java.util.stream.Collectors; * @Date 2021/10/11 20:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class CacheService { @@ -31,7 +31,6 @@ public class CacheService { /** * 获取所有缓存名称 * - * @return */ public List cacheNames() { return Lists.newArrayList(caffeineCacheManager.getCacheNames()); @@ -40,8 +39,6 @@ public class CacheService { /** * 某个缓存下的所有key * - * @param cacheName - * @return */ public List cacheKey(String cacheName) { CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); @@ -55,7 +52,6 @@ public class CacheService { /** * 移除某个key * - * @param cacheName */ public void removeCache(String cacheName) { diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/CaptchaController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/CaptchaController.java new file mode 100644 index 00000000..b98074fc --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/CaptchaController.java @@ -0,0 +1,37 @@ +package net.lab1024.sa.base.module.support.captcha; + + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.captcha.domain.CaptchaVO; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 图形验证码业务 + * + * @Author 1024创新实验室: 胡克 + * @Date 2021-09-02 20:21:10 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Tag(name = SwaggerTagConst.Support.CAPTCHA) +@RestController +public class CaptchaController extends SupportBaseController { + + @Resource + private CaptchaService captchaService; + + @Operation(summary = "获取图形验证码 @author 胡克") + @GetMapping("/captcha") + public ResponseDTO generateCaptcha() { + return ResponseDTO.ok(captchaService.generateCaptcha()); + } + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/CaptchaService.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/CaptchaService.java index 36042c67..b1850925 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/CaptchaService.java @@ -1,21 +1,21 @@ -package net.lab1024.sa.common.module.support.captcha; +package net.lab1024.sa.base.module.support.captcha; import com.google.code.kaptcha.impl.DefaultKaptcha; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.constant.StringConst; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.domain.SystemEnvironment; -import net.lab1024.sa.common.common.exception.BusinessException; -import net.lab1024.sa.common.constant.RedisKeyConst; -import net.lab1024.sa.common.module.support.captcha.domain.CaptchaForm; -import net.lab1024.sa.common.module.support.captcha.domain.CaptchaVO; -import net.lab1024.sa.common.module.support.redis.RedisService; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.SystemEnvironment; +import net.lab1024.sa.base.common.exception.BusinessException; +import net.lab1024.sa.base.constant.RedisKeyConst; +import net.lab1024.sa.base.module.support.captcha.domain.CaptchaForm; +import net.lab1024.sa.base.module.support.captcha.domain.CaptchaVO; +import net.lab1024.sa.base.module.support.redis.RedisService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Base64Utils; +import javax.annotation.Resource; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; @@ -29,7 +29,7 @@ import java.util.UUID; * @Date 2021/8/31 20:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service @@ -40,18 +40,17 @@ public class CaptchaService { */ private static final long EXPIRE_SECOND = 65L; - @Autowired + @Resource private DefaultKaptcha defaultKaptcha; @Autowired private SystemEnvironment systemEnvironment; - @Autowired + @Resource private RedisService redisService; /** * 生成图形验证码 * 默认 1 分钟有效期 * - * @return */ public CaptchaVO generateCaptcha() { String captchaText = defaultKaptcha.createText(); @@ -66,7 +65,7 @@ public class CaptchaService { throw new BusinessException("生成验证码错误"); } - /** + /* * 返回验证码对象 * 图片 base64格式 */ @@ -88,14 +87,12 @@ public class CaptchaService { /** * 校验图形验证码 * - * @param captchaForm - * @return */ public ResponseDTO checkCaptcha(CaptchaForm captchaForm) { if (StringUtils.isBlank(captchaForm.getCaptchaUuid()) || StringUtils.isBlank(captchaForm.getCaptchaCode())) { return ResponseDTO.userErrorParam("请输入正确验证码"); } - /** + /* * 1、校验redis里的验证码 * 2、校验成功后,删除redis */ diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaColor.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaColor.java similarity index 88% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaColor.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaColor.java index 4dd96c13..c8bfa306 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaColor.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaColor.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.captcha.config; +package net.lab1024.sa.base.module.support.captcha.config; import com.google.common.collect.Lists; @@ -13,7 +13,7 @@ import java.util.Random; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class CaptchaColor { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaConfig.java similarity index 92% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaConfig.java index 6a315072..3016f3a3 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaConfig.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.captcha.config; +package net.lab1024.sa.base.module.support.captcha.config; import com.google.code.kaptcha.impl.DefaultKaptcha; import com.google.code.kaptcha.util.Config; @@ -14,7 +14,7 @@ import java.util.Properties; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Configuration public class CaptchaConfig { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaNoise.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaNoise.java similarity index 91% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaNoise.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaNoise.java index 36f773d5..c915661a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaNoise.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaNoise.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.captcha.config; +package net.lab1024.sa.base.module.support.captcha.config; import com.google.code.kaptcha.NoiseProducer; import com.google.code.kaptcha.util.Configurable; @@ -14,7 +14,7 @@ import java.util.Random; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class CaptchaNoise extends Configurable implements NoiseProducer { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaWordRenderer.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaWordRenderer.java similarity index 95% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaWordRenderer.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaWordRenderer.java index 23b2278e..5618be9c 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/config/CaptchaWordRenderer.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/config/CaptchaWordRenderer.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.captcha.config; +package net.lab1024.sa.base.module.support.captcha.config; import com.google.code.kaptcha.text.WordRenderer; import com.google.code.kaptcha.util.Configurable; @@ -16,7 +16,7 @@ import java.util.Random; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class CaptchaWordRenderer extends Configurable implements WordRenderer { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/domain/CaptchaForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/domain/CaptchaForm.java similarity index 62% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/domain/CaptchaForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/domain/CaptchaForm.java index 5d2d21c7..0ecec9f8 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/domain/CaptchaForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/domain/CaptchaForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.captcha.domain; +package net.lab1024.sa.base.module.support.captcha.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -12,17 +12,17 @@ import javax.validation.constraints.NotBlank; * @Date 2021-09-02 20:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class CaptchaForm { - @ApiModelProperty(value = "验证码") + @Schema(description = "验证码") @NotBlank(message = "验证码不能为空") private String captchaCode; - @ApiModelProperty(value = "验证码uuid标识") + @Schema(description = "验证码uuid标识") @NotBlank(message = "验证码uuid标识不能为空") private String captchaUuid; } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/domain/CaptchaVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/domain/CaptchaVO.java new file mode 100644 index 00000000..a198a901 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/captcha/domain/CaptchaVO.java @@ -0,0 +1,29 @@ +package net.lab1024.sa.base.module.support.captcha.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 图形验证码 VO + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2021/8/31 20:52 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class CaptchaVO { + + @Schema(description = "验证码唯一标识") + private String captchaUuid; + + @Schema(description = "验证码图片内容-生产环境无效") + private String captchaText; + + @Schema(description = "验证码Base64图片") + private String captchaBase64Image; + + @Schema(description = "过期时间(秒)") + private Long expireSeconds; +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/constant/ChangeLogTypeEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/constant/ChangeLogTypeEnum.java similarity index 68% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/constant/ChangeLogTypeEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/constant/ChangeLogTypeEnum.java index e57ad480..be535840 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/constant/ChangeLogTypeEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/constant/ChangeLogTypeEnum.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.changelog.constant; +package net.lab1024.sa.base.module.support.changelog.constant; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复] @@ -16,8 +16,19 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; @Getter public enum ChangeLogTypeEnum implements BaseEnum { + /** + * 重大更新 + */ MAJOR_UPDATE(1, "重大更新"), + + /** + * 功能更新 + */ FUNCTION_UPDATE(2, "功能更新"), + + /** + * Bug修复 + */ BUG_FIX(3, "Bug修复"), ; diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/controller/ChangeLogController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/controller/ChangeLogController.java new file mode 100644 index 00000000..0efaf239 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/controller/ChangeLogController.java @@ -0,0 +1,39 @@ +package net.lab1024.sa.base.module.support.changelog.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.changelog.domain.form.ChangeLogQueryForm; +import net.lab1024.sa.base.module.support.changelog.domain.vo.ChangeLogVO; +import net.lab1024.sa.base.module.support.changelog.service.ChangeLogService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 系统更新日志 Controller + * + * @Author 卓大 + * @Date 2022-09-26 14:53:50 + * @Copyright 1024创新实验室 + */ + +@RestController +@Tag(name = SwaggerTagConst.Support.CHANGE_LOG) +public class ChangeLogController extends SupportBaseController { + + @Resource + private ChangeLogService changeLogService; + + @Operation(summary = "分页查询 @author 卓大") + @PostMapping("/changeLog/queryPage") + public ResponseDTO> queryPage(@RequestBody @Valid ChangeLogQueryForm queryForm) { + return ResponseDTO.ok(changeLogService.queryPage(queryForm)); + } +} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/dao/ChangeLogDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java similarity index 65% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/dao/ChangeLogDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java index 157eeccc..0ec0d5a7 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/dao/ChangeLogDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.changelog.dao; +package net.lab1024.sa.base.module.support.changelog.dao; import java.util.List; -import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogQueryForm; -import net.lab1024.sa.common.module.support.changelog.domain.vo.ChangeLogVO; -import net.lab1024.sa.common.module.support.changelog.domain.entity.ChangeLogEntity; +import net.lab1024.sa.base.module.support.changelog.domain.form.ChangeLogQueryForm; +import net.lab1024.sa.base.module.support.changelog.domain.vo.ChangeLogVO; +import net.lab1024.sa.base.module.support.changelog.domain.entity.ChangeLogEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; @@ -26,17 +26,12 @@ public interface ChangeLogDao extends BaseMapper { /** * 分页 查询 * - * @param page - * @param queryForm - * @return */ List queryPage(Page page, @Param("queryForm") ChangeLogQueryForm queryForm); /** * 根据版本查询 ChangeLog * - * @param version - * @return */ ChangeLogEntity selectByVersion(@Param("version") String version); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/entity/ChangeLogEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/entity/ChangeLogEntity.java similarity index 94% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/entity/ChangeLogEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/entity/ChangeLogEntity.java index 5773f412..d0bf74b9 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/entity/ChangeLogEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/entity/ChangeLogEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.changelog.domain.entity; +package net.lab1024.sa.base.module.support.changelog.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogAddForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogAddForm.java similarity index 52% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogAddForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogAddForm.java index ad552338..1be8b3f6 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogAddForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogAddForm.java @@ -1,13 +1,13 @@ -package net.lab1024.sa.common.module.support.changelog.domain.form; +package net.lab1024.sa.base.module.support.changelog.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDate; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.changelog.constant.ChangeLogTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.changelog.constant.ChangeLogTypeEnum; /** * 系统更新日志 新建表单 @@ -20,27 +20,27 @@ import net.lab1024.sa.common.module.support.changelog.constant.ChangeLogTypeEnum @Data public class ChangeLogAddForm { - @ApiModelProperty(value = "版本", required = true) + @Schema(description = "版本", required = true) @NotBlank(message = "版本 不能为空") private String version; - @ApiModelPropertyEnum(value = ChangeLogTypeEnum.class, desc = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复]") + @SchemaEnum(value = ChangeLogTypeEnum.class, desc = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复]") @CheckEnum(value = ChangeLogTypeEnum.class, message = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复] 错误", required = true) private Integer type; - @ApiModelProperty(value = "发布人", required = true) + @Schema(description = "发布人", required = true) @NotBlank(message = "发布人 不能为空") private String publishAuthor; - @ApiModelProperty(value = "发布日期", required = true) + @Schema(description = "发布日期", required = true) @NotNull(message = "发布日期 不能为空") private LocalDate publicDate; - @ApiModelProperty(value = "更新内容", required = true) + @Schema(description = "更新内容", required = true) @NotBlank(message = "更新内容 不能为空") private String content; - @ApiModelProperty(value = "跳转链接") + @Schema(description = "跳转链接") private String link; } \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogQueryForm.java new file mode 100644 index 00000000..699ff5d0 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogQueryForm.java @@ -0,0 +1,42 @@ +package net.lab1024.sa.base.module.support.changelog.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.PageParam; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.changelog.constant.ChangeLogTypeEnum; + +import java.time.LocalDate; + +/** + * 系统更新日志 查询 + * + * @Author 卓大 + * @Date 2022-09-26 14:53:50 + * @Copyright 1024创新实验室 + */ + +@Data +public class ChangeLogQueryForm extends PageParam{ + + @SchemaEnum(value = ChangeLogTypeEnum.class, desc = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复]") + @CheckEnum(value = ChangeLogTypeEnum.class, message = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复] 错误") + private Integer type; + + @Schema(description = "关键字") + private String keyword; + + @Schema(description = "发布日期") + private LocalDate publicDateBegin; + + @Schema(description = "发布日期") + private LocalDate publicDateEnd; + + @Schema(description = "创建时间") + private LocalDate createTime; + + @Schema(description = "跳转链接") + private String link; + +} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogUpdateForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogUpdateForm.java similarity index 53% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogUpdateForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogUpdateForm.java index 1a3c4363..a8489393 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogUpdateForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/form/ChangeLogUpdateForm.java @@ -1,13 +1,13 @@ -package net.lab1024.sa.common.module.support.changelog.domain.form; +package net.lab1024.sa.base.module.support.changelog.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDate; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.changelog.constant.ChangeLogTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.changelog.constant.ChangeLogTypeEnum; /** * 系统更新日志 更新表单 @@ -20,31 +20,31 @@ import net.lab1024.sa.common.module.support.changelog.constant.ChangeLogTypeEnum @Data public class ChangeLogUpdateForm { - @ApiModelProperty(value = "更新日志id", required = true) + @Schema(description = "更新日志id", required = true) @NotNull(message = "更新日志id 不能为空") private Long changeLogId; - @ApiModelProperty(value = "版本", required = true) + @Schema(description = "版本", required = true) @NotBlank(message = "版本 不能为空") private String version; - @ApiModelPropertyEnum(value = ChangeLogTypeEnum.class, desc = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复]") + @SchemaEnum(value = ChangeLogTypeEnum.class, desc = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复]") @CheckEnum(value = ChangeLogTypeEnum.class, message = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复] 错误", required = true) private Integer type; - @ApiModelProperty(value = "发布人", required = true) + @Schema(description = "发布人", required = true) @NotBlank(message = "发布人 不能为空") private String publishAuthor; - @ApiModelProperty(value = "发布日期", required = true) + @Schema(description = "发布日期", required = true) @NotNull(message = "发布日期 不能为空") private LocalDate publicDate; - @ApiModelProperty(value = "更新内容", required = true) + @Schema(description = "更新内容", required = true) @NotBlank(message = "更新内容 不能为空") private String content; - @ApiModelProperty(value = "跳转链接") + @Schema(description = "跳转链接") private String link; } \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/vo/ChangeLogVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/vo/ChangeLogVO.java new file mode 100644 index 00000000..e8930d0f --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/domain/vo/ChangeLogVO.java @@ -0,0 +1,49 @@ +package net.lab1024.sa.base.module.support.changelog.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +import lombok.Data; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.module.support.changelog.constant.ChangeLogTypeEnum; + +/** + * 系统更新日志 列表VO + * + * @Author 卓大 + * @Date 2022-09-26 14:53:50 + * @Copyright 1024创新实验室 + */ + +@Data +public class ChangeLogVO { + + private Long changeLogId; + + @Schema(description = "版本") + private String version; + + @SchemaEnum(value = ChangeLogTypeEnum.class, desc = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复]") + private Integer type; + + @Schema(description = "发布人") + private String publishAuthor; + + @Schema(description = "发布日期") + private LocalDate publicDate; + + @Schema(description = "更新内容") + private String content; + + @Schema(description = "跳转链接") + private String link; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + +} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/service/ChangeLogService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/service/ChangeLogService.java similarity index 68% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/service/ChangeLogService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/service/ChangeLogService.java index a8d95e2f..26310e56 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/service/ChangeLogService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/service/ChangeLogService.java @@ -1,22 +1,22 @@ -package net.lab1024.sa.common.module.support.changelog.service; +package net.lab1024.sa.base.module.support.changelog.service; -import java.util.List; - -import net.lab1024.sa.common.module.support.changelog.dao.ChangeLogDao; -import net.lab1024.sa.common.module.support.changelog.domain.entity.ChangeLogEntity; -import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogAddForm; -import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogQueryForm; -import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogUpdateForm; -import net.lab1024.sa.common.module.support.changelog.domain.vo.ChangeLogVO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.domain.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.changelog.dao.ChangeLogDao; +import net.lab1024.sa.base.module.support.changelog.domain.entity.ChangeLogEntity; +import net.lab1024.sa.base.module.support.changelog.domain.form.ChangeLogAddForm; +import net.lab1024.sa.base.module.support.changelog.domain.form.ChangeLogQueryForm; +import net.lab1024.sa.base.module.support.changelog.domain.form.ChangeLogUpdateForm; +import net.lab1024.sa.base.module.support.changelog.domain.vo.ChangeLogVO; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + /** * 系统更新日志 Service * @@ -28,20 +28,17 @@ import org.springframework.stereotype.Service; @Service public class ChangeLogService { - @Autowired + @Resource private ChangeLogDao changeLogDao; /** * 分页查询 * - * @param queryForm - * @return */ public PageResult queryPage(ChangeLogQueryForm queryForm) { Page page = SmartPageUtil.convert2PageQuery(queryForm); List list = changeLogDao.queryPage(page, queryForm); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, list); - return pageResult; + return SmartPageUtil.convert2PageResult(page, list); } /** @@ -61,8 +58,6 @@ public class ChangeLogService { /** * 更新 * - * @param updateForm - * @return */ public synchronized ResponseDTO update(ChangeLogUpdateForm updateForm) { ChangeLogEntity existVersion = changeLogDao.selectByVersion(updateForm.getVersion()); @@ -77,8 +72,6 @@ public class ChangeLogService { /** * 批量删除 * - * @param idList - * @return */ public synchronized ResponseDTO batchDelete(List idList) { if (CollectionUtils.isEmpty(idList)) { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeDeleteEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeDeleteEnum.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeDeleteEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeDeleteEnum.java index c5308601..ac0e007f 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeDeleteEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeDeleteEnum.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.constant; +package net.lab1024.sa.base.module.support.codegenerator.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 删除类型 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum CodeDeleteEnum implements BaseEnum { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeFrontComponentEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeFrontComponentEnum.java similarity index 83% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeFrontComponentEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeFrontComponentEnum.java index ee94ab74..5358806c 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeFrontComponentEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeFrontComponentEnum.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.constant; +package net.lab1024.sa.base.module.support.codegenerator.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 前端组件类型 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-06-30 20:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum CodeFrontComponentEnum implements BaseEnum { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeGeneratorConstant.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeGeneratorConstant.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeGeneratorConstant.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeGeneratorConstant.java index dccdf337..1b2fe58c 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeGeneratorConstant.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeGeneratorConstant.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.codegenerator.constant; +package net.lab1024.sa.base.module.support.codegenerator.constant; /** * 常量 @@ -7,7 +7,7 @@ package net.lab1024.sa.common.module.support.codegenerator.constant; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class CodeGeneratorConstant { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeGeneratorPageTypeEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeGeneratorPageTypeEnum.java similarity index 76% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeGeneratorPageTypeEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeGeneratorPageTypeEnum.java index 4a33e00a..536f3b84 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeGeneratorPageTypeEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeGeneratorPageTypeEnum.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.constant; +package net.lab1024.sa.base.module.support.codegenerator.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 页面类型 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-06-29 19:11:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum CodeGeneratorPageTypeEnum implements BaseEnum { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeQueryFieldQueryTypeEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeQueryFieldQueryTypeEnum.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeQueryFieldQueryTypeEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeQueryFieldQueryTypeEnum.java index e68d811d..2e6cbd70 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/constant/CodeQueryFieldQueryTypeEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/constant/CodeQueryFieldQueryTypeEnum.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.constant; +package net.lab1024.sa.base.module.support.codegenerator.constant; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 查询条件类型 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-06-29 20:23:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum CodeQueryFieldQueryTypeEnum implements BaseEnum { diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/controller/CodeGeneratorController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/controller/CodeGeneratorController.java new file mode 100644 index 00000000..44cb0e20 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/controller/CodeGeneratorController.java @@ -0,0 +1,97 @@ +package net.lab1024.sa.base.module.support.codegenerator.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartResponseUtil; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorPreviewForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.TableQueryForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.vo.TableColumnVO; +import net.lab1024.sa.base.module.support.codegenerator.domain.vo.TableConfigVO; +import net.lab1024.sa.base.module.support.codegenerator.domain.vo.TableVO; +import net.lab1024.sa.base.module.support.codegenerator.service.CodeGeneratorService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +/** + * 代码生成 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-06-29 20:23:46 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Tag(name = SwaggerTagConst.Support.CODE_GENERATOR) +@Controller +public class CodeGeneratorController extends SupportBaseController { + + @Resource + private CodeGeneratorService codeGeneratorService; + + // ------------------- 查询 ------------------- + + @Operation(summary = "获取表的列 @author 卓大") + @GetMapping("/codeGenerator/table/getTableColumns/{table}") + @ResponseBody + public ResponseDTO> getTableColumns(@PathVariable String table) { + return ResponseDTO.ok(codeGeneratorService.getTableColumns(table)); + } + + @Operation(summary = "查询数据库的表 @author 卓大") + @PostMapping("/codeGenerator/table/queryTableList") + @ResponseBody + public ResponseDTO> queryTableList(@RequestBody @Valid TableQueryForm tableQueryForm) { + return ResponseDTO.ok(codeGeneratorService.queryTableList(tableQueryForm)); + } + + // ------------------- 配置 ------------------- + + @Operation(summary = "获取表的配置信息 @author 卓大") + @GetMapping("/codeGenerator/table/getConfig/{table}") + @ResponseBody + public ResponseDTO getTableConfig(@PathVariable String table) { + return ResponseDTO.ok(codeGeneratorService.getTableConfig(table)); + } + + @Operation(summary = "更新配置信息 @author 卓大") + @PostMapping("/codeGenerator/table/updateConfig") + @ResponseBody + public ResponseDTO updateConfig(@RequestBody @Valid CodeGeneratorConfigForm form) { + return codeGeneratorService.updateConfig(form); + } + + // ------------------- 生成 ------------------- + + @Operation(summary = "代码预览 @author 卓大") + @PostMapping("/codeGenerator/code/preview") + @ResponseBody + public ResponseDTO preview(@RequestBody @Valid CodeGeneratorPreviewForm form) { + return codeGeneratorService.preview(form); + } + + @Operation(summary = "代码下载 @author 卓大") + @GetMapping(value = "/codeGenerator/code/download/{tableName}", produces = "application/octet-stream") + public void download(@PathVariable String tableName, HttpServletResponse response) throws IOException { + + ResponseDTO download = codeGeneratorService.download(tableName); + + if (download.getOk()) { + SmartResponseUtil.setDownloadFileHeader(response, tableName + "-code.zip", (long) download.getData().length); + response.getOutputStream().write(download.getData()); + } else { + SmartResponseUtil.write(response, download); + } + } + +} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/dao/CodeGeneratorConfigDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java similarity index 65% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/dao/CodeGeneratorConfigDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java index cc27319e..d7a53419 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/dao/CodeGeneratorConfigDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.module.support.codegenerator.dao; +package net.lab1024.sa.base.module.support.codegenerator.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import net.lab1024.sa.common.module.support.codegenerator.domain.entity.CodeGeneratorConfigEntity; +import net.lab1024.sa.base.module.support.codegenerator.domain.entity.CodeGeneratorConfigEntity; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Component; @@ -11,7 +11,7 @@ import org.springframework.stereotype.Component; * @Date 2022-09-23 20:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/dao/CodeGeneratorDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java similarity index 70% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/dao/CodeGeneratorDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java index f1407d3a..2b4f84a1 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/dao/CodeGeneratorDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.codegenerator.dao; +package net.lab1024.sa.base.module.support.codegenerator.dao; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.TableQueryForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.vo.TableColumnVO; -import net.lab1024.sa.common.module.support.codegenerator.domain.vo.TableVO; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.TableQueryForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.vo.TableColumnVO; +import net.lab1024.sa.base.module.support.codegenerator.domain.vo.TableVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -15,7 +15,7 @@ import java.util.List; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/entity/CodeGeneratorConfigEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/entity/CodeGeneratorConfigEntity.java similarity index 85% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/entity/CodeGeneratorConfigEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/entity/CodeGeneratorConfigEntity.java index c05bebd9..b686d547 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/entity/CodeGeneratorConfigEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/entity/CodeGeneratorConfigEntity.java @@ -1,7 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.entity; +package net.lab1024.sa.base.module.support.codegenerator.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -15,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022/6/23 21:59:22 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data @TableName("t_code_generator_config") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java similarity index 66% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java index 4a545f2d..10170b00 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorConfigForm.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.form; +package net.lab1024.sa.base.module.support.codegenerator.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.*; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.*; import javax.validation.Valid; import javax.validation.constraints.NotBlank; @@ -19,7 +19,7 @@ import java.util.List; * @Date 2022-06-29 20:23:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @@ -29,36 +29,36 @@ import java.util.List; public class CodeGeneratorConfigForm { @NotBlank(message = "表名 不能为空") - @ApiModelProperty("表名") + @Schema(description = "表名") private String tableName; @Valid @NotNull(message = "基础信息不能为空") - @ApiModelProperty("基础信息") + @Schema(description = "基础信息") private CodeBasic basic; @Valid @NotNull(message = "字段信息不能为空") - @ApiModelProperty("字段信息") + @Schema(description = "字段信息") private List fields; @Valid @NotNull(message = "增加、修改 信息 不能为空") - @ApiModelProperty("增加、修改 信息") + @Schema(description = "增加、修改 信息") private CodeInsertAndUpdate insertAndUpdate; @Valid @NotNull(message = "删除 信息 不能为空") - @ApiModelProperty("删除 信息") + @Schema(description = "删除 信息") private CodeDelete deleteInfo; @Valid - @ApiModelProperty("查询字段") + @Schema(description = "查询字段") private List queryFields; @Valid - @ApiModelProperty("列表字段") + @Schema(description = "列表字段") private List tableFields; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/CodeGeneratorPreviewForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorPreviewForm.java similarity index 62% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/CodeGeneratorPreviewForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorPreviewForm.java index 37d65468..7aeb309a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/CodeGeneratorPreviewForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/CodeGeneratorPreviewForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.form; +package net.lab1024.sa.base.module.support.codegenerator.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -12,17 +12,17 @@ import javax.validation.constraints.NotBlank; * @Date 2022/6/23 23:20:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class CodeGeneratorPreviewForm { @NotBlank(message = "模板文件 不能为空") - @ApiModelProperty("模板文件") + @Schema(description = "模板文件") private String templateFile; @NotBlank(message = "表名 不能为空") - @ApiModelProperty("表名") + @Schema(description = "表名") private String tableName; } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/TableQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/TableQueryForm.java new file mode 100644 index 00000000..bde89a8d --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/form/TableQueryForm.java @@ -0,0 +1,23 @@ +package net.lab1024.sa.base.module.support.codegenerator.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.PageParam; + + +/** + * 查询表数据 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-06-30 22:15:38 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class TableQueryForm extends PageParam { + + @Schema(description = "表名关键字") + private String tableNameKeywords; + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeBasic.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeBasic.java similarity index 69% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeBasic.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeBasic.java index 35f96fd0..ca5d3dee 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeBasic.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeBasic.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.model; +package net.lab1024.sa.base.module.support.codegenerator.domain.model; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -14,41 +14,41 @@ import java.time.LocalDateTime; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class CodeBasic { - @ApiModelProperty("业务名称") + @Schema(description = "业务名称") @NotBlank(message = "1.基础命名 基础命名 不能为空") private String moduleName; - @ApiModelProperty("java包名") + @Schema(description = "java包名") @NotBlank(message = "1.基础命名 java包名 不能为空") private String javaPackageName; - @ApiModelProperty("注释") + @Schema(description = "注释") @NotBlank(message = "1.基础命名 注释 不能为空") private String description; - @ApiModelProperty("前端作者") + @Schema(description = "前端作者") @NotBlank(message = "1.基础命名 前端作者 不能为空") private String frontAuthor; - @ApiModelProperty("前端时间") + @Schema(description = "前端时间") @NotNull(message = "1.基础命名 前端时间 不能为空") private LocalDateTime frontDate; - @ApiModelProperty("后端作者") + @Schema(description = "后端作者") @NotBlank(message = "1.基础命名 后端作者 不能为空") private String backendAuthor; - @ApiModelProperty("后端时间") + @Schema(description = "后端时间") @NotNull(message = "1.基础命名 后端时间 不能为空") private LocalDateTime backendDate; - @ApiModelProperty("版权信息") + @Schema(description = "版权信息") @NotNull(message = "1.基础命名 版权信息 不能为空") private String copyright; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeDelete.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeDelete.java similarity index 55% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeDelete.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeDelete.java index d334abfa..ffc0f5b5 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeDelete.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeDelete.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.model; +package net.lab1024.sa.base.module.support.codegenerator.domain.model; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeDeleteEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeDeleteEnum; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -16,23 +16,23 @@ import javax.validation.constraints.NotNull; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class CodeDelete { - @ApiModelProperty("是否支持删除 ") + @Schema(description = "是否支持删除 ") @NotNull(message = "4.删除 是否支持删除 不能为空") private Boolean isSupportDelete; - @ApiModelProperty("是否为物理删除") + @Schema(description = "是否为物理删除") @NotNull(message = "4.删除 是否为物理删除 不能为空") private Boolean isPhysicallyDeleted; - @ApiModelProperty("删除类型") + @Schema(description = "删除类型") @NotBlank(message = "4.删除 删除类型 不能为空") - @ApiModelPropertyEnum(CodeDeleteEnum.class) + @SchemaEnum(CodeDeleteEnum.class) @CheckEnum(value = CodeDeleteEnum.class, message = "删除 删除类型 枚举值错误") private String deleteEnum; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeField.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeField.java similarity index 65% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeField.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeField.java index 00cce05e..92b184c3 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeField.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeField.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.model; +package net.lab1024.sa.base.module.support.codegenerator.domain.model; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -13,46 +13,46 @@ import javax.validation.constraints.NotNull; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class CodeField { - @ApiModelProperty("列") + @Schema(description = "列") @NotBlank(message = " 2.字段列表 列名 不能为空") private String columnName; - @ApiModelProperty("列备注") + @Schema(description = "列备注") private String columnComment; - @ApiModelProperty("字段名词") + @Schema(description = "字段名词") @NotBlank(message = "2.字段列表 字段名词 不能为空") private String label; - @ApiModelProperty("字段命名") + @Schema(description = "字段命名") @NotBlank(message = "2.字段列表 字段命名 不能为空") private String fieldName; - @ApiModelProperty("java类型") + @Schema(description = "java类型") @NotBlank(message = "2.字段列表 java类型 不能为空") private String javaType; - @ApiModelProperty("js类型") + @Schema(description = "js类型") @NotBlank(message = "2.字段列表 js类型 不能为空") private String jsType; - @ApiModelProperty("字典key") + @Schema(description = "字典key") private String dict; - @ApiModelProperty("枚举名称") + @Schema(description = "枚举名称") private String enumName; - @ApiModelProperty("主键") + @Schema(description = "主键") @NotNull(message = "2.字段列表 主键 不能为空") private Boolean primaryKeyFlag; - @ApiModelProperty("自增") + @Schema(description = "自增") @NotNull(message = "2.字段列表 自增 不能为空") private Boolean autoIncreaseFlag; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeInsertAndUpdate.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdate.java similarity index 57% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeInsertAndUpdate.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdate.java index 54df13b5..265a23cb 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeInsertAndUpdate.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdate.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.model; +package net.lab1024.sa.base.module.support.codegenerator.domain.model; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeGeneratorPageTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeGeneratorPageTypeEnum; import javax.validation.constraints.NotNull; import java.util.List; @@ -16,7 +16,7 @@ import java.util.List; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @@ -25,18 +25,18 @@ public class CodeInsertAndUpdate { @NotNull(message = "3.增加、修改 是否支持增加、修改 不能为空") private Boolean isSupportInsertAndUpdate; - @ApiModelPropertyEnum(CodeGeneratorPageTypeEnum.class) + @SchemaEnum(CodeGeneratorPageTypeEnum.class) @CheckEnum(value = CodeGeneratorPageTypeEnum.class, message = "3.增加、修改 增加、修改 页面类型 枚举值错误") private String pageType; - @ApiModelProperty("宽度") + @Schema(description = "宽度") private String width; @NotNull(message = "3.增加、修改 每行字段数量 不能为空") - @ApiModelProperty("每行字段数量") + @Schema(description = "每行字段数量") private Integer countPerLine; - @ApiModelProperty("字段列表") + @Schema(description = "字段列表") private List fieldList; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java similarity index 56% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java index 43c062ca..db623864 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeInsertAndUpdateField.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.model; +package net.lab1024.sa.base.module.support.codegenerator.domain.model; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeFrontComponentEnum; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeGeneratorPageTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeFrontComponentEnum; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeGeneratorPageTypeEnum; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -17,29 +17,29 @@ import javax.validation.constraints.NotNull; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class CodeInsertAndUpdateField { @NotBlank(message = "3.增加、修改 列名 不能为空") - @ApiModelProperty("列名") + @Schema(description = "列名") private String columnName; @NotNull(message = "3.增加、修改 必须 不能为空") - @ApiModelProperty("必须") + @Schema(description = "必须") private Boolean requiredFlag; @NotNull(message = "3.增加、修改 插入标识 不能为空") - @ApiModelProperty("插入标识") + @Schema(description = "插入标识") private Boolean insertFlag; @NotNull(message = "3.增加、修改 更新标识 不能为空") - @ApiModelProperty("更新标识") + @Schema(description = "更新标识") private Boolean updateFlag; - @ApiModelPropertyEnum(value = CodeGeneratorPageTypeEnum.class) + @SchemaEnum(value = CodeGeneratorPageTypeEnum.class) @CheckEnum(value = CodeFrontComponentEnum.class, message = "3.增加、修改 增加、修改 组件类型 枚举值错误", required = true) private String frontComponent; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeQueryField.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeQueryField.java similarity index 59% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeQueryField.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeQueryField.java index 614b7fc7..b4fdb8d6 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeQueryField.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeQueryField.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.model; +package net.lab1024.sa.base.module.support.codegenerator.domain.model; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; @@ -17,30 +17,30 @@ import java.util.List; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class CodeQueryField { @NotBlank(message = "5、查询条件 条件名称 不能为空") - @ApiModelProperty("条件名称") + @Schema(description = "条件名称") private String label; @NotBlank(message = "5、查询条件 字段名 不能为空") - @ApiModelProperty("字段名") + @Schema(description = "字段名") private String fieldName; - @ApiModelPropertyEnum(CodeQueryFieldQueryTypeEnum.class) + @SchemaEnum(CodeQueryFieldQueryTypeEnum.class) @CheckEnum(value = CodeQueryFieldQueryTypeEnum.class, message = "5、查询条件 查询条件 查询类型 枚举值错误") private String queryTypeEnum; @NotEmpty(message = "5、查询条件 列 不能为空") - @ApiModelProperty("列") + @Schema(description = "列") private List columnNameList; @NotBlank(message = "5、查询条件 宽度 不能为空") - @ApiModelProperty("宽度") + @Schema(description = "宽度") private String width; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeTableField.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeTableField.java similarity index 65% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeTableField.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeTableField.java index ac126954..b0754025 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/model/CodeTableField.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/model/CodeTableField.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.model; +package net.lab1024.sa.base.module.support.codegenerator.domain.model; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -13,33 +13,33 @@ import javax.validation.constraints.NotNull; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class CodeTableField { @NotBlank(message = "6、列表 列名 不能为空") - @ApiModelProperty("列名") + @Schema(description = "列名") private String columnName; @NotBlank(message = "6、列表 字段名词 不能为空") - @ApiModelProperty("字段名词") + @Schema(description = "字段名词") private String label; @NotBlank(message = "6、列表 字段命名 不能为空") - @ApiModelProperty("字段命名") + @Schema(description = "字段命名") private String fieldName; @NotNull(message = "6、列表 列表显示 不能为空") - @ApiModelProperty("列表显示") + @Schema(description = "列表显示") private Boolean showFlag; - @ApiModelProperty("宽度") + @Schema(description = "宽度") private Integer width; @NotNull(message = "6、列表 自动省略标识 不能为空") - @ApiModelProperty("自动省略标识") + @Schema(description = "自动省略标识") private Boolean ellipsisFlag; diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableColumnVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableColumnVO.java new file mode 100644 index 00000000..b28c39ec --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableColumnVO.java @@ -0,0 +1,42 @@ + +package net.lab1024.sa.base.module.support.codegenerator.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 列 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2022/9/21 21:07:58 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ + +@Data +public class TableColumnVO { + + @Schema(description = "列名") + private String columnName; + + @Schema(description = "列描述") + private String columnComment; + + @Schema(description = "columnKey") + private String columnKey; + + @Schema(description = "extra") + private String extra; + + @Schema(description = "是否为空") + private String isNullable; + + @Schema(description = "数据类型varchar") + private String dataType; + + @Schema(description = "列类型varchar(50)") + private String columnType; + + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableConfigVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableConfigVO.java new file mode 100644 index 00000000..2dfe0e2b --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableConfigVO.java @@ -0,0 +1,40 @@ + +package net.lab1024.sa.base.module.support.codegenerator.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.*; + +import java.util.List; + +/** + * 表的配置信息 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2022/9/21 21:07:58 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ + +@Data +public class TableConfigVO { + + @Schema(description = "基础命名信息") + private CodeBasic basic; + + @Schema(description = "字段列") + private List fields; + + @Schema(description = "增加、修改 信息") + private CodeInsertAndUpdate insertAndUpdate; + + @Schema(description = "删除 信息") + private CodeDelete deleteInfo; + + @Schema(description = "查询字段") + private List queryFields; + + @Schema(description = "列表字段") + private List tableFields; +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableVO.java similarity index 51% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableVO.java index 286a2a33..8b6d4771 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/domain/vo/TableVO.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.vo; +package net.lab1024.sa.base.module.support.codegenerator.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -13,25 +13,25 @@ import java.time.LocalDateTime; * @Date 2022/9/21 18:07:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ @Data public class TableVO { - @ApiModelProperty("表名") + @Schema(description = "表名") private String tableName; - @ApiModelProperty("表备注") + @Schema(description = "表备注") private String tableComment; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; - @ApiModelProperty("配置时间") + @Schema(description = "配置时间") private LocalDateTime configTime; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/CodeGeneratorService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorService.java similarity index 85% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/CodeGeneratorService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorService.java index c4b85059..c70397b4 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/CodeGeneratorService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorService.java @@ -1,28 +1,28 @@ -package net.lab1024.sa.common.module.support.codegenerator.service; +package net.lab1024.sa.base.module.support.codegenerator.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeGeneratorConstant; -import net.lab1024.sa.common.module.support.codegenerator.dao.CodeGeneratorConfigDao; -import net.lab1024.sa.common.module.support.codegenerator.dao.CodeGeneratorDao; -import net.lab1024.sa.common.module.support.codegenerator.domain.entity.CodeGeneratorConfigEntity; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorPreviewForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.TableQueryForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.*; -import net.lab1024.sa.common.module.support.codegenerator.domain.vo.TableColumnVO; -import net.lab1024.sa.common.module.support.codegenerator.domain.vo.TableConfigVO; -import net.lab1024.sa.common.module.support.codegenerator.domain.vo.TableVO; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeGeneratorConstant; +import net.lab1024.sa.base.module.support.codegenerator.dao.CodeGeneratorConfigDao; +import net.lab1024.sa.base.module.support.codegenerator.dao.CodeGeneratorDao; +import net.lab1024.sa.base.module.support.codegenerator.domain.entity.CodeGeneratorConfigEntity; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorPreviewForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.TableQueryForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.*; +import net.lab1024.sa.base.module.support.codegenerator.domain.vo.TableColumnVO; +import net.lab1024.sa.base.module.support.codegenerator.domain.vo.TableConfigVO; +import net.lab1024.sa.base.module.support.codegenerator.domain.vo.TableVO; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.io.ByteArrayOutputStream; import java.util.List; import java.util.Optional; @@ -34,19 +34,19 @@ import java.util.Optional; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service public class CodeGeneratorService { - @Autowired + @Resource private CodeGeneratorDao codeGeneratorDao; - @Autowired + @Resource private CodeGeneratorConfigDao codeGeneratorConfigDao; - @Autowired + @Resource private CodeGeneratorTemplateService codeGeneratorTemplateService; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/CodeGeneratorTemplateService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/CodeGeneratorTemplateService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java index d9808e2f..5161f0bb 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/CodeGeneratorTemplateService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/CodeGeneratorTemplateService.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.codegenerator.service; +package net.lab1024.sa.base.module.support.codegenerator.service; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; @@ -9,21 +9,21 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.google.common.base.CaseFormat; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.domain.entity.CodeGeneratorConfigEntity; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.*; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.ControllerVariableService; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.DaoVariableService; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.ManagerVariableService; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.ServiceVariableService; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.domain.*; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.front.ApiVariableService; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.front.ConstVariableService; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.front.FormVariableService; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.front.ListVariableService; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; -import net.lab1024.sa.common.module.support.codegenerator.util.CodeGeneratorTool; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.domain.entity.CodeGeneratorConfigEntity; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.*; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ControllerVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.DaoVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ManagerVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.ServiceVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain.*; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ApiVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ConstVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.FormVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.front.ListVariableService; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.util.CodeGeneratorTool; import org.apache.commons.collections4.CollectionUtils; import org.apache.velocity.Template; import org.apache.velocity.app.Velocity; @@ -47,7 +47,7 @@ import java.util.stream.Collectors; * @Date 2022-06-30 22:15:38 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java index aff8da16..9602aeae 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/CodeGenerateBaseVariableService.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable; +package net.lab1024.sa.base.module.support.codegenerator.service.variable; import com.google.common.base.CaseFormat; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdate; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdate; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; import org.apache.commons.collections4.CollectionUtils; import java.util.*; @@ -17,7 +17,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public abstract class CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ControllerVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ControllerVariableService.java similarity index 82% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ControllerVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ControllerVariableService.java index 60543b3a..51c47dee 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ControllerVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ControllerVariableService.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend; import com.google.common.base.CaseFormat; -import net.lab1024.sa.common.common.util.SmartEnumUtil; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeDeleteEnum; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeDeleteEnum; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import java.util.*; @@ -16,7 +16,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class ControllerVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/DaoVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/DaoVariableService.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/DaoVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/DaoVariableService.java index caf4963f..b4d313f3 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/DaoVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/DaoVariableService.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import java.util.*; @@ -13,7 +13,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class DaoVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ManagerVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ManagerVariableService.java similarity index 78% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ManagerVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ManagerVariableService.java index f4e43e0b..c46fdb51 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ManagerVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ManagerVariableService.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import java.util.*; @@ -13,7 +13,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class ManagerVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ServiceVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ServiceVariableService.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ServiceVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ServiceVariableService.java index a87473cf..fb5750b0 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/ServiceVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/ServiceVariableService.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import java.util.*; @@ -13,7 +13,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class ServiceVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java similarity index 87% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java index ee9822ab..0497de50 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/AddFormVariableService.java @@ -1,12 +1,12 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.domain; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain; import cn.hutool.core.bean.BeanUtil; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdate; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdate; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -18,7 +18,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class AddFormVariableService extends CodeGenerateBaseVariableService { @@ -90,7 +90,7 @@ public class AddFormVariableService extends CodeGenerateBaseVariableService { String apiModelProperty = prefix + (field.getRequiredFlag() ? ", required = true)" : ")"); finalFieldMap.put("apiModelProperty", apiModelProperty); - packageList.add("import io.swagger.annotations.ApiModelProperty;"); + packageList.add("import io.swagger.v3.oas.annotations.media.Schema;"); if (Boolean.TRUE.equals(field.getRequiredFlag())) { String notEmptyPrefix = "String".equals(codeField.getJavaType()) ? "@NotBlank" : "@NotNull"; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/DeleteFormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/DeleteFormVariableService.java similarity index 87% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/DeleteFormVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/DeleteFormVariableService.java index 52525f58..8b61a2de 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/DeleteFormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/DeleteFormVariableService.java @@ -1,12 +1,12 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.domain; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain; import cn.hutool.core.bean.BeanUtil; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeDelete; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeDelete; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -18,7 +18,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class DeleteFormVariableService extends CodeGenerateBaseVariableService { @@ -89,7 +89,7 @@ public class DeleteFormVariableService extends CodeGenerateBaseVariableService { String apiModelProperty = prefix + (field.getRequiredFlag() ? ", required = true)" : ")"); finalFieldMap.put("apiModelProperty", apiModelProperty); - packageList.add("import io.swagger.annotations.ApiModelProperty;"); + packageList.add("import io.swagger.v3.oas.annotations.media.Schema;"); if (Boolean.TRUE.equals(field.getRequiredFlag())) { String notEmptyPrefix = "String".equals(codeField.getJavaType()) ? "@NotBlank" : "@NotNull"; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java similarity index 82% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java index f1943853..59a3fa86 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/EntityVariableService.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.domain; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain; import com.google.common.collect.Lists; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import java.util.*; @@ -14,7 +14,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class EntityVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java similarity index 83% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java index 7a6bbd26..1be48fc6 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.domain; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain; import cn.hutool.core.bean.BeanUtil; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeQueryField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import java.util.*; @@ -15,7 +15,7 @@ import java.util.*; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class MapperVariableService extends CodeGenerateBaseVariableService { @@ -39,7 +39,7 @@ public class MapperVariableService extends CodeGenerateBaseVariableService { List columnNameList = queryField.getColumnNameList(); if (columnNameList.size() == 1) { // AND INSTR(t_notice.title,#{query.keywords}) - stringBuilder.append(" AND INSTR(" )// + stringBuilder.append(" AND INSTR(" ) .append(form.getTableName()).append("." ).append(queryField.getColumnNameList().get(0)) .append(",#{queryForm." ) .append(queryField.getFieldName()) @@ -47,14 +47,14 @@ public class MapperVariableService extends CodeGenerateBaseVariableService { } else { for (int i = 0; i < columnNameList.size(); i++) { if (i == 0) { - stringBuilder.append("AND ( INSTR(" )// + stringBuilder.append("AND ( INSTR(" ) .append(form.getTableName()).append("." ).append(queryField.getColumnNameList().get(i)) .append(",#{queryForm." ) .append(queryField.getFieldName()) .append("})" ); } else { // OR INSTR(t_notice.author,#{query.keywords}) - stringBuilder.append("\n OR INSTR(" )// + stringBuilder.append("\n OR INSTR(" ) .append(form.getTableName()).append("." ).append(queryField.getColumnNameList().get(i)) .append(",#{queryForm." ) .append(queryField.getFieldName()) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java index 18bf844e..b4bc298d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/QueryFormVariableService.java @@ -1,12 +1,12 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.domain; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain; import cn.hutool.core.bean.BeanUtil; -import net.lab1024.sa.common.common.util.SmartEnumUtil; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeQueryField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -18,7 +18,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class QueryFormVariableService extends CodeGenerateBaseVariableService { @@ -70,7 +70,7 @@ public class QueryFormVariableService extends CodeGenerateBaseVariableService { String apiModelProperty = "@ApiModelProperty(value = \"" + field.getLabel() + "\")"; finalFieldMap.put("apiModelProperty", apiModelProperty); - packageList.add("import io.swagger.annotations.ApiModelProperty;"); + packageList.add("import io.swagger.v3.oas.annotations.media.Schema;"); CodeField codeField = null; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java similarity index 88% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java index b0323ad5..9a35e9b7 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/UpdateFormVariableService.java @@ -1,12 +1,12 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.domain; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain; import cn.hutool.core.bean.BeanUtil; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdate; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdate; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -18,7 +18,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class UpdateFormVariableService extends CodeGenerateBaseVariableService { @@ -105,7 +105,7 @@ public class UpdateFormVariableService extends CodeGenerateBaseVariableService { String apiModelProperty = prefix + (field.getRequiredFlag() ? ", required = true)" : ")"); finalFieldMap.put("apiModelProperty", apiModelProperty); - packageList.add("import io.swagger.annotations.ApiModelProperty;"); + packageList.add("import io.swagger.v3.oas.annotations.media.Schema;"); if (Boolean.TRUE.equals(field.getRequiredFlag())) { String notEmptyPrefix = "String".equals(codeField.getJavaType()) ? "@NotBlank" : "@NotNull"; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java index 821629e1..fc36df81 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.backend.domain; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.backend.domain; import cn.hutool.core.bean.BeanUtil; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeTableField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeTableField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -17,7 +17,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class VOVariableService extends CodeGenerateBaseVariableService { @@ -81,7 +81,7 @@ public class VOVariableService extends CodeGenerateBaseVariableService { String apiModelProperty = "@ApiModelProperty(value = \"" + codeField.getLabel() + "\")"; finalFieldMap.put("apiModelProperty", apiModelProperty); - packageList.add("import io.swagger.annotations.ApiModelProperty;"); + packageList.add("import io.swagger.v3.oas.annotations.media.Schema;"); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ApiVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ApiVariableService.java similarity index 59% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ApiVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ApiVariableService.java index 22af04c9..0a981794 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ApiVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ApiVariableService.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.front; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.front; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import java.util.*; @@ -10,7 +10,7 @@ import java.util.*; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class ApiVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ConstVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ConstVariableService.java similarity index 73% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ConstVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ConstVariableService.java index 0ce4b954..0f49467c 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ConstVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ConstVariableService.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.front; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.front; import cn.hutool.core.bean.BeanUtil; import com.google.common.base.CaseFormat; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import java.util.ArrayList; import java.util.HashMap; @@ -18,7 +18,7 @@ import java.util.stream.Collectors; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class ConstVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/FormVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/FormVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java index 544d74fa..58ee1f0b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/FormVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/FormVariableService.java @@ -1,13 +1,13 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.front; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.front; import cn.hutool.core.bean.BeanUtil; import com.google.common.base.CaseFormat; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeFrontComponentEnum; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeField; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeFrontComponentEnum; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeField; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import java.util.*; @@ -16,7 +16,7 @@ import java.util.*; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class FormVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ListVariableService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java similarity index 78% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ListVariableService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java index df051618..170fb363 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/service/variable/front/ListVariableService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.codegenerator.service.variable.front; +package net.lab1024.sa.base.module.support.codegenerator.service.variable.front; import cn.hutool.core.bean.BeanUtil; import com.google.common.base.CaseFormat; -import net.lab1024.sa.common.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.CodeQueryField; -import net.lab1024.sa.common.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; +import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; +import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; +import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryField; +import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import java.util.*; @@ -14,7 +14,7 @@ import java.util.*; * @Date 2022/9/29 17:20:41 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class ListVariableService extends CodeGenerateBaseVariableService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/util/CodeGeneratorTool.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/util/CodeGeneratorTool.java similarity index 85% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/util/CodeGeneratorTool.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/util/CodeGeneratorTool.java index b4843e66..b3c0be3c 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/util/CodeGeneratorTool.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/util/CodeGeneratorTool.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.module.support.codegenerator.util; +package net.lab1024.sa.base.module.support.codegenerator.util; import com.google.common.base.CaseFormat; -import net.lab1024.sa.common.common.constant.StringConst; +import net.lab1024.sa.base.common.constant.StringConst; /** * 代码生成 velocity 工具类 @@ -10,7 +10,7 @@ import net.lab1024.sa.common.common.constant.StringConst; * @Date 2022/9/30 19:02:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 + * @Copyright 1024创新实验室 */ public class CodeGeneratorTool { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigController.java similarity index 50% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigController.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigController.java index 5eee1999..f40cdaa8 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigController.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigController.java @@ -1,16 +1,17 @@ -package net.lab1024.sa.common.module.support.config; +package net.lab1024.sa.base.module.support.config; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.config.domain.ConfigVO; -import org.springframework.beans.factory.annotation.Autowired; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.config.domain.ConfigVO; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** * 配置 * @@ -18,16 +19,16 @@ import org.springframework.web.bind.annotation.RestController; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@Api(tags = {SwaggerTagConst.Support.CONFIG}) +@Tag(name = SwaggerTagConst.Support.CONFIG) @RestController public class ConfigController extends SupportBaseController { - @Autowired + @Resource private ConfigService configService; - @ApiOperation("查询配置详情 @author 卓大") + @Operation(summary = "查询配置详情 @author 卓大") @GetMapping("/config/queryByKey") public ResponseDTO queryByKey(@RequestParam String configKey) { return ResponseDTO.ok(configService.getConfig(configKey)); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java similarity index 68% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java index e2e9cde8..77330d60 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.config; +package net.lab1024.sa.base.module.support.config; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.config.domain.ConfigEntity; -import net.lab1024.sa.common.module.support.config.domain.ConfigQueryForm; +import net.lab1024.sa.base.module.support.config.domain.ConfigEntity; +import net.lab1024.sa.base.module.support.config.domain.ConfigQueryForm; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -17,7 +17,7 @@ import java.util.List; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Component @Mapper @@ -26,16 +26,12 @@ public interface ConfigDao extends BaseMapper { /** * 分页查询系统配置 * - * @param page - * @return */ - List queryByPage(Page page, @Param("query") ConfigQueryForm queryDTO); + List queryByPage(Page page, @Param("query") ConfigQueryForm queryForm); /** * 根据key查询获取数据 * - * @param key - * @return */ ConfigEntity selectByKey(String key); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigKeyEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigKeyEnum.java similarity index 59% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigKeyEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigKeyEnum.java index eb3b0a22..35f287af 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigKeyEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigKeyEnum.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.config; +package net.lab1024.sa.base.module.support.config; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 系统配置常量类 @@ -11,17 +11,12 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Getter @AllArgsConstructor public enum ConfigKeyEnum implements BaseEnum { - /** - * 本地上传路径前缀 - */ - LOCAL_UPLOAD_URL_PREFIX("local_upload_url_prefix", "本地上传路径前缀"), - /** * 万能密码 */ diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigService.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigService.java index 04285106..69d3ff9d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/ConfigService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigService.java @@ -1,22 +1,22 @@ -package net.lab1024.sa.common.module.support.config; +package net.lab1024.sa.base.module.support.config; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.constant.ReloadConst; -import net.lab1024.sa.common.module.support.config.domain.*; -import net.lab1024.sa.common.module.support.reload.core.annoation.SmartReload; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.constant.ReloadConst; +import net.lab1024.sa.base.module.support.config.domain.*; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; +import javax.annotation.Resource; import java.util.List; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @@ -28,7 +28,7 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service @@ -39,7 +39,7 @@ public class ConfigService { */ private final ConcurrentHashMap configCache = new ConcurrentHashMap<>(); - @Autowired + @Resource private ConfigDao configDao; @SmartReload(ReloadConst.CONFIG_RELOAD) @@ -76,12 +76,10 @@ public class ConfigService { /** * 分页查询系统配置 * - * @param queryDTO - * @return */ - public ResponseDTO> queryConfigPage(ConfigQueryForm queryDTO) { - Page page = SmartPageUtil.convert2PageQuery(queryDTO); - List entityList = configDao.queryByPage(page, queryDTO); + public ResponseDTO> queryConfigPage(ConfigQueryForm queryForm) { + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List entityList = configDao.queryByPage(page, queryForm); PageResult pageResult = SmartPageUtil.convert2PageResult(page, entityList, ConfigVO.class); return ResponseDTO.ok(pageResult); } @@ -89,8 +87,6 @@ public class ConfigService { /** * 查询配置缓存 * - * @param configKey - * @return */ public ConfigVO getConfig(ConfigKeyEnum configKey) { return this.getConfig(configKey.getValue()); @@ -99,8 +95,6 @@ public class ConfigService { /** * 查询配置缓存 * - * @param configKey - * @return */ public ConfigVO getConfig(String configKey) { if (StrUtil.isBlank(configKey)) { @@ -113,8 +107,6 @@ public class ConfigService { /** * 查询配置缓存参数 * - * @param configKey - * @return */ public String getConfigValue(ConfigKeyEnum configKey) { return this.getConfig(configKey).getConfigValue(); @@ -123,10 +115,6 @@ public class ConfigService { /** * 根据参数key查询 并转换为对象 * - * @param configKey - * @param clazz - * @param - * @return */ public T getConfigValue2Obj(ConfigKeyEnum configKey, Class clazz) { String configValue = this.getConfigValue(configKey); @@ -136,8 +124,6 @@ public class ConfigService { /** * 添加系统配置 * - * @param configAddDTO - * @return */ public ResponseDTO add(ConfigAddForm configAddDTO) { ConfigEntity entity = configDao.selectByKey(configAddDTO.getConfigKey()); @@ -155,10 +141,8 @@ public class ConfigService { /** * 更新系统配置 * - * @param updateDTO - * @return */ - public ResponseDTO updateSystemConfig(ConfigUpdateForm updateDTO) { + public ResponseDTO updateConfig(ConfigUpdateForm updateDTO) { Long configId = updateDTO.getConfigId(); ConfigEntity entity = configDao.selectById(configId); if (null == entity) { @@ -181,9 +165,6 @@ public class ConfigService { /** * 更新系统配置 * - * @param key - * @param value - * @return */ public ResponseDTO updateValueByKey(ConfigKeyEnum key, String value) { ConfigVO config = this.getConfig(key); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigAddForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigAddForm.java similarity index 71% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigAddForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigAddForm.java index e7b480cf..fb4836a9 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigAddForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigAddForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.config.domain; +package net.lab1024.sa.base.module.support.config.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -13,27 +13,27 @@ import javax.validation.constraints.NotBlank; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class ConfigAddForm { - @ApiModelProperty("参数key") + @Schema(description = "参数key") @NotBlank(message = "参数key不能为空") @Length(max = 255, message = "参数key最多255个字符") private String configKey; - @ApiModelProperty("参数的值") + @Schema(description = "参数的值") @NotBlank(message = "参数的值不能为空") @Length(max = 60000, message = "参数的值最多60000个字符") private String configValue; - @ApiModelProperty("参数名称") + @Schema(description = "参数名称") @NotBlank(message = "参数名称不能为空") @Length(max = 255, message = "参数名称最多255个字符") private String configName; - @ApiModelProperty("备注") + @Schema(description = "备注") @Length(max = 255, message = "备注最多255个字符") private String remark; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigEntity.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigEntity.java index 13a3abca..1f8f696a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.config.domain; +package net.lab1024.sa.base.module.support.config.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_config") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigQueryForm.java similarity index 58% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigQueryForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigQueryForm.java index 8e56af1b..db5b8a1f 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigQueryForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigQueryForm.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.config.domain; +package net.lab1024.sa.base.module.support.config.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import org.hibernate.validator.constraints.Length; /** @@ -12,12 +12,12 @@ import org.hibernate.validator.constraints.Length; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class ConfigQueryForm extends PageParam { - @ApiModelProperty("参数KEY") + @Schema(description = "参数KEY") @Length(max = 50, message = "参数Key最多50字符") private String configKey; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigUpdateForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigUpdateForm.java similarity index 62% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigUpdateForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigUpdateForm.java index 816ced02..3ef5990a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigUpdateForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigUpdateForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.config.domain; +package net.lab1024.sa.base.module.support.config.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class ConfigUpdateForm extends ConfigAddForm { - @ApiModelProperty("configId") + @Schema(description = "configId") @NotNull(message = "configId不能为空") private Long configId; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigVO.java similarity index 50% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigVO.java index 17230d81..f80e560d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/config/domain/ConfigVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/domain/ConfigVO.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.config.domain; +package net.lab1024.sa.base.module.support.config.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -12,28 +12,28 @@ import java.time.LocalDateTime; * @Date 2022-03-14 20:46:27 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class ConfigVO { - @ApiModelProperty("主键") + @Schema(description = "主键") private Long configId; - @ApiModelProperty("参数key") + @Schema(description = "参数key") private String configKey; - @ApiModelProperty("参数的值") + @Schema(description = "参数的值") private String configValue; - @ApiModelProperty("参数名称") + @Schema(description = "参数名称") private String configName; - @ApiModelProperty("备注") + @Schema(description = "备注") private String remark; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("上次修改时间") + @Schema(description = "上次修改时间") private LocalDateTime updateTime; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldBigDecimal.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldBigDecimal.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldBigDecimal.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldBigDecimal.java index adb292c7..c68dbddc 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldBigDecimal.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldBigDecimal.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.datatracer.annoation; +package net.lab1024.sa.base.module.support.datatracer.annoation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -12,7 +12,7 @@ import java.lang.annotation.Target; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldDict.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java similarity index 75% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldDict.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java index 898a3936..569944a4 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldDict.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.datatracer.annoation; +package net.lab1024.sa.base.module.support.datatracer.annoation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -12,7 +12,7 @@ import java.lang.annotation.Target; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldEnum.java similarity index 71% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldEnum.java index d9841c75..b46c5747 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldEnum.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.datatracer.annoation; +package net.lab1024.sa.base.module.support.datatracer.annoation; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -14,7 +14,7 @@ import java.lang.annotation.Target; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldLabel.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldLabel.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldLabel.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldLabel.java index 089325b4..4209e172 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldLabel.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldLabel.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.datatracer.annoation; +package net.lab1024.sa.base.module.support.datatracer.annoation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -12,7 +12,7 @@ import java.lang.annotation.Target; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldSql.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldSql.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldSql.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldSql.java index 4f76636a..d373ebd9 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/annoation/DataTracerFieldSql.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldSql.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.datatracer.annoation; +package net.lab1024.sa.base.module.support.datatracer.annoation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -14,7 +14,7 @@ import java.lang.annotation.Target; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/constant/DataTracerConst.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/constant/DataTracerConst.java similarity index 81% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/constant/DataTracerConst.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/constant/DataTracerConst.java index 729a241f..b80fcd2a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/constant/DataTracerConst.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/constant/DataTracerConst.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.datatracer.constant; +package net.lab1024.sa.base.module.support.datatracer.constant; /** * 常量 @@ -7,7 +7,7 @@ package net.lab1024.sa.common.module.support.datatracer.constant; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class DataTracerConst { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/constant/DataTracerTypeEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/constant/DataTracerTypeEnum.java similarity index 62% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/constant/DataTracerTypeEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/constant/DataTracerTypeEnum.java index 0bed6700..b105b696 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/constant/DataTracerTypeEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/constant/DataTracerTypeEnum.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.datatracer.constant; +package net.lab1024.sa.base.module.support.datatracer.constant; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 数据业务类型 @@ -12,16 +12,25 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-07-23 19:38:52- * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter public enum DataTracerTypeEnum implements BaseEnum { + /** + * 商品 + */ GOODS(1, "商品"), + /** + *通知公告 + */ OA_NOTICE(2, "OA-通知公告"), + /** + * 企业信息 + */ OA_ENTERPRISE(3, "OA-企业信息"), ; diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/controller/DataTracerController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/controller/DataTracerController.java new file mode 100644 index 00000000..826df3b8 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/controller/DataTracerController.java @@ -0,0 +1,40 @@ +package net.lab1024.sa.base.module.support.datatracer.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.datatracer.domain.form.DataTracerQueryForm; +import net.lab1024.sa.base.module.support.datatracer.domain.vo.DataTracerVO; +import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 数据变动记录 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-07-23 19:38:52 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Tag(name = SwaggerTagConst.Support.DATA_TRACER) +@RestController +public class DataTracerController extends SupportBaseController { + + @Resource + private DataTracerService dataTracerService; + + @Operation(summary = "分页查询业务操作日志 - @author 卓大") + @PostMapping("/dataTracer/query") + public ResponseDTO> query(@Valid @RequestBody DataTracerQueryForm queryForm) { + return dataTracerService.query(queryForm); + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/dao/DataTracerDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java similarity index 64% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/dao/DataTracerDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java index 989b6382..b6d3e05e 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/dao/DataTracerDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.datatracer.dao; +package net.lab1024.sa.base.module.support.datatracer.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.datatracer.domain.entity.DataTracerEntity; -import net.lab1024.sa.common.module.support.datatracer.domain.form.DataTracerQueryForm; -import net.lab1024.sa.common.module.support.datatracer.domain.vo.DataTracerVO; +import net.lab1024.sa.base.module.support.datatracer.domain.entity.DataTracerEntity; +import net.lab1024.sa.base.module.support.datatracer.domain.form.DataTracerQueryForm; +import net.lab1024.sa.base.module.support.datatracer.domain.vo.DataTracerVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -27,16 +27,12 @@ public interface DataTracerDao extends BaseMapper { /** * 操作记录查询 * - * @return */ List selectRecord(@Param("dataId") Long dataId, @Param("dataType") Integer dataType); /** * 分页查询 * - * @param page - * @param queryForm - * @return */ List query(Page page, @Param("query") DataTracerQueryForm queryForm); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/bo/DataTracerContentBO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/bo/DataTracerContentBO.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/bo/DataTracerContentBO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/bo/DataTracerContentBO.java index 5333642f..a129e96f 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/bo/DataTracerContentBO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/bo/DataTracerContentBO.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.datatracer.domain.bo; +package net.lab1024.sa.base.module.support.datatracer.domain.bo; import lombok.Data; @@ -11,7 +11,7 @@ import java.lang.reflect.Field; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DataTracerContentBO { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/entity/DataTracerEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/entity/DataTracerEntity.java similarity index 82% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/entity/DataTracerEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/entity/DataTracerEntity.java index 5732a8f2..3df5f7b1 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/entity/DataTracerEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/entity/DataTracerEntity.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.datatracer.domain.entity; +package net.lab1024.sa.base.module.support.datatracer.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; import java.time.LocalDateTime; @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_data_tracer") @@ -73,6 +73,11 @@ public class DataTracerEntity { */ private String ip; + /** + * 请求ip地区 + */ + private String ipRegion; + /** * 请求头 */ diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/form/DataTracerForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/form/DataTracerForm.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/form/DataTracerForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/form/DataTracerForm.java index 607d1e66..2052ce08 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/form/DataTracerForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/form/DataTracerForm.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.datatracer.domain.form; +package net.lab1024.sa.base.module.support.datatracer.domain.form; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; /** * 数据变动表单 @@ -13,7 +13,7 @@ import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEn * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @Builder diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/form/DataTracerQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/form/DataTracerQueryForm.java new file mode 100644 index 00000000..8b6e2b09 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/form/DataTracerQueryForm.java @@ -0,0 +1,32 @@ +package net.lab1024.sa.base.module.support.datatracer.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.PageParam; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; + +import javax.validation.constraints.NotNull; + +/** + * 查询表单 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-07-23 19:38:52 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class DataTracerQueryForm extends PageParam { + + @SchemaEnum(DataTracerTypeEnum.class) + private Integer type; + + @Schema(description = "业务id") + @NotNull(message = "业务id不能为空") + private Long dataId; + + @Schema(description = "关键字") + private String keywords; +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/vo/DataTracerVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/vo/DataTracerVO.java new file mode 100644 index 00000000..4e36cfc3 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/domain/vo/DataTracerVO.java @@ -0,0 +1,65 @@ +package net.lab1024.sa.base.module.support.datatracer.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; + +import java.time.LocalDateTime; + +/** + * 变动记录 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-07-23 19:38:52 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class DataTracerVO { + + @Schema(description = "日志id") + private Long dataTracerId; + + @Schema(description = "单据id") + private Long dataId; + + @SchemaEnum(value = DataTracerTypeEnum.class, desc = "业务类型") + private Integer type; + + @Schema(description = "操作内容") + private String content; + + @Schema(description = "diff 差异:旧的数据") + private String diffOld; + + @Schema(description = "差异:新的数据") + private String diffNew; + + @Schema(description = "扩展字段") + private String extraData; + + @Schema(description = "操作人") + private Long userId; + + @SchemaEnum(value = UserTypeEnum.class, desc = "用户类型") + private Integer userType; + + @Schema(description = "操作人名称") + private String userName; + + @Schema(description = "userAgent") + private String userAgent; + + @Schema(description = "ip") + private String ip; + + @Schema(description = "ip地区") + private String ipRegion; + + @Schema(description = "操作时间") + private LocalDateTime createTime; + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/manager/DataTracerManger.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/manager/DataTracerManger.java similarity index 55% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/manager/DataTracerManger.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/manager/DataTracerManger.java index 8586cdfb..6764151f 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/manager/DataTracerManger.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/manager/DataTracerManger.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.datatracer.manager; +package net.lab1024.sa.base.module.support.datatracer.manager; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import net.lab1024.sa.common.module.support.datatracer.dao.DataTracerDao; -import net.lab1024.sa.common.module.support.datatracer.domain.entity.DataTracerEntity; +import net.lab1024.sa.base.module.support.datatracer.dao.DataTracerDao; +import net.lab1024.sa.base.module.support.datatracer.domain.entity.DataTracerEntity; import org.springframework.stereotype.Service; /** @@ -12,7 +12,7 @@ import org.springframework.stereotype.Service; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class DataTracerManger extends ServiceImpl { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerChangeContentService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java similarity index 85% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerChangeContentService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java index 24af9f40..b6d8c881 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerChangeContentService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.datatracer.service; +package net.lab1024.sa.base.module.support.datatracer.service; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; @@ -9,19 +9,19 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.google.common.base.CaseFormat; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.util.SmartBigDecimalUtil; -import net.lab1024.sa.common.common.util.SmartEnumUtil; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.module.support.datatracer.annoation.*; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerConst; -import net.lab1024.sa.common.module.support.datatracer.domain.bo.DataTracerContentBO; -import net.lab1024.sa.common.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.common.util.SmartBigDecimalUtil; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.datatracer.annoation.*; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerConst; +import net.lab1024.sa.base.module.support.datatracer.domain.bo.DataTracerContentBO; +import net.lab1024.sa.base.module.support.dict.service.DictCacheService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -39,33 +39,33 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service public class DataTracerChangeContentService { - @Autowired + @Resource private ApplicationContext applicationContext; - @Autowired + @Resource private DictCacheService dictCacheService; /** * 字段描述缓存 */ - private ConcurrentHashMap fieldDescCacheMap = new ConcurrentHashMap<>(); + private final ConcurrentHashMap fieldDescCacheMap = new ConcurrentHashMap<>(); /** * 类 加注解字段缓存 */ - private ConcurrentHashMap> fieldMap = new ConcurrentHashMap<>(); + private final ConcurrentHashMap, List> fieldMap = new ConcurrentHashMap<>(); /** * 数据批量对比 * - * @param oldObjectList - * @param newObjectList - * @param - * @return + * @param oldObjectList 原始对象列表 + * @param newObjectList 新的对象列表 + * @param Class类型 + * @return 变更内容 */ public String getChangeContent(List oldObjectList, List newObjectList) { boolean valid = this.valid(oldObjectList, newObjectList); @@ -94,9 +94,9 @@ public class DataTracerChangeContentService { * oldObject 不为空 ,newObject 不空 为删除 * 都不为空为编辑 * - * @param oldObject - * @param newObject - * @return + * @param oldObject 原始对象 + * @param newObject 新对象 + * @return 变更内容 */ public String getChangeContent(Object oldObject, Object newObject) { boolean valid = this.valid(oldObject, newObject); @@ -120,8 +120,8 @@ public class DataTracerChangeContentService { /** * 解析单个bean的内容 * - * @param object - * @return + * @param object 普通对象 + * @return 单个内容 */ public String getChangeContent(Object object) { return this.getAddDeleteContent(object); @@ -133,7 +133,6 @@ public class DataTracerChangeContentService { * 获取新增或删除操作内容 * * @param object 新增或删除的对象 - * @return */ private String getAddDeleteContent(Object object) { List fields = this.getField(object); @@ -144,10 +143,9 @@ public class DataTracerChangeContentService { /** * 单个对象变动内容 * - * @param oldObjectList - * @param newObjectList - * @param - * @return + * @param oldObjectList 旧的对象列表 + * @param newObjectList 新的对象列表 + * @return 拼接后的内容 */ private String getUpdateContentList(List oldObjectList, List newObjectList) { String oldContent = this.getObjectListContent(oldObjectList); @@ -164,9 +162,9 @@ public class DataTracerChangeContentService { /** * 获取一个对象的内容信息 * - * @param objectList - * @param - * @return + * @param objectList 对象列表 + * @param 类型 + * @return 内容 */ private String getObjectListContent(List objectList) { if (CollectionUtils.isEmpty(objectList)) { @@ -185,7 +183,7 @@ public class DataTracerChangeContentService { List contentList = new ArrayList<>(); for (Entry entry : beanParseMap.entrySet()) { DataTracerContentBO dataTracerContentBO = entry.getValue(); - Boolean jsonFlag = JSONUtil.isTypeJSON(dataTracerContentBO.getFieldContent()); + boolean jsonFlag = JSONUtil.isTypeJSON(dataTracerContentBO.getFieldContent()); String filedDesc = dataTracerContentBO.getFieldDesc(); if (jsonFlag) { contentList.add(filedDesc + "(请进入详情查看)"); @@ -204,8 +202,8 @@ public class DataTracerChangeContentService { /** * 获取更新操作内容 * - * @param oldObject - * @param newObject + * @param oldObject 原始对象 + * @param newObject 新对象 * @return */ private String getUpdateContent(T oldObject, T newObject) { @@ -220,14 +218,14 @@ public class DataTracerChangeContentService { DataTracerContentBO oldContentBO = entry.getValue(); DataTracerContentBO newContentBO = newBeanParseMap.get(fieldName); // fieldContent - String oldContent = oldContentBO.getFieldContent() == null ? "" : oldContentBO.getFieldContent(); - String newContent = newContentBO.getFieldContent() == null ? "" : newContentBO.getFieldContent(); + String oldContent = oldContentBO == null || oldContentBO.getFieldContent() == null ? "" : oldContentBO.getFieldContent(); + String newContent = newContentBO == null || newContentBO.getFieldContent() == null ? "" : newContentBO.getFieldContent(); if (oldContent.equals(newContent)) { continue; } String fieldDesc = oldContentBO.getFieldDesc(); - Boolean jsonFlag = JSONUtil.isTypeJSON(oldContent) || JSONUtil.isTypeJSON(newContent); + boolean jsonFlag = JSONUtil.isTypeJSON(oldContent) || JSONUtil.isTypeJSON(newContent); if (jsonFlag) { String content = fieldDesc + "【进入详情查看】"; contentList.add(content); @@ -250,12 +248,12 @@ public class DataTracerChangeContentService { /** * 接bean对象 * - * @param object - * @param fields + * @param object 对象 + * @param fields 字段 * @return */ private Map fieldParse(Object object, List fields) { - if (fields == null || fields.size() == 0) { + if (fields == null || fields.isEmpty()) { return new HashMap<>(); } //对象解析结果 @@ -278,9 +276,6 @@ public class DataTracerChangeContentService { /** * 获取字段值 * - * @param field - * @param object - * @return */ private DataTracerContentBO getFieldValue(Field field, Object object) { Object fieldValue = ""; @@ -336,12 +331,10 @@ public class DataTracerChangeContentService { /** * 获取关联字段的显示值 * - * @param fieldValue - * @return */ private String getRelateDisplayValue(Object fieldValue, DataTracerFieldSql dataTracerFieldSql) { Class relateMapper = dataTracerFieldSql.relateMapper(); - BaseMapper mapper = applicationContext.getBean(relateMapper); + BaseMapper mapper = applicationContext.getBean(relateMapper); if (mapper == null) { return ""; } @@ -359,8 +352,6 @@ public class DataTracerChangeContentService { /** * 获取字段描述信息 优先 OperateField 没得话swagger判断 * - * @param field - * @return */ private String getFieldDesc(Field field) { // 根据字段名称 从缓存中查询 @@ -380,9 +371,6 @@ public class DataTracerChangeContentService { /** * 获取操作类型 * - * @param oldObject - * @param newObject - * @return */ private String getOperateType(Object oldObject, Object newObject) { if (oldObject == null && newObject != null) { @@ -397,36 +385,26 @@ public class DataTracerChangeContentService { /** * 校验是否进行比对 * - * @param oldObject - * @param newObject - * @return */ private boolean valid(Object oldObject, Object newObject) { if (oldObject == null && newObject == null) { return false; } - if (oldObject == null && newObject != null) { + if (oldObject == null) { return true; } - if (oldObject != null && newObject == null) { + if (newObject == null) { return true; } - if (oldObject != null && newObject != null) { - String oldClass = oldObject.getClass().getName(); - String newClass = newObject.getClass().getName(); - return oldClass.equals(newClass); - } - return true; + String oldClass = oldObject.getClass().getName(); + String newClass = newObject.getClass().getName(); + return oldClass.equals(newClass); } /** * 校验 * - * @param oldObjectList - * @param newObjectList - * @param - * @return */ private boolean valid(List oldObjectList, List newObjectList) { if (CollectionUtils.isEmpty(oldObjectList) && CollectionUtils.isEmpty(newObjectList)) { @@ -452,19 +430,17 @@ public class DataTracerChangeContentService { * 查询 包含 file key 注解的字段 * 使用缓存 * - * @param obj - * @return */ private List getField(Object obj) { // 从缓存中查询 - Class tClass = obj.getClass(); + Class tClass = obj.getClass(); List fieldList = fieldMap.get(tClass); if (null != fieldList) { return fieldList; } // 这一段递归代码 是为了 从父类中获取属性 - Class tempClass = tClass; + Class tempClass = tClass; fieldList = new ArrayList<>(); while (tempClass != null) { Field[] declaredFields = tempClass.getDeclaredFields(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerService.java similarity index 81% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerService.java index 2968ed5a..11d4d617 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/service/DataTracerService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerService.java @@ -1,26 +1,27 @@ -package net.lab1024.sa.common.module.support.datatracer.service; +package net.lab1024.sa.base.module.support.datatracer.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerConst; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; -import net.lab1024.sa.common.module.support.datatracer.dao.DataTracerDao; -import net.lab1024.sa.common.module.support.datatracer.domain.entity.DataTracerEntity; -import net.lab1024.sa.common.module.support.datatracer.domain.form.DataTracerForm; -import net.lab1024.sa.common.module.support.datatracer.domain.form.DataTracerQueryForm; -import net.lab1024.sa.common.module.support.datatracer.domain.vo.DataTracerVO; -import net.lab1024.sa.common.module.support.datatracer.manager.DataTracerManger; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartIpUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerConst; +import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; +import net.lab1024.sa.base.module.support.datatracer.dao.DataTracerDao; +import net.lab1024.sa.base.module.support.datatracer.domain.entity.DataTracerEntity; +import net.lab1024.sa.base.module.support.datatracer.domain.form.DataTracerForm; +import net.lab1024.sa.base.module.support.datatracer.domain.form.DataTracerQueryForm; +import net.lab1024.sa.base.module.support.datatracer.domain.vo.DataTracerVO; +import net.lab1024.sa.base.module.support.datatracer.manager.DataTracerManger; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; @@ -31,19 +32,19 @@ import java.util.stream.Collectors; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service public class DataTracerService { - @Autowired + @Resource private DataTracerDao dataTracerDao; - @Autowired + @Resource private DataTracerManger dataTracerManger; - @Autowired + @Resource private DataTracerChangeContentService dataTracerChangeContentService; /** @@ -170,6 +171,7 @@ public class DataTracerService { tracerEntity.setType(tracerForm.getType().getValue()); if (requestUser != null) { tracerEntity.setIp(requestUser.getIp()); + tracerEntity.setIpRegion(SmartIpUtil.getRegion(requestUser.getIp())); tracerEntity.setUserAgent(requestUser.getUserAgent()); tracerEntity.setUserId(requestUser.getUserId()); tracerEntity.setUserType(requestUser.getUserType().getValue()); @@ -198,6 +200,7 @@ public class DataTracerService { DataTracerEntity tracerEntity = SmartBeanUtil.copy(e, DataTracerEntity.class); tracerEntity.setType(e.getType().getValue()); tracerEntity.setIp(requestUser.getIp()); + tracerEntity.setIpRegion(SmartIpUtil.getRegion(requestUser.getIp())); tracerEntity.setUserAgent(requestUser.getUserAgent()); tracerEntity.setUserId(requestUser.getUserId()); tracerEntity.setUserType(requestUser.getUserType().getValue()); diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java new file mode 100644 index 00000000..67c79c02 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java @@ -0,0 +1,57 @@ +package net.lab1024.sa.base.module.support.dict.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.dict.domain.form.DictValueQueryForm; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; +import net.lab1024.sa.base.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.module.support.dict.service.DictService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * 字典 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2022/5/26 19:40:55 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Tag(name = SwaggerTagConst.Support.DICT) +@RestController +public class DictController extends SupportBaseController { + + @Resource + private DictService dictService; + @Resource + private DictCacheService dictCacheService; + + + @Operation(summary = "查询全部字典key - @author 卓大") + @GetMapping("/dict/key/queryAll") + public ResponseDTO> queryAll() { + return ResponseDTO.ok(dictService.queryAllKey()); + } + + @Operation(summary = "分页查询数据字典value - @author 罗伊") + @PostMapping("/dict/value/query") + public ResponseDTO> valueQuery(@Valid @RequestBody DictValueQueryForm queryForm) { + return dictService.valueQuery(queryForm); + } + + @Operation(summary = "数据字典-值列表- @author 罗伊") + @GetMapping("/dict/value/list/{keyCode}") + public ResponseDTO> valueList(@PathVariable String keyCode) { + List dictValueVOList = dictCacheService.selectByKeyCode(keyCode); + return ResponseDTO.ok(dictValueVOList); + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/dao/DictKeyDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java similarity index 66% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/dao/DictKeyDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java index f4d48a55..36d9dac2 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/dao/DictKeyDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.dict.dao; +package net.lab1024.sa.base.module.support.dict.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.common.module.support.dict.domain.form.DictKeyQueryForm; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictKeyVO; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; +import net.lab1024.sa.base.module.support.dict.domain.form.DictKeyQueryForm; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -26,33 +26,23 @@ public interface DictKeyDao extends BaseMapper { /** * 查找所有未删除的自带key - * @param deletedFlag - * @return */ List selectByDeletedFlag(@Param("deletedFlag") Boolean deletedFlag); /** * 逻辑删除 * - * @param dictKeyIdList - * @param deletedFlag */ void updateDeletedFlagByIdList(@Param("dictKeyIdList") List dictKeyIdList, @Param("deletedFlag") Boolean deletedFlag); /** * 分页查询 * - * @param page - * @param queryForm - * @return */ List query(Page page, @Param("query") DictKeyQueryForm queryForm); /** * 跟进code查询 - * @param keyCode - * @param deletedFlag - * @return */ DictKeyEntity selectByCode(@Param("keyCode")String keyCode, @Param("deletedFlag") Boolean deletedFlag); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/dao/DictValueDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java similarity index 67% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/dao/DictValueDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java index 4cefc6bd..9e31b7e5 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/dao/DictValueDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.dict.dao; +package net.lab1024.sa.base.module.support.dict.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.dict.domain.entity.DictValueEntity; -import net.lab1024.sa.common.module.support.dict.domain.form.DictValueQueryForm; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictValueVO; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; +import net.lab1024.sa.base.module.support.dict.domain.form.DictValueQueryForm; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -27,43 +27,30 @@ public interface DictValueDao extends BaseMapper { /** * 查找所有未删除的自带key * - * @param deletedFlag - * @return */ List selectByDeletedFlag(@Param("deletedFlag") Boolean deletedFlag); /** * 查找所有未删除的自带key * - * @param dictKeyId - * @param deletedFlag - * @return */ List selectByDeletedFlagAndKeyId(@Param("dictKeyId") Long dictKeyId, @Param("deletedFlag") Boolean deletedFlag); /** * 逻辑删除 * - * @param dictValueIdList - * @param deletedFlag */ void updateDeletedFlagByIdList(@Param("dictValueIdList") List dictValueIdList, @Param("deletedFlag") Boolean deletedFlag); /** * 分页查询 * - * @param page - * @param queryForm - * @return */ List query(Page page, @Param("query") DictValueQueryForm queryForm); /** * 跟进code查询 * - * @param valueCode - * @param deletedFlag - * @return */ DictValueEntity selectByCode(@Param("valueCode") String valueCode, @Param("deletedFlag") Boolean deletedFlag); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/entity/DictKeyEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/entity/DictKeyEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java index 1696440a..606ff7fd 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/entity/DictKeyEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.dict.domain.entity; +package net.lab1024.sa.base.module.support.dict.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_dict_key") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/entity/DictValueEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java similarity index 87% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/entity/DictValueEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java index ff46e340..303b7b85 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/entity/DictValueEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.dict.domain.entity; +package net.lab1024.sa.base.module.support.dict.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_dict_value") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyAddForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java similarity index 69% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyAddForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java index d6bc67b6..ececec8a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyAddForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.dict.domain.form; +package net.lab1024.sa.base.module.support.dict.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -13,22 +13,22 @@ import javax.validation.constraints.NotBlank; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DictKeyAddForm { - @ApiModelProperty("编码") + @Schema(description = "编码") @NotBlank(message = "编码不能为空") @Length(max = 50,message = "编码太长了,不能超过50字符") private String keyCode; - @ApiModelProperty("名称") + @Schema(description = "名称") @NotBlank(message = "名称不能为空") @Length(max = 50,message = "名称太长了,不能超过50字符") private String keyName; - @ApiModelProperty("备注") + @Schema(description = "备注") @Length(max = 500,message = "备注太长了") private String remark; } \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java new file mode 100644 index 00000000..845122bc --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java @@ -0,0 +1,24 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.PageParam; + +/** + * 字典 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2022/5/26 19:40:55 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class DictKeyQueryForm extends PageParam { + + @Schema(description = "搜索词") + private String searchWord; + + @Schema(description = "删除标识",hidden = true) + private Boolean deletedFlag; +} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyUpdateForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java similarity index 61% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyUpdateForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java index 87bfb204..a471f43d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyUpdateForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.dict.domain.form; +package net.lab1024.sa.base.module.support.dict.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DictKeyUpdateForm extends DictKeyAddForm { - @ApiModelProperty("keyId") + @Schema(description = "keyId") @NotNull(message = "keyId不能为空") private Long dictKeyId; } \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueAddForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java similarity index 70% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueAddForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java index 7f5b0931..bcb2bc73 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueAddForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.dict.domain.form; +package net.lab1024.sa.base.module.support.dict.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -14,30 +14,30 @@ import javax.validation.constraints.NotNull; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DictValueAddForm { - @ApiModelProperty("dictKeyId") + @Schema(description = "dictKeyId") @NotNull(message = "dictKeyId不能为空") private Long dictKeyId; - @ApiModelProperty("编码") + @Schema(description = "编码") @NotBlank(message = "编码不能为空") @Length(max = 50,message = "编码太长了,不能超过50字符") private String valueCode; - @ApiModelProperty("名称") + @Schema(description = "名称") @NotBlank(message = "名称不能为空") @Length(max = 50,message = "名称太长了,不能超过50字符") private String valueName; - @ApiModelProperty("排序") + @Schema(description = "排序") @NotNull(message = "排序不能为空") private Integer sort; - @ApiModelProperty("备注") + @Schema(description = "备注") @Length(max = 500,message = "备注太长了") private String remark; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java similarity index 52% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueQueryForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java index 40540ea2..7bd6eb69 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueQueryForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.dict.domain.form; +package net.lab1024.sa.base.module.support.dict.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import javax.validation.constraints.NotNull; @@ -13,18 +13,18 @@ import javax.validation.constraints.NotNull; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DictValueQueryForm extends PageParam { - @ApiModelProperty("dictKeyId") + @Schema(description = "dictKeyId") @NotNull(message = "dictKeyId不能为空") private Long dictKeyId; - @ApiModelProperty("搜索词") + @Schema(description = "搜索词") private String searchWord; - @ApiModelProperty(value = "删除标识",hidden = true) + @Schema(description = "删除标识",hidden = true) private Boolean deletedFlag; } \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueUpdateForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java similarity index 61% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueUpdateForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java index 273100a4..9efa1c12 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictValueUpdateForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.dict.domain.form; +package net.lab1024.sa.base.module.support.dict.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class DictValueUpdateForm extends DictValueAddForm { - @ApiModelProperty("valueId") + @Schema(description = "valueId") @NotNull(message = "valueId不能为空") private Long dictValueId; } \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java new file mode 100644 index 00000000..5a9ad127 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java @@ -0,0 +1,29 @@ +package net.lab1024.sa.base.module.support.dict.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 字典 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2022/5/26 19:40:55 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class DictKeyVO { + + @Schema(description = "dictKeyId") + private Long dictKeyId; + + @Schema(description = "编码") + private String keyCode; + + @Schema(description = "名称") + private String keyName; + + @Schema(description = "备注") + private String remark; +} \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java new file mode 100644 index 00000000..216822b8 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java @@ -0,0 +1,35 @@ +package net.lab1024.sa.base.module.support.dict.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 字典 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2022/5/26 19:40:55 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class DictValueVO { + + @Schema(description = "valueId") + private Long dictValueId; + + @Schema(description = "dictKeyId") + private Long dictKeyId; + + @Schema(description = "编码") + private String valueCode; + + @Schema(description = "名称") + private String valueName; + + @Schema(description = "排序") + private Integer sort; + + @Schema(description = "备注") + private String remark; +} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/service/DictCacheService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java similarity index 84% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/service/DictCacheService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java index 63c9a66f..69c01761 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/service/DictCacheService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java @@ -1,21 +1,21 @@ -package net.lab1024.sa.common.module.support.dict.service; +package net.lab1024.sa.base.module.support.dict.service; import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.module.support.dict.dao.DictKeyDao; -import net.lab1024.sa.common.module.support.dict.dao.DictValueDao; -import net.lab1024.sa.common.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.common.module.support.dict.domain.entity.DictValueEntity; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictValueVO; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.module.support.dict.dao.DictKeyDao; +import net.lab1024.sa.base.module.support.dict.dao.DictValueDao; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; +import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -28,15 +28,15 @@ import java.util.stream.Collectors; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service public class DictCacheService { - @Autowired + @Resource private DictKeyDao dictKeyDao; - @Autowired + @Resource private DictValueDao dictValueDao; private ConcurrentHashMap> DICT_CACHE = new ConcurrentHashMap<>(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/service/DictService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java similarity index 85% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/service/DictService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java index ad624157..21b454cc 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/service/DictService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java @@ -1,24 +1,24 @@ -package net.lab1024.sa.common.module.support.dict.service; +package net.lab1024.sa.base.module.support.dict.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Interner; import com.google.common.collect.Interners; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.dict.dao.DictKeyDao; -import net.lab1024.sa.common.module.support.dict.dao.DictValueDao; -import net.lab1024.sa.common.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.common.module.support.dict.domain.entity.DictValueEntity; -import net.lab1024.sa.common.module.support.dict.domain.form.*; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictValueVO; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.dict.dao.DictKeyDao; +import net.lab1024.sa.base.module.support.dict.dao.DictValueDao; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; +import net.lab1024.sa.base.module.support.dict.domain.form.*; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -28,16 +28,16 @@ import java.util.List; * @Date 2022/5/26 19:40:55 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class DictService { - @Autowired + @Resource private DictKeyDao dictKeyDao; - @Autowired + @Resource private DictValueDao dictValueDao; - @Autowired + @Resource private DictCacheService dictCacheService; /** * CODE锁 diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/controller/FeedbackController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/controller/FeedbackController.java new file mode 100644 index 00000000..1d2ffefd --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/controller/FeedbackController.java @@ -0,0 +1,52 @@ +package net.lab1024.sa.base.module.support.feedback.controller; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackAddForm; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackQueryForm; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackVO; +import net.lab1024.sa.base.module.support.feedback.service.FeedbackService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 意见反馈 + * + * @Author 1024创新实验室: 开云 + * @Date 2022-08-11 20:48:09 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Slf4j +@Tag(name = SwaggerTagConst.Support.FEEDBACK) +@RestController +public class FeedbackController extends SupportBaseController { + + @Resource + private FeedbackService feedbackService; + + @Operation(summary = "意见反馈-分页查询 @author 开云") + @PostMapping("/feedback/query") + public ResponseDTO> query(@RequestBody @Valid FeedbackQueryForm queryForm) { + return feedbackService.query(queryForm); + } + + @Operation(summary = "意见反馈-新增 @author 开云") + @PostMapping("/feedback/add") + public ResponseDTO add(@RequestBody @Valid FeedbackAddForm addForm) { + RequestUser employee = SmartRequestUtil.getRequestUser(); + return feedbackService.add(addForm, employee); + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/dao/FeedbackDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java similarity index 64% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/dao/FeedbackDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java index e03e2e14..6623fd40 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/dao/FeedbackDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.feedback.dao; +package net.lab1024.sa.base.module.support.feedback.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackEntity; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackQueryForm; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackVO; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackEntity; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackQueryForm; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022-08-11 20:48:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackAddForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackAddForm.java similarity index 60% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackAddForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackAddForm.java index dd32ea57..9c969f4b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackAddForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackAddForm.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.feedback.domain; +package net.lab1024.sa.base.module.support.feedback.domain; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.json.deserializer.FileKeyVoDeserializer; -import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer; +import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer; +import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer; import javax.validation.constraints.NotBlank; @@ -16,16 +16,16 @@ import javax.validation.constraints.NotBlank; * @Date 2022-08-11 20:48:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class FeedbackAddForm { - @ApiModelProperty("反馈内容") + @Schema(description = "反馈内容") @NotBlank(message = "反馈内容不能为空") private String feedbackContent; - @ApiModelProperty("反馈图片") + @Schema(description = "反馈图片") @JsonSerialize(using = FileKeyVoSerializer.class) @JsonDeserialize(using = FileKeyVoDeserializer.class) private String feedbackAttachment; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackEntity.java similarity index 88% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackEntity.java index 1a5a9899..85d7b4cc 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.feedback.domain; +package net.lab1024.sa.base.module.support.feedback.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022-08-11 20:48:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_feedback") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackQueryForm.java similarity index 53% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackQueryForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackQueryForm.java index 954a2e9f..2bda1472 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackQueryForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackQueryForm.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.feedback.domain; +package net.lab1024.sa.base.module.support.feedback.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import org.hibernate.validator.constraints.Length; import java.time.LocalDate; @@ -14,18 +14,18 @@ import java.time.LocalDate; * @Date 2022-08-11 20:48:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class FeedbackQueryForm extends PageParam { - @ApiModelProperty("搜索词") + @Schema(description = "搜索词") @Length(max = 25, message = "搜索词最多25字符") private String searchWord; - @ApiModelProperty(value = "开始时间", example = "2021-02-14") + @Schema(description = "开始时间", example = "2021-02-14") private LocalDate startDate; - @ApiModelProperty(value = "截止时间", example = "2022-10-15") + @Schema(description = "截止时间", example = "2022-10-15") private LocalDate endDate; } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackVO.java new file mode 100644 index 00000000..5cba8ec1 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/domain/FeedbackVO.java @@ -0,0 +1,51 @@ +package net.lab1024.sa.base.module.support.feedback.domain; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer; +import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer; +import net.lab1024.sa.base.common.swagger.SchemaEnum; + +import java.time.LocalDateTime; + +/** + * 意见反馈 返回对象 + * + * @Author 1024创新实验室: 开云 + * @Date 2022-08-11 20:48:09 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class FeedbackVO { + + @Schema(description = "主键") + private Long feedbackId; + + @Schema(description = "反馈内容") + private String feedbackContent; + + @Schema(description = "反馈图片") + @JsonSerialize(using = FileKeyVoSerializer.class) + @JsonDeserialize(using = FileKeyVoDeserializer.class) + private String feedbackAttachment; + + @Schema(description = "创建人id") + private Long userId; + + @Schema(description = "创建人姓名") + private String userName; + + @SchemaEnum(value = UserTypeEnum.class, desc = "创建人类型") + private Integer userType; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + + @Schema(description = "创建时间") + private LocalDateTime createTime; +} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/service/FeedbackService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/service/FeedbackService.java similarity index 59% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/service/FeedbackService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/service/FeedbackService.java index a534cc7e..cbe61007 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/service/FeedbackService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/service/FeedbackService.java @@ -1,19 +1,19 @@ -package net.lab1024.sa.common.module.support.feedback.service; +package net.lab1024.sa.base.module.support.feedback.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.feedback.dao.FeedbackDao; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackAddForm; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackEntity; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackQueryForm; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackVO; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.feedback.dao.FeedbackDao; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackAddForm; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackEntity; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackQueryForm; +import net.lab1024.sa.base.module.support.feedback.domain.FeedbackVO; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -24,19 +24,17 @@ import java.util.List; * @Date 2022-08-11 20:48:09 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class FeedbackService { - @Autowired + @Resource private FeedbackDao feedbackDao; /** * 分页查询 * - * @param queryForm - * @return */ public ResponseDTO> query(FeedbackQueryForm queryForm) { Page page = SmartPageUtil.convert2PageQuery(queryForm); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/constant/FileFolderTypeEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/constant/FileFolderTypeEnum.java similarity index 62% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/constant/FileFolderTypeEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/constant/FileFolderTypeEnum.java index 5428c418..a56617ba 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/constant/FileFolderTypeEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/constant/FileFolderTypeEnum.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.file.constant; +package net.lab1024.sa.base.module.support.file.constant; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 文件服务 文件夹位置类型枚举类 @@ -11,18 +11,30 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2019年10月11日 15:34:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter public enum FileFolderTypeEnum implements BaseEnum { + /** + * 通用 + */ COMMON(1, FileFolderTypeEnum.FOLDER_PUBLIC + "/common/", "通用"), + /** + * 公告 + */ NOTICE(2, FileFolderTypeEnum.FOLDER_PUBLIC + "/notice/", "公告"), - HELP_DOC(3, FileFolderTypeEnum.FOLDER_PUBLIC + "help-doc", "帮助中心"), + /** + * 帮助中心 + */ + HELP_DOC(3, FileFolderTypeEnum.FOLDER_PUBLIC + "/help-doc/", "帮助中心"), + /** + * 意见反馈 + */ FEEDBACK(4, FileFolderTypeEnum.FOLDER_PUBLIC + "/feedback/", "意见反馈"), ; @@ -33,13 +45,10 @@ public enum FileFolderTypeEnum implements BaseEnum { public static final String FOLDER_PUBLIC = "public"; /** - * 私有读取文件夹 private + * 私有读取文件夹 private, 私有文件夹会设置 只读权限,并且 文件url 拥有过期时间 */ public static final String FOLDER_PRIVATE = "private"; - - public static final String INFO = "1:通用"; - private final Integer value; private final String folder; diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/controller/FileController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/controller/FileController.java new file mode 100644 index 00000000..0163c6c1 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/controller/FileController.java @@ -0,0 +1,73 @@ +package net.lab1024.sa.base.module.support.file.controller; + +import cn.hutool.extra.servlet.ServletUtil; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.constant.RequestHeaderConst; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.common.util.SmartResponseUtil; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.file.domain.vo.FileDownloadVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileUploadVO; +import net.lab1024.sa.base.module.support.file.service.FileService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 文件服务 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2019年10月11日 15:34:47 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@RestController +@Tag(name = SwaggerTagConst.Support.FILE) +public class FileController extends SupportBaseController { + + @Resource + private FileService fileService; + + + @Operation(summary = "文件上传 @author 胡克") + @PostMapping("/file/upload") + public ResponseDTO upload(@RequestParam MultipartFile file, @RequestParam Integer folder) { + RequestUser requestUser = SmartRequestUtil.getRequestUser(); + return fileService.fileUpload(file, folder, requestUser); + } + + @Operation(summary = "获取文件URL:根据fileKey @author 胡克") + @GetMapping("/file/getFileUrl") + public ResponseDTO getUrl(@RequestParam String fileKey) { + return fileService.getFileUrl(fileKey); + } + + @Operation(summary = "下载文件流(根据fileKey) @author 胡克") + @GetMapping("/file/downLoad") + public void downLoad(@RequestParam String fileKey, HttpServletRequest request, HttpServletResponse response) throws IOException { + String userAgent = ServletUtil.getHeaderIgnoreCase(request, RequestHeaderConst.USER_AGENT); + ResponseDTO downloadFileResult = fileService.getDownloadFile(fileKey, userAgent); + if (!downloadFileResult.getOk()) { + SmartResponseUtil.write(response, downloadFileResult); + return; + } + // 下载文件信息 + FileDownloadVO fileDownloadVO = downloadFileResult.getData(); + // 设置下载消息头 + SmartResponseUtil.setDownloadFileHeader(response, fileDownloadVO.getMetadata().getFileName(), fileDownloadVO.getMetadata().getFileSize()); + // 下载 + response.getOutputStream().write(fileDownloadVO.getData()); + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/dao/FileDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java similarity index 63% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/dao/FileDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java index f49b4177..df0f231c 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/dao/FileDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java @@ -1,14 +1,15 @@ -package net.lab1024.sa.common.module.support.file.dao; +package net.lab1024.sa.base.module.support.file.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.file.domain.vo.FileVO; -import net.lab1024.sa.common.module.support.file.domain.entity.FileEntity; -import net.lab1024.sa.common.module.support.file.domain.form.FileQueryForm; +import net.lab1024.sa.base.module.support.file.domain.vo.FileVO; +import net.lab1024.sa.base.module.support.file.domain.entity.FileEntity; +import net.lab1024.sa.base.module.support.file.domain.form.FileQueryForm; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; +import java.util.Collection; import java.util.List; /** @@ -18,7 +19,7 @@ import java.util.List; * @Date 2019年10月11日 15:34:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -32,6 +33,12 @@ public interface FileDao extends BaseMapper { */ FileVO getByFileKey(@Param("fileKey") String fileKey); + + /** + * 批量获取 + */ + List selectByFileKeyList(@Param("fileKeyList") Collection fileKeyList); + /** * 分页 查询 * diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/entity/FileEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/entity/FileEntity.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/entity/FileEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/entity/FileEntity.java index 194a4ecb..2fdb341d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/entity/FileEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/entity/FileEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.file.domain.entity; +package net.lab1024.sa.base.module.support.file.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2019年10月11日 15:34:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName(value = "t_file") diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/form/FileQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/form/FileQueryForm.java new file mode 100644 index 00000000..84d7a00a --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/form/FileQueryForm.java @@ -0,0 +1,46 @@ +package net.lab1024.sa.base.module.support.file.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.PageParam; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.file.constant.FileFolderTypeEnum; + +import java.time.LocalDate; + +/** + * 文件信息查询 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2019年10月11日 15:34:47 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class FileQueryForm extends PageParam { + + @SchemaEnum(value = FileFolderTypeEnum.class, desc = "文件夹类型") + @CheckEnum(value = FileFolderTypeEnum.class, message = "文件夹类型 错误") + private Integer folderType; + + @Schema(description = "文件名词") + private String fileName; + + @Schema(description = "文件Key") + private String fileKey; + + @Schema(description = "文件类型") + private String fileType; + + @Schema(description = "创建人") + private String creatorName; + + @Schema(description = "创建时间") + private LocalDate createTimeBegin; + + @Schema(description = "创建时间") + private LocalDate createTimeEnd; + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/form/FileUrlUploadForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/form/FileUrlUploadForm.java new file mode 100644 index 00000000..f269ba61 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/form/FileUrlUploadForm.java @@ -0,0 +1,31 @@ +package net.lab1024.sa.base.module.support.file.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; +import net.lab1024.sa.base.module.support.file.constant.FileFolderTypeEnum; + +import javax.validation.constraints.NotBlank; + +/** + * url上传文件 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2019年10月11日 15:34:47 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class FileUrlUploadForm { + + @SchemaEnum(value = FileFolderTypeEnum.class, desc = "业务类型") + @CheckEnum(value = FileFolderTypeEnum.class, required = true, message = "业务类型错误") + private Integer folder; + + @Schema(description = "文件url") + @NotBlank(message = "文件url不能为空") + private String fileUrl; + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileDownloadVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileDownloadVO.java similarity index 73% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileDownloadVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileDownloadVO.java index 42e76ddf..fd2756ff 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileDownloadVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileDownloadVO.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.file.domain.vo; +package net.lab1024.sa.base.module.support.file.domain.vo; import lombok.Data; @@ -9,7 +9,7 @@ import lombok.Data; * @Date 2019年10月11日 15:34:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class FileDownloadVO { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileMetadataVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileMetadataVO.java similarity index 76% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileMetadataVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileMetadataVO.java index ad268891..51b497f2 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileMetadataVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileMetadataVO.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.file.domain.vo; +package net.lab1024.sa.base.module.support.file.domain.vo; import lombok.Data; @@ -9,7 +9,7 @@ import lombok.Data; * @Date 2019年10月11日 15:34:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class FileMetadataVO { diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileUploadVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileUploadVO.java new file mode 100644 index 00000000..11772f5b --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileUploadVO.java @@ -0,0 +1,35 @@ +package net.lab1024.sa.base.module.support.file.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 文件信息 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2019年10月11日 15:34:47 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class FileUploadVO { + + @Schema(description = "文件id") + private Long fileId; + + @Schema(description = "文件名称") + private String fileName; + + @Schema(description = "fileUrl") + private String fileUrl; + + @Schema(description = "fileKey") + private String fileKey; + + @Schema(description = "文件大小") + private Long fileSize; + + @Schema(description = "文件类型") + private String fileType; +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileVO.java new file mode 100644 index 00000000..e4fd696b --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/domain/vo/FileVO.java @@ -0,0 +1,56 @@ +package net.lab1024.sa.base.module.support.file.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.module.support.file.constant.FileFolderTypeEnum; + +import java.time.LocalDateTime; + +/** + * 文件信息 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2019年10月11日 15:34:47 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class FileVO { + + @Schema(description = "主键") + private Long fileId; + + @Schema(description = "存储文件夹类型") + @SchemaEnum(FileFolderTypeEnum.class) + private Integer folderType; + + @Schema(description = "文件名称") + private String fileName; + + @Schema(description = "文件大小") + private Integer fileSize; + + @Schema(description = "文件类型") + private String fileType; + + @Schema(description = "文件路径") + private String fileKey; + + @Schema(description = "上传人") + private Long creatorId; + + @Schema(description = "上传人") + private String creatorName; + + @SchemaEnum(value = UserTypeEnum.class, desc = "创建人类型") + private Integer creatorUserType; + + @Schema(description = "文件展示url") + private String fileUrl; + + @Schema(description = "创建时间") + private LocalDateTime createTime; +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileService.java new file mode 100644 index 00000000..48fb6641 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileService.java @@ -0,0 +1,211 @@ +package net.lab1024.sa.base.module.support.file.service; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Lists; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.file.constant.FileFolderTypeEnum; +import net.lab1024.sa.base.module.support.file.dao.FileDao; +import net.lab1024.sa.base.module.support.file.domain.entity.FileEntity; +import net.lab1024.sa.base.module.support.file.domain.form.FileQueryForm; +import net.lab1024.sa.base.module.support.file.domain.vo.FileDownloadVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileUploadVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileVO; +import net.lab1024.sa.base.module.support.redis.RedisService; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 文件服务 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2019年10月11日 15:34:47 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Service +public class FileService { + + /** + * 文件名最大长度 + */ + private static final int FILE_NAME_MAX_LENGTH = 100; + + @Resource + private IFileStorageService fileStorageService; + + @Resource + private FileDao fileDao; + + @Resource + private RedisService redisService; + + @Value("${spring.servlet.multipart.max-file-size}") + private String maxFileSize; + + + /** + * 文件上传服务 + * + * @param file + * @param folderType 文件夹类型 + * @return + */ + public ResponseDTO fileUpload(MultipartFile file, Integer folderType, RequestUser requestUser) { + FileFolderTypeEnum folderTypeEnum = SmartEnumUtil.getEnumByValue(folderType, FileFolderTypeEnum.class); + if (null == folderTypeEnum) { + return ResponseDTO.userErrorParam("文件夹错误"); + } + + if (null == file || file.getSize() == 0) { + return ResponseDTO.userErrorParam("上传文件不能为空"); + } + + // 校验文件名称 + String originalFilename = file.getOriginalFilename(); + if (StringUtils.isBlank(originalFilename)) { + return ResponseDTO.userErrorParam("上传文件名称不能为空"); + } + + if (originalFilename.length() > FILE_NAME_MAX_LENGTH) { + return ResponseDTO.userErrorParam("文件名称最大长度为:" + FILE_NAME_MAX_LENGTH); + } + + // 校验文件大小 + String maxSizeStr = maxFileSize.toLowerCase().replace("mb", ""); + long maxSize = Integer.parseInt(maxSizeStr) * 1024 * 1024L; + if (file.getSize() > maxSize) { + return ResponseDTO.userErrorParam("上传文件最大为:" + maxSize); + } + + // 进行上传 + ResponseDTO response = fileStorageService.upload(file, folderTypeEnum.getFolder()); + if (!response.getOk()) { + return response; + } + + // 上传成功 保存记录数据库 + FileUploadVO uploadVO = response.getData(); + FileEntity fileEntity = new FileEntity(); + fileEntity.setFolderType(folderTypeEnum.getValue()); + fileEntity.setFileName(originalFilename); + fileEntity.setFileSize(file.getSize()); + fileEntity.setFileKey(uploadVO.getFileKey()); + fileEntity.setFileType(uploadVO.getFileType()); + fileEntity.setCreatorId(requestUser == null ? null : requestUser.getUserId()); + fileEntity.setCreatorName(requestUser == null ? null : requestUser.getUserName()); + fileEntity.setCreatorUserType(requestUser == null ? null : requestUser.getUserType().getValue()); + fileDao.insert(fileEntity); + + // 将fileId 返回给前端 + uploadVO.setFileId(fileEntity.getFileId()); + + return response; + } + + /** + * 批量获取文件信息 + * + * @param fileKeyList + * @return + */ + public List getFileList(List fileKeyList) { + if (CollectionUtils.isEmpty(fileKeyList)) { + return Lists.newArrayList(); + } + + // 查询数据库,并获取 file url + HashSet fileKeySet = new HashSet<>(fileKeyList); + Map fileMap = fileDao.selectByFileKeyList(fileKeySet) + .stream().collect(Collectors.toMap(FileVO::getFileKey, Function.identity())); + + for (FileVO fileVO : fileMap.values()) { + ResponseDTO fileUrlResponse = fileStorageService.getFileUrl(fileVO.getFileKey()); + if (fileUrlResponse.getOk()) { + fileVO.setFileUrl(fileUrlResponse.getData()); + } + } + + // 返回结果 + List result = Lists.newArrayListWithCapacity(fileKeyList.size()); + for (String fileKey : fileKeyList) { + FileVO fileVO = fileMap.get(fileKey); + if (fileVO != null) { + result.add(fileVO); + } + } + + return result; + } + + + /** + * 根据文件绝对路径 获取文件URL + * 支持单个 key 逗号分隔的形式 + * + * @param fileKeys + * @return + */ + public ResponseDTO getFileUrl(String fileKeys) { + if (StringUtils.isBlank(fileKeys)) { + return ResponseDTO.error(UserErrorCode.PARAM_ERROR); + } + + List fileKeyArray = StrUtil.split(fileKeys, StringConst.SEPARATOR); + List fileUrlList = Lists.newArrayListWithCapacity(fileKeyArray.size()); + for (String fileKey : fileKeyArray) { + ResponseDTO fileUrlResponse = fileStorageService.getFileUrl(fileKey); + if (fileUrlResponse.getOk()) { + fileUrlList.add(fileUrlResponse.getData()); + } + } + return ResponseDTO.ok(SmartStringUtil.join(StringConst.SEPARATOR, fileUrlList)); + } + + + /** + * 根据文件服务类型 和 FileKey 下载文件 + */ + public ResponseDTO getDownloadFile(String fileKey, String userAgent) { + FileVO fileVO = fileDao.getByFileKey(fileKey); + if (fileVO == null) { + return ResponseDTO.userErrorParam("文件不存在"); + } + + // 根据文件服务类 获取对应文件服务 查询 url + ResponseDTO download = fileStorageService.download(fileKey); + if(download.getOk()){ + download.getData().getMetadata().setFileName(fileVO.getFileName()); + } + return download; + } + + /** + * 分页查询 + */ + public PageResult queryPage(FileQueryForm queryForm) { + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List list = fileDao.queryPage(page, queryForm); + return SmartPageUtil.convert2PageResult(page, list); + } + + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileStorageCloudServiceImpl.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageCloudServiceImpl.java similarity index 67% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileStorageCloudServiceImpl.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageCloudServiceImpl.java index 5b414c5e..3b1f065a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileStorageCloudServiceImpl.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageCloudServiceImpl.java @@ -1,25 +1,29 @@ -package net.lab1024.sa.common.module.support.file.service; +package net.lab1024.sa.base.module.support.file.service; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.model.CannedAccessControlList; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.S3Object; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.code.SystemErrorCode; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.config.FileCloudConfig; -import net.lab1024.sa.common.module.support.file.domain.vo.FileDownloadVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileMetadataVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileUploadVO; -import net.lab1024.sa.common.module.support.file.constant.FileFolderTypeEnum; +import net.lab1024.sa.base.common.code.SystemErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.config.FileConfig; +import net.lab1024.sa.base.constant.RedisKeyConst; +import net.lab1024.sa.base.module.support.file.constant.FileFolderTypeEnum; +import net.lab1024.sa.base.module.support.file.dao.FileDao; +import net.lab1024.sa.base.module.support.file.domain.vo.FileDownloadVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileMetadataVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileUploadVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileVO; +import net.lab1024.sa.base.module.support.redis.RedisService; import org.apache.commons.collections4.MapUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.FileCopyUtils; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; @@ -29,6 +33,7 @@ import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.HashMap; import java.util.Map; +import java.util.UUID; /** * 云计算 实现 @@ -37,17 +42,11 @@ import java.util.Map; * @Date 2019年10月11日 15:34:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j public class FileStorageCloudServiceImpl implements IFileStorageService { - @Autowired - private AmazonS3 amazonS3; - - @Autowired - private FileCloudConfig cloudConfig; - /** * 自定义元数据 文件名称 */ @@ -63,24 +62,42 @@ public class FileStorageCloudServiceImpl implements IFileStorageService { */ private static final String USER_METADATA_FILE_SIZE = "file-size"; + @Resource + private AmazonS3 amazonS3; + + @Resource + private FileConfig cloudConfig; + + @Resource + private RedisService redisService; + + @Resource + private FileDao fileDao; + @Override - public ResponseDTO fileUpload(MultipartFile file, String path) { + public ResponseDTO upload(MultipartFile file, String path) { // 设置文件 key - String originalFilename = file.getOriginalFilename(); - String fileType = FilenameUtils.getExtension(originalFilename); - String fileKey = path + this.generateFileName(originalFilename); + String originalFileName = file.getOriginalFilename(); + if (SmartStringUtil.isEmpty(originalFileName)) { + return ResponseDTO.userErrorParam("上传文件名为空"); + } + + String fileType = FilenameUtils.getExtension(originalFileName); + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String fileKey = path + uuid + "." + fileType; + // 文件名称 URL 编码 String urlEncoderFilename; try { - urlEncoderFilename = URLEncoder.encode(originalFilename, StandardCharsets.UTF_8.name()); + urlEncoderFilename = URLEncoder.encode(originalFileName, StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { - log.error("阿里云文件上传服务URL ENCODE-发生异常:", e); - return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR,"上传失败"); + log.error("文件上传服务URL ENCODE-发生异常:", e); + return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "上传失败"); } ObjectMetadata meta = new ObjectMetadata(); meta.setContentEncoding(StandardCharsets.UTF_8.name()); meta.setContentDisposition("attachment;filename=" + urlEncoderFilename); - Map userMetadata = new HashMap(10); + Map userMetadata = new HashMap<>(10); userMetadata.put(USER_METADATA_FILE_NAME, urlEncoderFilename); userMetadata.put(USER_METADATA_FILE_FORMAT, fileType); userMetadata.put(USER_METADATA_FILE_SIZE, String.valueOf(file.getSize())); @@ -91,17 +108,17 @@ public class FileStorageCloudServiceImpl implements IFileStorageService { amazonS3.putObject(cloudConfig.getBucketName(), fileKey, file.getInputStream(), meta); } catch (IOException e) { log.error("文件上传-发生异常:", e); - return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR,"上传失败"); + return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "上传失败"); } // 根据文件路径获取并设置访问权限 CannedAccessControlList acl = this.getACL(path); amazonS3.setObjectAcl(cloudConfig.getBucketName(), fileKey, acl); // 返回上传结果 FileUploadVO uploadVO = new FileUploadVO(); - uploadVO.setFileName(originalFilename); + uploadVO.setFileName(originalFileName); uploadVO.setFileType(fileType); // 根据 访问权限 返回不同的 URL - String url = cloudConfig.getPublicUrl() + fileKey; + String url = cloudConfig.getUrlPrefix() + fileKey; if (CannedAccessControlList.Private.equals(acl)) { // 获取临时访问的URL url = this.getFileUrl(fileKey).getData(); @@ -121,23 +138,39 @@ public class FileStorageCloudServiceImpl implements IFileStorageService { @Override public ResponseDTO getFileUrl(String fileKey) { if (StringUtils.isBlank(fileKey)) { - return ResponseDTO.userErrorParam(); + return ResponseDTO.userErrorParam("文件不存在,key为空"); } + if (!fileKey.startsWith(FileFolderTypeEnum.FOLDER_PRIVATE)) { // 不是私有的 都公共读 - return ResponseDTO.ok(cloudConfig.getPublicUrl() + fileKey); + return ResponseDTO.ok(cloudConfig.getUrlPrefix() + fileKey); } - Date expiration = new Date(System.currentTimeMillis() + cloudConfig.getUrlExpire()); - URL url = amazonS3.generatePresignedUrl(cloudConfig.getBucketName(), fileKey, expiration); - String urlStr = url.toString().replace("http://", "https://"); - return ResponseDTO.ok(urlStr); + + // 如果是私有的,则规定时间内可以访问,超过规定时间,则连接失效 + + String fileRedisKey = RedisKeyConst.Support.FILE_PRIVATE_VO + fileKey; + FileVO fileVO = redisService.getObject(fileRedisKey, FileVO.class); + if (fileVO == null) { + fileVO = fileDao.getByFileKey(fileKey); + if (fileVO == null) { + return ResponseDTO.userErrorParam("文件不存在"); + } + + Date expiration = new Date(System.currentTimeMillis() + cloudConfig.getPrivateUrlExpireSeconds() * 1000L); + URL url = amazonS3.generatePresignedUrl(cloudConfig.getBucketName(), fileKey, expiration); + fileVO.setFileUrl(url.toString()); + redisService.set(fileRedisKey, fileVO, cloudConfig.getPrivateUrlExpireSeconds() - 5); + } + + return ResponseDTO.ok(fileVO.getFileUrl()); } + /** * 流式下载(名称为原文件) */ @Override - public ResponseDTO fileDownload(String key) { + public ResponseDTO download(String key) { //获取oss对象 S3Object s3Object = amazonS3.getObject(cloudConfig.getBucketName(), key); // 获取文件 meta @@ -165,7 +198,7 @@ public class FileStorageCloudServiceImpl implements IFileStorageService { return ResponseDTO.ok(fileDownloadVO); } catch (IOException e) { log.error("文件下载-发生异常:", e); - return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR,"下载失败"); + return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "下载失败"); } finally { try { // 关闭输入流 @@ -206,10 +239,4 @@ public class FileStorageCloudServiceImpl implements IFileStorageService { return ResponseDTO.ok(); } - - @Override - public Long cacheExpireSecond(){ - return cloudConfig.getUrlExpire() - 1800; - } - } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileStorageLocalServiceImpl.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java similarity index 57% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileStorageLocalServiceImpl.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java index 759a3fd1..45f21420 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileStorageLocalServiceImpl.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java @@ -1,25 +1,30 @@ -package net.lab1024.sa.common.module.support.file.service; +package net.lab1024.sa.base.module.support.file.service; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; +import cn.hutool.core.net.NetUtil; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.code.SystemErrorCode; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileDownloadVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileMetadataVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileUploadVO; -import net.lab1024.sa.common.module.support.config.ConfigKeyEnum; -import net.lab1024.sa.common.module.support.config.ConfigService; +import net.lab1024.sa.base.common.code.SystemErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.file.domain.vo.FileDownloadVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileMetadataVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileUploadVO; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; -import org.springframework.beans.factory.annotation.Autowired; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.FileCopyUtils; import org.springframework.web.multipart.MultipartFile; +import javax.annotation.PostConstruct; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; +import java.time.LocalDateTime; +import java.util.UUID; /** * 本地存储 实现 @@ -28,23 +33,47 @@ import java.io.InputStream; * @Date 2019年10月11日 15:34:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 ( 1024创新实验室 ) */ @Slf4j public class FileStorageLocalServiceImpl implements IFileStorageService { - @Value("${file.storage.local.path}") - private String localPath; - @Autowired - private ConfigService configService; + public static final String UPLOAD_MAPPING = "/upload"; + + @Value("${file.storage.local.upload-path}") + private String uploadPath; + + @Value("${file.storage.local.url-prefix}") + private String urlPrefix; + + @Value("${server.servlet.context-path}") + private String contextPath; + + @Value("${server.port}") + private String port; + + @PostConstruct + public void initUrlPrefix() { + if (SmartStringUtil.isNotEmpty(urlPrefix)) { + return; + } + + String localhostIp = NetUtil.getLocalhostStr(); + String finalContextPath = contextPath.startsWith("/") ? contextPath : "/" + contextPath; + if (finalContextPath.endsWith("/")) { + finalContextPath = finalContextPath.substring(0, finalContextPath.length() - 1); + } + urlPrefix = "http://" + localhostIp + ":" + port + finalContextPath + UPLOAD_MAPPING; + urlPrefix = urlPrefix.endsWith("/") ? urlPrefix : urlPrefix + "/"; + } @Override - public ResponseDTO fileUpload(MultipartFile multipartFile, String path) { + public ResponseDTO upload(MultipartFile multipartFile, String path) { if (null == multipartFile) { return ResponseDTO.userErrorParam("上传文件不能为空"); } - String filePath = localPath + path; + String filePath = uploadPath + path; File directory = new File(filePath); if (!directory.exists()) { // 目录不存在,新建 @@ -57,7 +86,13 @@ public class FileStorageLocalServiceImpl implements IFileStorageService { //原文件名 String originalFileName = multipartFile.getOriginalFilename(); //新文件名 - String newFileName = this.generateFileName(originalFileName); + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + String time = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_FORMATTER); + String newFileName = uuid + "_" + time; + String fileType = FilenameUtils.getExtension(originalFileName); + if (SmartStringUtil.isNotEmpty(fileType)) { + newFileName = newFileName + "." + fileType; + } //生成文件key String fileKey = path + newFileName; //创建文件 @@ -82,13 +117,11 @@ public class FileStorageLocalServiceImpl implements IFileStorageService { /** * 生成fileUrl地址 * - * @param fileKey + * @param filePath * @return */ - public String generateFileUrl(String fileKey) { - String configValue = configService.getConfigValue(ConfigKeyEnum.LOCAL_UPLOAD_URL_PREFIX); - String fileUrl = configValue + fileKey; - return fileUrl; + public String generateFileUrl(String filePath) { + return urlPrefix + filePath; } /** @@ -99,6 +132,10 @@ public class FileStorageLocalServiceImpl implements IFileStorageService { */ @Override public ResponseDTO getFileUrl(String fileKey) { + if (StringUtils.isBlank(fileKey)) { + return ResponseDTO.userErrorParam("文件不存在,key为空"); + } + String fileUrl = this.generateFileUrl(fileKey); return ResponseDTO.ok(fileUrl); } @@ -110,12 +147,12 @@ public class FileStorageLocalServiceImpl implements IFileStorageService { * @return */ @Override - public ResponseDTO fileDownload(String fileKey) { - String filePath = localPath + fileKey; + public ResponseDTO download(String fileKey) { + String filePath = uploadPath + fileKey; File localFile = new File(filePath); InputStream in = null; try { - in = new FileInputStream(localFile); + in = Files.newInputStream(localFile.toPath()); // 输入流转换为字节流 byte[] buffer = FileCopyUtils.copyToByteArray(in); FileDownloadVO fileDownloadVO = new FileDownloadVO(); @@ -145,12 +182,12 @@ public class FileStorageLocalServiceImpl implements IFileStorageService { @Override public ResponseDTO delete(String fileKey) { - String filePath = localPath + fileKey; + String filePath = uploadPath + fileKey; File localFile = new File(filePath); try { FileUtils.forceDelete(localFile); } catch (IOException e) { - log.error("删除本地文件失败:{}", e); + log.error("删除本地文件失败:{}", filePath, e); } return ResponseDTO.ok(); } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/IFileStorageService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/IFileStorageService.java new file mode 100644 index 00000000..aa4ec75b --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/IFileStorageService.java @@ -0,0 +1,99 @@ +package net.lab1024.sa.base.module.support.file.service; + +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileDownloadVO; +import net.lab1024.sa.base.module.support.file.domain.vo.FileUploadVO; +import org.springframework.web.multipart.MultipartFile; + +/** + * 接口 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2019年10月11日 15:34:47 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +public interface IFileStorageService { + + /** + * 文件上传 + * + * @param file + * @param path + * @return + */ + ResponseDTO upload(MultipartFile file, String path); + + /** + * 获取文件url + * + * @param fileKey + * @return + */ + ResponseDTO getFileUrl(String fileKey); + + + /** + * 流式下载(名称为原文件) + * + * @param key + * @return + */ + ResponseDTO download(String key); + + /** + * 单个删除文件 + * 根据文件key删除 + * + * @param fileKey + * @return + */ + ResponseDTO delete(String fileKey); + + + /** + * 获取文件类型 + * + * @param fileExt + * @return + */ + default String getContentType(String fileExt) { + // 文件的后缀名 + if ("bmp".equalsIgnoreCase(fileExt)) { + return "image/bmp"; + } + if ("gif".equalsIgnoreCase(fileExt)) { + return "image/gif"; + } + if ("jpeg".equalsIgnoreCase(fileExt) || "jpg".equalsIgnoreCase(fileExt)) { + return "image/jpeg"; + } + if ("png".equalsIgnoreCase(fileExt)) { + return "image/png"; + } + if ("html".equalsIgnoreCase(fileExt)) { + return "text/html"; + } + if ("txt".equalsIgnoreCase(fileExt)) { + return "text/plain"; + } + if ("vsd".equalsIgnoreCase(fileExt)) { + return "application/vnd.visio"; + } + if ("ppt".equalsIgnoreCase(fileExt) || "pptx".equalsIgnoreCase(fileExt)) { + return "application/vnd.ms-powerpoint"; + } + if ("doc".equalsIgnoreCase(fileExt) || "docx".equalsIgnoreCase(fileExt)) { + return "application/msword"; + } + if ("pdf".equalsIgnoreCase(fileExt)) { + return "application/pdf"; + } + if ("xml".equalsIgnoreCase(fileExt)) { + return "text/xml"; + } + return ""; + } + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatRecordDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java similarity index 71% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatRecordDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java index 9859bb83..47b73391 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatRecordDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java @@ -1,11 +1,10 @@ -package net.lab1024.sa.common.module.support.heartbeat; +package net.lab1024.sa.base.module.support.heartbeat; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.heartbeat.domain.HeartBeatRecordEntity; -import net.lab1024.sa.common.module.support.heartbeat.domain.HeartBeatRecordQueryForm; -import net.lab1024.sa.common.module.support.heartbeat.domain.HeartBeatRecordVO; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogQueryForm; +import net.lab1024.sa.base.module.support.heartbeat.domain.HeartBeatRecordEntity; +import net.lab1024.sa.base.module.support.heartbeat.domain.HeartBeatRecordQueryForm; +import net.lab1024.sa.base.module.support.heartbeat.domain.HeartBeatRecordVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -20,7 +19,7 @@ import java.util.List; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Component @Mapper diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatRecordHandler.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordHandler.java similarity index 67% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatRecordHandler.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordHandler.java index c666ecef..279a62f3 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatRecordHandler.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordHandler.java @@ -1,13 +1,14 @@ -package net.lab1024.sa.common.module.support.heartbeat; +package net.lab1024.sa.base.module.support.heartbeat; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.module.support.heartbeat.domain.HeartBeatRecordEntity; -import net.lab1024.sa.common.module.support.heartbeat.core.HeartBeatRecord; -import net.lab1024.sa.common.module.support.heartbeat.core.IHeartBeatRecordHandler; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.module.support.heartbeat.core.HeartBeatRecord; +import net.lab1024.sa.base.module.support.heartbeat.core.IHeartBeatRecordHandler; +import net.lab1024.sa.base.module.support.heartbeat.domain.HeartBeatRecordEntity; import org.springframework.stereotype.Service; +import javax.annotation.Resource; + /** * 心跳记录 * @@ -15,13 +16,13 @@ import org.springframework.stereotype.Service; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service public class HeartBeatRecordHandler implements IHeartBeatRecordHandler { - @Autowired + @Resource private HeartBeatRecordDao heartBeatRecordDao; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatService.java similarity index 59% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatService.java index 1964b684..e8ffa3e0 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/HeartBeatService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatService.java @@ -1,16 +1,15 @@ -package net.lab1024.sa.common.module.support.heartbeat; +package net.lab1024.sa.base.module.support.heartbeat; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.PageParam; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.heartbeat.domain.HeartBeatRecordQueryForm; -import net.lab1024.sa.common.module.support.heartbeat.domain.HeartBeatRecordVO; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.heartbeat.domain.HeartBeatRecordQueryForm; +import net.lab1024.sa.base.module.support.heartbeat.domain.HeartBeatRecordVO; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -20,13 +19,13 @@ import java.util.List; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Service public class HeartBeatService { - @Autowired + @Resource private HeartBeatRecordDao heartBeatRecordDao; public ResponseDTO> pageQuery(HeartBeatRecordQueryForm pageParam) { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatManager.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatManager.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatManager.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatManager.java index 72973dda..010d5d55 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatManager.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatManager.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.heartbeat.core; +package net.lab1024.sa.base.module.support.heartbeat.core; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -10,11 +10,11 @@ import java.util.concurrent.TimeUnit; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class HeartBeatManager { - private static final String THREAD_NAME_PREFIX = "sa-heart-beat"; + private static final String THREAD_NAME_PREFIX = "smart-heart-beat"; private static final int THREAD_COUNT = 1; private static final long INITIAL_DELAY = 60 * 1000L; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatRecord.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatRecord.java similarity index 82% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatRecord.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatRecord.java index 42698a13..587f3b47 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatRecord.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatRecord.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.heartbeat.core; +package net.lab1024.sa.base.module.support.heartbeat.core; import lombok.Data; @@ -11,7 +11,7 @@ import java.time.LocalDateTime; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HeartBeatRecord { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatRunnable.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatRunnable.java similarity index 94% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatRunnable.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatRunnable.java index 475780fe..65d06bab 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/HeartBeatRunnable.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/HeartBeatRunnable.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.heartbeat.core; +package net.lab1024.sa.base.module.support.heartbeat.core; import cn.hutool.core.net.NetUtil; import org.apache.commons.lang3.StringUtils; @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class HeartBeatRunnable implements Runnable { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/IHeartBeatRecordHandler.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/IHeartBeatRecordHandler.java similarity index 72% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/IHeartBeatRecordHandler.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/IHeartBeatRecordHandler.java index ac5fa589..d0157d2a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/core/IHeartBeatRecordHandler.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/core/IHeartBeatRecordHandler.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.heartbeat.core; +package net.lab1024.sa.base.module.support.heartbeat.core; /** * 心跳处理接口 @@ -7,7 +7,7 @@ package net.lab1024.sa.common.module.support.heartbeat.core; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public interface IHeartBeatRecordHandler { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordEntity.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordEntity.java index 052f3d89..ba10db1c 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.heartbeat.domain; +package net.lab1024.sa.base.module.support.heartbeat.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -7,7 +7,6 @@ import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; -import java.util.Date; /** * 心跳记录 @@ -16,7 +15,7 @@ import java.util.Date; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName(value = "t_heart_beat_record") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordQueryForm.java similarity index 51% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordQueryForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordQueryForm.java index c9408bbf..873d8ccc 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordQueryForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordQueryForm.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.heartbeat.domain; +package net.lab1024.sa.base.module.support.heartbeat.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import java.time.LocalDate; @@ -13,18 +13,18 @@ import java.time.LocalDate; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HeartBeatRecordQueryForm extends PageParam { - @ApiModelProperty("关键字") + @Schema(description = "关键字") private String keywords; - @ApiModelProperty("开始日期") + @Schema(description = "开始日期") private LocalDate startDate; - @ApiModelProperty("结束日期") + @Schema(description = "结束日期") private LocalDate endDate; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordVO.java similarity index 52% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordVO.java index 9f94f175..10ac9313 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/heartbeat/domain/HeartBeatRecordVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/domain/HeartBeatRecordVO.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.heartbeat.domain; +package net.lab1024.sa.base.module.support.heartbeat.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.Date; @@ -12,26 +12,26 @@ import java.util.Date; * @Date 2022-01-09 20:57:24 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HeartBeatRecordVO { private Integer heartBeatRecordId; - @ApiModelProperty("项目路径") + @Schema(description = "项目路径") private String projectPath; - @ApiModelProperty("服务器ip") + @Schema(description = "服务器ip") private String serverIp; - @ApiModelProperty("进程号") + @Schema(description = "进程号") private Integer processNo; - @ApiModelProperty("进程开启时间") + @Schema(description = "进程开启时间") private Date processStartTime; - @ApiModelProperty("心跳当前时间") + @Schema(description = "心跳当前时间") private Date heartBeatTime; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/controller/HelpDocController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/controller/HelpDocController.java similarity index 52% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/controller/HelpDocController.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/controller/HelpDocController.java index cd3eb398..f9482d77 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/controller/HelpDocController.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/controller/HelpDocController.java @@ -1,23 +1,24 @@ -package net.lab1024.sa.common.module.support.helpdoc.controller; +package net.lab1024.sa.base.module.support.helpdoc.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocViewRecordQueryForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocCatalogVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocDetailVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocViewRecordVO; -import net.lab1024.sa.common.module.support.helpdoc.service.HelpDocCatalogService; -import net.lab1024.sa.common.module.support.helpdoc.service.HelpDocUserService; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocViewRecordQueryForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocCatalogVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocDetailVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocViewRecordVO; +import net.lab1024.sa.base.module.support.helpdoc.service.HelpDocCatalogService; +import net.lab1024.sa.base.module.support.helpdoc.service.HelpDocUserService; +import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; @@ -29,21 +30,21 @@ import java.util.List; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@Api(tags = SwaggerTagConst.Support.HELP_DOC) +@Tag(name = SwaggerTagConst.Support.HELP_DOC) @RestController public class HelpDocController extends SupportBaseController { - @Autowired + @Resource private HelpDocCatalogService helpDocCatalogService; - @Autowired + @Resource private HelpDocUserService helpDocUserService; // --------------------- 帮助文档 【目录】 ------------------------- - @ApiOperation("帮助文档目录-获取全部 @author 卓大") + @Operation(summary = "帮助文档目录-获取全部 @author 卓大") @GetMapping("/helpDoc/helpDocCatalog/getAll") public ResponseDTO> getAll() { return ResponseDTO.ok(helpDocCatalogService.getAll()); @@ -51,7 +52,7 @@ public class HelpDocController extends SupportBaseController { // --------------------- 帮助文档 【用户】------------------------- - @ApiOperation("【用户】帮助文档-查看详情 @author 卓大") + @Operation(summary = "【用户】帮助文档-查看详情 @author 卓大") @GetMapping("/helpDoc/user/view/{helpDocId}") @RepeatSubmit public ResponseDTO view(@PathVariable Long helpDocId, HttpServletRequest request) { @@ -60,7 +61,7 @@ public class HelpDocController extends SupportBaseController { helpDocId); } - @ApiOperation("【用户】帮助文档-查询全部 @author 卓大") + @Operation(summary = "【用户】帮助文档-查询全部 @author 卓大") @GetMapping("/helpDoc/user/queryAllHelpDocList") @RepeatSubmit public ResponseDTO> queryAllHelpDocList() { @@ -68,7 +69,7 @@ public class HelpDocController extends SupportBaseController { } - @ApiOperation("【用户】帮助文档-查询 查看记录 @author 卓大") + @Operation(summary = "【用户】帮助文档-查询 查看记录 @author 卓大") @PostMapping("/helpDoc/user/queryViewRecord") @RepeatSubmit public ResponseDTO> queryViewRecord(@RequestBody @Valid HelpDocViewRecordQueryForm helpDocViewRecordQueryForm) { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/dao/HelpDocCatalogDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java similarity index 65% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/dao/HelpDocCatalogDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java index 68dac20a..26c11f15 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/dao/HelpDocCatalogDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.module.support.helpdoc.dao; +package net.lab1024.sa.base.module.support.helpdoc.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import net.lab1024.sa.common.module.support.helpdoc.domain.entity.HelpDocCatalogEntity; +import net.lab1024.sa.base.module.support.helpdoc.domain.entity.HelpDocCatalogEntity; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Component; @@ -12,7 +12,7 @@ import org.springframework.stereotype.Component; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/dao/HelpDocDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java similarity index 83% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/dao/HelpDocDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java index cab687c2..161aa445 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/dao/HelpDocDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java @@ -1,14 +1,14 @@ -package net.lab1024.sa.common.module.support.helpdoc.dao; +package net.lab1024.sa.base.module.support.helpdoc.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.helpdoc.domain.entity.HelpDocEntity; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocQueryForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocRelationForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocViewRecordQueryForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocRelationVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocViewRecordVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.entity.HelpDocEntity; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocQueryForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocRelationForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocViewRecordQueryForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocRelationVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocViewRecordVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -22,7 +22,7 @@ import java.util.List; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/entity/HelpDocCatalogEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/entity/HelpDocCatalogEntity.java similarity index 87% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/entity/HelpDocCatalogEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/entity/HelpDocCatalogEntity.java index 04a2afb6..3b6a2ccf 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/entity/HelpDocCatalogEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/entity/HelpDocCatalogEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.entity; +package net.lab1024.sa.base.module.support.helpdoc.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -18,7 +18,7 @@ import java.time.LocalDateTime; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_help_doc_catalog") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/entity/HelpDocEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/entity/HelpDocEntity.java similarity index 90% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/entity/HelpDocEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/entity/HelpDocEntity.java index fe3d033e..6dd02387 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/entity/HelpDocEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/entity/HelpDocEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.entity; +package net.lab1024.sa.base.module.support.helpdoc.domain.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_help_doc") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocAddForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocAddForm.java similarity index 65% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocAddForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocAddForm.java index 116cd001..efa4a1ef 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocAddForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocAddForm.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.form; +package net.lab1024.sa.base.module.support.helpdoc.domain.form; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.json.deserializer.FileKeyVoDeserializer; +import net.lab1024.sa.base.common.json.deserializer.FileKeyVoDeserializer; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; @@ -17,41 +17,41 @@ import java.util.List; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocAddForm { - @ApiModelProperty("标题") + @Schema(description = "标题") @NotBlank(message = "标题不能为空") @Length(max = 200, message = "标题最多200字符") private String title; - @ApiModelProperty("分类") + @Schema(description = "分类") @NotNull(message = "分类不能为空") private Long helpDocCatalogId; - @ApiModelProperty("纯文本内容") + @Schema(description = "纯文本内容") @NotNull(message = "文本内容不能为空") private String contentText; - @ApiModelProperty("html内容") + @Schema(description = "html内容") @NotNull(message = "html内容不能为空") private String contentHtml; - @ApiModelProperty("附件,多个英文逗号分隔|可选") + @Schema(description = "附件,多个英文逗号分隔|可选") @Length(max = 1000, message = "最多1000字符") @JsonDeserialize(using = FileKeyVoDeserializer.class) private String attachment; - @ApiModelProperty("排序") + @Schema(description = "排序") @NotNull(message = "排序不能为空") private Integer sort; - @ApiModelProperty("关联的集合") + @Schema(description = "关联的集合") private List relationList; - @ApiModelProperty("作者") + @Schema(description = "作者") @NotBlank(message = "作者不能为空") private String author; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocCatalogAddForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocCatalogAddForm.java similarity index 63% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocCatalogAddForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocCatalogAddForm.java index 9e449675..a5354a77 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocCatalogAddForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocCatalogAddForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.form; +package net.lab1024.sa.base.module.support.helpdoc.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.hibernate.validator.constraints.Length; @@ -13,19 +13,19 @@ import javax.validation.constraints.NotBlank; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocCatalogAddForm { - @ApiModelProperty("名称") + @Schema(description = "名称") @NotBlank(message = "名称不能为空") @Length(max = 200, message = "名称最多200字符") private String name; - @ApiModelProperty("父级") + @Schema(description = "父级") private Long parentId; - @ApiModelProperty("排序") + @Schema(description = "排序") private Integer sort; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocCatalogUpdateForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocCatalogUpdateForm.java similarity index 63% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocCatalogUpdateForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocCatalogUpdateForm.java index 7e2f1366..f083ab32 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocCatalogUpdateForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocCatalogUpdateForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.form; +package net.lab1024.sa.base.module.support.helpdoc.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocCatalogUpdateForm extends HelpDocCatalogAddForm { - @ApiModelProperty("id") + @Schema(description = "id") @NotNull(message = "id") private Long helpDocCatalogId; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocQueryForm.java similarity index 50% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocQueryForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocQueryForm.java index beac2c10..bee968c8 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocQueryForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocQueryForm.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.form; +package net.lab1024.sa.base.module.support.helpdoc.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import java.time.LocalDate; @@ -13,21 +13,21 @@ import java.time.LocalDate; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocQueryForm extends PageParam { - @ApiModelProperty("分类") + @Schema(description = "分类") private Long helpDocCatalogId; - @ApiModelProperty("标题") + @Schema(description = "标题") private String keywords; - @ApiModelProperty("创建-开始时间") + @Schema(description = "创建-开始时间") private LocalDate createTimeBegin; - @ApiModelProperty("创建-截止时间") + @Schema(description = "创建-截止时间") private LocalDate createTimeEnd; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocRelationForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocRelationForm.java similarity index 64% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocRelationForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocRelationForm.java index 374a8753..b36f96c1 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocRelationForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocRelationForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.form; +package net.lab1024.sa.base.module.support.helpdoc.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -13,16 +13,16 @@ import javax.validation.constraints.NotNull; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocRelationForm { - @ApiModelProperty("关联名称") + @Schema(description = "关联名称") @NotBlank(message = "关联名称不能为空") private String relationName; - @ApiModelProperty("关联id") + @Schema(description = "关联id") @NotNull(message = "关联id不能为空") private Long relationId; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocUpdateForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocUpdateForm.java similarity index 62% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocUpdateForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocUpdateForm.java index 37f2e1aa..1d7fff83 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocUpdateForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocUpdateForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.form; +package net.lab1024.sa.base.module.support.helpdoc.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,12 +12,12 @@ import javax.validation.constraints.NotNull; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocUpdateForm extends HelpDocAddForm { - @ApiModelProperty("id") + @Schema(description = "id") @NotNull(message = "通知id不能为空") private Long helpDocId; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocViewRecordQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocViewRecordQueryForm.java similarity index 54% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocViewRecordQueryForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocViewRecordQueryForm.java index fc6bebb9..91ab25bd 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/form/HelpDocViewRecordQueryForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/form/HelpDocViewRecordQueryForm.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.form; +package net.lab1024.sa.base.module.support.helpdoc.domain.form; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import javax.validation.constraints.NotNull; @@ -13,19 +13,19 @@ import javax.validation.constraints.NotNull; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocViewRecordQueryForm extends PageParam { - @ApiModelProperty("帮助文档id") + @Schema(description = "帮助文档id") @NotNull(message = "帮助文档id不能为空") private Long helpDocId; - @ApiModelProperty("用户id") + @Schema(description = "用户id") private Long userId; - @ApiModelProperty("关键字") + @Schema(description = "关键字") private String keywords; diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocCatalogVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocCatalogVO.java new file mode 100644 index 00000000..59d0117a --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocCatalogVO.java @@ -0,0 +1,30 @@ +package net.lab1024.sa.base.module.support.helpdoc.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 帮助文档的 目录 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-08-20 23:11:42 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class HelpDocCatalogVO { + + @Schema(description = "帮助文档目录id") + private Long helpDocCatalogId; + + @Schema(description = "帮助文档目录-名称") + private String name; + + @Schema(description = "帮助文档目录-父级id") + private Long parentId; + + @Schema(description = "帮助文档目录-排序") + private Integer sort; + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocDetailVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocDetailVO.java similarity index 54% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocDetailVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocDetailVO.java index eef39d1d..9c1cada3 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocDetailVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocDetailVO.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.vo; +package net.lab1024.sa.base.module.support.helpdoc.domain.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer; +import net.lab1024.sa.base.common.json.serializer.FileKeyVoSerializer; import javax.validation.constraints.NotBlank; import java.time.LocalDateTime; @@ -16,50 +16,50 @@ import java.util.List; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocDetailVO { - @ApiModelProperty("id") + @Schema(description = "id") private Long helpDocId; - @ApiModelProperty("标题") + @Schema(description = "标题") private String title; - @ApiModelProperty("分类") + @Schema(description = "分类") private Long helpDocCatalogId; - @ApiModelProperty("分类名称") + @Schema(description = "分类名称") private Long helpDocCatalogName; - @ApiModelProperty("纯文本内容") + @Schema(description = "纯文本内容") private String contentText; - @ApiModelProperty("html内容") + @Schema(description = "html内容") private String contentHtml; - @ApiModelProperty("附件") + @Schema(description = "附件") @JsonSerialize(using = FileKeyVoSerializer.class) private String attachment; - @ApiModelProperty("作者") + @Schema(description = "作者") @NotBlank(message = "作者不能为空") private String author; - @ApiModelProperty("页面浏览量") + @Schema(description = "页面浏览量") private Integer pageViewCount; - @ApiModelProperty("用户浏览量") + @Schema(description = "用户浏览量") private Integer userViewCount; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; - @ApiModelProperty("关联项目") + @Schema(description = "关联项目") private List relationList; } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocRecordVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocRecordVO.java new file mode 100644 index 00000000..86b9e976 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocRecordVO.java @@ -0,0 +1,49 @@ +package net.lab1024.sa.base.module.support.helpdoc.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 帮助文档 - 浏览记录 VO + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-08-20 23:11:42 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class HelpDocRecordVO { + + @Schema(description = "员工ID") + private Long employeeId; + + @Schema(description = "员工姓名") + private String employeeName; + + @Schema(description = "员工部门名称") + private String departmentName; + + @Schema(description = "查看次数") + private Integer pageViewCount; + + @Schema(description = "首次ip") + private String firstIp; + + @Schema(description = "首次用户设备等标识") + private String firstUserAgent; + + @Schema(description = "首次查看时间") + private LocalDateTime createTime; + + @Schema(description = "最后一次 ip") + private String lastIp; + + @Schema(description = "最后一次 用户设备等标识") + private String lastUserAgent; + + @Schema(description = "最后一次查看时间") + private LocalDateTime updateTime; +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocRelationVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocRelationVO.java similarity index 52% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocRelationVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocRelationVO.java index 753a92e1..4b753919 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocRelationVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocRelationVO.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.vo; +package net.lab1024.sa.base.module.support.helpdoc.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; /** @@ -10,14 +10,14 @@ import lombok.Data; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocRelationVO { - @ApiModelProperty("关联名称") + @Schema(description = "关联名称") private String relationName; - @ApiModelProperty("关联id") + @Schema(description = "关联id") private Long relationId; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocVO.java similarity index 50% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocVO.java index c668caad..79171895 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocVO.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.vo; +package net.lab1024.sa.base.module.support.helpdoc.domain.vo; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -12,39 +12,39 @@ import java.time.LocalDateTime; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class HelpDocVO { - @ApiModelProperty("id") + @Schema(description = "id") private Long helpDocId; - @ApiModelProperty("标题") + @Schema(description = "标题") private String title; - @ApiModelProperty("分类") + @Schema(description = "分类") private Long helpDocCatalogId; - @ApiModelProperty("分类名称") + @Schema(description = "分类名称") private String helpDocCatalogName; - @ApiModelProperty("作者") + @Schema(description = "作者") private String author; - @ApiModelProperty("排序") + @Schema(description = "排序") private Integer sort; - @ApiModelProperty("页面浏览量") + @Schema(description = "页面浏览量") private Integer pageViewCount; - @ApiModelProperty("用户浏览量") + @Schema(description = "用户浏览量") private Integer userViewCount; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; } diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocViewRecordVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocViewRecordVO.java new file mode 100644 index 00000000..a0b40007 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/domain/vo/HelpDocViewRecordVO.java @@ -0,0 +1,46 @@ +package net.lab1024.sa.base.module.support.helpdoc.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 帮助文档 - 浏览记录 VO + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-08-20 23:11:42 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class HelpDocViewRecordVO { + + @Schema(description = "ID") + private Long userId; + + @Schema(description = "姓名") + private String userName; + + @Schema(description = "查看次数") + private Integer pageViewCount; + + @Schema(description = "首次ip") + private String firstIp; + + @Schema(description = "首次用户设备等标识") + private String firstUserAgent; + + @Schema(description = "首次查看时间") + private LocalDateTime createTime; + + @Schema(description = "最后一次 ip") + private String lastIp; + + @Schema(description = "最后一次 用户设备等标识") + private String lastUserAgent; + + @Schema(description = "最后一次查看时间") + private LocalDateTime updateTime; +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/manager/HelpDocManager.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/manager/HelpDocManager.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/manager/HelpDocManager.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/manager/HelpDocManager.java index 44cd84d7..5f253fce 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/manager/HelpDocManager.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/manager/HelpDocManager.java @@ -1,13 +1,14 @@ -package net.lab1024.sa.common.module.support.helpdoc.manager; +package net.lab1024.sa.base.module.support.helpdoc.manager; -import net.lab1024.sa.common.module.support.helpdoc.dao.HelpDocDao; -import net.lab1024.sa.common.module.support.helpdoc.domain.entity.HelpDocEntity; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocRelationForm; +import net.lab1024.sa.base.module.support.helpdoc.dao.HelpDocDao; +import net.lab1024.sa.base.module.support.helpdoc.domain.entity.HelpDocEntity; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocRelationForm; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; /** @@ -17,12 +18,12 @@ import java.util.List; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class HelpDocManager { - @Autowired + @Resource private HelpDocDao helpDocDao; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocCatalogService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocCatalogService.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocCatalogService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocCatalogService.java index 9a8ec360..c4a68aa3 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocCatalogService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocCatalogService.java @@ -1,18 +1,18 @@ -package net.lab1024.sa.common.module.support.helpdoc.service; +package net.lab1024.sa.base.module.support.helpdoc.service; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.module.support.helpdoc.dao.HelpDocCatalogDao; -import net.lab1024.sa.common.module.support.helpdoc.dao.HelpDocDao; -import net.lab1024.sa.common.module.support.helpdoc.domain.entity.HelpDocCatalogEntity; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocCatalogAddForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocCatalogUpdateForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocCatalogVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocVO; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.module.support.helpdoc.dao.HelpDocCatalogDao; +import net.lab1024.sa.base.module.support.helpdoc.dao.HelpDocDao; +import net.lab1024.sa.base.module.support.helpdoc.domain.entity.HelpDocCatalogEntity; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocCatalogAddForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocCatalogUpdateForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocCatalogVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocVO; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; import java.util.Optional; @@ -23,15 +23,15 @@ import java.util.Optional; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class HelpDocCatalogService { - @Autowired + @Resource private HelpDocCatalogDao helpDocCatalogDao; - @Autowired + @Resource private HelpDocDao helpDocDao; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocService.java similarity index 68% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocService.java index 9d6ba2d3..f8861ad5 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocService.java @@ -1,21 +1,23 @@ -package net.lab1024.sa.common.module.support.helpdoc.service; +package net.lab1024.sa.base.module.support.helpdoc.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.helpdoc.dao.HelpDocDao; -import net.lab1024.sa.common.module.support.helpdoc.domain.entity.HelpDocEntity; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocAddForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocQueryForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocUpdateForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocDetailVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocVO; -import net.lab1024.sa.common.module.support.helpdoc.manager.HelpDocManager; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.helpdoc.dao.HelpDocDao; +import net.lab1024.sa.base.module.support.helpdoc.domain.entity.HelpDocEntity; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocAddForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocQueryForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocUpdateForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocDetailVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocVO; +import net.lab1024.sa.base.module.support.helpdoc.manager.HelpDocManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; /** @@ -25,15 +27,15 @@ import java.util.List; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class HelpDocService { - @Autowired + @Resource private HelpDocDao helpDocDao; - @Autowired + @Resource private HelpDocManager helpDaoManager; @@ -82,10 +84,12 @@ public class HelpDocService { * @param helpDocId * @return */ + @Transactional(rollbackFor = Exception.class) public ResponseDTO delete(Long helpDocId) { HelpDocEntity helpDaoEntity = helpDocDao.selectById(helpDocId); if (helpDaoEntity != null) { helpDocDao.deleteById(helpDocId); + helpDocDao.deleteRelation(helpDocId); } return ResponseDTO.ok(); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocUserService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocUserService.java similarity index 71% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocUserService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocUserService.java index 16830b72..5fc3e674 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/service/HelpDocUserService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/service/HelpDocUserService.java @@ -1,20 +1,20 @@ -package net.lab1024.sa.common.module.support.helpdoc.service; +package net.lab1024.sa.base.module.support.helpdoc.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.helpdoc.dao.HelpDocDao; -import net.lab1024.sa.common.module.support.helpdoc.domain.entity.HelpDocEntity; -import net.lab1024.sa.common.module.support.helpdoc.domain.form.HelpDocViewRecordQueryForm; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocDetailVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocVO; -import net.lab1024.sa.common.module.support.helpdoc.domain.vo.HelpDocViewRecordVO; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.helpdoc.dao.HelpDocDao; +import net.lab1024.sa.base.module.support.helpdoc.domain.entity.HelpDocEntity; +import net.lab1024.sa.base.module.support.helpdoc.domain.form.HelpDocViewRecordQueryForm; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocDetailVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocVO; +import net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocViewRecordVO; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -24,12 +24,12 @@ import java.util.List; * @Date 2022-08-20 23:11:42 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class HelpDocUserService { - @Autowired + @Resource private HelpDocDao helpDocDao; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java similarity index 73% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java index e7fe6183..1075ca17 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.loginlog; +package net.lab1024.sa.base.module.support.loginlog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogEntity; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogQueryForm; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogVO; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogEntity; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogQueryForm; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022/07/22 19:46:23 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogResultEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogResultEnum.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogResultEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogResultEnum.java index 2ccb7503..e867a2c6 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogResultEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogResultEnum.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.loginlog; +package net.lab1024.sa.base.module.support.loginlog; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 登录类型 @@ -9,7 +9,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022/07/22 19:46:23 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public enum LoginLogResultEnum implements BaseEnum { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogService.java similarity index 68% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogService.java index 0c6fb039..e5cad7b0 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/LoginLogService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogService.java @@ -1,17 +1,17 @@ -package net.lab1024.sa.common.module.support.loginlog; +package net.lab1024.sa.base.module.support.loginlog; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogEntity; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogQueryForm; -import net.lab1024.sa.common.module.support.loginlog.domain.LoginLogVO; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogEntity; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogQueryForm; +import net.lab1024.sa.base.module.support.loginlog.domain.LoginLogVO; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -21,13 +21,13 @@ import java.util.List; * @Date 2022/07/22 19:46:23 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service @Slf4j public class LoginLogService { - @Autowired + @Resource private LoginLogDao loginLogDao; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java similarity index 83% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java index 50c785b4..3753341a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.loginlog.domain; +package net.lab1024.sa.base.module.support.loginlog.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2022/07/22 19:46:23 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @TableName("t_login_log") @Data @@ -45,6 +45,11 @@ public class LoginLogEntity { */ private String loginIp; + /** + * 登录ip地区 + */ + private String loginIpRegion; + /** * user-agent */ diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogQueryForm.java new file mode 100644 index 00000000..2aa44194 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogQueryForm.java @@ -0,0 +1,31 @@ +package net.lab1024.sa.base.module.support.loginlog.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.PageParam; + +/** + * 登录查询日志 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022/07/22 19:46:23 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class LoginLogQueryForm extends PageParam { + + @Schema(description = "开始日期") + private String startDate; + + @Schema(description = "结束日期") + private String endDate; + + @Schema(description = "用户名称") + private String userName; + + @Schema(description = "ip") + private String ip; + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java new file mode 100644 index 00000000..3edb1d2e --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java @@ -0,0 +1,51 @@ +package net.lab1024.sa.base.module.support.loginlog.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; +import net.lab1024.sa.base.module.support.loginlog.LoginLogResultEnum; + +import java.time.LocalDateTime; + +/** + * 登录日志 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022/07/22 19:46:23 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class LoginLogVO { + + private Long loginLogId; + + @Schema(description = "用户id") + private Long userId; + + @SchemaEnum(value = UserTypeEnum.class, desc = "用户类型") + private Integer userType; + + @Schema(description = "用户名") + private String userName; + + @Schema(description = "登录ip") + private String loginIp; + + @Schema(description = "登录ip地区") + private String loginIpRegion; + + @Schema(description = "user-agent") + private String userAgent; + + @Schema(description = "remark") + private String remark; + + @SchemaEnum(LoginLogResultEnum.class) + private Integer loginResult; + + private LocalDateTime createTime; + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/OperateLogDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java similarity index 68% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/OperateLogDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java index be5af95e..74397476 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/OperateLogDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.operatelog; +package net.lab1024.sa.base.module.support.operatelog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogEntity; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogQueryForm; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogEntity; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogQueryForm; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -17,7 +17,7 @@ import java.util.List; * @Date 2021-12-08 20:48:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component @@ -31,13 +31,6 @@ public interface OperateLogDao extends BaseMapper { */ List queryByPage(Page page, @Param("query") OperateLogQueryForm queryForm); - /** - * 根据id删除 - * - * @param id - * @return - */ - void deleteById(@Param("id") Long id); /** * 批量删除 diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/OperateLogService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogService.java similarity index 65% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/OperateLogService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogService.java index d3ac8bf3..a621b774 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/OperateLogService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogService.java @@ -1,17 +1,17 @@ -package net.lab1024.sa.common.module.support.operatelog; +package net.lab1024.sa.base.module.support.operatelog; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogEntity; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogQueryForm; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogVO; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogEntity; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogQueryForm; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogVO; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -21,12 +21,12 @@ import java.util.List; * @Date 2021-12-08 20:48:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class OperateLogService { - @Autowired + @Resource private OperateLogDao operateLogDao; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/annoation/OperateLog.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/annotation/OperateLog.java similarity index 59% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/annoation/OperateLog.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/annotation/OperateLog.java index f8acadfb..a13be6d3 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/annoation/OperateLog.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/annotation/OperateLog.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.operatelog.annoation; +package net.lab1024.sa.base.module.support.operatelog.annotation; import java.lang.annotation.*; @@ -9,10 +9,10 @@ import java.lang.annotation.*; * @Date 2021-12-08 20:48:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) +@Target({ElementType.TYPE, ElementType.METHOD}) @Documented public @interface OperateLog { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogAspect.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/core/OperateLogAspect.java similarity index 72% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogAspect.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/core/OperateLogAspect.java index 3d9da663..101f2019 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogAspect.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/core/OperateLogAspect.java @@ -1,16 +1,18 @@ -package net.lab1024.sa.common.module.support.operatelog.core; +package net.lab1024.sa.base.module.support.operatelog.core; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.module.support.operatelog.OperateLogDao; -import net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogEntity; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.util.SmartIpUtil; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.module.support.operatelog.OperateLogDao; +import net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogEntity; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.AfterReturning; @@ -19,16 +21,23 @@ import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.bind.BindResult; import org.springframework.context.ApplicationContext; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.servlet.ModelAndView; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.reflect.Method; +import java.net.BindException; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.ThreadPoolExecutor; /** @@ -38,15 +47,15 @@ import java.util.concurrent.ThreadPoolExecutor; * @Date 2021-12-08 20:48:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j @Aspect public abstract class OperateLogAspect { - private static final String pointCut = "@within(net.lab1024.sa.common.module.support.operatelog.annoation.OperateLog)"; + private static final String POINT_CUT = "@within(net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog) || @annotation(net.lab1024.sa.base.module.support.operatelog.annotation.OperateLog)"; - @Autowired + @Resource private ApplicationContext applicationContext; /** * 线程池 @@ -59,7 +68,7 @@ public abstract class OperateLogAspect { this.initThread(); } - @Pointcut(pointCut) + @Pointcut(POINT_CUT) public void logPointCut() { } @@ -94,7 +103,7 @@ public abstract class OperateLogAspect { // 设置线程活跃时间(秒) taskExecutor.setKeepAliveSeconds(60); // 设置默认线程名称 - taskExecutor.setThreadNamePrefix("smart-logs"); + taskExecutor.setThreadNamePrefix("smart-operate-log"); // 设置拒绝策略 taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); // 等待所有任务结束后再关闭线程池 @@ -119,24 +128,25 @@ public abstract class OperateLogAspect { MethodSignature methodSignature = (MethodSignature) signature; Method method = methodSignature.getMethod(); OperateLog classAnnotation = AnnotationUtils.findAnnotation(method.getDeclaringClass(), OperateLog.class); - if (method != null) { + if (classAnnotation != null) { return classAnnotation; } - return null; + OperateLog methodAnnotation = AnnotationUtils.findAnnotation(method, OperateLog.class); + return methodAnnotation; } /** - * swagger API + * swagger tag * * @param joinPoint * @return * @throws Exception */ - private Api getApi(JoinPoint joinPoint) { + private Tag getApi(JoinPoint joinPoint) { Signature signature = joinPoint.getSignature(); MethodSignature methodSignature = (MethodSignature) signature; Method method = methodSignature.getMethod(); - Api classAnnotation = AnnotationUtils.findAnnotation(method.getDeclaringClass(), Api.class); + Tag classAnnotation = AnnotationUtils.findAnnotation(method.getDeclaringClass(), Tag.class); if (method != null) { return classAnnotation; } @@ -150,13 +160,13 @@ public abstract class OperateLogAspect { * @return * @throws Exception */ - private ApiOperation getApiOperation(JoinPoint joinPoint) { + private Operation getApiOperation(JoinPoint joinPoint) { Signature signature = joinPoint.getSignature(); MethodSignature methodSignature = (MethodSignature) signature; Method method = methodSignature.getMethod(); if (method != null) { - return method.getAnnotation(ApiOperation.class); + return method.getAnnotation(Operation.class); } return null; } @@ -169,15 +179,7 @@ public abstract class OperateLogAspect { * @throws Exception */ private void submitLog(final JoinPoint joinPoint, final Throwable e) throws Exception { - Boolean isOpen = this.isOpen(); - if (!isOpen) { - return; - } HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - Boolean filter = this.filterUrl(request.getRequestURI()); - if (filter) { - return; - } //设置用户信息 RequestUser user = SmartRequestUtil.getRequestUser(); if (user == null) { @@ -185,8 +187,7 @@ public abstract class OperateLogAspect { } Object[] args = joinPoint.getArgs(); - String params = JSON.toJSONString(args); - // 设置方法名称 + String params = buildParamString(args); String className = joinPoint.getTarget().getClass().getName(); String methodName = joinPoint.getSignature().getName(); String operateMethod = className + "." + methodName; @@ -197,7 +198,6 @@ public abstract class OperateLogAspect { failReason = getExceptionString(e); } - OperateLogEntity operateLogEntity = OperateLogEntity.builder() .operateUserId(user.getUserId()) @@ -207,23 +207,45 @@ public abstract class OperateLogAspect { .method(operateMethod) .param(params) .ip(user.getIp()) + .ipRegion(SmartIpUtil.getRegion(user.getIp())) .userAgent(user.getUserAgent()) .failReason(failReason) .successFlag(successFlag).build(); - ApiOperation apiOperation = this.getApiOperation(joinPoint); + Operation apiOperation = this.getApiOperation(joinPoint); if (apiOperation != null) { - operateLogEntity.setContent(apiOperation.value()); + operateLogEntity.setContent(apiOperation.summary()); } - Api api = this.getApi(joinPoint); + Tag api = this.getApi(joinPoint); if (api != null) { - String[] tags = api.tags(); - operateLogEntity.setModule(StrUtil.join(",", tags)); + String name = api.name(); + operateLogEntity.setModule(StrUtil.join(",", name)); } taskExecutor.execute(() -> { this.saveLog(operateLogEntity); }); } + private String buildParamString(Object[] args) { + if (args == null || args.length == 0) { + return StringConst.EMPTY; + } + + List filterArgs = new ArrayList<>(); + for (Object arg : args) { + if (arg == null) { + continue; + } + if (arg instanceof HttpServletRequest + || arg instanceof HttpServletResponse + || arg instanceof ModelAndView + || arg instanceof BindResult) { + continue; + } + filterArgs.add(arg); + } + return JSON.toJSONString(filterArgs); + } + private String getExceptionString(Throwable e) { StringWriter sw = new StringWriter(); @@ -233,25 +255,6 @@ public abstract class OperateLogAspect { return sw.toString(); } - /** - * 是否开启操作日志 - * - * @return - */ - private Boolean isOpen() { - return Boolean.TRUE; - } - - /** - * 需要过滤的url - * - * @param url - * @return - */ - private Boolean filterUrl(String url) { - return Boolean.FALSE; - } - /** * 保存操作日志 * diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogConfig.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/core/OperateLogConfig.java similarity index 71% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogConfig.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/core/OperateLogConfig.java index 7bc65256..0e8727ce 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/core/OperateLogConfig.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/core/OperateLogConfig.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.operatelog.core; +package net.lab1024.sa.base.module.support.operatelog.core; import lombok.Builder; import lombok.Data; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogEntity; +import net.lab1024.sa.base.module.support.operatelog.domain.OperateLogEntity; import java.util.function.Function; @@ -13,7 +13,7 @@ import java.util.function.Function; * @Date 2021-12-08 20:48:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @Builder diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogEntity.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogEntity.java index 0a51993e..4f83b1dd 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.operatelog.domain; +package net.lab1024.sa.base.module.support.operatelog.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -17,7 +17,7 @@ import java.time.LocalDateTime; * @Date 2021-12-08 20:48:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @Builder @@ -76,6 +76,11 @@ public class OperateLogEntity { */ private String ip; + /** + * 客户ip地区 + */ + private String ipRegion; + /** * user-agent */ diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogQueryForm.java new file mode 100644 index 00000000..ed3f49be --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogQueryForm.java @@ -0,0 +1,33 @@ +package net.lab1024.sa.base.module.support.operatelog.domain; + +import net.lab1024.sa.base.common.domain.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 操作日志查询 表单 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2021-12-08 20:48:52 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class OperateLogQueryForm extends PageParam { + + + @Schema(description = "开始日期") + private String startDate; + + @Schema(description = "结束日期") + private String endDate; + + + @Schema(description = "用户名称") + private String userName; + + @Schema(description = "请求结果 false失败 true成功") + private Boolean successFlag; + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogVO.java new file mode 100644 index 00000000..9cf3529f --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/domain/OperateLogVO.java @@ -0,0 +1,74 @@ +package net.lab1024.sa.base.module.support.operatelog.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.swagger.SchemaEnum; + +import java.time.LocalDateTime; + +/** + * 操作日志信息 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2021-12-08 20:48:52 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Data +public class OperateLogVO { + + @Schema(description = "主键") + private Long operateLogId; + + @Schema(description = "用户id") + private Long operateUserId; + + @SchemaEnum(value = UserTypeEnum.class, desc = "用户类型") + private Integer operateUserType; + + @Schema(description = "用户名称") + private String operateUserName; + + @Schema(description = "操作模块") + private String module; + + @Schema(description = "操作内容") + private String content; + + @Schema(description = "请求路径") + private String url; + + @Schema(description = "请求方法") + private String method; + + @Schema(description = "请求参数") + private String param; + + @Schema(description = "客户ip") + private String ip; + + @Schema(description = "客户ip地区") + private String ipRegion; + + @Schema(description = "user-agent") + private String userAgent; + + @Schema(description = "请求结果 0失败 1成功") + private Boolean successFlag; + + @Schema(description = "失败原因") + private String failReason; + + @Schema(description = "更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime updateTime; + + @Schema(description = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime createTime; + + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/redis/RedisService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/redis/RedisService.java similarity index 88% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/redis/RedisService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/redis/RedisService.java index f99f29ef..d6fb3cfd 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/redis/RedisService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/redis/RedisService.java @@ -1,16 +1,16 @@ -package net.lab1024.sa.common.module.support.redis; +package net.lab1024.sa.base.module.support.redis; import com.alibaba.fastjson.JSON; -import net.lab1024.sa.common.common.domain.SystemEnvironment; -import net.lab1024.sa.common.common.enumeration.SystemEnvironmentEnum; -import net.lab1024.sa.common.common.util.SmartStringUtil; -import net.lab1024.sa.common.constant.RedisKeyConst; +import net.lab1024.sa.base.common.domain.SystemEnvironment; +import net.lab1024.sa.base.common.enumeration.SystemEnvironmentEnum; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.constant.RedisKeyConst; import org.slf4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; -import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -26,32 +26,32 @@ import java.util.concurrent.TimeUnit; * @Date 2020/8/25 21:57 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ -@Component +@Service public class RedisService { private static final Logger log = org.slf4j.LoggerFactory.getLogger(RedisService.class); - @Autowired + @Resource private StringRedisTemplate stringRedisTemplate; - @Autowired + @Resource private RedisTemplate redisTemplate; - @Autowired + @Resource private ValueOperations redisValueOperations; - @Autowired + @Resource private HashOperations redisHashOperations; - @Autowired + @Resource private ListOperations redisListOperations; - @Autowired + @Resource private SetOperations redisSetOperations; - @Autowired + @Resource private SystemEnvironment systemEnvironment; @@ -201,16 +201,18 @@ public class RedisService { /** * 普通缓存放入并设置时间 */ - public void set(Object key, Object value, long time) { + public void set(Object key, Object value, long second) { String jsonString = JSON.toJSONString(value); - if (time > 0) { - redisValueOperations.set(key.toString(), jsonString, time, TimeUnit.SECONDS); + if (second > 0) { + redisValueOperations.set(key.toString(), jsonString, second, TimeUnit.SECONDS); } else { set(key.toString(), jsonString); } } //============================ map ============================= + + public void mset(String key, String hashKey, Object value) { redisHashOperations.put(key, hashKey, value); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/ReloadCommand.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/ReloadCommand.java similarity index 56% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/ReloadCommand.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/ReloadCommand.java index ad039f38..c37cfa6f 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/ReloadCommand.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/ReloadCommand.java @@ -1,16 +1,17 @@ -package net.lab1024.sa.common.module.support.reload; +package net.lab1024.sa.base.module.support.reload; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.module.support.reload.dao.ReloadItemDao; -import net.lab1024.sa.common.module.support.reload.dao.ReloadResultDao; -import net.lab1024.sa.common.module.support.reload.core.AbstractSmartReloadCommand; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadItem; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadResult; -import net.lab1024.sa.common.module.support.reload.domain.ReloadItemEntity; -import net.lab1024.sa.common.module.support.reload.domain.ReloadResultEntity; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.module.support.reload.core.AbstractSmartReloadCommand; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadItem; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadResult; +import net.lab1024.sa.base.module.support.reload.dao.ReloadItemDao; +import net.lab1024.sa.base.module.support.reload.dao.ReloadResultDao; +import net.lab1024.sa.base.module.support.reload.domain.ReloadItemEntity; +import net.lab1024.sa.base.module.support.reload.domain.ReloadResultEntity; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.util.List; /** @@ -20,15 +21,15 @@ import java.util.List; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Component public class ReloadCommand extends AbstractSmartReloadCommand { - @Autowired + @Resource private ReloadItemDao reloadItemDao; - @Autowired + @Resource private ReloadResultDao reloadResultDao; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/ReloadService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/ReloadService.java similarity index 66% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/ReloadService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/ReloadService.java index 9737f19a..eb919e1a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/ReloadService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/ReloadService.java @@ -1,16 +1,16 @@ -package net.lab1024.sa.common.module.support.reload; +package net.lab1024.sa.base.module.support.reload; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.reload.dao.ReloadItemDao; -import net.lab1024.sa.common.module.support.reload.dao.ReloadResultDao; -import net.lab1024.sa.common.module.support.reload.domain.ReloadForm; -import net.lab1024.sa.common.module.support.reload.domain.ReloadItemEntity; -import net.lab1024.sa.common.module.support.reload.domain.ReloadItemVO; -import net.lab1024.sa.common.module.support.reload.domain.ReloadResultVO; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.module.support.reload.dao.ReloadItemDao; +import net.lab1024.sa.base.module.support.reload.dao.ReloadResultDao; +import net.lab1024.sa.base.module.support.reload.domain.ReloadForm; +import net.lab1024.sa.base.module.support.reload.domain.ReloadItemEntity; +import net.lab1024.sa.base.module.support.reload.domain.ReloadItemVO; +import net.lab1024.sa.base.module.support.reload.domain.ReloadResultVO; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.List; @@ -21,15 +21,15 @@ import java.util.List; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class ReloadService { - @Autowired + @Resource private ReloadItemDao reloadItemDao; - @Autowired + @Resource private ReloadResultDao reloadResultDao; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/AbstractSmartReloadCommand.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/AbstractSmartReloadCommand.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/AbstractSmartReloadCommand.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/AbstractSmartReloadCommand.java index 8479c60f..a19aa06b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/AbstractSmartReloadCommand.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/AbstractSmartReloadCommand.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.reload.core; +package net.lab1024.sa.base.module.support.reload.core; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadItem; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadObject; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadResult; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadItem; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadObject; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadResult; import java.util.List; import java.util.Map; @@ -16,7 +16,7 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public abstract class AbstractSmartReloadCommand { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/SmartReloadManager.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/SmartReloadManager.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/SmartReloadManager.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/SmartReloadManager.java index a3aad41d..18c8721d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/SmartReloadManager.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/SmartReloadManager.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.reload.core; +package net.lab1024.sa.base.module.support.reload.core; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.module.support.reload.core.annoation.SmartReload; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadObject; -import net.lab1024.sa.common.module.support.reload.core.thread.SmartReloadRunnable; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadObject; +import net.lab1024.sa.base.module.support.reload.core.thread.SmartReloadRunnable; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.util.ReflectionUtils; @@ -24,12 +24,12 @@ import java.util.concurrent.TimeUnit; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j public class SmartReloadManager implements BeanPostProcessor { - private static final String THREAD_NAME_PREFIX = "smart-admin-reload"; + private static final String THREAD_NAME_PREFIX = "smart-reload"; private static final int THREAD_COUNT = 1; private Map reloadObjectMap = new ConcurrentHashMap<>(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/annoation/SmartReload.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/annoation/SmartReload.java similarity index 76% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/annoation/SmartReload.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/annoation/SmartReload.java index d22f119f..0dc3f5bf 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/annoation/SmartReload.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/annoation/SmartReload.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.reload.core.annoation; +package net.lab1024.sa.base.module.support.reload.core.annoation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -12,7 +12,7 @@ import java.lang.annotation.Target; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadItem.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadItem.java similarity index 74% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadItem.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadItem.java index 3820d9d8..19dc6be2 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadItem.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadItem.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.reload.core.domain; +package net.lab1024.sa.base.module.support.reload.core.domain; import lombok.Data; @@ -9,7 +9,7 @@ import lombok.Data; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class SmartReloadItem { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadObject.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadObject.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadObject.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadObject.java index 8242a07e..c05efd29 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadObject.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadObject.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.reload.core.domain; +package net.lab1024.sa.base.module.support.reload.core.domain; import lombok.AllArgsConstructor; import lombok.Data; @@ -12,7 +12,7 @@ import java.lang.reflect.Method; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @AllArgsConstructor diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadResult.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadResult.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadResult.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadResult.java index 58278a78..2a38c024 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/domain/SmartReloadResult.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/domain/SmartReloadResult.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.reload.core.domain; +package net.lab1024.sa.base.module.support.reload.core.domain; import lombok.Data; @@ -9,7 +9,7 @@ import lombok.Data; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class SmartReloadResult { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/thread/SmartReloadRunnable.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/thread/SmartReloadRunnable.java similarity index 89% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/thread/SmartReloadRunnable.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/thread/SmartReloadRunnable.java index be88f8b9..0e656c07 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/core/thread/SmartReloadRunnable.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/thread/SmartReloadRunnable.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.reload.core.thread; +package net.lab1024.sa.base.module.support.reload.core.thread; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.module.support.reload.core.AbstractSmartReloadCommand; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadItem; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadObject; -import net.lab1024.sa.common.module.support.reload.core.domain.SmartReloadResult; +import net.lab1024.sa.base.module.support.reload.core.AbstractSmartReloadCommand; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadItem; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadObject; +import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadResult; import java.io.PrintWriter; import java.io.StringWriter; @@ -19,7 +19,7 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j public class SmartReloadRunnable implements Runnable { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/dao/ReloadItemDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java similarity index 63% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/dao/ReloadItemDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java index d063ba5d..28f35c44 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/dao/ReloadItemDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.reload.dao; +package net.lab1024.sa.base.module.support.reload.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import net.lab1024.sa.common.module.support.reload.domain.ReloadItemEntity; -import net.lab1024.sa.common.module.support.reload.domain.ReloadItemVO; +import net.lab1024.sa.base.module.support.reload.domain.ReloadItemEntity; +import net.lab1024.sa.base.module.support.reload.domain.ReloadItemVO; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Component; @@ -15,7 +15,7 @@ import java.util.List; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Component @Mapper diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/dao/ReloadResultDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java similarity index 66% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/dao/ReloadResultDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java index 298100a7..664befc4 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/dao/ReloadResultDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.reload.dao; +package net.lab1024.sa.base.module.support.reload.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import net.lab1024.sa.common.module.support.reload.domain.ReloadResultEntity; -import net.lab1024.sa.common.module.support.reload.domain.ReloadResultVO; +import net.lab1024.sa.base.module.support.reload.domain.ReloadResultEntity; +import net.lab1024.sa.base.module.support.reload.domain.ReloadResultVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -16,7 +16,7 @@ import java.util.List; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Component @Mapper diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadForm.java similarity index 61% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadForm.java index 45913124..f2b4bbfc 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.reload.domain; +package net.lab1024.sa.base.module.support.reload.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -12,20 +12,20 @@ import javax.validation.constraints.NotBlank; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class ReloadForm { - @ApiModelProperty("标签") + @Schema(description = "标签") @NotBlank(message = "标签不能为空") private String tag; - @ApiModelProperty("状态标识") + @Schema(description = "状态标识") @NotBlank(message = "状态标识不能为空") private String identification; - @ApiModelProperty("参数") + @Schema(description = "参数") private String args; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadItemEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadItemEntity.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadItemEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadItemEntity.java index 54b01131..9c24af9b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadItemEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadItemEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.reload.domain; +package net.lab1024.sa.base.module.support.reload.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_reload_item") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadItemVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadItemVO.java similarity index 52% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadItemVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadItemVO.java index b21b8e69..a9c81e4f 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadItemVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadItemVO.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.reload.domain; +package net.lab1024.sa.base.module.support.reload.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -12,24 +12,24 @@ import java.time.LocalDateTime; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class ReloadItemVO { - @ApiModelProperty("加载项标签") + @Schema(description = "加载项标签") private String tag; - @ApiModelProperty("参数") + @Schema(description = "参数") private String args; - @ApiModelProperty("运行标识") + @Schema(description = "运行标识") private String identification; - @ApiModelProperty("更新时间") + @Schema(description = "更新时间") private LocalDateTime updateTime; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadResultEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadResultEntity.java similarity index 74% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadResultEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadResultEntity.java index 004156d8..7516e6cc 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadResultEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadResultEntity.java @@ -1,5 +1,7 @@ -package net.lab1024.sa.common.module.support.reload.domain; +package net.lab1024.sa.base.module.support.reload.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -13,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_reload_result") @@ -22,6 +24,7 @@ public class ReloadResultEntity { /** * 加载项标签 */ + @TableId(type= IdType.NONE) private String tag; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadResultVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadResultVO.java similarity index 50% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadResultVO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadResultVO.java index d7d68836..da63994d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/reload/domain/ReloadResultVO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/domain/ReloadResultVO.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.reload.domain; +package net.lab1024.sa.base.module.support.reload.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -12,23 +12,23 @@ import java.time.LocalDateTime; * @Date 2015-03-02 19:11:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class ReloadResultVO { - @ApiModelProperty("加载项标签") + @Schema(description = "加载项标签") private String tag; - @ApiModelProperty("参数") + @Schema(description = "参数") private String args; - @ApiModelProperty("运行结果") + @Schema(description = "运行结果") private Boolean result; - @ApiModelProperty("异常") + @Schema(description = "异常") private String exception; - @ApiModelProperty("创建时间") + @Schema(description = "创建时间") private LocalDateTime createTime; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/RepeatSubmitAspect.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java similarity index 83% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/RepeatSubmitAspect.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java index bba00d9e..af403c64 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/RepeatSubmitAspect.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java @@ -1,10 +1,10 @@ -package net.lab1024.sa.common.module.support.repeatsubmit; +package net.lab1024.sa.base.module.support.repeatsubmit; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; -import net.lab1024.sa.common.module.support.repeatsubmit.ticket.AbstractRepeatSubmitTicket; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; +import net.lab1024.sa.base.module.support.repeatsubmit.ticket.AbstractRepeatSubmitTicket; import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; @@ -22,7 +22,7 @@ import java.lang.reflect.Method; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Aspect @Slf4j @@ -32,7 +32,6 @@ public class RepeatSubmitAspect { /** * 获取凭证信息 - * rep * * @param repeatSubmitTicket */ @@ -47,7 +46,7 @@ public class RepeatSubmitAspect { * @return * @throws Throwable */ - @Around("@annotation(net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit)") + @Around("@annotation(net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit)") public Object around(ProceedingJoinPoint point) throws Throwable { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/annoation/RepeatSubmit.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java similarity index 82% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/annoation/RepeatSubmit.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java index aed05382..8191b948 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/annoation/RepeatSubmit.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.repeatsubmit.annoation; +package net.lab1024.sa.base.module.support.repeatsubmit.annoation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -13,7 +13,7 @@ import java.lang.annotation.Target; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java similarity index 88% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java index fd6d7758..bfe17c70 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.repeatsubmit.ticket; +package net.lab1024.sa.base.module.support.repeatsubmit.ticket; import java.util.function.Function; @@ -9,7 +9,7 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public abstract class AbstractRepeatSubmitTicket { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java similarity index 85% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java index be6f7960..ef531c49 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.repeatsubmit.ticket; +package net.lab1024.sa.base.module.support.repeatsubmit.ticket; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; +import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -14,7 +14,7 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java index 806b7324..34b89b3a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.repeatsubmit.ticket; +package net.lab1024.sa.base.module.support.repeatsubmit.ticket; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; +import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; import org.springframework.data.redis.core.ValueOperations; import java.util.concurrent.TimeUnit; @@ -13,7 +13,7 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket { diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java new file mode 100644 index 00000000..cd5cf659 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java @@ -0,0 +1,53 @@ +package net.lab1024.sa.base.module.support.securityprotect.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailEntity; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailQueryForm; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 登录失败 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022/07/22 19:46:23 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Mapper +@Component +public interface LoginFailDao extends BaseMapper { + + /** + * 根据用户id和类型查询 + * + * @param userId + * @param userType + * @return + */ + LoginFailEntity selectByUserIdAndUserType(@Param("userId") Long userId, @Param("userType") Integer userType); + + /** + * 根据用户id和类型查询 进行删除 + * + * @param userId + * @param userType + * @return + */ + void deleteByUserIdAndUserType(@Param("userId") Long userId, @Param("userType") Integer userType); + + /** + * 分页 查询 + * + * @param page + * @param queryForm + * @return + */ + List queryPage(Page page, @Param("queryForm") LoginFailQueryForm queryForm); +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailEntity.java new file mode 100644 index 00000000..f1219b42 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailEntity.java @@ -0,0 +1,66 @@ +package net.lab1024.sa.base.module.support.securityprotect.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 登录失败记录 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/11 19:29:18 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@Data +@Builder +@TableName("t_login_fail") +public class LoginFailEntity { + + + @TableId(type = IdType.AUTO) + private Long loginFailId; + + /** + * 用户id + */ + private Long userId; + + /** + * 用户类型 + */ + private Integer userType; + + /** + * 登录名 + */ + private String loginName; + + /** + * 锁定状态 + */ + private Boolean lockFlag; + + /** + * 登录失败次数 + */ + private Integer loginFailCount; + + /** + * 连续登录失败锁定开始时间 + */ + private LocalDateTime loginLockBeginTime; + + + private LocalDateTime updateTime; + + private LocalDateTime createTime; + + +} diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailQueryForm.java new file mode 100644 index 00000000..41c048b9 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailQueryForm.java @@ -0,0 +1,32 @@ +package net.lab1024.sa.base.module.support.securityprotect.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.lab1024.sa.base.common.domain.PageParam; + +import java.time.LocalDate; + +/** + * 登录失败 分页查询表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2023-10-17 18:02:37 + * @Copyright 1024创新实验室 + */ + +@Data +public class LoginFailQueryForm extends PageParam { + + @Schema(description = "登录名") + private String loginName; + + @Schema(description = "锁定状态") + private Boolean lockFlag; + + @Schema(description = "登录失败锁定时间") + private LocalDate loginLockBeginTimeBegin; + + @Schema(description = "登录失败锁定时间") + private LocalDate loginLockBeginTimeEnd; + +} \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailVO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailVO.java new file mode 100644 index 00000000..317ee742 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/domain/LoginFailVO.java @@ -0,0 +1,46 @@ +package net.lab1024.sa.base.module.support.securityprotect.domain; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 登录失败 列表VO + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2023-10-17 18:02:37 + * @Copyright 1024创新实验室 + */ + +@Data +public class LoginFailVO { + + private Long loginFailId; + + + @Schema(description = "用户id") + private Long userId; + + @Schema(description = "用户类型") + private Integer userType; + + @Schema(description = "登录名") + private String loginName; + + @Schema(description = "连续登录失败次数") + private Integer loginFailCount; + + @Schema(description = "锁定状态:1锁定,0未锁定") + private Integer lockFlag; + + @Schema(description = "连续登录失败锁定开始时间") + private LocalDateTime loginLockBeginTime; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + +} \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/ProtectLoginService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/ProtectLoginService.java new file mode 100644 index 00000000..c20d5e8d --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/ProtectLoginService.java @@ -0,0 +1,183 @@ +package net.lab1024.sa.base.module.support.securityprotect.service; + +import cn.hutool.core.date.LocalDateTimeUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.lab1024.sa.base.common.code.UserErrorCode; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.securityprotect.dao.LoginFailDao; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailEntity; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailQueryForm; +import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailVO; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 三级等保 登录 相关 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/11 19:25:59 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@Service +public class ProtectLoginService { + + private static final String LOGIN_LOCK_MSG = "您已连续登录失败%s次,账号锁定%s分钟,解锁时间为:%s,请您耐心等待!"; + + private static final String LOGIN_FAIL_MSG = "登录名或密码错误!连续登录失败%s次,账号将锁定%s分钟!您还可以再尝试%s次!"; + + /** + * 连续登录失败次数则锁定,-1表示不受限制,可以一直登录 + */ + @Value("${classified-protect.login-max-fail-times}") + private Integer loginMaxFailTimes; + + /** + * 连续登录失败锁定时间(单位:秒),-1表示不锁定 + */ + @Value("${classified-protect.login-fail-locked-seconds}") + private Integer loginFailLockedSeconds; + + @Resource + private LoginFailDao loginFailDao; + + + /** + * 检查是否可以登录 + * + * @param userId + * @param userType + * @return + */ + public ResponseDTO checkLogin(Long userId, UserTypeEnum userType) { + + // 无需校验 + if (loginMaxFailTimes < 1) { + return ResponseDTO.ok(); + } + + + LoginFailEntity loginFailEntity = loginFailDao.selectByUserIdAndUserType(userId, userType.getValue()); + if (loginFailEntity == null) { + return ResponseDTO.ok(); + } + + // 校验次数 + if (loginFailEntity.getLoginFailCount() < loginMaxFailTimes) { + return ResponseDTO.ok(loginFailEntity); + } + + // 校验锁定时长 + if(loginFailEntity.getLoginLockBeginTime().plusSeconds(loginFailLockedSeconds).isBefore(LocalDateTime.now())){ + // 过了锁定时间 + return ResponseDTO.ok(loginFailEntity); + } + + LocalDateTime unlockTime = loginFailEntity.getLoginLockBeginTime().plusSeconds(loginFailLockedSeconds); + return ResponseDTO.error(UserErrorCode.LOGIN_FAIL_LOCK, String.format(LOGIN_LOCK_MSG, loginFailEntity.getLoginFailCount(), loginFailLockedSeconds / 60, LocalDateTimeUtil.formatNormal(unlockTime))); + } + + /** + * 登录失败后记录 + * + * @param userId + * @param userType + * @param loginFailEntity + */ + public String recordLoginFail(Long userId, UserTypeEnum userType, String loginName, LoginFailEntity loginFailEntity) { + + // 无需校验 + if (loginMaxFailTimes < 1) { + return null; + } + + if (loginFailEntity == null) { + loginFailEntity = LoginFailEntity.builder() + .userId(userId) + .userType(userType.getValue()) + .loginName(loginName) + .loginFailCount(1) + .lockFlag(false) + .loginLockBeginTime(null).build(); + loginFailDao.insert(loginFailEntity); + } else { + + // 如果是已经锁定状态,则重新计算 + if(loginFailEntity.getLockFlag()){ + loginFailEntity.setLockFlag(false); + loginFailEntity.setLoginFailCount(1); + loginFailEntity.setLoginLockBeginTime(null); + }else{ + loginFailEntity.setLoginLockBeginTime(LocalDateTime.now()); + loginFailEntity.setLoginFailCount(loginFailEntity.getLoginFailCount() + 1); + loginFailEntity.setLockFlag(loginFailEntity.getLoginFailCount() >= loginMaxFailTimes); + } + + loginFailEntity.setLoginName(loginName); + loginFailDao.updateById(loginFailEntity); + } + + // 提示信息 + if (loginFailEntity.getLoginFailCount() >= loginMaxFailTimes) { + LocalDateTime unlockTime = loginFailEntity.getLoginLockBeginTime().plusSeconds(loginFailLockedSeconds); + return String.format(LOGIN_LOCK_MSG, loginFailEntity.getLoginFailCount(), loginFailLockedSeconds / 60, LocalDateTimeUtil.formatNormal(unlockTime)); + } else { + return String.format(LOGIN_FAIL_MSG, loginMaxFailTimes, loginFailLockedSeconds / 60, loginMaxFailTimes - loginFailEntity.getLoginFailCount()); + } + } + + /** + * 清除登录失败 + * + * @param userId + * @param userType + */ + public void removeLoginFail(Long userId, UserTypeEnum userType) { + // 无需校验 + if (loginMaxFailTimes < 1) { + return; + } + + loginFailDao.deleteByUserIdAndUserType(userId, userType.getValue()); + } + + /** + * 分页查询 + * + * @param queryForm + * @return + */ + public PageResult queryPage(LoginFailQueryForm queryForm) { + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List list = loginFailDao.queryPage(page, queryForm); + PageResult pageResult = SmartPageUtil.convert2PageResult(page, list); + return pageResult; + } + + /** + * 批量删除 + * + * @param idList + * @return + */ + public ResponseDTO batchDelete(List idList) { + if (CollectionUtils.isEmpty(idList)) { + return ResponseDTO.ok(); + } + + loginFailDao.deleteBatchIds(idList); + return ResponseDTO.ok(); + } + +} +; \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/ProtectPasswordService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/ProtectPasswordService.java new file mode 100644 index 00000000..45d03429 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/ProtectPasswordService.java @@ -0,0 +1,99 @@ +package net.lab1024.sa.base.module.support.securityprotect.service; + +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.module.support.apiencrypt.service.ApiEncryptService; +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 三级等保 密码 相关 + * + * @Author 1024创新实验室-主任:卓大 + * @Date 2023/10/11 19:25:59 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室,Since 2012 + */ + +@Service +public class ProtectPasswordService { + + /** + * 密码长度8-20位且包含大写字母、小写字母、数字三种 + */ + public static final String PASSWORD_PATTERN = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,20}$"; + + /** + * 密码长度8-20位且包含大写字母、小写字母、数字三种 + */ + public static final String PASSWORD_FORMAT_MSG = "密码必须为长度8-20位且包含大写字母、小写字母、数字三种"; + + + private static final int PASSWORD_LENGTH = 8; + + + /** + * 密码复杂度开启, 默认为true 开启,false 不开启 + */ + @Value("${classified-protect.password-complexity-enabled}") + private Boolean passwordComplexityEnabled; + + + @Resource + private ApiEncryptService apiEncryptService; + + /** + * 校验密码复杂度 + * + * @return + */ + public ResponseDTO validatePassComplexity(String password) { + + // 无需校验 + if (!passwordComplexityEnabled) { + return ResponseDTO.ok(); + } + + if (SmartStringUtil.isEmpty(password)) { + return ResponseDTO.userErrorParam(PASSWORD_FORMAT_MSG); + } + + if (!password.matches(PASSWORD_PATTERN)) { + return ResponseDTO.userErrorParam(PASSWORD_FORMAT_MSG); + } + + return ResponseDTO.ok(); + } + + /** + * 随机生成密码 + * + * @return + */ + public String randomPassword() { + // 未开启密码复杂度,则由8为数字构成 + if (passwordComplexityEnabled) { + return RandomStringUtils.randomNumeric(PASSWORD_LENGTH); + } else { + // 3位大写字母,2位数字,3位小写字母 + return RandomStringUtils.randomAlphabetic(3).toUpperCase() + RandomStringUtils.randomNumeric(2) + RandomStringUtils.randomAlphabetic(3).toLowerCase(); + } + } + + + /** + * 解密 SM4 or AES 加密过的密码 + * + * @param encryptedPassword + * @return + */ + public String decryptSm2Password(String encryptedPassword) { + return apiEncryptService.decrypt(encryptedPassword); + } + + +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/constant/SerialNumberIdEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/constant/SerialNumberIdEnum.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/constant/SerialNumberIdEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/constant/SerialNumberIdEnum.java index 72eb8586..6a12d410 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/constant/SerialNumberIdEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/constant/SerialNumberIdEnum.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.serialnumber.constant; +package net.lab1024.sa.base.module.support.serialnumber.constant; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 单据序列号 枚举 @@ -11,7 +11,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/constant/SerialNumberRuleTypeEnum.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/constant/SerialNumberRuleTypeEnum.java similarity index 74% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/constant/SerialNumberRuleTypeEnum.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/constant/SerialNumberRuleTypeEnum.java index 5fc08557..01f4f422 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/constant/SerialNumberRuleTypeEnum.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/constant/SerialNumberRuleTypeEnum.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.serialnumber.constant; +package net.lab1024.sa.base.module.support.serialnumber.constant; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.constant.StringConst; -import net.lab1024.sa.common.common.enumeration.BaseEnum; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.enumeration.BaseEnum; /** * 单据序列号 周期 @@ -12,7 +12,7 @@ import net.lab1024.sa.common.common.enumeration.BaseEnum; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @AllArgsConstructor @Getter diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/dao/SerialNumberDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java similarity index 81% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/dao/SerialNumberDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java index 50d32b64..b54a7f2a 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/dao/SerialNumberDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.module.support.serialnumber.dao; +package net.lab1024.sa.base.module.support.serialnumber.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberEntity; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -15,7 +15,7 @@ import java.time.LocalDateTime; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/dao/SerialNumberRecordDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java similarity index 82% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/dao/SerialNumberRecordDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java index 7d66a469..1f665a19 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/dao/SerialNumberRecordDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java @@ -1,9 +1,9 @@ -package net.lab1024.sa.common.module.support.serialnumber.dao; +package net.lab1024.sa.base.module.support.serialnumber.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberRecordEntity; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberRecordQueryForm; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberRecordEntity; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberRecordQueryForm; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper @Component diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberEntity.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberEntity.java index 79b589f1..46ae3031 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberEntity.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.serialnumber.domain; +package net.lab1024.sa.base.module.support.serialnumber.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberIdEnum; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberRuleTypeEnum; +import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum; +import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberRuleTypeEnum; import java.time.LocalDateTime; @@ -16,7 +16,7 @@ import java.time.LocalDateTime; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_serial_number") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberGenerateForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberGenerateForm.java similarity index 62% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberGenerateForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberGenerateForm.java index 30e0b777..a3f2f025 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberGenerateForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberGenerateForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.serialnumber.domain; +package net.lab1024.sa.base.module.support.serialnumber.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotNull; @@ -12,16 +12,16 @@ import javax.validation.constraints.NotNull; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class SerialNumberGenerateForm { - @ApiModelProperty("单号id") + @Schema(description = "单号id") @NotNull(message = "单号id不能为空") private Integer serialNumberId; - @ApiModelProperty("生成的数量") + @Schema(description = "生成的数量") @NotNull(message = "生成的数量") private Integer count; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberGenerateResultBO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberGenerateResultBO.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberGenerateResultBO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberGenerateResultBO.java index f4dfe3ae..6250b618 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberGenerateResultBO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberGenerateResultBO.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.serialnumber.domain; +package net.lab1024.sa.base.module.support.serialnumber.domain; import lombok.AllArgsConstructor; import lombok.Builder; @@ -15,7 +15,7 @@ import java.util.List; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @AllArgsConstructor diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberInfoBO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberInfoBO.java similarity index 82% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberInfoBO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberInfoBO.java index 89fae4e6..4bb30714 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberInfoBO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberInfoBO.java @@ -1,11 +1,11 @@ -package net.lab1024.sa.common.module.support.serialnumber.domain; +package net.lab1024.sa.base.module.support.serialnumber.domain; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberIdEnum; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberRuleTypeEnum; +import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum; +import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberRuleTypeEnum; /** * 单据序列号 信息 @@ -14,7 +14,7 @@ import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberRu * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Getter diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberLastGenerateBO.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberLastGenerateBO.java similarity index 54% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberLastGenerateBO.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberLastGenerateBO.java index 5ccf4e75..f695df0d 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberLastGenerateBO.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberLastGenerateBO.java @@ -1,5 +1,9 @@ -package net.lab1024.sa.common.module.support.serialnumber.domain; +package net.lab1024.sa.base.module.support.serialnumber.domain; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -14,7 +18,7 @@ import java.time.LocalDateTime; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @AllArgsConstructor @@ -35,6 +39,8 @@ public class SerialNumberLastGenerateBO { /** * 上次生成的时间 */ + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) private LocalDateTime lastTime; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberRecordEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberRecordEntity.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberRecordEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberRecordEntity.java index a32982e4..f7c3a7db 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberRecordEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberRecordEntity.java @@ -1,5 +1,7 @@ -package net.lab1024.sa.common.module.support.serialnumber.domain; +package net.lab1024.sa.base.module.support.serialnumber.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Builder; @@ -16,7 +18,7 @@ import java.time.LocalDateTime; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @Builder @@ -28,6 +30,7 @@ public class SerialNumberRecordEntity { /** * 单号id */ + @TableId(type= IdType.NONE) private Integer serialNumberId; /** diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberRecordQueryForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberRecordQueryForm.java similarity index 58% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberRecordQueryForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberRecordQueryForm.java index 7fe36829..ef177f3b 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/domain/SerialNumberRecordQueryForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/domain/SerialNumberRecordQueryForm.java @@ -1,8 +1,8 @@ -package net.lab1024.sa.common.module.support.serialnumber.domain; +package net.lab1024.sa.base.module.support.serialnumber.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; import javax.validation.constraints.NotNull; @@ -13,12 +13,12 @@ import javax.validation.constraints.NotNull; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class SerialNumberRecordQueryForm extends PageParam { - @ApiModelProperty("单号id") + @Schema(description = "单号id") @NotNull(message = "单号id不能为空") private Integer serialNumberId; } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberBaseService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberBaseService.java similarity index 90% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberBaseService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberBaseService.java index 1a85af11..4f76dfad 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberBaseService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberBaseService.java @@ -1,17 +1,17 @@ -package net.lab1024.sa.common.module.support.serialnumber.service; +package net.lab1024.sa.base.module.support.serialnumber.service; import com.google.common.collect.Lists; -import net.lab1024.sa.common.common.exception.BusinessException; -import net.lab1024.sa.common.common.util.SmartEnumUtil; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberIdEnum; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberRuleTypeEnum; -import net.lab1024.sa.common.module.support.serialnumber.dao.SerialNumberDao; -import net.lab1024.sa.common.module.support.serialnumber.dao.SerialNumberRecordDao; -import net.lab1024.sa.common.module.support.serialnumber.domain.*; +import net.lab1024.sa.base.common.exception.BusinessException; +import net.lab1024.sa.base.common.util.SmartEnumUtil; +import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum; +import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberRuleTypeEnum; +import net.lab1024.sa.base.module.support.serialnumber.dao.SerialNumberDao; +import net.lab1024.sa.base.module.support.serialnumber.dao.SerialNumberRecordDao; +import net.lab1024.sa.base.module.support.serialnumber.domain.*; import org.apache.commons.lang3.RandomUtils; -import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.PostConstruct; +import javax.annotation.Resource; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; @@ -25,14 +25,14 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public abstract class SerialNumberBaseService implements SerialNumberService { - @Autowired + @Resource protected SerialNumberRecordDao serialNumberRecordDao; - @Autowired + @Resource protected SerialNumberDao serialNumberDao; private ConcurrentHashMap serialNumberMap = new ConcurrentHashMap<>(); @@ -201,12 +201,12 @@ public abstract class SerialNumberBaseService implements SerialNumberService { /** * 替换特殊rule,即替换[yyyy][mm][dd][nnn]等规则 */ - protected List formatNumberList(SerialNumberGenerateResultBO generteResult, SerialNumberInfoBO serialNumberInfo) { + protected List formatNumberList(SerialNumberGenerateResultBO generateResult, SerialNumberInfoBO serialNumberInfo) { /** * 第一步:替换年、月、日 */ - LocalDate lastTime = generteResult.getLastTime().toLocalDate(); + LocalDate lastTime = generateResult.getLastTime().toLocalDate(); String year = String.valueOf(lastTime.getYear()); String month = lastTime.getMonthValue() > 9 ? String.valueOf(lastTime.getMonthValue()) : "0" + lastTime.getMonthValue(); String day = lastTime.getDayOfMonth() > 9 ? String.valueOf(lastTime.getDayOfMonth()) : "0" + lastTime.getDayOfMonth(); @@ -229,8 +229,8 @@ public abstract class SerialNumberBaseService implements SerialNumberService { * 第二步:替换数字 */ - List numberList = Lists.newArrayListWithCapacity(generteResult.getNumberList().size()); - for (Long number : generteResult.getNumberList()) { + List numberList = Lists.newArrayListWithCapacity(generateResult.getNumberList().size()); + for (Long number : generateResult.getNumberList()) { StringBuilder numberStringBuilder = new StringBuilder(); int currentNumberCount = String.valueOf(number).length(); //数量不够,前面补0 diff --git a/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberRecordService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberRecordService.java new file mode 100644 index 00000000..39daa0ff --- /dev/null +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberRecordService.java @@ -0,0 +1,34 @@ +package net.lab1024.sa.base.module.support.serialnumber.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.lab1024.sa.base.common.domain.PageResult; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.module.support.serialnumber.dao.SerialNumberRecordDao; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberRecordEntity; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberRecordQueryForm; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 单据序列号 记录 + * + * @Author 1024创新实验室-主任: 卓大 + * @Date 2022-03-25 21:46:07 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Service +public class SerialNumberRecordService { + + @Resource + private SerialNumberRecordDao serialNumberRecordDao; + + public PageResult query(SerialNumberRecordQueryForm queryForm) { + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List recordList = serialNumberRecordDao.query(page, queryForm); + return SmartPageUtil.convert2PageResult(page, recordList); + } +} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberService.java similarity index 71% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberService.java index ce40d7fa..50d1dbee 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/SerialNumberService.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.serialnumber.service; +package net.lab1024.sa.base.module.support.serialnumber.service; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberIdEnum; +import net.lab1024.sa.base.module.support.serialnumber.constant.SerialNumberIdEnum; import java.util.List; @@ -11,7 +11,7 @@ import java.util.List; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ public interface SerialNumberService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberInternService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberInternService.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberInternService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberInternService.java index db8c04e7..8a21ebcb 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberInternService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberInternService.java @@ -1,12 +1,12 @@ -package net.lab1024.sa.common.module.support.serialnumber.service.impl; +package net.lab1024.sa.base.module.support.serialnumber.service.impl; import com.google.common.collect.Interner; import com.google.common.collect.Interners; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberEntity; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberGenerateResultBO; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberInfoBO; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberLastGenerateBO; -import net.lab1024.sa.common.module.support.serialnumber.service.SerialNumberBaseService; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberEntity; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberGenerateResultBO; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberInfoBO; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberLastGenerateBO; +import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberBaseService; import org.springframework.stereotype.Service; import java.util.List; @@ -19,7 +19,7 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class SerialNumberInternService extends SerialNumberBaseService { @@ -27,7 +27,7 @@ public class SerialNumberInternService extends SerialNumberBaseService { /** * 按照 serialNumberId 进行锁 */ - private static final Interner POOL = Interners.newWeakInterner(); + private static final Interner POOL = Interners.newStrongInterner(); private ConcurrentHashMap serialNumberLastGenerateMap = new ConcurrentHashMap<>(); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberMysqlService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberMysqlService.java similarity index 76% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberMysqlService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberMysqlService.java index 8d2413a7..0d13dc78 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberMysqlService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberMysqlService.java @@ -1,12 +1,12 @@ -package net.lab1024.sa.common.module.support.serialnumber.service.impl; +package net.lab1024.sa.base.module.support.serialnumber.service.impl; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.exception.BusinessException; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberEntity; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberGenerateResultBO; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberInfoBO; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberLastGenerateBO; -import net.lab1024.sa.common.module.support.serialnumber.service.SerialNumberBaseService; +import net.lab1024.sa.base.common.exception.BusinessException; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberEntity; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberGenerateResultBO; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberInfoBO; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberLastGenerateBO; +import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberBaseService; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -18,7 +18,7 @@ import java.util.List; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j public class SerialNumberMysqlService extends SerialNumberBaseService { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberRedisService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberRedisService.java similarity index 77% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberRedisService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberRedisService.java index 1c54f0ed..d83d9368 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/impl/SerialNumberRedisService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/service/impl/SerialNumberRedisService.java @@ -1,16 +1,17 @@ -package net.lab1024.sa.common.module.support.serialnumber.service.impl; +package net.lab1024.sa.base.module.support.serialnumber.service.impl; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.exception.BusinessException; -import net.lab1024.sa.common.constant.RedisKeyConst; -import net.lab1024.sa.common.module.support.redis.RedisService; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberEntity; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberGenerateResultBO; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberInfoBO; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberLastGenerateBO; -import net.lab1024.sa.common.module.support.serialnumber.service.SerialNumberBaseService; -import org.springframework.beans.factory.annotation.Autowired; +import net.lab1024.sa.base.common.exception.BusinessException; +import net.lab1024.sa.base.constant.RedisKeyConst; +import net.lab1024.sa.base.module.support.redis.RedisService; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberEntity; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberGenerateResultBO; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberInfoBO; +import net.lab1024.sa.base.module.support.serialnumber.domain.SerialNumberLastGenerateBO; +import net.lab1024.sa.base.module.support.serialnumber.service.SerialNumberBaseService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -20,7 +21,7 @@ import java.util.List; * @Date 2022-03-25 21:46:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Slf4j public class SerialNumberRedisService extends SerialNumberBaseService { @@ -29,7 +30,7 @@ public class SerialNumberRedisService extends SerialNumberBaseService { private static final long SLEEP_MILLISECONDS = 200L; - @Autowired + @Resource private RedisService redisService; @Override @@ -91,6 +92,9 @@ public class SerialNumberRedisService extends SerialNumberBaseService { serialNumberGenerateResult.getLastNumber(), serialNumberGenerateResult.getLastTime()); + redisService.mset(RedisKeyConst.Support.SERIAL_NUMBER_LAST_INFO, + String.valueOf(serialNumberInfo.getSerialNumberId()), lastGenerateBO); + // 把生成过程保存到数据库里 super.saveRecord(serialNumberGenerateResult); } catch (Throwable e) { diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnController.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnController.java similarity index 57% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnController.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnController.java index fd657e09..58ee17bd 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnController.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnController.java @@ -1,16 +1,16 @@ -package net.lab1024.sa.common.module.support.table; +package net.lab1024.sa.base.module.support.table; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; -import net.lab1024.sa.common.module.support.table.domain.TableColumnUpdateForm; -import org.springframework.beans.factory.annotation.Autowired; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import net.lab1024.sa.base.common.controller.SupportBaseController; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.util.SmartRequestUtil; +import net.lab1024.sa.base.constant.SwaggerTagConst; +import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; +import net.lab1024.sa.base.module.support.table.domain.TableColumnUpdateForm; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.validation.Valid; /** @@ -20,30 +20,30 @@ import javax.validation.Valid; * @Date 2022-08-12 22:52:21 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @RestController -@Api(tags = {SwaggerTagConst.Support.TABLE_COLUMN}) +@Tag(name = SwaggerTagConst.Support.TABLE_COLUMN) public class TableColumnController extends SupportBaseController { - @Autowired + @Resource private TableColumnService tableColumnService; - @ApiOperation("修改表格列 @author 卓大") + @Operation(summary = "修改表格列 @author 卓大") @PostMapping("/tableColumn/update") @RepeatSubmit public ResponseDTO updateTableColumn(@RequestBody @Valid TableColumnUpdateForm updateForm) { return tableColumnService.updateTableColumns(SmartRequestUtil.getRequestUser(), updateForm); } - @ApiOperation("恢复默认(删除) @author 卓大") + @Operation(summary = "恢复默认(删除) @author 卓大") @GetMapping("/tableColumn/delete/{tableId}") @RepeatSubmit public ResponseDTO deleteTableColumn(@PathVariable Integer tableId) { return tableColumnService.deleteTableColumn(SmartRequestUtil.getRequestUser(), tableId); } - @ApiOperation("查询表格列 @author 卓大") + @Operation(summary = "查询表格列 @author 卓大") @GetMapping("/tableColumn/getColumns/{tableId}") public ResponseDTO getColumns(@PathVariable Integer tableId) { return ResponseDTO.ok(tableColumnService.getTableColumns(SmartRequestUtil.getRequestUser(), tableId)); diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnDao.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnDao.java similarity index 65% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnDao.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnDao.java index 2a7d6cdc..6dbe22fb 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnDao.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnDao.java @@ -1,7 +1,7 @@ -package net.lab1024.sa.common.module.support.table; +package net.lab1024.sa.base.module.support.table; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import net.lab1024.sa.common.module.support.table.domain.TableColumnEntity; +import net.lab1024.sa.base.module.support.table.domain.TableColumnEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -12,12 +12,12 @@ import org.apache.ibatis.annotations.Param; * @Date 2022-08-12 22:52:21 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Mapper public interface TableColumnDao extends BaseMapper { TableColumnEntity selectByUserIdAndTableId(@Param("userId") Long userId, @Param("userType") Integer userType, @Param("tableId") Integer tableId); - void delete(@Param("userId") Long userId, @Param("userType") Integer userType, @Param("tableId") Integer tableId); + void deleteTableColumn(@Param("userId") Long userId, @Param("userType") Integer userType, @Param("tableId") Integer tableId); } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnService.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnService.java similarity index 79% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnService.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnService.java index 5f388c4a..6f76fd57 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/TableColumnService.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/TableColumnService.java @@ -1,14 +1,15 @@ -package net.lab1024.sa.common.module.support.table; +package net.lab1024.sa.base.module.support.table; import com.alibaba.fastjson.JSONArray; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.table.domain.TableColumnEntity; -import net.lab1024.sa.common.module.support.table.domain.TableColumnUpdateForm; +import net.lab1024.sa.base.common.domain.RequestUser; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.module.support.table.domain.TableColumnEntity; +import net.lab1024.sa.base.module.support.table.domain.TableColumnUpdateForm; import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; + /** * 表格自定义列(前端用户自定义表格列,并保存到数据库里) * @@ -16,12 +17,12 @@ import org.springframework.stereotype.Service; * @Date 2022-08-12 22:52:21 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Service public class TableColumnService { - @Autowired + @Resource private TableColumnDao tableColumnDao; /** @@ -66,7 +67,7 @@ public class TableColumnService { * @return */ public ResponseDTO deleteTableColumn(RequestUser requestUser, Integer tableId) { - tableColumnDao.delete(requestUser.getUserId(), requestUser.getUserType().getValue(), tableId); + tableColumnDao.deleteTableColumn(requestUser.getUserId(), requestUser.getUserType().getValue(), tableId); return ResponseDTO.ok(); } } diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnEntity.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnEntity.java similarity index 86% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnEntity.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnEntity.java index c177ed16..b8b89cb0 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnEntity.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnEntity.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.table.domain; +package net.lab1024.sa.base.module.support.table.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -14,7 +14,7 @@ import java.time.LocalDateTime; * @Date 2022-08-12 22:52:21 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data @TableName("t_table_column") diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnItemForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnItemForm.java similarity index 63% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnItemForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnItemForm.java index 0a50f8e9..1fc11836 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnItemForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnItemForm.java @@ -1,6 +1,6 @@ -package net.lab1024.sa.common.module.support.table.domain; +package net.lab1024.sa.base.module.support.table.domain; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -13,24 +13,24 @@ import javax.validation.constraints.NotNull; * @Date 2022-08-12 22:52:21 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class TableColumnItemForm { @NotEmpty(message = "列不能为空") - @ApiModelProperty("字段") + @Schema(description = "字段") private String columnKey; - @ApiModelProperty("宽度") + @Schema(description = "宽度") private Integer width; @NotNull(message = "显示不能为空") - @ApiModelProperty("是否显示") + @Schema(description = "是否显示") private Boolean showFlag; @NotNull(message = "排序不能为空") - @ApiModelProperty("排序") + @Schema(description = "排序") private Integer sort; diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnUpdateForm.java b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnUpdateForm.java similarity index 80% rename from smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnUpdateForm.java rename to smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnUpdateForm.java index 106bf61b..5a6139f9 100644 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/table/domain/TableColumnUpdateForm.java +++ b/smart-admin-api/sa-base/src/main/java/net/lab1024/sa/base/module/support/table/domain/TableColumnUpdateForm.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.common.module.support.table.domain; +package net.lab1024.sa.base.module.support.table.domain; import lombok.Data; @@ -13,7 +13,7 @@ import java.util.List; * @Date 2022-08-12 22:52:21 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) + * @Copyright 1024创新实验室 */ @Data public class TableColumnUpdateForm { diff --git a/smart-admin-api/sa-common/src/main/resources/META-INF/spring.factories b/smart-admin-api/sa-base/src/main/resources/META-INF/spring.factories similarity index 52% rename from smart-admin-api/sa-common/src/main/resources/META-INF/spring.factories rename to smart-admin-api/sa-base/src/main/resources/META-INF/spring.factories index 99b8129c..7dc64b81 100644 --- a/smart-admin-api/sa-common/src/main/resources/META-INF/spring.factories +++ b/smart-admin-api/sa-base/src/main/resources/META-INF/spring.factories @@ -1,2 +1,2 @@ org.springframework.boot.env.EnvironmentPostProcessor=\ - net.lab1024.sa.common.config.PostProcessorConfig \ No newline at end of file + net.lab1024.sa.base.config.YamlProcessor \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/resources/banner.txt b/smart-admin-api/sa-base/src/main/resources/banner.txt similarity index 89% rename from smart-admin-api/sa-common/src/main/resources/banner.txt rename to smart-admin-api/sa-base/src/main/resources/banner.txt index 22d0cb11..ca2b6519 100644 --- a/smart-admin-api/sa-common/src/main/resources/banner.txt +++ b/smart-admin-api/sa-base/src/main/resources/banner.txt @@ -10,7 +10,7 @@ 热爱代码 热爱生活 ! 永远年轻 永远前行 ! -SmartAdmin v2.X ,作者:1024创新实验室 @copyright:【 1024lab 】 +SmartAdmin v3.X ,作者:1024创新实验室 @copyright:【 1024lab 】 SmartAdmin 文档地址:https://smartadmin.vip diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/constant/enum.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/constant/enum.java.vm similarity index 86% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/constant/enum.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/constant/enum.java.vm index 6511a80d..e67215ae 100644 --- a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/constant/enum.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/constant/enum.java.vm @@ -2,7 +2,6 @@ package ${packageName}; import lombok.AllArgsConstructor; import lombok.Getter; -import net.lab1024.sa.common.common.enumeration.BaseEnum; /** * ${enumDesc} diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/controller/Controller.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/controller/Controller.java.vm similarity index 78% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/controller/Controller.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/controller/Controller.java.vm index 42f93dc2..e0f8a86b 100644 --- a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/controller/Controller.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/controller/Controller.java.vm @@ -3,14 +3,14 @@ package ${packageName}; #foreach ($importClass in $importPackageList) $importClass #end -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.domain.PageResult; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.PageResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; import javax.validation.Valid; /** @@ -22,26 +22,26 @@ import javax.validation.Valid; */ @RestController -@Api(tags = "") +@Tag(name = "") public class ${name.upperCamel}Controller { - @Autowired + @Resource private ${name.upperCamel}Service ${name.lowerCamel}Service; - @ApiOperation("分页查询 @author ${basic.backendAuthor}") + @Operation(summary = "分页查询 @author ${basic.backendAuthor}") @PostMapping("/${name.lowerCamel}/queryPage") public ResponseDTO> queryPage(@RequestBody @Valid ${name.upperCamel}QueryForm queryForm) { return ResponseDTO.ok(${name.lowerCamel}Service.queryPage(queryForm)); } #if($insertAndUpdate.isSupportInsertAndUpdate) - @ApiOperation("添加 @author ${basic.backendAuthor}") + @Operation(summary = "添加 @author ${basic.backendAuthor}") @PostMapping("/${name.lowerCamel}/add") public ResponseDTO add(@RequestBody @Valid ${name.upperCamel}AddForm addForm) { return ${name.lowerCamel}Service.add(addForm); } - @ApiOperation("更新 @author ${basic.backendAuthor}") + @Operation(summary = "更新 @author ${basic.backendAuthor}") @PostMapping("/${name.lowerCamel}/update") public ResponseDTO update(@RequestBody @Valid ${name.upperCamel}UpdateForm updateForm) { return ${name.lowerCamel}Service.update(updateForm); @@ -50,7 +50,7 @@ public class ${name.upperCamel}Controller { #if($deleteInfo.isSupportDelete) #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") - @ApiOperation("批量删除 @author ${basic.backendAuthor}") + @Operation(summary = "批量删除 @author ${basic.backendAuthor}") @PostMapping("/${name.lowerCamel}/batchDelete") public ResponseDTO batchDelete(@RequestBody ValidateList<${primaryKeyJavaType}> idList) { return ${name.lowerCamel}Service.batchDelete(idList); @@ -58,7 +58,7 @@ public class ${name.upperCamel}Controller { #end #if($deleteInfo.deleteEnum == "Single" || $deleteInfo.deleteEnum == "SingleAndBatch") - @ApiOperation("单个删除 @author ${basic.backendAuthor}") + @Operation(summary = "单个删除 @author ${basic.backendAuthor}") @GetMapping("/${name.lowerCamel}/delete/{${name.lowerCamel}Id}") public ResponseDTO batchDelete(@PathVariable ${primaryKeyJavaType} ${primaryKeyFieldName}) { return ${name.lowerCamel}Service.delete(${name.lowerCamel}Id); diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/dao/Dao.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm similarity index 90% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/dao/Dao.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm index a5783df5..b14411a9 100644 --- a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/dao/Dao.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm @@ -37,13 +37,13 @@ public interface ${name.upperCamel}Dao extends BaseMapper<${name.upperCamel}Enti /** * 更新删除状态 */ - long updateDeleted(@Param("${primaryKeyFieldName}")${primaryKeyJavaType} ${primaryKeyFieldName},@Param("deletedFlag")boolean deletedFlag); + long updateDeleted(@Param("${primaryKeyFieldName}")${primaryKeyJavaType} ${primaryKeyFieldName},@Param("${deletedFlag}")boolean deletedFlag); #end #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") /** * 批量更新删除状态 */ - void batchUpdateDeleted(@Param("idList")List<${primaryKeyJavaType}> idList,@Param("deletedFlag")boolean deletedFlag); + void batchUpdateDeleted(@Param("idList")List<${primaryKeyJavaType}> idList,@Param("${deletedFlag}")boolean deletedFlag); #end #end #end diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm similarity index 100% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/form/AddForm.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/AddForm.java.vm similarity index 100% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/form/AddForm.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/AddForm.java.vm diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm similarity index 94% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm index ed672d95..ba764981 100644 --- a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/QueryForm.java.vm @@ -1,6 +1,6 @@ package ${packageName}; -import net.lab1024.sa.common.common.domain.PageParam; +import net.lab1024.sa.base.common.domain.PageParam; #foreach ($importClass in $importPackageList) $importClass #end diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/form/UpdateForm.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/UpdateForm.java.vm similarity index 87% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/form/UpdateForm.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/UpdateForm.java.vm index b97d53d3..15cbe9a5 100644 --- a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/form/UpdateForm.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/form/UpdateForm.java.vm @@ -13,7 +13,7 @@ $importClass */ @Data -public class ${name.upperCamel}UpdateForm extends ${name.upperCamel}AddForm{ +public class ${name.upperCamel}UpdateForm { #foreach ($field in $fields) #if($field.isEnum) diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm similarity index 100% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/manager/Manager.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/manager/Manager.java.vm similarity index 100% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/manager/Manager.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/manager/Manager.java.vm diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/mapper/Mapper.xml.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/mapper/Mapper.xml.vm similarity index 100% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/mapper/Mapper.xml.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/mapper/Mapper.xml.vm diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/service/Service.java.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm similarity index 91% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/java/service/Service.java.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm index 02f43a19..c3f01077 100644 --- a/smart-admin-api/sa-common/src/main/resources/code-generator-template/java/service/Service.java.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm @@ -3,14 +3,13 @@ package ${packageName}; #foreach ($importClass in $importPackageList) $importClass #end -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.domain.PageResult; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.common.util.SmartPageUtil; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.PageResult; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; /** * ${basic.description} Service @@ -23,7 +22,7 @@ import org.springframework.stereotype.Service; @Service public class ${name.upperCamel}Service { - @Autowired + @Resource private ${name.upperCamel}Dao ${name.lowerCamel}Dao; /** diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/js/api.js.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/api.js.vm similarity index 100% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/js/api.js.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/js/api.js.vm diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/js/const.js.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/const.js.vm similarity index 100% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/js/const.js.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/js/const.js.vm diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/js/form.vue.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/form.vue.vm similarity index 100% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/js/form.vue.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/js/form.vue.vm diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/js/list.vue.vm b/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/list.vue.vm similarity index 98% rename from smart-admin-api/sa-common/src/main/resources/code-generator-template/js/list.vue.vm rename to smart-admin-api/sa-base/src/main/resources/code-generator-template/js/list.vue.vm index 83a7d762..0e3163d6 100644 --- a/smart-admin-api/sa-common/src/main/resources/code-generator-template/js/list.vue.vm +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/js/list.vue.vm @@ -64,7 +64,7 @@
#if($insertAndUpdate.isSupportInsertAndUpdate) - + @@ -245,7 +245,7 @@ function onDelete(data){ Modal.confirm({ title: '提示', - content: '确定要删除吗?', + content: '确定要删除选吗?', okText: '删除', okType: 'danger', onOk() { @@ -260,6 +260,9 @@ async function requestDelete(data){ SmartLoading.show(); try { + let deleteForm = { + goodsIdList: selectedRowKeyList.value, + }; await $!{name.lowerCamel}Api.delete(data.$!{primaryKeyFieldName}); message.success('删除成功'); queryData(); diff --git a/smart-admin-api/sa-base/src/main/resources/code-generator-template/tools.xml b/smart-admin-api/sa-base/src/main/resources/code-generator-template/tools.xml new file mode 100644 index 00000000..bcfc8fe6 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/resources/code-generator-template/tools.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/smart-admin-api/sa-base/src/main/resources/dev/sa-base.yaml b/smart-admin-api/sa-base/src/main/resources/dev/sa-base.yaml new file mode 100644 index 00000000..a3c1008b --- /dev/null +++ b/smart-admin-api/sa-base/src/main/resources/dev/sa-base.yaml @@ -0,0 +1,145 @@ +spring: + # 数据库连接信息 + datasource: + url: jdbc:p6spy:mysql://127.0.0.1:3306/smart_admin_v3?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai + username: root + password: Java@1024 + initial-size: 2 + min-idle: 2 + max-active: 10 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + driver-class-name: com.p6spy.engine.spy.P6SpyDriver + filters: stat + druid: + username: druid + password: 1024 + login: + enabled: false + method: + pointcut: net.lab1024.sa..*Service.* + + # redis 连接池配置信息 + redis: + database: 1 + host: 127.0.0.1 + port: 6379 + password: + timeout: 10000ms + lettuce: + pool: + max-active: 5 + min-idle: 1 + max-idle: 3 + max-wait: 30000ms + + # 上传文件大小配置 + servlet: + multipart: + max-file-size: 30MB + max-request-size: 30MB + + # json序列化相关配置 + jackson: + serialization: + write-enums-using-to-string: true + write-dates-as-timestamps: false + deserialization: + read-enums-using-to-string: true + fail-on-unknown-properties: false + default-property-inclusion: always + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + # 缓存实现类型 + cache: + type: caffeine + +# tomcat 配置,主要用于 配置 访问日志(便于将来排查错误) +server: + tomcat: + basedir: ${project.log-directory}/tomcat-logs + accesslog: + enabled: true + pattern: "%t %{X-Forwarded-For}i %a %r %s (%D ms) %I (%B byte)" + + +# 文件上传 配置 +file: + storage: + mode: local + local: + upload-path: /home/smart_admin_v3/upload/ #文件上传目录 + url-prefix: + cloud: + region: oss-cn-qingdao + endpoint: oss-cn-qingdao.aliyuncs.com + bucket-name: common + access-key: + secret-key: + url-prefix: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/ + private-url-expire-seconds: 3600 + + +# open api配置 +springdoc: + swagger-ui: + enabled: true # 开关 + doc-expansion: none #关闭展开 + tags-sorter: alpha + api-docs: + enabled: true # 开关 +knife4j: + enable: true + basic: + enable: true + username: api # Basic认证用户名 + password: 1024 # Basic认证密码 + +# RestTemplate 请求配置 +http: + pool: + max-total: 20 + connect-timeout: 50000 + read-timeout: 50000 + write-timeout: 50000 + keep-alive: 300000 + +# 跨域配置 +access-control-allow-origin: '*' + +# 心跳配置 +heart-beat: + interval-seconds: 300 + +# 热加载配置 +reload: + interval-seconds: 300 + +# sa-token 配置 +sa-token: + # token 名称(同时也是 cookie 名称) + token-name: x-access-token + # token 前缀 例如:Bear + token-prefix: + # token 有效期(单位:秒) 默认30天(2592000秒),-1 代表永久有效 + timeout: 2592000 + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: -1 + # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) + is-concurrent: false + # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)(jwt模式下恒false) + is-share: false + # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)(jwt模式下无用) + token-style: simple-uuid + # 是否打开自动续签 (如果此值为true,框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) + auto-renew: true + # 是否输出操作日志 + is-log: true + # 日志等级(trace、debug、info、warn、error、fatal) + log-level: debug + # 启动时的字符画打印 + is-print: false + # 是否从cookie读取token + is-read-cookie: false \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/resources/ip2region.xdb b/smart-admin-api/sa-base/src/main/resources/ip2region.xdb new file mode 100644 index 00000000..9f6502bb Binary files /dev/null and b/smart-admin-api/sa-base/src/main/resources/ip2region.xdb differ diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/ChangeLogMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/ChangeLogMapper.xml similarity index 85% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/ChangeLogMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/ChangeLogMapper.xml index 7f5b7dbf..09136785 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/ChangeLogMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/ChangeLogMapper.xml @@ -1,9 +1,9 @@ - + - SELECT * FROM t_change_log @@ -39,7 +39,7 @@ diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/CodeGeneratorMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/CodeGeneratorMapper.xml similarity index 80% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/CodeGeneratorMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/CodeGeneratorMapper.xml index 4376face..6d416d7c 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/CodeGeneratorMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/CodeGeneratorMapper.xml @@ -1,6 +1,6 @@ - + + - SELECT * FROM t_config WHERE config_key = #{key} diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/DataTracerMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/DataTracerMapper.xml similarity index 75% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/DataTracerMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/DataTracerMapper.xml index 546e62a5..a7139359 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/DataTracerMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/DataTracerMapper.xml @@ -1,16 +1,16 @@ - + - SELECT * FROM t_data_tracer diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/DictKeyMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml similarity index 76% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/DictKeyMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml index 619269bb..7e98acf9 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/DictKeyMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml @@ -1,6 +1,6 @@ - + update t_dict_key set deleted_flag = #{deletedFlag} where dict_key_id in @@ -9,7 +9,7 @@ - SELECT * FROM t_dict_key @@ -25,12 +25,12 @@ diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/DictValueMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/DictValueMapper.xml similarity index 76% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/DictValueMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/DictValueMapper.xml index 6f0fbc15..f0bc3faf 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/DictValueMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/DictValueMapper.xml @@ -1,6 +1,6 @@ - + update t_dict_value set deleted_flag = #{deletedFlag} where dict_value_id in @@ -9,7 +9,7 @@ - SELECT * FROM t_dict_value @@ -28,16 +28,16 @@ diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/FeedbackMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml similarity index 83% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/FeedbackMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml index 740037a2..db34a5ed 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/FeedbackMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml @@ -1,8 +1,8 @@ - + - select * from t_feedback diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/FileMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/FileMapper.xml similarity index 75% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/FileMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/FileMapper.xml index 405f79f8..e3cdad76 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/FileMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/FileMapper.xml @@ -1,10 +1,10 @@ - + - SELECT * FROM t_file @@ -42,8 +42,16 @@ - SELECT * FROM t_file where file_key = #{fileKey} + + + \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/HeartBeatRecordMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/HeartBeatRecordMapper.xml similarity index 79% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/HeartBeatRecordMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/HeartBeatRecordMapper.xml index e37f08ab..ce7100e7 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/HeartBeatRecordMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/HeartBeatRecordMapper.xml @@ -1,6 +1,6 @@ - + @@ -11,11 +11,11 @@ - select * from t_heart_beat_record where project_path = #{projectPath} and server_ip = #{serverIp} and process_no =#{processNo} - SELECT * FROM diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/HelpDocDao.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/HelpDocDao.xml similarity index 88% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/HelpDocDao.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/HelpDocDao.xml index 6bbbf5e3..b55e7e21 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/HelpDocDao.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/HelpDocDao.xml @@ -1,17 +1,17 @@ - + - SELECT t_help_doc.*, t_help_doc_catalog.name as helpDocCatalogName FROM t_help_doc left join t_help_doc_catalog on t_help_doc_catalog.help_doc_catalog_id = t_help_doc.help_doc_catalog_id - SELECT t_help_doc.* , t_help_doc_catalog.name as helpDocCatalogName @@ -48,14 +48,14 @@ + resultType="net.lab1024.sa.base.module.support.helpdoc.domain.vo.HelpDocRelationVO"> select * from t_help_doc_relation where help_doc_id = #{helpDocId} @@ -106,7 +106,7 @@ and user_id = #{userId} + SELECT + * + FROM t_login_fail + + + + AND INSTR(t_login_fail.login_name,#{queryForm.loginName}) + + + + AND t_login_fail.lock_flag = #{queryForm.lockFlag} + + + + AND DATE_FORMAT(t_login_fail.login_lock_begin_time, '%Y-%m-%d') >= #{queryForm.loginLockBeginTimeBegin} + + + AND DATE_FORMAT(t_login_fail.login_lock_begin_time, '%Y-%m-%d') <= #{queryForm.loginLockBeginTimeEnd} + + + order by t_login_fail.update_time desc + + + + + + + delete + from t_login_fail + where user_id = #{userId} + and user_type = #{userType} + + + + \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/LoginLogMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/LoginLogMapper.xml similarity index 78% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/LoginLogMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/LoginLogMapper.xml index 6126a290..f544fd4a 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/LoginLogMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/LoginLogMapper.xml @@ -1,8 +1,8 @@ - + - select * from t_login_log @@ -23,7 +23,7 @@ order by create_time desc - select * from t_login_log diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/OperateLogMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/OperateLogMapper.xml similarity index 79% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/OperateLogMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/OperateLogMapper.xml index e432a896..42a9c9c1 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/OperateLogMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/OperateLogMapper.xml @@ -1,8 +1,8 @@ - + - select * from t_operate_log @@ -23,10 +23,6 @@ order by create_time desc - - delete from t_operate_log where id = #{id} - - delete from t_operate_log where id in diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/ReloadItemMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/ReloadItemMapper.xml similarity index 60% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/ReloadItemMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/ReloadItemMapper.xml index 85b6ffb4..40fea4c0 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/ReloadItemMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/ReloadItemMapper.xml @@ -1,9 +1,9 @@ - + - SELECT tag,args,identification,update_time,create_time FROM t_reload_item diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/ReloadResultMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/ReloadResultMapper.xml similarity index 64% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/ReloadResultMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/ReloadResultMapper.xml index a1f96b83..99a4fb9e 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/ReloadResultMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/ReloadResultMapper.xml @@ -1,9 +1,9 @@ - + - SELECT tag, identification, args, result, exception, create_time FROM t_reload_result where tag = #{tag} order by create_time desc diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/SerialNumberMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/SerialNumberMapper.xml similarity index 71% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/SerialNumberMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/SerialNumberMapper.xml index 3afd34a3..eba23eda 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/SerialNumberMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/SerialNumberMapper.xml @@ -1,6 +1,6 @@ - + update t_serial_number @@ -13,7 +13,7 @@ - select * from t_serial_number where serial_number_id = #{serialNumberId} for update diff --git a/smart-admin-api/sa-common/src/main/resources/mapper/support/SerialNumberRecordMapper.xml b/smart-admin-api/sa-base/src/main/resources/mapper/support/SerialNumberRecordMapper.xml similarity index 81% rename from smart-admin-api/sa-common/src/main/resources/mapper/support/SerialNumberRecordMapper.xml rename to smart-admin-api/sa-base/src/main/resources/mapper/support/SerialNumberRecordMapper.xml index f13636aa..b59fc53f 100644 --- a/smart-admin-api/sa-common/src/main/resources/mapper/support/SerialNumberRecordMapper.xml +++ b/smart-admin-api/sa-base/src/main/resources/mapper/support/SerialNumberRecordMapper.xml @@ -1,6 +1,6 @@ - + update t_serial_number_record @@ -23,7 +23,7 @@ + resultType="net.lab1024.sa.base.module.support.table.domain.TableColumnEntity"> select * from t_table_column where user_id = #{userId} diff --git a/smart-admin-api/sa-base/src/main/resources/pre/sa-base.yaml b/smart-admin-api/sa-base/src/main/resources/pre/sa-base.yaml new file mode 100644 index 00000000..4542a65f --- /dev/null +++ b/smart-admin-api/sa-base/src/main/resources/pre/sa-base.yaml @@ -0,0 +1,145 @@ +spring: + # 数据库连接信息 + datasource: + url: jdbc:mysql://127.0.0.1:3306/smart_admin_v3?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai + username: root + password: Zhuoda#1024lab + initial-size: 5 + min-idle: 5 + max-active: 20 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + driver-class-name: com.mysql.cj.jdbc.Driver + filters: stat + druid: + username: druid + password: 1024lab + login: + enabled: false + method: + pointcut: net.lab1024.sa..*Service.* + + # redis 连接池配置信息 + redis: + database: 1 + host: 127.0.0.1 + port: 6379 + password: + timeout: 10000ms + lettuce: + pool: + max-active: 50 + min-idle: 5 + max-idle: 5 + max-wait: 30000ms + + # 上传文件大小配置 + servlet: + multipart: + max-file-size: 30MB + max-request-size: 30MB + + # json序列化相关配置 + jackson: + serialization: + write-enums-using-to-string: true + write-dates-as-timestamps: false + deserialization: + read-enums-using-to-string: true + fail-on-unknown-properties: false + default-property-inclusion: always + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + # 缓存实现类型 + cache: + type: caffeine + +# tomcat 配置,主要用于 配置 访问日志(便于将来排查错误) +server: + tomcat: + basedir: ${project.log-directory}/tomcat-logs + accesslog: + enabled: true + pattern: "%t %{X-Forwarded-For}i %a %r %s (%D ms) %I (%B byte)" + + +# 文件上传 配置 +file: + storage: + mode: local + local: + upload-path: /home/smart_admin_v3/upload/ #文件上传目录 + url-prefix: + cloud: + region: oss-cn-qingdao + endpoint: oss-cn-qingdao.aliyuncs.com + bucket-name: common + access-key: + secret-key: + url-prefix: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/ + private-url-expire-seconds: 3600 + + +# open api配置 +springdoc: + swagger-ui: + enabled: true # 开关 + doc-expansion: none #关闭展开 + tags-sorter: alpha + api-docs: + enabled: true # 开关 +knife4j: + enable: true + basic: + enable: true + username: api # Basic认证用户名 + password: 1024 # Basic认证密码 + +# RestTemplate 请求配置 +http: + pool: + max-total: 20 + connect-timeout: 50000 + read-timeout: 50000 + write-timeout: 50000 + keep-alive: 300000 + +# 跨域配置 +access-control-allow-origin: '*' + +# 心跳配置 +heart-beat: + interval-seconds: 60 + +# 热加载配置 +reload: + interval-seconds: 60 + +# sa-token 配置 +sa-token: + # token 名称(同时也是 cookie 名称) + token-name: x-access-token + # token 前缀 例如:Bear + token-prefix: + # token 有效期(单位:秒) 默认30天(2592000秒),-1 代表永久有效 + timeout: 2592000 + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: -1 + # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) + is-concurrent: false + # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)(jwt模式下恒false) + is-share: false + # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)(jwt模式下无用) + token-style: simple-uuid + # 是否打开自动续签 (如果此值为true,框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) + auto-renew: true + # 是否输出操作日志 + is-log: false + # 日志等级(trace、debug、info、warn、error、fatal) + log-level: warn + # 启动时的字符画打印 + is-print: false + # 是否从cookie读取token + is-read-cookie: false \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/resources/prod/sa-base.yaml b/smart-admin-api/sa-base/src/main/resources/prod/sa-base.yaml new file mode 100644 index 00000000..811a2982 --- /dev/null +++ b/smart-admin-api/sa-base/src/main/resources/prod/sa-base.yaml @@ -0,0 +1,145 @@ +spring: + # 数据库连接信息 + datasource: + url: jdbc:mysql://127.0.0.1:3306/smart_admin_v3?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai + username: root + password: Zhuoda#1024lab + initial-size: 10 + min-idle: 10 + max-active: 100 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + driver-class-name: com.mysql.cj.jdbc.Driver + filters: stat + druid: + username: druid + password: 1024lab + login: + enabled: false + method: + pointcut: net.lab1024.sa..*Service.* + + # redis 连接池配置信息 + redis: + database: 1 + host: 127.0.0.1 + port: 6379 + password: + timeout: 10000ms + lettuce: + pool: + max-active: 100 + min-idle: 10 + max-idle: 50 + max-wait: 30000ms + + # 上传文件大小配置 + servlet: + multipart: + max-file-size: 30MB + max-request-size: 30MB + + # json序列化相关配置 + jackson: + serialization: + write-enums-using-to-string: true + write-dates-as-timestamps: false + deserialization: + read-enums-using-to-string: true + fail-on-unknown-properties: false + default-property-inclusion: always + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + # 缓存实现类型 + cache: + type: caffeine + +# tomcat 配置,主要用于 配置 访问日志(便于将来排查错误) +server: + tomcat: + basedir: ${project.log-directory}/tomcat-logs + accesslog: + enabled: true + pattern: "%t %{X-Forwarded-For}i %a %r %s (%D ms) %I (%B byte)" + + +# 文件上传 配置 +file: + storage: + mode: local + local: + upload-path: /home/smart_admin_v3/upload/ #文件上传目录 + url-prefix: + cloud: + region: oss-cn-qingdao + endpoint: oss-cn-qingdao.aliyuncs.com + bucket-name: common + access-key: + secret-key: + url-prefix: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/ + private-url-expire-seconds: 3600 + + +# open api配置 +springdoc: + swagger-ui: + enabled: true # 开关 + doc-expansion: none #关闭展开 + tags-sorter: alpha + api-docs: + enabled: true # 开关 +knife4j: + enable: true + basic: + enable: true + username: api # Basic认证用户名 + password: 1024 # Basic认证密码 + +# RestTemplate 请求配置 +http: + pool: + max-total: 100 + connect-timeout: 50000 + read-timeout: 50000 + write-timeout: 50000 + keep-alive: 300000 + +# 跨域配置 +access-control-allow-origin: 'smartadmin.vip' + +# 心跳配置 +heart-beat: + interval-seconds: 60 + +# 热加载配置 +reload: + interval-seconds: 60 + +# sa-token 配置 +sa-token: + # token 名称(同时也是 cookie 名称) + token-name: x-access-token + # token 前缀 例如:Bear + token-prefix: + # token 有效期(单位:秒) 默认30天(2592000秒),-1 代表永久有效 + timeout: 2592000 + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: -1 + # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) + is-concurrent: false + # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)(jwt模式下恒false) + is-share: false + # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)(jwt模式下无用) + token-style: simple-uuid + # 是否打开自动续签 (如果此值为true,框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) + auto-renew: true + # 是否输出操作日志 + is-log: false + # 日志等级(trace、debug、info、warn、error、fatal) + log-level: warn + # 启动时的字符画打印 + is-print: false + # 是否从cookie读取token + is-read-cookie: false \ No newline at end of file diff --git a/smart-admin-api/sa-base/src/main/resources/test/sa-base.yaml b/smart-admin-api/sa-base/src/main/resources/test/sa-base.yaml new file mode 100644 index 00000000..a3c1008b --- /dev/null +++ b/smart-admin-api/sa-base/src/main/resources/test/sa-base.yaml @@ -0,0 +1,145 @@ +spring: + # 数据库连接信息 + datasource: + url: jdbc:p6spy:mysql://127.0.0.1:3306/smart_admin_v3?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai + username: root + password: Java@1024 + initial-size: 2 + min-idle: 2 + max-active: 10 + max-wait: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + driver-class-name: com.p6spy.engine.spy.P6SpyDriver + filters: stat + druid: + username: druid + password: 1024 + login: + enabled: false + method: + pointcut: net.lab1024.sa..*Service.* + + # redis 连接池配置信息 + redis: + database: 1 + host: 127.0.0.1 + port: 6379 + password: + timeout: 10000ms + lettuce: + pool: + max-active: 5 + min-idle: 1 + max-idle: 3 + max-wait: 30000ms + + # 上传文件大小配置 + servlet: + multipart: + max-file-size: 30MB + max-request-size: 30MB + + # json序列化相关配置 + jackson: + serialization: + write-enums-using-to-string: true + write-dates-as-timestamps: false + deserialization: + read-enums-using-to-string: true + fail-on-unknown-properties: false + default-property-inclusion: always + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + # 缓存实现类型 + cache: + type: caffeine + +# tomcat 配置,主要用于 配置 访问日志(便于将来排查错误) +server: + tomcat: + basedir: ${project.log-directory}/tomcat-logs + accesslog: + enabled: true + pattern: "%t %{X-Forwarded-For}i %a %r %s (%D ms) %I (%B byte)" + + +# 文件上传 配置 +file: + storage: + mode: local + local: + upload-path: /home/smart_admin_v3/upload/ #文件上传目录 + url-prefix: + cloud: + region: oss-cn-qingdao + endpoint: oss-cn-qingdao.aliyuncs.com + bucket-name: common + access-key: + secret-key: + url-prefix: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/ + private-url-expire-seconds: 3600 + + +# open api配置 +springdoc: + swagger-ui: + enabled: true # 开关 + doc-expansion: none #关闭展开 + tags-sorter: alpha + api-docs: + enabled: true # 开关 +knife4j: + enable: true + basic: + enable: true + username: api # Basic认证用户名 + password: 1024 # Basic认证密码 + +# RestTemplate 请求配置 +http: + pool: + max-total: 20 + connect-timeout: 50000 + read-timeout: 50000 + write-timeout: 50000 + keep-alive: 300000 + +# 跨域配置 +access-control-allow-origin: '*' + +# 心跳配置 +heart-beat: + interval-seconds: 300 + +# 热加载配置 +reload: + interval-seconds: 300 + +# sa-token 配置 +sa-token: + # token 名称(同时也是 cookie 名称) + token-name: x-access-token + # token 前缀 例如:Bear + token-prefix: + # token 有效期(单位:秒) 默认30天(2592000秒),-1 代表永久有效 + timeout: 2592000 + # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结 + active-timeout: -1 + # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录) + is-concurrent: false + # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)(jwt模式下恒false) + is-share: false + # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)(jwt模式下无用) + token-style: simple-uuid + # 是否打开自动续签 (如果此值为true,框架会在每次直接或间接调用 getLoginId() 时进行一次过期检查与续签操作) + auto-renew: true + # 是否输出操作日志 + is-log: true + # 日志等级(trace、debug、info、warn、error、fatal) + log-level: debug + # 启动时的字符画打印 + is-print: false + # 是否从cookie读取token + is-read-cookie: false \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/annoation/SaAuth.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/annoation/SaAuth.java deleted file mode 100644 index 4d44a2f7..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/annoation/SaAuth.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.lab1024.sa.common.common.annoation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 校验权限注解 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022-05-30 21:22:12 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface SaAuth { - - String saAuth = "saAuth"; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/excel/ExcelStyle.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/excel/ExcelStyle.java deleted file mode 100644 index eb723497..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/excel/ExcelStyle.java +++ /dev/null @@ -1,185 +0,0 @@ -package net.lab1024.sa.common.common.excel; - -import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; -import cn.afterturn.easypoi.excel.entity.params.ExcelForEachParams; -import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler; -import org.apache.poi.ss.usermodel.*; - -/** - * excel样式 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2020/9/25 19:52 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public class ExcelStyle implements IExcelExportStyler { - private static final short STRING_FORMAT = (short) BuiltinFormats.getBuiltinFormat("TEXT"); - private static final short FONT_SIZE_TEN = 10; - private static final short FONT_SIZE_ELEVEN = 11; - private static final short FONT_SIZE_TWELVE = 12; - /** - * 大标题样式 - */ - private CellStyle headerStyle; - /** - * 每列标题样式 - */ - private CellStyle titleStyle; - /** - * 数据行样式 - */ - private CellStyle styles; - - public ExcelStyle(Workbook workbook) { - this.init(workbook); - } - - /** - * 初始化样式 - * - * @param workbook - */ - private void init(Workbook workbook) { - this.headerStyle = initHeaderStyle(workbook); - this.titleStyle = initTitleStyle(workbook); - this.styles = initStyles(workbook); - } - - /** - * 大标题样式 - * - * @param color - * @return - */ - @Override - public CellStyle getHeaderStyle(short color) { - return headerStyle; - } - - /** - * 每列标题样式 - * - * @param color - * @return - */ - @Override - public CellStyle getTitleStyle(short color) { - return titleStyle; - } - - /** - * 数据行样式 - * - * @param parity 可以用来表示奇偶行 - * @param entity 数据内容 - * @return 样式 - */ - public CellStyle getStyles(boolean parity, ExcelExportEntity entity) { - return styles; - } - - /** - * 获取样式方法 - * - * @param dataRow 数据行 - * @param obj 对象 - * @param data 数据 - */ - @Override - public CellStyle getStyles(Cell cell, int dataRow, ExcelExportEntity entity, Object obj, Object data) { - return getStyles(true, entity); - } - - /** - * 模板使用的样式设置 - */ - @Override - public CellStyle getTemplateStyles(boolean isSingle, ExcelForEachParams excelForEachParams) { - return null; - } - - /** - * 初始化--大标题样式 - * - * @param workbook - * @return - */ - private CellStyle initHeaderStyle(Workbook workbook) { - CellStyle style = getBaseCellStyle(workbook); - style.setFont(getFont(workbook, FONT_SIZE_TWELVE, true)); - return style; - } - - /** - * 初始化--每列标题样式 - * - * @param workbook - * @return - */ - private CellStyle initTitleStyle(Workbook workbook) { - CellStyle style = getBaseCellStyle(workbook); - style.setFont(getFont(workbook, FONT_SIZE_ELEVEN, false)); - //背景色 - style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - style.setFillPattern(FillPatternType.SOLID_FOREGROUND); - return style; - } - - /** - * 初始化--数据行样式 - * - * @param workbook - * @return - */ - private CellStyle initStyles(Workbook workbook) { - CellStyle style = getBaseCellStyle(workbook); - style.setFont(getFont(workbook, FONT_SIZE_TEN, false)); - style.setDataFormat(STRING_FORMAT); - style.setAlignment(HorizontalAlignment.LEFT); - return style; - } - - /** - * 基础样式 - * - * @return - */ - private CellStyle getBaseCellStyle(Workbook workbook) { - CellStyle style = workbook.createCellStyle(); - //下边框 - style.setBorderBottom(BorderStyle.THIN); - //左边框 - style.setBorderLeft(BorderStyle.THIN); - //上边框 - style.setBorderTop(BorderStyle.THIN); - //右边框 - style.setBorderRight(BorderStyle.THIN); - //水平居中 - style.setAlignment(HorizontalAlignment.CENTER); - //上下居中 - style.setVerticalAlignment(VerticalAlignment.CENTER); - //设置自动换行 - style.setWrapText(true); - return style; - } - - /** - * 字体样式 - * - * @param size 字体大小 - * @param isBold 是否加粗 - * @return - */ - private Font getFont(Workbook workbook, short size, boolean isBold) { - Font font = workbook.createFont(); - //字体样式 - font.setFontName("宋体"); - //是否加粗 - font.setBold(isBold); - //字体大小 - font.setFontHeightInPoints(size); - return font; - } -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java deleted file mode 100644 index 62f2042d..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/interceptor/AbstractInterceptor.java +++ /dev/null @@ -1,148 +0,0 @@ -package net.lab1024.sa.common.common.interceptor; - -import com.alibaba.fastjson.JSONObject; -import net.lab1024.sa.common.common.annoation.NoNeedLogin; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.constant.RequestHeaderConst; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.util.CollectionUtils; -import org.springframework.web.method.HandlerMethod; -import org.springframework.web.servlet.HandlerInterceptor; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; -import java.util.function.Function; - -/** - * 抽象拦截器 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2021-10-09 20:56:14 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public abstract class AbstractInterceptor implements HandlerInterceptor { - - @Autowired - private List ignoreUrlList; - - - /** - * Token获取用户信息 - * - * @return - */ - protected abstract Function userFunction(); - - /** - * 拦截路径 - * - * @return - */ - public abstract String[] pathPatterns(); - - /** - * 忽略的url集合 - * - * @return - */ - protected List getIgnoreUrlList() { - return ignoreUrlList; - } - - /** - * 拦截服务器端响应处理ajax请求返回结果 - * - * @param request - * @param response - * @param handler - * @return - * @throws Exception - */ - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - // OPTIONS请求直接return - if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) { - response.setStatus(HttpStatus.NO_CONTENT.value()); - return false; - } - - boolean isHandler = handler instanceof HandlerMethod; - if (!isHandler) { - return true; - } - //放行的Uri前缀 - String uri = request.getRequestURI(); - String contextPath = request.getContextPath(); - String target = uri.replaceFirst(contextPath, ""); - if (this.contain(this.getIgnoreUrlList(), target)) { - return true; - } - //不需要登录 - NoNeedLogin noNeedLogin = ((HandlerMethod) handler).getMethodAnnotation(NoNeedLogin.class); - // 检查是否包含 token - String xRequestToken = request.getParameter(RequestHeaderConst.TOKEN); - String xHeaderToken = request.getHeader(RequestHeaderConst.TOKEN); - String xAccessToken = StringUtils.isNotBlank(xRequestToken) ? xRequestToken : xHeaderToken; - // 包含token 则获取用户信息 并保存 - if (StringUtils.isNotBlank(xAccessToken)) { - RequestUser requestUser = userFunction().apply(xAccessToken); - if (requestUser != null) { - SmartRequestUtil.setRequestUser(requestUser); - } - // 有token 无需登录 - if (null != noNeedLogin) { - return true; - } - } - // 无token 无需登录 - if (null != noNeedLogin) { - return true; - } - if (StringUtils.isBlank(xAccessToken)) { - this.outputResult(response, ResponseDTO.error(UserErrorCode.LOGIN_STATE_INVALID)); - return false; - } - return true; - } - - public Boolean contain(List ignores, String uri) { - if (CollectionUtils.isEmpty(ignores)) { - return false; - } - for (String ignoreUrl : ignores) { - if (uri.startsWith(ignoreUrl)) { - return true; - } - } - return false; - } - - /** - * 错误输出 - * - * @param response - * @param responseDTO - * @throws IOException - */ - private void outputResult(HttpServletResponse response, ResponseDTO responseDTO) throws IOException { - String msg = JSONObject.toJSONString(responseDTO); - response.setContentType("application/json;charset=UTF-8"); - response.getWriter().write(msg); - response.flushBuffer(); - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - SmartRequestUtil.remove(); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/AbstractSecurityConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/AbstractSecurityConfig.java deleted file mode 100644 index 30fc239b..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/AbstractSecurityConfig.java +++ /dev/null @@ -1,93 +0,0 @@ -package net.lab1024.sa.common.common.security; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; -import org.springframework.web.filter.CorsFilter; - -import javax.servlet.http.HttpServletRequest; -import java.util.List; -import java.util.function.BiFunction; -import java.util.function.Function; - -/** - * Spring Security - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2021/8/3 17:50 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public abstract class AbstractSecurityConfig extends WebSecurityConfigurerAdapter { - @Autowired - private CorsFilter corsFilter; - - @Autowired - private List noNeedLoginUrlList; - - @Autowired - private List ignoreUrlList; - - /** - * Token获取用户信息 - * - * @return - */ - protected abstract BiFunction userFunction(); - - /** - * 需要认证的url集合 - * - * @return - */ - protected abstract String[] getAuthenticatedUrlPatterns(); - - /** - * 不需要登录的url集合 - * - * @return - */ - protected String[] getNoNeedLoginUrl() { - return noNeedLoginUrlList.toArray(new String[noNeedLoginUrlList.size()]); - } - - /** - * 忽略的url集合 - * - * @return - */ - protected String[] getIgnoreUrlList() { - return ignoreUrlList.toArray(new String[ignoreUrlList.size()]); - } - - @Override - protected void configure(HttpSecurity httpSecurity) throws Exception { - httpSecurity - // CSRF禁用,因为不使用session - .csrf().disable() - // 认证失败处理类 - .exceptionHandling().authenticationEntryPoint(new SecurityAuthenticationFailHandler()).and() - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() - // 过滤请求 - .authorizeRequests() - //忽略的url - .antMatchers(this.getIgnoreUrlList()).permitAll() - // 不需要登陆的url - .antMatchers(this.getNoNeedLoginUrl()).permitAll() - //需要校验权限的url - .antMatchers(getAuthenticatedUrlPatterns()).authenticated(); - - // token filter 进行校验 - httpSecurity.addFilterBefore(new SecurityTokenFilter(this.userFunction()), UsernamePasswordAuthenticationFilter.class); - httpSecurity.addFilterBefore(corsFilter, SecurityTokenFilter.class); - // 禁用spring security 使用 X-Frame-Options防止网页被Frame - httpSecurity.headers().frameOptions().disable(); - - } - - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityAuthenticationFailHandler.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityAuthenticationFailHandler.java deleted file mode 100644 index 3e146f18..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityAuthenticationFailHandler.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.lab1024.sa.common.common.security; - -import com.alibaba.fastjson.JSONObject; -import net.lab1024.sa.common.common.code.ErrorCode; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.web.AuthenticationEntryPoint; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -/** - * 登录认证失败处理 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022-08-26 20:21:10 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public class SecurityAuthenticationFailHandler implements AuthenticationEntryPoint { - - @Override - public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException { - this.outputResult(response, UserErrorCode.LOGIN_STATE_INVALID); - } - - /** - * 输出 - * - * @param response - * @param errorCode - * @throws IOException - */ - private void outputResult(HttpServletResponse response, ErrorCode errorCode) throws IOException { - String msg = JSONObject.toJSONString(ResponseDTO.error(errorCode)); - response.setContentType("application/json;charset=UTF-8"); - response.getWriter().write(msg); - response.flushBuffer(); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityMethodSource.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityMethodSource.java deleted file mode 100644 index 290b3d9c..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityMethodSource.java +++ /dev/null @@ -1,66 +0,0 @@ -package net.lab1024.sa.common.common.security; - -import net.lab1024.sa.common.common.annoation.SaAuth; -import org.apache.commons.lang3.StringUtils; -import org.springframework.security.access.ConfigAttribute; -import org.springframework.security.access.prepost.PreInvocationAttribute; -import org.springframework.security.access.prepost.PrePostAnnotationSecurityMetadataSource; -import org.springframework.security.access.prepost.PrePostInvocationAttributeFactory; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Collection; - -/** - * 此类用于默认给所有接口添加权限 @saAuth.checkPermission('%s') - * %s 为类名.方法名 - * 和使用@PreAuthorize("@saAuth.checkPermission('%s')") 效果一致 - * 避免所有接口都添加一遍 减轻工作量 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2021-08-30 23:08 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public class SecurityMethodSource extends PrePostAnnotationSecurityMetadataSource { - - - private static String EXPRESSION_FORMAT = "@%s.checkPermission('%s')"; - - private final PrePostInvocationAttributeFactory attributeFactory; - - private String beanName; - - - public SecurityMethodSource(PrePostInvocationAttributeFactory attributeFactory, String beanName) { - super(attributeFactory); - this.attributeFactory = attributeFactory; - this.beanName = beanName; - } - - - @Override - public Collection getAttributes(Method method, Class targetClass) { - //如果不存在SaAuth采用security认证模式 - SaAuth saAuth = method.getAnnotation(SaAuth.class); - if (saAuth == null) { - return super.getAttributes(method, targetClass); - } - - //存在添加以URL为权限字符串的校验模式 - ArrayList configAttributes = new ArrayList(1); - String classFullName = targetClass.getName(); - String methodName = method.getName(); - String[] classNameArray = StringUtils.split(classFullName, "\\."); - String controllerName = classNameArray[classNameArray.length - 1]; - String privilegeName = controllerName + "." + methodName; - String preAuthorizeAttribute = String.format(EXPRESSION_FORMAT, beanName, privilegeName); - PreInvocationAttribute pre = this.attributeFactory.createPreInvocationAttribute(null, null, preAuthorizeAttribute); - if (pre != null) { - configAttributes.add(pre); - } - return configAttributes; - } - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityPermissionCheckService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityPermissionCheckService.java deleted file mode 100644 index 29e46559..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityPermissionCheckService.java +++ /dev/null @@ -1,74 +0,0 @@ -package net.lab1024.sa.common.common.security; - -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.userdetails.UserDetails; - -import java.util.Arrays; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * 校验权限 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/12 21:50 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public abstract class SecurityPermissionCheckService { - - - /** - * 校验是否有权限 - * - * @param permission - * @return - */ - public boolean checkPermission(String permission) { - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - if (authentication == null) { - return false; - } - return checkPermission(authentication, permission); - } - - /** - * 校验是否有权限 - * - * @param authentication - * @param permission - * @return - */ - public abstract boolean checkPermission(Authentication authentication, String permission); - - /** - * 判断 - * - * @param userDetails - * @param permissionStr - * @return - */ - protected boolean permissionJudge(UserDetails userDetails, String permissionStr) { - if (CollectionUtils.isEmpty(userDetails.getAuthorities())) { - return false; - } - - if (StringUtils.isBlank(permissionStr)) { - return false; - } - - String[] permissionArray = permissionStr.split(","); - for (String permission : permissionArray) { - if(userDetails.getAuthorities().contains(new SimpleGrantedAuthority(permission))){ - return true; - } - } - return false; - } -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityTokenFilter.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityTokenFilter.java deleted file mode 100644 index 1a2ef97e..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/security/SecurityTokenFilter.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.lab1024.sa.common.common.security; - -import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.constant.RequestHeaderConst; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import org.apache.commons.lang3.StringUtils; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; -import org.springframework.web.filter.OncePerRequestFilter; - -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.function.BiFunction; -import java.util.function.Function; - -/** - * 注意此处不能 加入@Component,否则对应ignoreUrl的相关请求 将会进入此Filter,并会覆盖CorsFilter - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/12 21:50 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Slf4j -public class SecurityTokenFilter extends OncePerRequestFilter { - - private BiFunction userFunction; - - public SecurityTokenFilter(BiFunction userFunction) { - this.userFunction = userFunction; - } - - @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) - throws ServletException, IOException { - //需要做token校验, 消息头的token优先于请求query参数的token - String xHeaderToken = request.getHeader(RequestHeaderConst.TOKEN); - String xRequestToken = request.getParameter(RequestHeaderConst.TOKEN); - String xAccessToken = null != xHeaderToken ? xHeaderToken : xRequestToken; - if (StringUtils.isBlank(xAccessToken)) { - chain.doFilter(request, response); - return; - } - //清理spring security - SecurityContextHolder.clearContext(); - - UserDetails loginUserDetail = userFunction.apply(xAccessToken,request); - if (null != loginUserDetail) { - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUserDetail, null, loginUserDetail.getAuthorities()); - authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); - SecurityContextHolder.getContext().setAuthentication(authenticationToken); - SmartRequestUtil.setRequestUser((RequestUser) loginUserDetail); - } - // 若未给予spring security上下文用户授权 则会授权失败 进入AuthenticationEntryPointImpl - chain.doFilter(request, response); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/Swagger2MapperImplExtension.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/Swagger2MapperImplExtension.java deleted file mode 100644 index 6de869d9..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/Swagger2MapperImplExtension.java +++ /dev/null @@ -1,91 +0,0 @@ -package net.lab1024.sa.common.common.swagger; - -import com.google.common.collect.LinkedListMultimap; -import com.google.common.collect.Multimap; -import io.swagger.models.Operation; -import io.swagger.models.Path; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Component; -import springfox.documentation.service.ApiDescription; -import springfox.documentation.service.ApiListing; -import springfox.documentation.swagger2.mappers.ModelMapper; -import springfox.documentation.swagger2.mappers.ServiceModelToSwagger2MapperImpl; - -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.*; - -import static springfox.documentation.builders.BuilderDefaults.nullToEmptyList; - -/** - * 修改 api 顺序 - * - * @Author 1024创新实验室: 胡克 - * @Date 2021/8/11 22:05 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@ConditionalOnBean(ModelMapper.class) -@Component -@Primary -public class Swagger2MapperImplExtension extends ServiceModelToSwagger2MapperImpl { - - @Override - protected Map mapApiListings(Multimap apiListings) { - Map paths = new LinkedHashMap<>(); - Multimap apiListingMap = LinkedListMultimap.create(); - Iterator iter = apiListings.entries().iterator(); - while (iter.hasNext()) { - Map.Entry entry = (Map.Entry) iter.next(); - ApiListing apis = entry.getValue(); - List apiList = apis.getApis(); - apiList.sort((left, right) -> { - int position1 = left.getOperations().get(0).getPosition(); - int position2 = right.getOperations().get(0).getPosition(); - if (position1 == position2) { - return String.CASE_INSENSITIVE_ORDER.compare(left.getPath(), right.getPath()); - } - return Integer.compare(position1, position2); - }); - try { - // 因ApiListing的属性都是final故需要通过反射来修改值 - modify(apis, "apis", apiList); - } catch (Exception e) { - e.printStackTrace(); - } - apiListingMap.put(entry.getKey(), apis); - } - - for (ApiListing each : apiListingMap.values()) { - for (ApiDescription api : each.getApis()) { - paths.put(api.getPath(), mapOperations(api, Optional.ofNullable(paths.get(api.getPath())))); - } - } - return paths; - } - - private Path mapOperations(ApiDescription api, Optional existingPath) { - Path path = existingPath.orElse(new Path()); - for (springfox.documentation.service.Operation each : nullToEmptyList(api.getOperations())) { - Operation operation = mapOperation(each); - path.set(each.getMethod().toString().toLowerCase(), operation); - } - return path; - } - - public static void modify(Object object, String fieldName, Object newFieldValue) throws Exception { - Field field = object.getClass().getDeclaredField(fieldName); - - Field modifiersField = Field.class.getDeclaredField("modifiers"); - modifiersField.setAccessible(true); - modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); - - if (!field.isAccessible()) { - field.setAccessible(true); - } - - field.set(object, newFieldValue); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/SwaggerApiModelPropertyEnumPlugin.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/SwaggerApiModelPropertyEnumPlugin.java deleted file mode 100644 index ce126155..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/swagger/SwaggerApiModelPropertyEnumPlugin.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.lab1024.sa.common.common.swagger; - -import com.google.common.base.Function; -import com.google.common.base.Optional; -import net.lab1024.sa.common.common.enumeration.BaseEnum; -import org.apache.commons.lang3.StringUtils; -import org.springframework.core.annotation.AnnotationUtils; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spi.schema.ModelPropertyBuilderPlugin; -import springfox.documentation.spi.schema.contexts.ModelPropertyContext; -import springfox.documentation.swagger.common.SwaggerPluginSupport; - -import java.lang.reflect.AnnotatedElement; - -import static springfox.documentation.schema.Annotations.findPropertyAnnotation; - -/** - * swagger 用于说明枚举类字段说明 - * * SWAGGER_PLUGIN_ORDER+1 是将此配置放在原来的后面执行 - * - * @Author 1024创新实验室: 胡克 - * @Date 2019/8/11 15:36:56 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Component -@Order(SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER + 1) -public class SwaggerApiModelPropertyEnumPlugin implements ModelPropertyBuilderPlugin { - - @Override - public void apply(ModelPropertyContext context) { - Optional annotation = Optional.absent(); - - if (context.getAnnotatedElement().isPresent()) { - annotation = annotation.or(findApiModePropertyAnnotation(context.getAnnotatedElement().get())); - } - if (context.getBeanPropertyDefinition().isPresent()) { - annotation = annotation.or(findPropertyAnnotation(context.getBeanPropertyDefinition().get(), ApiModelPropertyEnum.class)); - } - - if (annotation.isPresent()) { - ApiModelPropertyEnum anEnum = annotation.get(); - String enumInfo = BaseEnum.getInfo(anEnum.value()); - context.getBuilder() - .required(annotation.transform(toIsRequired()).or(false)) - .description(anEnum.desc() + ":" + enumInfo) - .example(annotation.transform(toExample()).orNull()) - .isHidden(anEnum.hidden()); - } - } - - @Override - public boolean supports(DocumentationType delimiter) { - return SwaggerPluginSupport.pluginDoesApply(delimiter); - } - - static Function toIsRequired() { - return annotation -> annotation.required(); - } - - public static Optional findApiModePropertyAnnotation(AnnotatedElement annotated) { - return Optional.fromNullable(AnnotationUtils.getAnnotation(annotated, ApiModelPropertyEnum.class)); - } - - static Function toExample() { - return annotation -> { - String example = annotation.example(); - if (StringUtils.isBlank(example)) { - return ""; - } - return example; - }; - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartEasyPoiExcelUtil.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartEasyPoiExcelUtil.java deleted file mode 100644 index 40994422..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/common/util/SmartEasyPoiExcelUtil.java +++ /dev/null @@ -1,114 +0,0 @@ -package net.lab1024.sa.common.common.util; - -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.ExcelImportUtil; -import cn.afterturn.easypoi.excel.entity.ExportParams; -import cn.afterturn.easypoi.excel.entity.ImportParams; -import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.usermodel.Workbook; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; - -/** - * excel 工具类 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2018/01/17 13:54 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Slf4j -public class SmartEasyPoiExcelUtil { - public static void exportExcel(List list, String title, String sheetName, Class pojoClass, - String fileName, boolean isCreateHeader, HttpServletResponse response) throws IOException { - ExportParams exportParams = new ExportParams(title, sheetName); - exportParams.setCreateHeadRows(isCreateHeader); - defaultExport(list, pojoClass, fileName, response, exportParams); - } - - public static void exportExcel(List list, String title, String sheetName, Class pojoClass, String fileName, - HttpServletResponse response) throws IOException { - defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName)); - } - - public static void exportExcel(List> list, String fileName, HttpServletResponse response) throws IOException { - defaultExport(list, fileName, response); - } - - private static void defaultExport(List list, Class pojoClass, String fileName, - HttpServletResponse response, ExportParams exportParams) throws IOException { - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list); - downloadExcel(fileName, workbook, response); - } - - - public static void downloadExcel(String fileName, Workbook workbook, HttpServletResponse response) { - try { - fileName = URLEncoder.encode(fileName, "UTF-8"); - } catch (UnsupportedEncodingException e) { - log.error("", e); - } - response.setCharacterEncoding("utf-8"); - response.setHeader("Content-Type", "application/vnd.ms-excel"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); - try { - workbook.write(response.getOutputStream()); - workbook.close(); - } catch (IOException e) { - log.error("", e); - } - } - - private static void defaultExport(List> list, String fileName, HttpServletResponse response) throws IOException { - Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF); - downloadExcel(fileName, workbook, response); - } - - public static List importExcel(String filePath, Integer titleRows, Integer headerRows, Class pojoClass) { - if (StringUtils.isBlank(filePath)) { - return null; - } - ImportParams params = new ImportParams(); - params.setTitleRows(titleRows); - params.setHeadRows(headerRows); - List list = null; - try { - list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params); - } catch (NoSuchElementException e) { - //throw new NormalException("模板不能为空"); - } catch (Exception e) { - e.printStackTrace(); - } - return list; - } - - public static List importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class pojoClass) { - if (file == null) { - return null; - } - ImportParams params = new ImportParams(); - params.setTitleRows(titleRows); - params.setHeadRows(headerRows); - List list = null; - try { - list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params); - } catch (NoSuchElementException e) { - // throw new NormalException("excel文件不能为空"); - } catch (Exception e) { - //throw new NormalException(e.getMessage()); - System.out.println(e.getMessage()); - } - return list; - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/MvcConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/MvcConfig.java deleted file mode 100644 index c08339c9..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/MvcConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.lab1024.sa.common.config; - -import net.lab1024.sa.common.common.interceptor.AbstractInterceptor; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import java.util.List; - -/** - * web相关配置 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2021-09-02 20:21:10 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Configuration -public class MvcConfig implements WebMvcConfigurer { - - @Autowired(required = false) - private List interceptorList; - - @Override - public void addInterceptors (InterceptorRegistry registry) { - if (CollectionUtils.isEmpty(interceptorList)) { - return; - } - interceptorList.forEach(e->{ - registry.addInterceptor(e).addPathPatterns("/**"); - }); - } - - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("/preview/**"); - } - - @Override - public void addViewControllers(ViewControllerRegistry registry) { - registry.addViewController("/druidMonitor").setViewName("redirect:druid/index.html"); - registry.addViewController("/swaggerApi").setViewName("redirect:swagger-ui.html"); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/ReloadConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/ReloadConfig.java deleted file mode 100644 index 1c31dcec..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/ReloadConfig.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.lab1024.sa.common.config; - -import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.module.support.reload.ReloadCommand; -import net.lab1024.sa.common.module.support.reload.core.SmartReloadManager; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * reload配置 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2021/9/1 21:40 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Slf4j -@Configuration -public class ReloadConfig { - - /** - * 间隔时间 - */ - @Value("${reload.interval-seconds}") - private Integer intervalSeconds; - - @Autowired - private ReloadCommand reloadCommand; - - @Bean - public SmartReloadManager initSmartReloadManager() { - // 创建 Reload Manager 调度器 - return new SmartReloadManager(reloadCommand,intervalSeconds); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SwaggerConfig.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SwaggerConfig.java deleted file mode 100644 index 901b9246..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/config/SwaggerConfig.java +++ /dev/null @@ -1,206 +0,0 @@ -package net.lab1024.sa.common.config; - -import com.google.common.base.Optional; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.Lists; -import io.swagger.annotations.Api; -import lombok.SneakyThrows; -import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.constant.RequestHeaderConst; -import net.lab1024.sa.common.common.swagger.SwaggerApiModelPropertyEnumPlugin; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; -import org.springframework.context.EnvironmentAware; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Conditional; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.annotation.Order; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RestController; -import springfox.documentation.RequestHandler; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.ParameterBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.schema.ModelRef; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.Contact; -import springfox.documentation.service.Parameter; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger.common.SwaggerPluginSupport; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 根据SwaggerTagConst内部类动态生成Swagger group - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2020-03-25 22:54:46 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Slf4j -@EnableSwagger2 -@Configuration -@Conditional(SystemEnvironmentConfig.class) -public class SwaggerConfig implements EnvironmentAware, BeanDefinitionRegistryPostProcessor { - - /** - * 文档标题 - */ - private String title; - - /** - * 文档描述 - */ - private String description; - - /** - * api版本 - */ - private String version; - - /** - * service url - */ - private String teamUrl; - - /** - * host - */ - private String host; - - private String tagClass; - - @Bean - @Order(SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER + 1) - public SwaggerApiModelPropertyEnumPlugin swaggerEnum() { - return new SwaggerApiModelPropertyEnumPlugin(); - } - - @Override - public void setEnvironment(Environment environment) { - this.title = environment.getProperty("swagger.title"); - this.description = environment.getProperty("swagger.description"); - this.version = environment.getProperty("swagger.version"); - this.host = environment.getProperty("swagger.host"); - this.tagClass = environment.getProperty("swagger.tag-class"); - this.teamUrl = environment.getProperty("swagger.team-url"); - } - - @Override - public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) { - Map> groupMap = this.buildGroup(); - for (Map.Entry> entry : groupMap.entrySet()) { - String group = entry.getKey(); - BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(Docket.class, () -> this.baseDocket(group, entry.getValue())); - BeanDefinition beanDefinition = builder.getRawBeanDefinition(); - registry.registerBeanDefinition(group + "Api", beanDefinition); - } - } - - @SneakyThrows - private Map> buildGroup() { - Class clazz = Class.forName(tagClass); - Class[] innerClazz = clazz.getClasses(); - Map> groupMap = new HashMap<>(16); - for (Class cls : innerClazz) { - String group = cls.getSimpleName(); - List apiTags = Lists.newArrayList(); - Field[] fields = cls.getDeclaredFields(); - for (Field field : fields) { - boolean isFinal = Modifier.isFinal(field.getModifiers()); - if (isFinal) { - apiTags.add(field.get(null).toString()); - } - } - groupMap.put(group, apiTags); - } - return groupMap; - } - - private Docket baseDocket(String groupName, List apiTagList) { - // 配置全局参数 - List parameterList = this.generateParameter(); - - Docket docket = new Docket(DocumentationType.SWAGGER_2).groupName(groupName) - .forCodeGeneration(true) - .select() - // 过滤规则 - .apis(this.getControllerPredicate(apiTagList)) - // 与 过滤规则 controller 包路径 二选一 - // .apis(RequestHandlerSelectors.basePackage(packAge)) - .paths(PathSelectors.any()) - .build().apiInfo(this.apiInfo()) - .globalOperationParameters(parameterList); - if (StringUtils.isNotBlank(host)) { - docket = docket.host(host); - } - return docket; - } - - private Predicate getControllerPredicate(List apiTagList) { - Predicate methodPredicate = (input) -> { - Api api = null; - Optional apiOptional = input.findControllerAnnotation(Api.class); - if (apiOptional.isPresent()) { - api = apiOptional.get(); - } - if (api == null) { - return false; - } - List tags = Arrays.asList(api.tags()); - if (apiTagList.containsAll(tags)) { - return true; - } - return false; - }; - Predicate controllerPredicate = Predicates.or(RequestHandlerSelectors.withClassAnnotation(RestController.class), RequestHandlerSelectors.withClassAnnotation(Controller.class)); - return Predicates.and(controllerPredicate, methodPredicate); - } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder().title(title) - .description(description) - .version(version) - .termsOfServiceUrl(teamUrl) - .contact(new Contact("1024lab", teamUrl, "1024lab@sina.com")) - .build(); - } - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException { - - } - - /** - * 生成共用请求参数 - * - * @return - */ - private List generateParameter() { - // 配置全局参数 token - Parameter token = new ParameterBuilder().name(RequestHeaderConst.TOKEN) - .description("token") - .modelRef(new ModelRef("string")) - .parameterType("header").defaultValue("1") - .required(false) - .build(); - return Lists.newArrayList(token); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/RedisKeyConst.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/RedisKeyConst.java deleted file mode 100644 index 9abb7afb..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/RedisKeyConst.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.lab1024.sa.common.constant; - -/** - * redis key 常量类 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022-05-30 21:22:12 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public class RedisKeyConst { - - public static final String SEPARATOR = ":"; - - public static class Support { - - public static final String FILE_URL = "file:"; - - public static final String FILE_VO = "file-vo:"; - - public static final String SERIAL_NUMBER_LAST_INFO = "serial-number:last-info"; - - public static final String SERIAL_NUMBER = "serial-number:"; - - public static final String CAPTCHA = "captcha:"; - - public static final String TOKEN = "token:"; - - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/UrlPrefixConst.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/UrlPrefixConst.java deleted file mode 100644 index 12c28934..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/constant/UrlPrefixConst.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lab1024.sa.common.constant; - -/** - * url前缀 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2021/10/03 20:48 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public class UrlPrefixConst { - - public static final String SUPPORT = "/support"; - - public static final String THIRD = "/third"; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/listener/SmartApplicationListener.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/listener/SmartApplicationListener.java deleted file mode 100644 index 21cfb938..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/listener/SmartApplicationListener.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.lab1024.sa.common.listener; - -import cn.hutool.core.net.NetUtil; -import cn.hutool.core.util.URLUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.web.context.WebServerApplicationContext; -import org.springframework.boot.web.context.WebServerInitializedEvent; -import org.springframework.boot.web.server.WebServer; -import org.springframework.context.ApplicationListener; -import org.springframework.core.annotation.Order; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Component; - -/** - * 启动监听器 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2021-12-23 23:45:26 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Slf4j -@Component -@Order(value = 1024) -public class SmartApplicationListener implements ApplicationListener { - - @Override - public void onApplicationEvent(WebServerInitializedEvent webServerInitializedEvent) { - WebServer server = webServerInitializedEvent.getWebServer(); - WebServerApplicationContext context = webServerInitializedEvent.getApplicationContext(); - Environment env = context.getEnvironment(); - //获取服务信息 - String ip = NetUtil.getLocalhost().getHostAddress(); - Integer port = server.getPort(); - String contextPath = env.getProperty("server.servlet.context-path"); - if (contextPath == null) { - contextPath = ""; - } - String profile = env.getProperty("spring.profiles.active"); - String projectName = env.getProperty("project.name"); - //拼接服务地址 - String title = String.format("-------------【%s】 service is running!current profile is 【%s】-------------", projectName, profile); - String localhostUrl = URLUtil.normalize(String.format("http://localhost:%d%s", port, contextPath), false, true); - String externalUrl = URLUtil.normalize(String.format("http://%s:%d%s", ip, port, contextPath), false, true); - String swaggerUrl = URLUtil.normalize(String.format("http://localhost:%d%s/swagger-ui.html", port, contextPath), false, true); - log.info("\n{}\n" + - "\tLocal:\t\t{}" + - "\n\tExternal:\t{}" + - "\n\tSwagger:\t{}" + - "\n-------------------------------------------------------------------------------------\n", - title, localhostUrl, externalUrl, swaggerUrl); - } -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaController.java deleted file mode 100644 index 47916db0..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/CaptchaController.java +++ /dev/null @@ -1,36 +0,0 @@ -package net.lab1024.sa.common.module.support.captcha; - - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.captcha.domain.CaptchaVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * 图形验证码业务 - * - * @Author 1024创新实验室: 胡克 - * @Date 2021-09-02 20:21:10 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Api(tags = SwaggerTagConst.Support.CAPTCHA) -@RestController -public class CaptchaController extends SupportBaseController { - - @Autowired - private CaptchaService captchaService; - - @ApiOperation("获取图形验证码 @author 胡克") - @GetMapping("/captcha") - public ResponseDTO generateCaptcha() { - return ResponseDTO.ok(captchaService.generateCaptcha()); - } - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/domain/CaptchaVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/domain/CaptchaVO.java deleted file mode 100644 index cee66da6..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/captcha/domain/CaptchaVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.lab1024.sa.common.module.support.captcha.domain; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 图形验证码 VO - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2021/8/31 20:52 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class CaptchaVO { - - @ApiModelProperty("验证码唯一标识") - private String captchaUuid; - - @ApiModelProperty("验证码图片内容-生产环境无效") - private String captchaText; - - @ApiModelProperty("验证码Base64图片") - private String captchaBase64Image; - - @ApiModelProperty("过期时间(秒)") - private Long expireSeconds; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/controller/ChangeLogController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/controller/ChangeLogController.java deleted file mode 100644 index 775f3bc4..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/controller/ChangeLogController.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.lab1024.sa.common.module.support.changelog.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.changelog.domain.form.ChangeLogQueryForm; -import net.lab1024.sa.common.module.support.changelog.domain.vo.ChangeLogVO; -import net.lab1024.sa.common.module.support.changelog.service.ChangeLogService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; - -/** - * 系统更新日志 Controller - * - * @Author 卓大 - * @Date 2022-09-26 14:53:50 - * @Copyright 1024创新实验室 - */ - -@RestController -@Api(tags = SwaggerTagConst.Support.CHANGE_LOG) -public class ChangeLogController { - - @Autowired - private ChangeLogService changeLogService; - - @ApiOperation("分页查询 @author 卓大") - @PostMapping("/changeLog/queryPage") - public ResponseDTO> queryPage(@RequestBody @Valid ChangeLogQueryForm queryForm) { - return ResponseDTO.ok(changeLogService.queryPage(queryForm)); - } -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogQueryForm.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogQueryForm.java deleted file mode 100644 index 393c4c69..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/form/ChangeLogQueryForm.java +++ /dev/null @@ -1,42 +0,0 @@ -package net.lab1024.sa.common.module.support.changelog.domain.form; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.changelog.constant.ChangeLogTypeEnum; - -import java.time.LocalDate; - -/** - * 系统更新日志 查询 - * - * @Author 卓大 - * @Date 2022-09-26 14:53:50 - * @Copyright 1024创新实验室 - */ - -@Data -public class ChangeLogQueryForm extends PageParam{ - - @ApiModelPropertyEnum(value = ChangeLogTypeEnum.class, desc = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复]") - @CheckEnum(value = ChangeLogTypeEnum.class, message = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复] 错误") - private Integer type; - - @ApiModelProperty(value = "关键字") - private String keyword; - - @ApiModelProperty(value = "发布日期") - private LocalDate publicDateBegin; - - @ApiModelProperty(value = "发布日期") - private LocalDate publicDateEnd; - - @ApiModelProperty(value = "创建时间") - private LocalDate createTime; - - @ApiModelProperty(value = "跳转链接") - private String link; - -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/vo/ChangeLogVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/vo/ChangeLogVO.java deleted file mode 100644 index cf147c7c..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/domain/vo/ChangeLogVO.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.lab1024.sa.common.module.support.changelog.domain.vo; - -import io.swagger.annotations.ApiModelProperty; - -import java.time.LocalDate; -import java.time.LocalDateTime; - -import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.module.support.changelog.constant.ChangeLogTypeEnum; - -/** - * 系统更新日志 列表VO - * - * @Author 卓大 - * @Date 2022-09-26 14:53:50 - * @Copyright 1024创新实验室 - */ - -@Data -public class ChangeLogVO { - - private Long changeLogId; - - @ApiModelProperty(value = "版本") - private String version; - - @ApiModelPropertyEnum(value = ChangeLogTypeEnum.class, desc = "更新类型:[1:特大版本功能更新;2:功能更新;3:bug修复]") - private Integer type; - - @ApiModelProperty(value = "发布人") - private String publishAuthor; - - @ApiModelProperty(value = "发布日期") - private LocalDate publicDate; - - @ApiModelProperty(value = "更新内容") - private String content; - - @ApiModelProperty(value = "跳转链接") - private String link; - - @ApiModelProperty(value = "创建时间") - private LocalDateTime createTime; - - @ApiModelProperty(value = "更新时间") - private LocalDateTime updateTime; - -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/manager/ChangeLogManager.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/manager/ChangeLogManager.java deleted file mode 100644 index ee90a6b2..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/changelog/manager/ChangeLogManager.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.lab1024.sa.common.module.support.changelog.manager; - -import net.lab1024.sa.common.module.support.changelog.dao.ChangeLogDao; -import net.lab1024.sa.common.module.support.changelog.domain.entity.ChangeLogEntity; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - * 系统更新日志 Manager - * - * @Author 卓大 - * @Date 2022-09-26 14:53:50 - * @Copyright 1024创新实验室 - */ -@Service -public class ChangeLogManager extends ServiceImpl { - - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/controller/CodeGeneratorController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/controller/CodeGeneratorController.java deleted file mode 100644 index 93cf4551..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/controller/CodeGeneratorController.java +++ /dev/null @@ -1,106 +0,0 @@ -package net.lab1024.sa.common.module.support.codegenerator.controller; - -import com.alibaba.fastjson.JSON; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.CodeGeneratorPreviewForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.form.TableQueryForm; -import net.lab1024.sa.common.module.support.codegenerator.domain.vo.TableColumnVO; -import net.lab1024.sa.common.module.support.codegenerator.domain.vo.TableConfigVO; -import net.lab1024.sa.common.module.support.codegenerator.domain.vo.TableVO; -import net.lab1024.sa.common.module.support.codegenerator.service.CodeGeneratorService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -import java.util.List; - -/** - * 代码生成 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-06-29 20:23:46 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Api(tags = SwaggerTagConst.Support.CODE_GENERATOR) -@Controller -public class CodeGeneratorController extends SupportBaseController { - - @Autowired - private CodeGeneratorService codeGeneratorService; - - // ------------------- 查询 ------------------- - @ApiOperation("获取表的列 @author 卓大") - @GetMapping("/codeGenerator/table/getTableColumns/{table}") - @ResponseBody - public ResponseDTO> getTableColumns(@PathVariable String table) { - return ResponseDTO.ok(codeGeneratorService.getTableColumns(table)); - } - - @ApiOperation("查询数据库的表 @author 卓大") - @PostMapping("/codeGenerator/table/queryTableList") - @ResponseBody - public ResponseDTO> queryTableList(@RequestBody @Valid TableQueryForm tableQueryForm) { - return ResponseDTO.ok(codeGeneratorService.queryTableList(tableQueryForm)); - } - - // ------------------- 配置 ------------------- - - @ApiOperation("获取表的配置信息 @author 卓大") - @GetMapping("/codeGenerator/table/getConfig/{table}") - @ResponseBody - public ResponseDTO getTableConfig(@PathVariable String table) { - return ResponseDTO.ok(codeGeneratorService.getTableConfig(table)); - } - - @ApiOperation("更新配置信息 @author 卓大") - @PostMapping("/codeGenerator/table/updateConfig") - @ResponseBody - public ResponseDTO updateConfig(@RequestBody @Valid CodeGeneratorConfigForm form) { - return codeGeneratorService.updateConfig(form); - } - - // ------------------- 生成 ------------------- - - @ApiOperation("代码预览 @author 卓大") - @PostMapping("/codeGenerator/code/preview") - @ResponseBody - public ResponseDTO preview(@RequestBody @Valid CodeGeneratorPreviewForm form) { - return codeGeneratorService.preview(form); - } - - @ApiOperation("代码下载 @author 卓大") - @GetMapping(value = "/codeGenerator/code/download/{tableName}", produces = "application/octet-stream") - public ResponseEntity download(@PathVariable String tableName) { - - ResponseDTO download = codeGeneratorService.download(tableName); - - if (download.getOk()) { - HttpHeaders heads = new HttpHeaders(); - heads.add(HttpHeaders.CONTENT_TYPE, "application/octet-stream; charset=UTF-8"); - heads.add(HttpHeaders.CONTENT_LENGTH, "" + download.getData().length); - heads.add(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + tableName + "-code.zip"); - ResponseEntity responseEntity = new ResponseEntity<>(download.getData(), heads, HttpStatus.OK); - return responseEntity; - } else { - byte[] data = JSON.toJSONString(download).getBytes(); - HttpHeaders heads = new HttpHeaders(); - heads.add(HttpHeaders.CONTENT_TYPE, "application/json; charset=UTF-8"); - heads.add(HttpHeaders.CONTENT_LENGTH, "" + data.length); - ResponseEntity responseEntity = new ResponseEntity<>(data, heads, HttpStatus.OK); - return responseEntity; - } - } - -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/TableQueryForm.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/TableQueryForm.java deleted file mode 100644 index 3ffd4359..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/form/TableQueryForm.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.lab1024.sa.common.module.support.codegenerator.domain.form; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; - - -/** - * 查询表数据 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-06-30 22:15:38 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class TableQueryForm extends PageParam { - - @ApiModelProperty("表名关键字") - private String tableNameKeywords; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableColumnVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableColumnVO.java deleted file mode 100644 index 251bfca0..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableColumnVO.java +++ /dev/null @@ -1,44 +0,0 @@ - -package net.lab1024.sa.common.module.support.codegenerator.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 列 - * - * @Author 1024创新实验室-主任:卓大 - * @Date 2022/9/21 21:07:58 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 - */ - -@Data -public class TableColumnVO { - - @ApiModelProperty("列名") - private String columnName; - - @ApiModelProperty("列描述") - private String columnComment; - - @ApiModelProperty("columnKey") - private String columnKey; - - @ApiModelProperty("extra") - private String extra; - - @ApiModelProperty("是否为空") - private String isNullable; - - @ApiModelProperty("数据类型varchar") - private String dataType; - - @ApiModelProperty("列类型varchar(50)") - private String columnType; - - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableConfigVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableConfigVO.java deleted file mode 100644 index 33df9523..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/codegenerator/domain/vo/TableConfigVO.java +++ /dev/null @@ -1,40 +0,0 @@ - -package net.lab1024.sa.common.module.support.codegenerator.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.module.support.codegenerator.domain.model.*; - -import java.util.List; - -/** - * 表的配置信息 - * - * @Author 1024创新实验室-主任:卓大 - * @Date 2022/9/21 21:07:58 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),2012-2022 - */ - -@Data -public class TableConfigVO { - - @ApiModelProperty("基础命名信息") - private CodeBasic basic; - - @ApiModelProperty("字段列") - private List fields; - - @ApiModelProperty("增加、修改 信息") - private CodeInsertAndUpdate insertAndUpdate; - - @ApiModelProperty("删除 信息") - private CodeDelete deleteInfo; - - @ApiModelProperty("查询字段") - private List queryFields; - - @ApiModelProperty("列表字段") - private List tableFields; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/controller/DataTracerController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/controller/DataTracerController.java deleted file mode 100644 index 2fabdd6a..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/controller/DataTracerController.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.lab1024.sa.common.module.support.datatracer.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.datatracer.domain.form.DataTracerQueryForm; -import net.lab1024.sa.common.module.support.datatracer.domain.vo.DataTracerVO; -import net.lab1024.sa.common.module.support.datatracer.service.DataTracerService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; - -/** - * 数据变动记录 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-07-23 19:38:52 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Api(tags = {SwaggerTagConst.Support.DATA_TRACER}) -@RestController -public class DataTracerController extends SupportBaseController { - - @Autowired - private DataTracerService dataTracerService; - - @ApiOperation("分页查询业务操作日志 - @author 卓大") - @PostMapping("/dataTracer/query") - public ResponseDTO> query(@Valid @RequestBody DataTracerQueryForm queryForm) { - return dataTracerService.query(queryForm); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/form/DataTracerQueryForm.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/form/DataTracerQueryForm.java deleted file mode 100644 index 4eccbe5b..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/form/DataTracerQueryForm.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.lab1024.sa.common.module.support.datatracer.domain.form; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; - -import javax.validation.constraints.NotNull; - -/** - * 查询表单 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-07-23 19:38:52 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class DataTracerQueryForm extends PageParam { - - @ApiModelPropertyEnum(DataTracerTypeEnum.class) - private Integer type; - - @ApiModelProperty("业务id") - @NotNull(message = "业务id不能为空") - private Long dataId; - - @ApiModelProperty("关键字") - private String keywords; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/vo/DataTracerVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/vo/DataTracerVO.java deleted file mode 100644 index e55beb98..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/datatracer/domain/vo/DataTracerVO.java +++ /dev/null @@ -1,62 +0,0 @@ -package net.lab1024.sa.common.module.support.datatracer.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.module.support.datatracer.constant.DataTracerTypeEnum; - -import java.time.LocalDateTime; - -/** - * 变动记录 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-07-23 19:38:52 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class DataTracerVO { - - @ApiModelProperty("日志id") - private Long dataTracerId; - - @ApiModelProperty("单据id") - private Long dataId; - - @ApiModelPropertyEnum(value = DataTracerTypeEnum.class, desc = "业务类型") - private Integer type; - - @ApiModelProperty("操作内容") - private String content; - - @ApiModelProperty("diff 差异:旧的数据") - private String diffOld; - - @ApiModelProperty("差异:新的数据") - private String diffNew; - - @ApiModelProperty("扩展字段") - private String extraData; - - @ApiModelProperty("操作人") - private Long userId; - - @ApiModelPropertyEnum(value = UserTypeEnum.class, desc = "用户类型") - private Integer userType; - - @ApiModelProperty("操作人名称") - private String userName; - - @ApiModelProperty("userAgent") - private String userAgent; - - @ApiModelProperty("ip") - private String ip; - - @ApiModelProperty("操作时间") - private LocalDateTime createTime; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/controller/DictController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/controller/DictController.java deleted file mode 100644 index ae71b8ec..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/controller/DictController.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.lab1024.sa.common.module.support.dict.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.dict.service.DictCacheService; -import net.lab1024.sa.common.module.support.dict.service.DictService; -import net.lab1024.sa.common.module.support.dict.domain.form.*; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.common.module.support.dict.domain.vo.DictValueVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -import java.util.List; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Api(tags = {SwaggerTagConst.Support.DICT}) -@RestController -public class DictController extends SupportBaseController { - - @Autowired - private DictService dictService; - @Autowired - private DictCacheService dictCacheService; - - - @ApiOperation("查询全部字典key - @author 卓大") - @GetMapping("/dict/key/queryAll") - public ResponseDTO> queryAll() { - return ResponseDTO.ok(dictService.queryAllKey()); - } - - @ApiOperation("分页查询数据字典value - @author 罗伊") - @PostMapping("/dict/value/query") - public ResponseDTO> valueQuery(@Valid @RequestBody DictValueQueryForm queryForm) { - return dictService.valueQuery(queryForm); - } - - @ApiOperation("数据字典缓存-刷新- @author 罗伊") - @GetMapping("/dict/cache/refresh") - public ResponseDTO cacheRefresh() { - return dictCacheService.cacheRefresh(); - } - - @ApiOperation("数据字典-值列表- @author 罗伊") - @GetMapping("/dict/value/list/{keyCode}") - public ResponseDTO> valueList(@PathVariable String keyCode) { - List dictValueVOList = dictCacheService.selectByKeyCode(keyCode); - return ResponseDTO.ok(dictValueVOList); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyQueryForm.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyQueryForm.java deleted file mode 100644 index 8cd26dd4..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/form/DictKeyQueryForm.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.lab1024.sa.common.module.support.dict.domain.form; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class DictKeyQueryForm extends PageParam { - - @ApiModelProperty("搜索词") - private String searchWord; - - @ApiModelProperty(value = "删除标识",hidden = true) - private Boolean deletedFlag; -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/vo/DictKeyVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/vo/DictKeyVO.java deleted file mode 100644 index f9864955..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/vo/DictKeyVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.lab1024.sa.common.module.support.dict.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class DictKeyVO { - - @ApiModelProperty("dictKeyId") - private Long dictKeyId; - - @ApiModelProperty("编码") - private String keyCode; - - @ApiModelProperty("名称") - private String keyName; - - @ApiModelProperty("备注") - private String remark; -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/vo/DictValueVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/vo/DictValueVO.java deleted file mode 100644 index ec7535cf..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/dict/domain/vo/DictValueVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.lab1024.sa.common.module.support.dict.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class DictValueVO { - - @ApiModelProperty("valueId") - private Long dictValueId; - - @ApiModelProperty("dictKeyId") - private Long dictKeyId; - - @ApiModelProperty("编码") - private String valueCode; - - @ApiModelProperty("名称") - private String valueName; - - @ApiModelProperty("排序") - private Integer sort; - - @ApiModelProperty("备注") - private String remark; -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/controller/FeedbackController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/controller/FeedbackController.java deleted file mode 100644 index b9a1cd09..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/controller/FeedbackController.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.lab1024.sa.common.module.support.feedback.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackAddForm; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackQueryForm; -import net.lab1024.sa.common.module.support.feedback.domain.FeedbackVO; -import net.lab1024.sa.common.module.support.feedback.service.FeedbackService; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import javax.validation.Valid; - -/** - * 意见反馈 - * - * @Author 1024创新实验室: 开云 - * @Date 2022-08-11 20:48:09 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Slf4j -@Api(tags = SwaggerTagConst.Support.FEEDBACK) -@RestController -public class FeedbackController extends SupportBaseController { - - @Autowired - private FeedbackService feedbackService; - - @ApiOperation("意见反馈-分页查询 @author 开云") - @PostMapping("/feedback/query") - public ResponseDTO> query(@RequestBody @Valid FeedbackQueryForm queryForm) { - return feedbackService.query(queryForm); - } - - @ApiOperation("意见反馈-新增 @author 开云") - @PostMapping("/feedback/add") - public ResponseDTO add(@RequestBody @Valid FeedbackAddForm addForm) { - RequestUser employee = SmartRequestUtil.getRequestUser(); - return feedbackService.add(addForm, employee); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackVO.java deleted file mode 100644 index 83d19674..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/feedback/domain/FeedbackVO.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.lab1024.sa.common.module.support.feedback.domain; - -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.json.deserializer.FileKeyVoDeserializer; -import net.lab1024.sa.common.common.json.serializer.FileKeyVoSerializer; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; - -import java.time.LocalDateTime; - -/** - * 意见反馈 返回对象 - * - * @Author 1024创新实验室: 开云 - * @Date 2022-08-11 20:48:09 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class FeedbackVO { - - @ApiModelProperty(value = "主键") - private Long feedbackId; - - @ApiModelProperty(value = "反馈内容") - private String feedbackContent; - - @ApiModelProperty("反馈图片") - @JsonSerialize(using = FileKeyVoSerializer.class) - @JsonDeserialize(using = FileKeyVoDeserializer.class) - private String feedbackAttachment; - - @ApiModelProperty(value = "创建人id") - private Long userId; - - @ApiModelProperty(value = "创建人姓名") - private String userName; - - @ApiModelPropertyEnum(value = UserTypeEnum.class, desc = "创建人类型") - private Integer userType; - - @ApiModelProperty(value = "更新时间") - private LocalDateTime updateTime; - - @ApiModelProperty(value = "创建时间") - private LocalDateTime createTime; -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/controller/FileController.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/controller/FileController.java deleted file mode 100644 index 04dc3f10..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/controller/FileController.java +++ /dev/null @@ -1,72 +0,0 @@ -package net.lab1024.sa.common.module.support.file.controller; - -import cn.hutool.extra.servlet.ServletUtil; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import net.lab1024.sa.common.common.constant.RequestHeaderConst; -import net.lab1024.sa.common.common.controller.SupportBaseController; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartRequestUtil; -import net.lab1024.sa.common.constant.SwaggerTagConst; -import net.lab1024.sa.common.module.support.file.domain.form.FileQueryForm; -import net.lab1024.sa.common.module.support.file.domain.form.FileUrlUploadForm; -import net.lab1024.sa.common.module.support.file.domain.vo.FileUploadVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileVO; -import net.lab1024.sa.common.module.support.repeatsubmit.annoation.RepeatSubmit; -import net.lab1024.sa.common.module.support.file.constant.FileFolderTypeEnum; -import net.lab1024.sa.common.module.support.file.service.FileService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import javax.validation.Valid; - -/** - * 文件服务 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2019年10月11日 15:34:47 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@RestController -@Api(tags = {SwaggerTagConst.Support.FILE}) -public class FileController extends SupportBaseController { - - @Autowired - private FileService fileService; - - - @ApiOperation(value = "文件上传 @author 胡克", notes = FileFolderTypeEnum.INFO) - @PostMapping("/file/upload") - public ResponseDTO upload(@RequestParam MultipartFile file, - @RequestParam Integer folder) { - RequestUser requestUser = SmartRequestUtil.getRequestUser(); - return fileService.fileUpload(file, folder, requestUser); - } - - @ApiOperation(value = "文件上传,通过url上传 @author 胡克", notes = FileFolderTypeEnum.INFO) - @PostMapping("/file/upload/url") - public ResponseDTO uploadByUrl(@RequestBody @Valid FileUrlUploadForm uploadForm) { - RequestUser requestUser = SmartRequestUtil.getRequestUser(); - return fileService.fileUpload(uploadForm,requestUser); - } - - @ApiOperation("获取文件URL:根据fileKey @author 胡克") - @GetMapping("/file/getFileUrl") - public ResponseDTO getUrl(@RequestParam String fileKey) { - return fileService.getFileUrl(fileKey); - } - - @ApiOperation(value = "下载文件流(根据fileKey) @author 胡克") - @GetMapping("/file/downLoad") - public ResponseEntity downLoad(@RequestParam String fileKey, HttpServletRequest request) { - String userAgent = ServletUtil.getHeaderIgnoreCase(request, RequestHeaderConst.USER_AGENT); - return fileService.downloadByFileKey(fileKey, userAgent); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/form/FileQueryForm.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/form/FileQueryForm.java deleted file mode 100644 index 29bc58ce..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/form/FileQueryForm.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.lab1024.sa.common.module.support.file.domain.form; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.file.constant.FileFolderTypeEnum; -import org.hibernate.validator.constraints.Length; - -import java.time.LocalDate; - -/** - * 文件信息查询 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2019年10月11日 15:34:47 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class FileQueryForm extends PageParam { - - @ApiModelPropertyEnum(value = FileFolderTypeEnum.class, desc = "文件夹类型") - @CheckEnum(value = FileFolderTypeEnum.class, message = "文件夹类型 错误") - private Integer folderType; - - @ApiModelProperty(value = "文件名词") - private String fileName; - - @ApiModelProperty(value = "文件Key") - private String fileKey; - - @ApiModelProperty(value = "文件类型") - private String fileType; - - @ApiModelProperty(value = "创建人") - private String creatorName; - - @ApiModelProperty(value = "创建时间") - private LocalDate createTimeBegin; - - @ApiModelProperty(value = "创建时间") - private LocalDate createTimeEnd; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/form/FileUrlUploadForm.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/form/FileUrlUploadForm.java deleted file mode 100644 index a3468851..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/form/FileUrlUploadForm.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.lab1024.sa.common.module.support.file.domain.form; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.common.module.support.file.constant.FileFolderTypeEnum; - -import javax.validation.constraints.NotBlank; - -/** - * url上传文件 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2019年10月11日 15:34:47 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class FileUrlUploadForm { - - @ApiModelPropertyEnum(value = FileFolderTypeEnum.class, desc = "业务类型") - @CheckEnum(value = FileFolderTypeEnum.class, required = true, message = "业务类型错误") - private Integer folder; - - @ApiModelProperty("文件url") - @NotBlank(message = "文件url不能为空") - private String fileUrl; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileUploadVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileUploadVO.java deleted file mode 100644 index 345c337f..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileUploadVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.lab1024.sa.common.module.support.file.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 文件信息 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2019年10月11日 15:34:47 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class FileUploadVO { - - @ApiModelProperty(value = "文件id") - private Long fileId; - - @ApiModelProperty(value = "文件名称") - private String fileName; - - @ApiModelProperty(value = "fileUrl") - private String fileUrl; - - @ApiModelProperty(value = "fileKey") - private String fileKey; - - @ApiModelProperty(value = "文件大小") - private Long fileSize; - - @ApiModelProperty(value = "文件类型") - private String fileType; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileVO.java deleted file mode 100644 index 9ab82174..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/domain/vo/FileVO.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.lab1024.sa.common.module.support.file.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.module.support.file.constant.FileFolderTypeEnum; - -import java.time.LocalDateTime; - -/** - * 文件信息 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2019年10月11日 15:34:47 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class FileVO { - - @ApiModelProperty("主键") - private Long fileId; - - @ApiModelProperty("存储文件夹类型") - @ApiModelPropertyEnum(FileFolderTypeEnum.class) - private Integer folderType; - - @ApiModelProperty("文件名称") - private String fileName; - - @ApiModelProperty("文件大小") - private Integer fileSize; - - @ApiModelProperty("文件类型") - private String fileType; - - @ApiModelProperty("文件路径") - private String fileKey; - - @ApiModelProperty("上传人") - private Long creatorId; - - @ApiModelProperty("上传人") - private String creatorName; - - @ApiModelPropertyEnum(value = UserTypeEnum.class, desc = "创建人类型") - private Integer creatorUserType; - - @ApiModelProperty("文件展示url") - private String fileUrl; - - @ApiModelProperty("创建时间") - private LocalDateTime createTime; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileService.java deleted file mode 100644 index bafb75ea..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/FileService.java +++ /dev/null @@ -1,281 +0,0 @@ -package net.lab1024.sa.common.module.support.file.service; - -import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Lists; -import net.lab1024.sa.common.common.code.SystemErrorCode; -import net.lab1024.sa.common.common.code.UserErrorCode; -import net.lab1024.sa.common.common.constant.StringConst; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.RequestUser; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartBeanUtil; -import net.lab1024.sa.common.common.util.SmartEnumUtil; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.constant.RedisKeyConst; -import net.lab1024.sa.common.module.support.file.constant.FileFolderTypeEnum; -import net.lab1024.sa.common.module.support.file.dao.FileDao; -import net.lab1024.sa.common.module.support.file.domain.entity.FileEntity; -import net.lab1024.sa.common.module.support.file.domain.form.FileQueryForm; -import net.lab1024.sa.common.module.support.file.domain.form.FileUrlUploadForm; -import net.lab1024.sa.common.module.support.file.domain.vo.FileDownloadVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileMetadataVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileUploadVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileVO; -import net.lab1024.sa.common.module.support.redis.RedisService; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import java.io.IOException; -import java.net.URL; -import java.net.URLConnection; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 文件服务 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2019年10月11日 15:34:47 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Service -public class FileService { - - /** - * 文件名最大长度 - */ - private static final int FILE_NAME_MAX_LENGTH = 100; - - @Resource - private IFileStorageService fileStorageService; - - @Autowired - private FileDao fileDao; - - @Autowired - private RedisService redisService; - - @Value("${spring.servlet.multipart.max-file-size}") - private String maxFileSize; - - /** - * 文件上传服务:通过 url 上传 - * - * @param urlUploadForm - * @param requestUser - * @return - */ - public ResponseDTO fileUpload(FileUrlUploadForm urlUploadForm, RequestUser requestUser) { - try { - URL url = new URL(urlUploadForm.getFileUrl()); - URLConnection urlConnection = url.openConnection(); - // 获取文件格式 - String contentType = urlConnection.getContentType(); - String fileType = fileStorageService.getFileTypeByContentType(contentType); - // 生成文件key - String fileKey = fileStorageService.generateFileNameByType(fileType); - MockMultipartFile file = new MockMultipartFile(fileKey, fileKey, contentType, urlConnection.getInputStream()); - return this.fileUpload(file, urlUploadForm.getFolder(), requestUser); - } catch (IOException e) { - return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "上传失败"); - } - } - - /** - * 文件上传服务 - * - * @param file - * @param folderType 文件夹类型 - * @return - */ - public ResponseDTO fileUpload(MultipartFile file, Integer folderType, RequestUser requestUser) { - FileFolderTypeEnum folderTypeEnum = SmartEnumUtil.getEnumByValue(folderType, FileFolderTypeEnum.class); - if (null == folderTypeEnum) { - return ResponseDTO.userErrorParam("文件夹错误"); - } - if (null == file || file.getSize() == 0) { - return ResponseDTO.userErrorParam("上传文件不能为空"); - } - // 校验文件名称 - String originalFilename = file.getOriginalFilename(); - if (StringUtils.isBlank(originalFilename)) { - return ResponseDTO.userErrorParam("上传文件名称不能为空"); - } - if (originalFilename.length() > FILE_NAME_MAX_LENGTH) { - return ResponseDTO.userErrorParam("文件名称最大长度为:" + FILE_NAME_MAX_LENGTH); - } - // 校验文件大小 - String maxSizeStr = maxFileSize.toLowerCase().replace("mb", ""); - long maxSize = Integer.parseInt(maxSizeStr) * 1024 * 1024L; - if (file.getSize() > maxSize) { - return ResponseDTO.userErrorParam("上传文件最大:" + maxSize); - } - // 获取文件服务 - ResponseDTO response = fileStorageService.fileUpload(file, folderTypeEnum.getFolder()); - if (!response.getOk()) { - return response; - } - - // 上传成功 保存记录数据库 - FileUploadVO uploadVO = response.getData(); - - FileEntity fileEntity = new FileEntity(); - fileEntity.setFolderType(folderTypeEnum.getValue()); - fileEntity.setFileName(originalFilename); - fileEntity.setFileSize(file.getSize()); - fileEntity.setFileKey(uploadVO.getFileKey()); - fileEntity.setFileType(uploadVO.getFileType()); - fileEntity.setCreatorId(requestUser == null ? null : requestUser.getUserId()); - fileEntity.setCreatorName(requestUser == null ? null : requestUser.getUserName()); - fileEntity.setCreatorUserType(requestUser == null ? null : requestUser.getUserType().getValue()); - fileDao.insert(fileEntity); - uploadVO.setFileId(fileEntity.getFileId()); - // 添加缓存 - String redisKey = redisService.generateRedisKey(RedisKeyConst.Support.FILE_URL, uploadVO.getFileKey()); - redisService.set(redisKey, uploadVO.getFileUrl(), fileStorageService.cacheExpireSecond()); - - String fileRedisKey = redisService.generateRedisKey(RedisKeyConst.Support.FILE_VO, uploadVO.getFileKey()); - FileVO fileVO = SmartBeanUtil.copy(fileEntity, FileVO.class); - redisService.set(fileRedisKey, fileVO, fileStorageService.cacheExpireSecond()); - return response; - } - - public List getFileList(List fileKeyList) { - if (CollectionUtils.isEmpty(fileKeyList)) { - return Lists.newArrayList(); - } - return fileKeyList.stream().map(this::getCacheFileVO).filter(Objects::nonNull).collect(Collectors.toList()); - } - - private FileVO getCacheFileVO(String fileKey) { - String redisKey = redisService.generateRedisKey(RedisKeyConst.Support.FILE_VO, fileKey); - FileVO fileVO = redisService.getObject(redisKey, FileVO.class); - if (fileVO == null) { - fileVO = fileDao.getByFileKey(fileKey); - if (fileVO == null) { - return null; - } - redisService.set(redisKey, fileVO, fileStorageService.cacheExpireSecond()); - } - fileVO.setFileUrl(this.getCacheUrl(fileKey)); - return fileVO; - } - - /** - * 根据文件绝对路径 获取文件URL - * 支持单个 key 逗号分隔的形式 - * - * @param fileKey - * @return - */ - public ResponseDTO getFileUrl(String fileKey) { - if (StringUtils.isBlank(fileKey)) { - return ResponseDTO.error(UserErrorCode.PARAM_ERROR); - } - // 处理逗号分隔的字符串 - String keyList = StrUtil.split(fileKey, StringConst.SEPARATOR) - .stream().map(this::getCacheUrl) - .collect(Collectors.joining(StringConst.SEPARATOR)); - return ResponseDTO.ok(keyList); - } - - - private String getCacheUrl(String fileKey) { - String redisKey = redisService.generateRedisKey(RedisKeyConst.Support.FILE_URL, fileKey); - String fileUrl = redisService.get(redisKey); - if (null != fileUrl) { - return fileUrl; - } - ResponseDTO responseDTO = fileStorageService.getFileUrl(fileKey); - if (!responseDTO.getOk()) { - return null; - } - fileUrl = responseDTO.getData(); - redisService.set(redisKey, fileUrl, fileStorageService.cacheExpireSecond()); - return fileUrl; - } - - /** - * 分页查询 - * - * @param queryForm - * @return - */ - public PageResult queryPage(FileQueryForm queryForm) { - Page page = SmartPageUtil.convert2PageQuery(queryForm); - List list = fileDao.queryPage(page, queryForm); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, list); - return pageResult; - } - - /** - * 根据文件服务类型 和 FileKey 下载文件 - * - * @param fileKey - * @return - * @throws IOException - */ - public ResponseEntity downloadByFileKey(String fileKey, String userAgent) { - FileVO fileVO = fileDao.getByFileKey(fileKey); - if (fileVO == null) { - HttpHeaders heads = new HttpHeaders(); - heads.add(HttpHeaders.CONTENT_TYPE, "text/html;charset=UTF-8"); - return new ResponseEntity<>("文件不存在:" + fileKey, heads, HttpStatus.OK); - } - - // 根据文件服务类 获取对应文件服务 查询 url - ResponseDTO responseDTO = fileStorageService.fileDownload(fileKey); - if (!responseDTO.getOk()) { - HttpHeaders heads = new HttpHeaders(); - heads.add(HttpHeaders.CONTENT_TYPE, "text/html;charset=UTF-8"); - return new ResponseEntity<>(responseDTO.getMsg() + ":" + fileKey, heads, HttpStatus.OK); - } - - FileDownloadVO fileDownloadVO = responseDTO.getData(); - FileMetadataVO metadata = fileDownloadVO.getMetadata(); - - // 设置下载头 - HttpHeaders heads = new HttpHeaders(); - heads.add(HttpHeaders.CONTENT_LENGTH, String.valueOf(metadata.getFileSize())); - heads.add(HttpHeaders.CONTENT_TYPE, "application/octet-stream; charset=utf-8"); - heads.add(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileStorageService.getDownloadFileNameByUA(fileVO.getFileName(), userAgent)); - - // 返回给前端 - ResponseEntity responseEntity = new ResponseEntity<>(fileDownloadVO.getData(), heads, HttpStatus.OK); - return responseEntity; - } - - /** - * 根据文件key 删除 - * - * @param fileKey - * @return - */ - public ResponseDTO deleteByFileKey(String fileKey) { - if (StringUtils.isBlank(fileKey)) { - return ResponseDTO.error(UserErrorCode.PARAM_ERROR); - } - FileEntity fileEntity = new FileEntity(); - fileEntity.setFileKey(fileKey); - fileEntity = fileDao.selectOne(new QueryWrapper<>(fileEntity)); - if (null == fileEntity) { - return ResponseDTO.error(UserErrorCode.DATA_NOT_EXIST); - } - // 根据文件服务类 获取对应文件服务 删除文件 - return fileStorageService.delete(fileKey); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/IFileStorageService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/IFileStorageService.java deleted file mode 100644 index 7fd4690d..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/file/service/IFileStorageService.java +++ /dev/null @@ -1,209 +0,0 @@ -package net.lab1024.sa.common.module.support.file.service; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.LocalDateTimeUtil; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileDownloadVO; -import net.lab1024.sa.common.module.support.file.domain.vo.FileUploadVO; -import org.apache.commons.io.FilenameUtils; -import org.springframework.web.multipart.MultipartFile; - -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.time.LocalDateTime; -import java.util.UUID; - -/** - * 接口 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2019年10月11日 15:34:47 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -public interface IFileStorageService { - - /** - * 文件上传 - * - * @param file - * @param path - * @return - */ - ResponseDTO fileUpload(MultipartFile file, String path); - - /** - * 获取文件url - * - * @param fileKey - * @return - */ - ResponseDTO getFileUrl(String fileKey); - - /** - * 流式下载(名称为原文件) - * - * @param key - * @return - */ - ResponseDTO fileDownload(String key); - - /** - * 单个删除文件 - * 根据文件key删除 - * - * @param fileKey - * @return - */ - ResponseDTO delete(String fileKey); - - - /** - * 缓存过期秒数 - * - * @return - */ - default Long cacheExpireSecond() { - return 3600L; - } - - /** - * 生成文件名字 - * 当前年月日时分秒 +32位 uuid + 文件格式后缀 - * - * @param originalFileName - * @return String - */ - default String generateFileName(String originalFileName) { - return generateFileNameByType(FilenameUtils.getExtension(originalFileName)); - } - - /** - * 根据文件类型 生成文件名,格式如下: - * [uuid]_[日期时间]_[文件类型] - * - * @param fileType - * @return - */ - default String generateFileNameByType(String fileType) { - String uuid = UUID.randomUUID().toString().replaceAll("-", ""); - String time = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_FORMATTER); - return uuid + "_" + time + "_" + fileType; - } - - /** - * 获取文件类型 - * - * @param fileExt - * @return - */ - default String getContentType(String fileExt) { - // 文件的后缀名 - if ("bmp".equalsIgnoreCase(fileExt)) { - return "image/bmp"; - } - if ("gif".equalsIgnoreCase(fileExt)) { - return "image/gif"; - } - if ("jpeg".equalsIgnoreCase(fileExt) || "jpg".equalsIgnoreCase(fileExt)) { - return "image/jpeg"; - } - if ("png".equalsIgnoreCase(fileExt)) { - return "image/png"; - } - if ("html".equalsIgnoreCase(fileExt)) { - return "text/html"; - } - if ("txt".equalsIgnoreCase(fileExt)) { - return "text/plain"; - } - if ("vsd".equalsIgnoreCase(fileExt)) { - return "application/vnd.visio"; - } - if ("ppt".equalsIgnoreCase(fileExt) || "pptx".equalsIgnoreCase(fileExt)) { - return "application/vnd.ms-powerpoint"; - } - if ("doc".equalsIgnoreCase(fileExt) || "docx".equalsIgnoreCase(fileExt)) { - return "application/msword"; - } - if ("pdf".equalsIgnoreCase(fileExt)) { - return "application/pdf"; - } - if ("xml".equalsIgnoreCase(fileExt)) { - return "text/xml"; - } - return ""; - } - - /** - * 获取文件格式 根据 content-type - * - * @param contentType - * @return - */ - default String getFileTypeByContentType(String contentType) { - // 文件的后缀名 - if ("image/bmp".equalsIgnoreCase(contentType)) { - return "bmp"; - } - if ("image/gif".equalsIgnoreCase(contentType)) { - return "gif"; - } - if ("image/jpeg".equalsIgnoreCase(contentType) || "image/jpg".equalsIgnoreCase(contentType)) { - return "jpg"; - } - if ("image/png".equalsIgnoreCase(contentType)) { - return "png"; - } - if ("text/html".equalsIgnoreCase(contentType)) { - return "html"; - } - if ("text/plain".equalsIgnoreCase(contentType)) { - return "txt"; - } - if ("application/vnd.visio".equalsIgnoreCase(contentType)) { - return "vsd"; - } - if ("application/vnd.ms-powerpoint".equalsIgnoreCase(contentType)) { - return "pptx"; - } - if ("application/msword".equalsIgnoreCase(contentType)) { - return "docx"; - } - if ("application/pdf".equalsIgnoreCase(contentType)) { - return "pdf"; - } - if ("text/xml".equalsIgnoreCase(contentType)) { - return "xml"; - } - return ""; - } - - /** - * 根据不同的浏览器 返回对应编码的文件名称 - * - * @param fileName - * @param userAgent - * @return - */ - default String getDownloadFileNameByUA(String fileName, String userAgent) { - try { - userAgent = userAgent.toUpperCase(); - if (userAgent.indexOf("MSIE") > 0) { - // IE浏览器 - fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()); - } else if (userAgent.indexOf("EDGE") > 0) { - // WIN10浏览器 - fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.name()); - } else { - // 其他 - fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - } - } catch (UnsupportedEncodingException e) { - return null; - } - return fileName; - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocCatalogVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocCatalogVO.java deleted file mode 100644 index 423bc3e5..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocCatalogVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 帮助文档的 目录 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-08-20 23:11:42 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class HelpDocCatalogVO { - - @ApiModelProperty("帮助文档目录id") - private Long helpDocCatalogId; - - @ApiModelProperty("帮助文档目录-名称") - private String name; - - @ApiModelProperty("帮助文档目录-父级id") - private Long parentId; - - @ApiModelProperty("帮助文档目录-排序") - private Integer sort; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocRecordVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocRecordVO.java deleted file mode 100644 index 3eabf68b..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocRecordVO.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 帮助文档 - 浏览记录 VO - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-08-20 23:11:42 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class HelpDocRecordVO { - - @ApiModelProperty("员工ID") - private Long employeeId; - - @ApiModelProperty("员工姓名") - private String employeeName; - - @ApiModelProperty("员工部门名称") - private String departmentName; - - @ApiModelProperty("查看次数") - private Integer pageViewCount; - - @ApiModelProperty("首次ip") - private String firstIp; - - @ApiModelProperty("首次用户设备等标识") - private String firstUserAgent; - - @ApiModelProperty("首次查看时间") - private LocalDateTime createTime; - - @ApiModelProperty("最后一次 ip") - private String lastIp; - - @ApiModelProperty("最后一次 用户设备等标识") - private String lastUserAgent; - - @ApiModelProperty("最后一次查看时间") - private LocalDateTime updateTime; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocViewRecordVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocViewRecordVO.java deleted file mode 100644 index c03cb736..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/helpdoc/domain/vo/HelpDocViewRecordVO.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.lab1024.sa.common.module.support.helpdoc.domain.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 帮助文档 - 浏览记录 VO - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-08-20 23:11:42 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class HelpDocViewRecordVO { - - @ApiModelProperty("ID") - private Long userId; - - @ApiModelProperty("姓名") - private String userName; - - @ApiModelProperty("查看次数") - private Integer pageViewCount; - - @ApiModelProperty("首次ip") - private String firstIp; - - @ApiModelProperty("首次用户设备等标识") - private String firstUserAgent; - - @ApiModelProperty("首次查看时间") - private LocalDateTime createTime; - - @ApiModelProperty("最后一次 ip") - private String lastIp; - - @ApiModelProperty("最后一次 用户设备等标识") - private String lastUserAgent; - - @ApiModelProperty("最后一次查看时间") - private LocalDateTime updateTime; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/DecryptData.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/DecryptData.java deleted file mode 100644 index d23f329a..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/DecryptData.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.lab1024.sa.common.module.support.jwe; - -import lombok.Data; - -/** - * 加密数据 包装类 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2021/6/29 20:49:23 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -class DecryptData { - - private String data; -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweAspect.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweAspect.java deleted file mode 100644 index 7a2dbc64..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweAspect.java +++ /dev/null @@ -1,128 +0,0 @@ -package net.lab1024.sa.common.module.support.jwe; - -import cn.hutool.crypto.Mode; -import cn.hutool.crypto.Padding; -import cn.hutool.crypto.SecureUtil; -import cn.hutool.crypto.symmetric.AES; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializerFeature; -import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.annotation.AfterReturning; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.aspectj.lang.reflect.MethodSignature; -import org.springframework.core.annotation.Order; -import org.springframework.util.Base64Utils; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; -import java.lang.reflect.Method; -import java.util.function.Function; - -/** - * 加密数据切口 - * - * @Author 1024创新实验室: 胡克 - * @Date 2020/11/25 10:46 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Slf4j -@Aspect -@Order(100) -public class JweAspect { - - private static final String MD5_SALT_FORMAT = "sa_%s_salt"; - - private Function userFunction; - - public JweAspect(Function userFunction) { - this.userFunction = userFunction; - } - - @Before("@annotation(net.lab1024.sa.common.module.support.jwe.JweDecrypt)") - public void before(JoinPoint joinPoint) { - Method method = ((MethodSignature) joinPoint.getSignature()).getMethod(); - JweDecrypt annotation = method.getAnnotation(JweDecrypt.class); - if (annotation == null) { - return; - } - Object[] params = joinPoint.getArgs(); - if (params == null) { - return; - } - if (params.length == 0) { - return; - } - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - JweUserKey user = this.userFunction.apply(request); - if (user == null) { - return; - } - Boolean decryptParamFlag = params[0] instanceof DecryptData; - if (!decryptParamFlag) { - return; - } - DecryptData decryptData = (DecryptData) params[0]; - String data = decryptData.getData(); - log.info("解密前数据:{}", data); - - String key = SecureUtil.md5(String.format(MD5_SALT_FORMAT, user.getUserId())); - log.info("解密KEY数据:{}", key); - //初始化向量是16位长度 - String iv = key.substring(0, 16); - //解密 - AES aes = new AES(Mode.CTS, Padding.PKCS5Padding, key.getBytes(), iv.getBytes()); - data = aes.decryptStr(data); - log.info("解密后数据:{}", data); - //base64解码 - data = new String(Base64Utils.decodeFromString(data)); - log.info("base64解码后数据:{}", data); - decryptData.setData(data); - } - - - @AfterReturning(returning = "object", pointcut = "@annotation(net.lab1024.sa.common.module.support.jwe.JweEncrypt)") - public void afterReturning(JoinPoint joinPoint, Object object) { - Method method = ((MethodSignature) joinPoint.getSignature()).getMethod(); - JweEncrypt annotation = method.getAnnotation(JweEncrypt.class); - if (annotation == null) { - return; - } - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - JweUserKey user = this.userFunction.apply(request); - if (user == null) { - return; - } - try { - ResponseDTO responseDTO = (ResponseDTO) object; - Object data = responseDTO.getData(); - if (data == null) { - return; - } - String jsonData = JSON.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect); - log.info("JSON 原数据:{}", jsonData); - //base64编码 - jsonData = Base64Utils.encodeToString(jsonData.getBytes("utf-8")); - log.info("JSON Base64数据:{}", jsonData); - //加密秘钥 - String key = SecureUtil.md5(String.format(MD5_SALT_FORMAT, user.getUserId())); - log.info("JSON MD5 KEY数据:{}", key); - //初始化向量是16位长度 - String iv = key.substring(0, 16); - //AES 加密 - AES aes = new AES(Mode.CTS, Padding.PKCS5Padding, key.getBytes(), iv.getBytes()); - data = aes.encryptBase64(jsonData); - log.info("JSON ASE 加密数据:{}", jsonData); - responseDTO.setData(jsonData); - } catch (Exception e) { - log.error(e.getMessage(),e); - return; - } - } - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweDecrypt.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweDecrypt.java deleted file mode 100644 index 5900f439..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweDecrypt.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.lab1024.sa.common.module.support.jwe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 解密注解 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2020/11/25 20:46 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface JweDecrypt { -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweEncrypt.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweEncrypt.java deleted file mode 100644 index e6e93940..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweEncrypt.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.lab1024.sa.common.module.support.jwe; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 加密注解 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2020/11/25 20:46 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) -public @interface JweEncrypt { -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweUserKey.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweUserKey.java deleted file mode 100644 index ce020667..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/jwe/JweUserKey.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.lab1024.sa.common.module.support.jwe; - -import lombok.Data; - -/** - * 解密用用户信息作为key - * - * @Author 1024创新实验室: 罗伊 - * @Date 2020/11/25 20:46 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class JweUserKey { - - /** - * 用户id - */ - private Long userId; - - /** - * 用户名 - */ - private String userName; - - /** - * 扩展信息 - */ - private String extData; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogQueryForm.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogQueryForm.java deleted file mode 100644 index 92d69c18..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogQueryForm.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.lab1024.sa.common.module.support.loginlog.domain; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.domain.PageParam; - -/** - * 登录查询日志 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022/07/22 19:46:23 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class LoginLogQueryForm extends PageParam { - - @ApiModelProperty("开始日期") - private String startDate; - - @ApiModelProperty("结束日期") - private String endDate; - - @ApiModelProperty("用户名称") - private String userName; - - @ApiModelProperty("ip") - private String ip; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogVO.java deleted file mode 100644 index 753dd49c..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/loginlog/domain/LoginLogVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.lab1024.sa.common.module.support.loginlog.domain; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; -import net.lab1024.sa.common.module.support.loginlog.LoginLogResultEnum; - -import java.time.LocalDateTime; - -/** - * 登录日志 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022/07/22 19:46:23 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class LoginLogVO { - - private Long loginLogId; - - @ApiModelProperty("用户id") - private Long userId; - - @ApiModelPropertyEnum(value = UserTypeEnum.class, desc = "用户类型") - private Integer userType; - - @ApiModelProperty("用户名") - private String userName; - - @ApiModelProperty("登录ip") - private String loginIp; - - @ApiModelProperty("user-agent") - private String userAgent; - - @ApiModelProperty("remark") - private String remark; - - @ApiModelPropertyEnum(LoginLogResultEnum.class) - private Integer loginResult; - - private LocalDateTime createTime; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogQueryForm.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogQueryForm.java deleted file mode 100644 index 2e92f11b..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogQueryForm.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.lab1024.sa.common.module.support.operatelog.domain; - -import net.lab1024.sa.common.common.domain.PageParam; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 操作日志查询 表单 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2021-12-08 20:48:52 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class OperateLogQueryForm extends PageParam { - - - @ApiModelProperty("开始日期") - private String startDate; - - @ApiModelProperty("结束日期") - private String endDate; - - - @ApiModelProperty("用户名称") - private String userName; - - @ApiModelProperty("请求结果 false失败 true成功") - private Boolean successFlag; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogVO.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogVO.java deleted file mode 100644 index b71f083f..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/operatelog/domain/OperateLogVO.java +++ /dev/null @@ -1,72 +0,0 @@ -package net.lab1024.sa.common.module.support.operatelog.domain; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.common.swagger.ApiModelPropertyEnum; - -import java.time.LocalDateTime; -import java.util.Date; - -/** - * 操作日志信息 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2021-12-08 20:48:52 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Data -public class OperateLogVO { - - @ApiModelProperty("主键") - private Long operateLogId; - - @ApiModelProperty("用户id") - private Long operateUserId; - - @ApiModelPropertyEnum(value = UserTypeEnum.class, desc = "用户类型") - private Integer operateUserType; - - @ApiModelProperty("用户名称") - private String operateUserName; - - @ApiModelProperty("操作模块") - private String module; - - @ApiModelProperty("操作内容") - private String content; - - @ApiModelProperty("请求路径") - private String url; - - @ApiModelProperty("请求方法") - private String method; - - @ApiModelProperty("请求参数") - private String param; - - @ApiModelProperty("客户ip") - private String ip; - - @ApiModelProperty("user-agent") - private String userAgent; - - @ApiModelProperty("请求结果 0失败 1成功") - private Boolean successFlag; - - @ApiModelProperty("失败原因") - private String failReason; - - @ApiModelProperty("更新时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime updateTime; - - @ApiModelProperty("创建时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime createTime; - - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberRecordService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberRecordService.java deleted file mode 100644 index 664e24fa..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/serialnumber/service/SerialNumberRecordService.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.lab1024.sa.common.module.support.serialnumber.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.common.common.domain.PageResult; -import net.lab1024.sa.common.common.domain.ResponseDTO; -import net.lab1024.sa.common.common.util.SmartPageUtil; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogEntity; -import net.lab1024.sa.common.module.support.operatelog.domain.OperateLogVO; -import net.lab1024.sa.common.module.support.serialnumber.constant.SerialNumberIdEnum; -import net.lab1024.sa.common.module.support.serialnumber.dao.SerialNumberDao; -import net.lab1024.sa.common.module.support.serialnumber.dao.SerialNumberRecordDao; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberRecordEntity; -import net.lab1024.sa.common.module.support.serialnumber.domain.SerialNumberRecordQueryForm; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 单据序列号 记录 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2022-03-25 21:46:07 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Service -public class SerialNumberRecordService { - - @Autowired - private SerialNumberRecordDao serialNumberRecordDao; - - public PageResult query(SerialNumberRecordQueryForm queryForm) { - Page page = SmartPageUtil.convert2PageQuery(queryForm); - List recordList = serialNumberRecordDao.query(page, queryForm); - return SmartPageUtil.convert2PageResult(page, recordList); - } -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/JwtConst.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/JwtConst.java deleted file mode 100644 index 79084efe..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/JwtConst.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.lab1024.sa.common.module.support.token; - -/** - * jwt相关常量 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2021-11-29 19:48:35 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -class JwtConst { - /** - * Id - */ - static final String CLAIM_ID_KEY = "id"; - - /** - * NAME - */ - static final String CLAIM_NAME_KEY = "name"; - - /** - * user type - */ - static final String CLAIM_USER_TYPE_KEY = "type"; - - /** - * 设备 - */ - static final String CLAIM_DEVICE_KEY = "device"; - - /** - * 万能密码登录的标识 - */ - static final String CLAIM_SUPER_PASSWORD_FLAG = "superPasswordFlag"; - -} diff --git a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java b/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java deleted file mode 100644 index e3af8649..00000000 --- a/smart-admin-api/sa-common/src/main/java/net/lab1024/sa/common/module/support/token/TokenService.java +++ /dev/null @@ -1,220 +0,0 @@ -package net.lab1024.sa.common.module.support.token; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.JwtBuilder; -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; -import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.common.common.enumeration.UserTypeEnum; -import net.lab1024.sa.common.constant.RedisKeyConst; -import net.lab1024.sa.common.module.support.redis.RedisService; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.math.NumberUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import java.util.Date; -import java.util.Map; - -/** - * 与用户token的相关的服务 - * - * @Author 1024创新实验室-主任: 卓大 - * @Date 2021-11-29 19:48:35 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ) - */ -@Component -@Slf4j -public class TokenService { - private static final long HOUR_TIME_MILLI = 60 * 60 * 1000; - - @Value("${token.key}") - private String tokenKey; - - @Value("${token.expire-day}") - private Integer tokenExpire; - - @Autowired - private RedisService redisService; - - /** - * 生成Token,并存入redis - * - * @param userId - * @param userName - * @param userTypeEnum - * @param loginDeviceEnum - * @param superPasswordFlag 特殊万能密码标识 - * @return - */ - public String generateToken(Long userId, String userName, UserTypeEnum userTypeEnum, LoginDeviceEnum loginDeviceEnum, Boolean superPasswordFlag) { - long nowTimeMilli = System.currentTimeMillis(); - Claims jwtClaims = Jwts.claims(); - jwtClaims.put(JwtConst.CLAIM_ID_KEY, userId); - jwtClaims.put(JwtConst.CLAIM_NAME_KEY, userName); - jwtClaims.put(JwtConst.CLAIM_USER_TYPE_KEY, userTypeEnum.getValue()); - jwtClaims.put(JwtConst.CLAIM_DEVICE_KEY, loginDeviceEnum.getValue()); - jwtClaims.put(JwtConst.CLAIM_SUPER_PASSWORD_FLAG, superPasswordFlag); - JwtBuilder jwtBuilder = Jwts.builder() - .setClaims(jwtClaims) - .setIssuedAt(new Date(nowTimeMilli)) - .signWith(SignatureAlgorithm.HS512, tokenKey); - - // 如果是万能密码,则不需要记录到redis中;万能密码最多半个小时有效期 - if (superPasswordFlag) { - jwtBuilder.setExpiration(new Date(nowTimeMilli + (HOUR_TIME_MILLI / 2))); - return jwtBuilder.compact(); - } - - jwtBuilder.setExpiration(new Date(nowTimeMilli + tokenExpire * 24 * HOUR_TIME_MILLI)); - String token = jwtBuilder.compact(); - String redisKey = this.generateTokenRedisKey(userId, userTypeEnum.getValue(), loginDeviceEnum.getValue()); - redisService.set(redisKey, token, tokenExpire * 24 * 3600); - return token; - } - - /** - * 生成登录信息: 含设备信息 - * - * @param userId - * @param device - * @return - */ - private String generateTokenRedisKey(Long userId, Integer userType, Integer device) { - String userKey = userType + "_" + userId + "_" + device; - return redisService.generateRedisKey(RedisKeyConst.Support.TOKEN, userKey); - } - - - /** - * 强制移除 此用户各端的登录信息 - * - * @param token - */ - public void removeToken(String token) { - Map tokenData = this.decryptTokenData(token); - if (MapUtils.isEmpty(tokenData)) { - return; - } - - //特殊账号 - if (tokenData.get(JwtConst.CLAIM_SUPER_PASSWORD_FLAG) != null) { - try { - Boolean superPasswordFlag = Boolean.valueOf(tokenData.get(JwtConst.CLAIM_SUPER_PASSWORD_FLAG).toString()); - if (superPasswordFlag) { - return; - } - } catch (Exception e) { - log.error(e.getMessage(), e); - return; - } - } - - boolean isValid = this.checkRedisToken(tokenData, token); - if (!isValid) { - return; - } - - Long userId = Long.valueOf(tokenData.get(JwtConst.CLAIM_ID_KEY).toString()); - Integer userType = Integer.valueOf(tokenData.get(JwtConst.CLAIM_USER_TYPE_KEY).toString()); - Integer device = Integer.valueOf(tokenData.get(JwtConst.CLAIM_DEVICE_KEY).toString()); - - String redisKey = this.generateTokenRedisKey(userId, userType, device); - redisService.delete(redisKey); - } - - /** - * 解析并校验token信息 获取 userId - * - * @param token - * @return - */ - public Long getUserIdAndValidateToken(String token) { - Map parseJwtData = this.decryptTokenData(token); - boolean isValid = this.checkRedisToken(parseJwtData, token); - if (!isValid) { - return null; - } - Long userId = Long.valueOf(parseJwtData.get(JwtConst.CLAIM_ID_KEY).toString()); - return userId; - } - - /** - * 解密和解析token - * - * @param token - * @return - */ - private Map decryptTokenData(String token) { - try { - return Jwts.parser() - .setSigningKey(tokenKey) - .parseClaimsJws(token) - .getBody(); - } catch (Exception e) { - } - return null; - } - - /** - * 校验token是否有效 - * - * @param token - * @return - */ - private boolean checkRedisToken(Map parseJwtData, String token) { - if (MapUtils.isEmpty(parseJwtData)) { - return false; - } - //特殊账号 - if (parseJwtData.get(JwtConst.CLAIM_SUPER_PASSWORD_FLAG) != null) { - try { - Boolean superPasswordFlag = Boolean.valueOf(parseJwtData.get(JwtConst.CLAIM_SUPER_PASSWORD_FLAG).toString()); - if (superPasswordFlag) { - return true; - } - } catch (Exception e) { - log.error(e.getMessage(), e); - return false; - } - } - - Long userId = null; - Integer userType = null, device = null; - - if (null != parseJwtData.get(JwtConst.CLAIM_ID_KEY)) { - userId = NumberUtils.toLong(parseJwtData.get(JwtConst.CLAIM_ID_KEY).toString(), -1); - userId = userId == -1 ? null : userId; - } - - if (null != parseJwtData.get(JwtConst.CLAIM_USER_TYPE_KEY)) { - userType = NumberUtils.toInt(parseJwtData.get(JwtConst.CLAIM_USER_TYPE_KEY).toString(), -1); - userType = userType == -1 ? null : userType; - } - - if (null != parseJwtData.get(JwtConst.CLAIM_DEVICE_KEY)) { - device = NumberUtils.toInt(parseJwtData.get(JwtConst.CLAIM_DEVICE_KEY).toString(), -1); - device = device == -1 ? null : device; - } - - if (userId == null || userType == null || device == null) { - return false; - } - - String redisKey = this.generateTokenRedisKey(userId, userType, device); - String redisToken = redisService.get(redisKey); - return token.equals(redisToken); - } - - /** - * 批量移除用户所有设备的token - */ - public void batchRemoveRedisToken(Long userId, UserTypeEnum userTypeEnum) { - for (LoginDeviceEnum device : LoginDeviceEnum.values()) { - redisService.delete(this.generateTokenRedisKey(userId, userTypeEnum.getValue(), device.getValue())); - } - } -} \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/resources/code-generator-template/tools.xml b/smart-admin-api/sa-common/src/main/resources/code-generator-template/tools.xml deleted file mode 100644 index 7f8f8681..00000000 --- a/smart-admin-api/sa-common/src/main/resources/code-generator-template/tools.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/smart-admin-api/sa-common/src/main/resources/dev/sa-common.yaml b/smart-admin-api/sa-common/src/main/resources/dev/sa-common.yaml deleted file mode 100644 index b6b25c9d..00000000 --- a/smart-admin-api/sa-common/src/main/resources/dev/sa-common.yaml +++ /dev/null @@ -1,126 +0,0 @@ -spring: - # 数据库连接信息 - datasource: - url: jdbc:p6spy:mysql://127.0.0.1:3306/smart_admin_v2?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai - username: root - password: Zhuoda1024lab - initial-size: 2 - min-idle: 2 - max-active: 10 - max-wait: 60000 - time-between-eviction-runs-millis: 60000 - min-evictable-idle-time-millis: 300000 - driver-class-name: com.p6spy.engine.spy.P6SpyDriver - filters: stat - druid: - username: druid - password: 1024 - login: - enabled: false - method: - pointcut: net.lab1024.sa..*Service.* - - # mvc swagger bugfix - mvc: - pathmatch: - matching-strategy: ant_path_matcher - - # redis 连接池配置信息 - redis: - database: 1 - host: 127.0.0.1 - lettuce: - pool: - max-active: 5 - min-idle: 1 - max-idle: 3 - max-wait: 30000ms - port: 6379 - timeout: 10000ms - password: - - # 上传文件大小配置 - servlet: - multipart: - max-file-size: 30MB - max-request-size: 30MB - - # json序列化相关配置 - jackson: - serialization: - write-enums-using-to-string: true - write-dates-as-timestamps: false - deserialization: - read-enums-using-to-string: true - fail-on-unknown-properties: false - default-property-inclusion: always - date-format: yyyy-MM-dd HH:mm:ss - time-zone: GMT+8 - - # 缓存实现类型 - cache: - type: caffeine - -#swagger: 提高swagger 方法名称有重复的日志提示 -logging: - level: - springfox: - documentation: - spring: - web: - readers: - operation: - CachingOperationNameGenerator: warn - scanners: - ApiListingReferenceScanner: warn - -# 文件上传 配置 -file: - storage: - mode: cloud - local: - path: ${localPath:/home}/smart_admin_v2/upload/ - cloud: - region: oss-cn-hangzhou - endpoint: oss-cn-hangzhou.aliyuncs.com - bucket-name: 1024lab-smart-admin - access-key: - secret-key: - url: - expire: 7200000 - public: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/ - -# swagger 配置 -swagger: - title: SmartAdmin - description: SmartAdmin 2.0 - version: 2.0 - host: localhost:${server.port} - package: net.lab1024.sa - tag-class: net.lab1024.sa.common.constant.SwaggerTagConst - team-url: https://www.1024lab.net/ - -# RestTemplate 请求配置 -http: - pool: - max-total: 20 - connect-timeout: 50000 - read-timeout: 50000 - write-timeout: 50000 - keep-alive: 300000 - -# token相关配置 -token: - key: sa-jwt-key - expire-day: 7 - -# 跨域配置 -access-control-allow-origin: '*' - -# 心跳配置 -heart-beat: - interval-seconds: 300 - -# 热加载配置 -reload: - interval-seconds: 300 \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/resources/pre/sa-common.yaml b/smart-admin-api/sa-common/src/main/resources/pre/sa-common.yaml deleted file mode 100644 index 2cac72a0..00000000 --- a/smart-admin-api/sa-common/src/main/resources/pre/sa-common.yaml +++ /dev/null @@ -1,126 +0,0 @@ -spring: - # 数据库连接信息 - datasource: - url: jdbc:mysql://127.0.0.1:3306/smart_admin_v2_pre?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai - username: root - password: Zhuoda123456 - initial-size: 5 - min-idle: 5 - max-active: 50 - max-wait: 60000 - time-between-eviction-runs-millis: 60000 - min-evictable-idle-time-millis: 300000 - driver-class-name: com.mysql.cj.jdbc.Driver - filters: stat - druid: - username: druid - password: 1024 - login: - enabled: true - method: - pointcut: net.lab1024.sa..*Service.* - - # mvc swagger bugfix - mvc: - pathmatch: - matching-strategy: ant_path_matcher - - # redis 连接池配置信息 - redis: - database: 1 - host: 127.0.0.1 - lettuce: - pool: - max-active: 50 - min-idle: 5 - max-idle: 5 - max-wait: 30000ms - port: 6379 - timeout: 10000ms - password: - - # 上传文件大小配置 - servlet: - multipart: - max-file-size: 30MB - max-request-size: 30MB - - # json序列化相关配置 - jackson: - serialization: - write-enums-using-to-string: true - write-dates-as-timestamps: false - deserialization: - read-enums-using-to-string: true - fail-on-unknown-properties: false - default-property-inclusion: always - date-format: yyyy-MM-dd HH:mm:ss - time-zone: GMT+8 - - # 缓存实现类型 - cache: - type: caffeine - -#swagger: 提高swagger 方法名称有重复的日志提示 -logging: - level: - springfox: - documentation: - spring: - web: - readers: - operation: - CachingOperationNameGenerator: warn - scanners: - ApiListingReferenceScanner: warn - -# 文件上传 配置 -file: - storage: - mode: cloud - local: - path: ${localPath:/home}/smart_admin_v2/upload/ - cloud: - region: oss-cn-qingdao - endpoint: oss-cn-qingdao.aliyuncs.com - bucket-name: common-sit - access-key: - secret-key: - url: - expire: 7200000 - public: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/ - -# swagger 配置 -swagger: - title: SmartAdmin - description: SmartAdmin 2.0 - version: 2.0 - host: localhost:${server.port} - package: net.lab1024.sa - tag-class: net.lab1024.sa.common.constant.SwaggerTagConst - team-url: https://www.1024lab.net/ - -# RestTemplate 请求配置 -http: - pool: - max-total: 20 - connect-timeout: 50000 - read-timeout: 50000 - write-timeout: 50000 - keep-alive: 300000 - -# token相关配置 -token: - key: sa-jwt-key - expire-day: 7 - -# 跨域配置 -access-control-allow-origin: '*' - -# 心跳配置 -heart-beat: - interval-seconds: 60 - -# 热加载配置 -reload: - interval-seconds: 60 \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/resources/prod/sa-common.yaml b/smart-admin-api/sa-common/src/main/resources/prod/sa-common.yaml deleted file mode 100644 index a0a2e5bf..00000000 --- a/smart-admin-api/sa-common/src/main/resources/prod/sa-common.yaml +++ /dev/null @@ -1,126 +0,0 @@ -spring: - # 数据库连接信息 - datasource: - url: jdbc:mysql://127.0.0.1:3306/smart_admin_v2_prod?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai - username: root - password: Zhuoda123456 - initial-size: 10 - min-idle: 10 - max-active: 100 - max-wait: 60000 - time-between-eviction-runs-millis: 60000 - min-evictable-idle-time-millis: 300000 - driver-class-name: com.mysql.cj.jdbc.Driver - filters: stat - druid: - username: druid - password: 1024 - login: - enabled: true - method: - pointcut: net.lab1024.sa..*Service.* - - # mvc swagger bugfix - mvc: - pathmatch: - matching-strategy: ant_path_matcher - - # redis 连接池配置信息 - redis: - database: 1 - host: 127.0.0.1 - lettuce: - pool: - max-active: 100 - min-idle: 10 - max-idle: 10 - max-wait: 30000ms - port: 6379 - timeout: 10000ms - password: - - # 上传文件大小配置 - servlet: - multipart: - max-file-size: 30MB - max-request-size: 30MB - - # json序列化相关配置 - jackson: - serialization: - write-enums-using-to-string: true - write-dates-as-timestamps: false - deserialization: - read-enums-using-to-string: true - fail-on-unknown-properties: false - default-property-inclusion: always - date-format: yyyy-MM-dd HH:mm:ss - time-zone: GMT+8 - - # 缓存实现类型 - cache: - type: caffeine - -#swagger: 提高swagger 方法名称有重复的日志提示 -logging: - level: - springfox: - documentation: - spring: - web: - readers: - operation: - CachingOperationNameGenerator: warn - scanners: - ApiListingReferenceScanner: warn - -# 文件上传 配置 -file: - storage: - mode: cloud - local: - path: ${localPath:/home}/smart_admin_v2/upload/ - cloud: - region: oss-cn-qingdao - endpoint: oss-cn-qingdao.aliyuncs.com - bucket-name: common-sit - access-key: - secret-key: - url: - expire: 7200000 - public: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/ - -# swagger 配置 -swagger: - title: SmartAdmin - description: SmartAdmin 2.0 - version: 2.0 - host: localhost:${server.port} - package: net.lab1024.sa - tag-class: net.lab1024.sa.common.constant.SwaggerTagConst - team-url: https://www.1024lab.net/ - -# RestTemplate 请求配置 -http: - pool: - max-total: 20 - connect-timeout: 50000 - read-timeout: 50000 - write-timeout: 50000 - keep-alive: 300000 - -# token相关配置 -token: - key: sa-jwt-key - expire-day: 7 - -# 跨域配置 -access-control-allow-origin: '*' - -# 心跳配置 -heart-beat: - interval-seconds: 60 - -# 热加载配置 -reload: - interval-seconds: 60 \ No newline at end of file diff --git a/smart-admin-api/sa-common/src/main/resources/test/sa-common.yaml b/smart-admin-api/sa-common/src/main/resources/test/sa-common.yaml deleted file mode 100644 index 8b387396..00000000 --- a/smart-admin-api/sa-common/src/main/resources/test/sa-common.yaml +++ /dev/null @@ -1,127 +0,0 @@ -spring: - # 数据库连接信息 - datasource: - url: jdbc:p6spy:mysql://127.0.0.1:3306/smart_admin_v2_test?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai - username: root - password: Zhuoda123456 - initial-size: 2 - min-idle: 5 - max-active: 20 - max-wait: 60000 - time-between-eviction-runs-millis: 60000 - min-evictable-idle-time-millis: 300000 - driver-class-name: com.p6spy.engine.spy.P6SpyDriver - filters: stat - druid: - username: druid - password: 1024 - login: - enabled: true - method: - pointcut: net.lab1024.sa..*Service.* - - # mvc swagger bugfix - mvc: - pathmatch: - matching-strategy: ant_path_matcher - - # redis 连接池配置信息 - redis: - database: 1 - host: 127.0.0.1 - lettuce: - pool: - max-active: 10 - min-idle: 1 - max-idle: 3 - max-wait: 30000ms - port: 6379 - timeout: 10000ms - password: - - # 上传文件大小配置 - servlet: - multipart: - max-file-size: 30MB - max-request-size: 30MB - - # json序列化相关配置 - jackson: - serialization: - write-enums-using-to-string: true - write-dates-as-timestamps: false - deserialization: - read-enums-using-to-string: true - fail-on-unknown-properties: false - default-property-inclusion: always - date-format: yyyy-MM-dd HH:mm:ss - time-zone: GMT+8 - - # 缓存实现类型 - cache: - type: caffeine - - -#swagger: 提高swagger 方法名称有重复的日志提示 -logging: - level: - springfox: - documentation: - spring: - web: - readers: - operation: - CachingOperationNameGenerator: warn - scanners: - ApiListingReferenceScanner: warn - -# 文件上传 配置 -file: - storage: - mode: cloud - local: - path: ${localPath:/home}/smart_admin_v2/upload/ - cloud: - region: oss-cn-qingdao - endpoint: oss-cn-qingdao.aliyuncs.com - bucket-name: common-sit - access-key: - secret-key: - url: - expire: 7200000 - public: https://${file.storage.cloud.bucket-name}.${file.storage.cloud.endpoint}/ - -# swagger 配置 -swagger: - title: SmartAdmin - description: SmartAdmin 2.0 - version: 2.0 - host: localhost:${server.port} - package: net.lab1024.sa - tag-class: net.lab1024.sa.common.constant.SwaggerTagConst - team-url: https://www.1024lab.net/ - -# RestTemplate 请求配置 -http: - pool: - max-total: 20 - connect-timeout: 50000 - read-timeout: 50000 - write-timeout: 50000 - keep-alive: 300000 - -# token相关配置 -token: - key: sa-jwt-key - expire-day: 7 - -# 跨域配置 -access-control-allow-origin: '*' - -# 心跳配置 -heart-beat: - interval-seconds: 60 - -# 热加载配置 -reload: - interval-seconds: 60 \ No newline at end of file diff --git a/smart-admin-web/javascript-ant-design-vue3/.env b/smart-admin-web/javascript-ant-design-vue3/.env deleted file mode 100644 index 6181c66e..00000000 --- a/smart-admin-web/javascript-ant-design-vue3/.env +++ /dev/null @@ -1,2 +0,0 @@ - -VITE_APP_PROJECT_TITLE = 'SmartAdmin' \ No newline at end of file diff --git a/smart-admin-web/javascript-ant-design-vue3/.env.development b/smart-admin-web/javascript-ant-design-vue3/.env.development index ac7e901e..7ae8066c 100644 --- a/smart-admin-web/javascript-ant-design-vue3/.env.development +++ b/smart-admin-web/javascript-ant-design-vue3/.env.development @@ -1,8 +1,3 @@ - -VITE_APP_API_URL = 'http://127.0.0.1:1024' - -VITE_APP_PROJECT_TITLE = 'SmartAdmin 开发环境(Dev)' - -VITE_APP_PROFILE = 'dev' - -VITE_APP_MODE = 'development' \ No newline at end of file +NODE_ENV=development +VITE_APP_TITLE='SmartAdmin 开发环境(Dev)' +VITE_APP_API_URL='http://127.0.0.1:1024' \ No newline at end of file diff --git a/smart-admin-web/javascript-ant-design-vue3/.env.localhost b/smart-admin-web/javascript-ant-design-vue3/.env.localhost index 13132662..36943904 100644 --- a/smart-admin-web/javascript-ant-design-vue3/.env.localhost +++ b/smart-admin-web/javascript-ant-design-vue3/.env.localhost @@ -1,8 +1,3 @@ - -VITE_APP_API_URL = 'http://127.0.0.1:1024' - -VITE_APP_PROJECT_TITLE = 'SmartAdmin 本地环境(Localhost)' - -VITE_APP_PROFILE = 'local' - -VITE_APP_MODE = 'local' \ No newline at end of file +NODE_ENV=development +VITE_APP_TITLE='SmartAdmin 本地环境(Local)' +VITE_APP_API_URL='http://127.0.0.1:1024' diff --git a/smart-admin-web/javascript-ant-design-vue3/.env.pre b/smart-admin-web/javascript-ant-design-vue3/.env.pre index 096644a0..0e6ead85 100644 --- a/smart-admin-web/javascript-ant-design-vue3/.env.pre +++ b/smart-admin-web/javascript-ant-design-vue3/.env.pre @@ -1,8 +1,3 @@ - -VITE_APP_API_URL = 'http://preview.smartadmin.1024lab.net/smart-admin-api' - -VITE_APP_PROJECT_TITLE = 'SmartAdmin 预发布环境(Pre)' - -VITE_APP_PROFILE = 'pre' - -VITE_APP_MODE = 'production' \ No newline at end of file +NODE_ENV=production +VITE_APP_TITLE='SmartAdmin 预发布环境(Pre)' +VITE_APP_API_URL='http://preview.smartadmin.1024lab.net/smart-admin-api' \ No newline at end of file diff --git a/smart-admin-web/javascript-ant-design-vue3/.env.production b/smart-admin-web/javascript-ant-design-vue3/.env.production index 86e4a747..22d5bea3 100644 --- a/smart-admin-web/javascript-ant-design-vue3/.env.production +++ b/smart-admin-web/javascript-ant-design-vue3/.env.production @@ -1,8 +1,3 @@ - -VITE_APP_API_URL = 'https://preview.smartadmin.vip/smart-admin-api' - -VITE_APP_PROJECT_TITLE = 'SmartAdmin V2.X' - -VITE_APP_PROFILE = 'prod' - -VITE_APP_MODE = 'production' \ No newline at end of file +NODE_ENV=production +VITE_APP_TITLE='SmartAdmin V3.X' +VITE_APP_API_URL='http://preview.smartadmin.1024lab.net/smart-admin-api' \ No newline at end of file diff --git a/smart-admin-web/javascript-ant-design-vue3/.env.test b/smart-admin-web/javascript-ant-design-vue3/.env.test index 40c7c11b..b56e45cb 100644 --- a/smart-admin-web/javascript-ant-design-vue3/.env.test +++ b/smart-admin-web/javascript-ant-design-vue3/.env.test @@ -1,8 +1,3 @@ - -VITE_APP_API_URL = 'http://127.0.0.1:1024' - -VITE_APP_PROJECT_TITLE = 'SmartAdmin 测试环境(Test)' - -VITE_APP_PROFILE = 'test' - -VITE_APP_MODE = 'development' \ No newline at end of file +NODE_ENV=production +VITE_APP_TITLE='SmartAdmin 测试环境(Test)' +VITE_APP_API_URL='http://127.0.0.1:1024' \ No newline at end of file diff --git a/smart-admin-web/javascript-ant-design-vue3/.eslintrc.js b/smart-admin-web/javascript-ant-design-vue3/.eslintrc.cjs similarity index 100% rename from smart-admin-web/javascript-ant-design-vue3/.eslintrc.js rename to smart-admin-web/javascript-ant-design-vue3/.eslintrc.cjs diff --git a/smart-admin-web/javascript-ant-design-vue3/.prettierrc.js b/smart-admin-web/javascript-ant-design-vue3/.prettierrc.cjs similarity index 100% rename from smart-admin-web/javascript-ant-design-vue3/.prettierrc.js rename to smart-admin-web/javascript-ant-design-vue3/.prettierrc.cjs diff --git a/smart-admin-web/javascript-ant-design-vue3/index.html b/smart-admin-web/javascript-ant-design-vue3/index.html index 8050c6b9..c88dce41 100644 --- a/smart-admin-web/javascript-ant-design-vue3/index.html +++ b/smart-admin-web/javascript-ant-design-vue3/index.html @@ -1,5 +1,5 @@ - + @@ -21,7 +21,7 @@ diff --git a/smart-admin-web/javascript-ant-design-vue3/src/components/framework/boolean-select/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/components/framework/boolean-select/index.vue index 6d4d0622..e405f8e0 100644 --- a/smart-admin-web/javascript-ant-design-vue3/src/components/framework/boolean-select/index.vue +++ b/smart-admin-web/javascript-ant-design-vue3/src/components/framework/boolean-select/index.vue @@ -73,7 +73,7 @@ console.log('boolean enum select', value); let booleanResult = null; if (!_.isUndefined(value)) { - booleanResult = value === 1 ? true : false; + booleanResult = value === 1; } emit('update:value', booleanResult); emit('change', booleanResult); diff --git a/smart-admin-web/javascript-ant-design-vue3/src/components/framework/icon-select/index.vue b/smart-admin-web/javascript-ant-design-vue3/src/components/framework/icon-select/index.vue index cb5aaa1f..468335de 100644 --- a/smart-admin-web/javascript-ant-design-vue3/src/components/framework/icon-select/index.vue +++ b/smart-admin-web/javascript-ant-design-vue3/src/components/framework/icon-select/index.vue @@ -9,7 +9,7 @@ -->