From ca770b208df706fc580ce9eecf2d6108aea0c47d Mon Sep 17 00:00:00 2001 From: zhuoda Date: Sun, 2 May 2021 11:54:19 +0800 Subject: [PATCH] v1.11.0 --- README.md | 42 +- .../smart-admin-api/doc/readme.txt | 18 +- smart-admin-service/smart-admin-api/pom.xml | 16 +- .../common/anno/ApiModelPropertyEnum.java | 12 + .../smartadmin/common/anno/DataScope.java | 15 + .../common/constant/ResponseCodeConst.java | 2 +- .../smartadmin/common/domain/BaseEntity.java | 1 + .../common/domain/PageParamDTO.java | 2 +- .../smartadmin/common/domain/ResponseDTO.java | 4 + .../MyBatisSqlQuerySqlDebugPlugin.java | 46 - .../MyBatisSqlUpdateSqlDebugPlugin.java | 44 - .../SmartSwaggerApiModelEnumPlugin.java | 21 +- .../common/validator/en/EnumValidator.java | 33 +- .../config/SmartDruidDataSourceConfig.java | 2 +- .../smartadmin/config/SmartKaptchaConfig.java | 4 +- .../config/SmartMybatisPlusConfig.java | 17 - .../SmartSwaggerDynamicGroupConfig.java | 41 +- .../handler/SmartOperateLogAspect.java | 2 +- .../SmartAuthenticationInterceptor.java | 8 +- .../OrderOperateLogService.java | 1 + .../module/business/notice/NoticeManage.java | 3 +- .../module/business/notice/NoticeService.java | 3 +- .../module/business/notice/dao/NoticeDao.java | 4 + .../module/support/file/FileController.java | 2 +- .../support/file/service/FileService.java | 3 +- .../idgenerator/domain/IdGeneratorEntity.java | 2 - .../domain/entity/QuartzTaskEntity.java | 1 + .../support/quartz/service/QuartzTask.java | 12 +- .../quartz/service/QuartzTaskService.java | 57 +- .../support/quartz/task/test/Example.java | 4 +- .../datascope/constant/DataScopeTypeEnum.java | 16 +- .../constant/DataScopeViewTypeEnum.java | 29 +- .../constant/DataScopeWhereInTypeEnum.java | 21 +- .../domain/dto/DataScopeSqlConfigDTO.java | 19 +- .../datascope/service/DataScopeService.java | 4 +- .../service/DataScopeSqlConfigService.java | 35 +- .../service/DataScopeViewService.java | 52 +- .../strategy/DataScopePowerStrategy.java | 24 + .../department/DepartmentController.java | 30 +- .../system/department/DepartmentDao.java | 7 +- .../DepartmentResponseCodeConst.java | 2 +- .../system/department/DepartmentService.java | 23 +- .../system/employee/EmployeeController.java | 3 +- .../module/system/employee/EmployeeDao.java | 8 +- .../system/employee/EmployeeService.java | 10 +- .../domain/dto/EmployeeLoginFormDTO.java | 2 - .../login/LoginController.java | 9 +- .../login/LoginResponseCodeConst.java | 2 +- .../login/LoginService.java | 28 +- .../login/LoginTokenService.java | 4 +- .../login/domain/KaptchaVO.java | 2 +- .../login/domain/LoginCacheDTO.java | 2 +- .../login/domain/LoginDetailVO.java | 2 +- .../login/domain/LoginPrivilegeDTO.java | 2 +- .../login/domain/RequestTokenBO.java | 2 +- .../controller/PrivilegeController.java | 3 - .../system/privilege/dao/PrivilegeDao.java | 7 + .../service/PrivilegeEmployeeService.java | 2 +- .../privilege/service/PrivilegeService.java | 14 +- .../smartadmin/util/SmartBigDecimalUtil.java | 40 +- .../smartadmin/util/SmartFileUtil.java | 91 + .../smartadmin/util/SmartPageUtil.java | 6 +- .../util/SmartRequestTokenUtil.java | 2 +- .../smartadmin/util/excel/SmartExcel.java | 83 + .../util/excel/SmartExcelFileType.java | 10 + .../util/excel/SmartExcelReader.java | 32 + .../smartadmin/util/excel/SmartSheet.java | 113 + .../src/main/resources/banner.txt | 2 +- .../main/resources/dev/application.properties | 22 +- .../src/main/resources/dev/spy.properties | 20 + .../system/department/DepartmentMapper.xml | 18 +- .../mapper/system/employee/EmployeeMapper.xml | 11 +- .../system/privilege/PrivilegeMapper.xml | 13 + .../main/resources/pre/application.properties | 12 +- .../resources/prod/application.properties | 16 +- .../main/resources/sit/application.properties | 16 +- .../src/main/resources/sit/spy.properties | 20 + .../src/main/resources/sql/smart-admin.sql | 442 +- .../codegenerator/web/ListForm.vue.vm | 4 +- smart-admin-web/.env.development | 4 +- smart-admin-web/.gitignore | 2 - smart-admin-web/package-lock.json | 15500 ++++++++++++++++ smart-admin-web/package.json | 1 + smart-admin-web/src/assets/images/logo.png | Bin 3259 -> 3839 bytes smart-admin-web/src/assets/images/logo1.png | Bin 0 -> 3259 bytes .../components/header-bar/header-bar.less | 5 + .../main/components/header-bar/header-bar.vue | 26 +- .../main/components/side-menu/side-menu.vue | 4 +- smart-admin-web/src/components/main/main.less | 4 +- smart-admin-web/src/components/main/main.vue | 2 +- smart-admin-web/src/main.js | 10 +- .../router/module/business/three-router.js | 16 +- .../router/module/system/system-setting.js | 2 +- smart-admin-web/src/themes/index.less | 12 +- .../src/views/business/email/send-mail.vue | 1 + .../three-level-router-view.vue | 58 + .../src/views/login/components/login-form.vue | 29 +- smart-admin-web/src/views/login/login.less | 2 +- .../src/views/support/task/task-list.vue | 56 +- .../role/components/role-tree/role-tree.vue | 222 +- .../components/privilege-form.vue | 2 +- .../system-privilege/system-privilege.vue | 12 +- 快速部署/README.md | 12 +- 103 files changed, 16993 insertions(+), 748 deletions(-) delete mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/mybatis/MyBatisSqlQuerySqlDebugPlugin.java delete mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/mybatis/MyBatisSqlUpdateSqlDebugPlugin.java create mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/strategy/DataScopePowerStrategy.java rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/LoginController.java (89%) rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/LoginResponseCodeConst.java (91%) rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/LoginService.java (89%) rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/LoginTokenService.java (96%) rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/domain/KaptchaVO.java (86%) rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/domain/LoginCacheDTO.java (88%) rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/domain/LoginDetailVO.java (95%) rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/domain/LoginPrivilegeDTO.java (92%) rename smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/{business => system}/login/domain/RequestTokenBO.java (90%) create mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartFileUtil.java create mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcel.java create mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcelFileType.java create mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcelReader.java create mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartSheet.java create mode 100644 smart-admin-service/smart-admin-api/src/main/resources/dev/spy.properties create mode 100644 smart-admin-service/smart-admin-api/src/main/resources/sit/spy.properties create mode 100644 smart-admin-web/package-lock.json create mode 100644 smart-admin-web/src/assets/images/logo1.png create mode 100644 smart-admin-web/src/views/business/three-level-router/three-level-router-view.vue diff --git a/README.md b/README.md index 9e842a7f..be05793a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +### SmartAdmin 2.0 (即 vue3 的 js版本和ts版本 )正在火热开发中,欢迎持续关注 ! #### 简介 SmartAdmin由河南·洛阳 [1024创新实验室](https://www.1024lab.net/)团队研发的一套互联网企业级的通用型中后台解决方案!使用最前沿的前后台技术栈SpringBoot和Vue,前后端分离,**我们开源一套漂亮的代码和一套整洁的代码规范**,让大家在这浮躁的代码世界里感受到一股把代码写好的清流!同时又让开发者节省大量的时间,减少加班,快乐工作,热爱生活。SmartAdmin 让你从认识到忘不了,绝对是你最想要的! @@ -25,32 +26,32 @@ gitee: [https://gitee.com/lab1024/smart-admin](https://gitee.com/lab1024/smart- #### 演示图 - - + + - - + + - - + + - - + + - - + + - - + + - - + +
@@ -106,22 +107,31 @@ ps:以上规范基础都是以团队出发,让团队开心快乐的写代码 #### 联系我们 [1024创新实验室](https://www.1024lab.net/) +公众号 + + + + +
SmartAdmin微信群(**加我微信拉你入群!**) - +
+ + + #### 捐赠 开源不易,感谢捐赠 >*佛祖保佑捐赠这些人写程序永无bug,工资翻倍,迎娶白富美,走上人生巅峰!* - +
diff --git a/smart-admin-service/smart-admin-api/doc/readme.txt b/smart-admin-service/smart-admin-api/doc/readme.txt index 952f684b..f586e4b8 100644 --- a/smart-admin-service/smart-admin-api/doc/readme.txt +++ b/smart-admin-service/smart-admin-api/doc/readme.txt @@ -1,19 +1,15 @@ -1 更新密码 -EmployeeController.updatePwd - -2 更新功能点 -PrivilegeController functionSaveOrUpdate和menuBatchSave、batchSaveFunctionList - -3 超管默认账号 +1 超管默认账号 sa/123456 -4 执行脚本: +2 执行脚本: 先执行:src/main/resources/sql/smart-admin.sql 再执行:src/main/resources/sql/quartz_mysql_2.3.0.sql -5 除dev之外文件 +3 除dev之外文件 -6 刷新页面,获取权限是否走缓存 +4 刷新页面,获取权限是否走缓存 LoginService.getSession -7 test类中去掉代码生成run +5 test类中去掉代码生成run + +6 前端百度统计 \ No newline at end of file diff --git a/smart-admin-service/smart-admin-api/pom.xml b/smart-admin-service/smart-admin-api/pom.xml index 293b3116..f7ec8db4 100644 --- a/smart-admin-service/smart-admin-api/pom.xml +++ b/smart-admin-service/smart-admin-api/pom.xml @@ -109,12 +109,18 @@ fastjson - + com.alibaba druid + + + p6spy + p6spy + + io.springfox @@ -126,6 +132,14 @@ + + + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} + + + com.google.guava diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/anno/ApiModelPropertyEnum.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/anno/ApiModelPropertyEnum.java index 40399a0f..c9babff3 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/anno/ApiModelPropertyEnum.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/anno/ApiModelPropertyEnum.java @@ -26,6 +26,18 @@ public @interface ApiModelPropertyEnum { String example() default ""; + /** + * 是否隐藏 + * + * @return + */ + boolean hidden() default false; + + /** + * 是否必须 + * + * @return + */ boolean required() default true; String dataType() default ""; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/anno/DataScope.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/anno/DataScope.java index 802b0a9b..1ab8061a 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/anno/DataScope.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/anno/DataScope.java @@ -1,6 +1,8 @@ package net.lab1024.smartadmin.common.anno; import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeTypeEnum; +import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeWhereInTypeEnum; +import net.lab1024.smartadmin.module.system.datascope.strategy.DataScopePowerStrategy; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -23,12 +25,25 @@ public @interface DataScope { DataScopeTypeEnum dataScopeType() default DataScopeTypeEnum.DEFAULT; + DataScopeWhereInTypeEnum whereInType() default DataScopeWhereInTypeEnum.EMPLOYEE; + /** + * DataScopeWhereInTypeEnum.CUSTOM_STRATEGY类型 才可使用joinSqlImplClazz属性 + * @return + */ + Class joinSqlImplClazz() default DataScopePowerStrategy.class; + + /** + * * 第几个where 条件 从0开始 * @return */ int whereIndex() default 0; + /** + * DataScopeWhereInTypeEnum为CUSTOM_STRATEGY类型时,此属性无效 + * @return + */ String joinSql() default ""; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/constant/ResponseCodeConst.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/constant/ResponseCodeConst.java index 31f3f4c9..c572eecd 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/constant/ResponseCodeConst.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/constant/ResponseCodeConst.java @@ -4,7 +4,7 @@ import net.lab1024.smartadmin.module.system.department.DepartmentResponseCodeCon import net.lab1024.smartadmin.module.system.employee.constant.EmployeeResponseCodeConst; import net.lab1024.smartadmin.module.support.file.constant.FileResponseCodeConst; import net.lab1024.smartadmin.module.business.log.orderoperatelog.constant.OrderOperateLogOperateTypeConst; -import net.lab1024.smartadmin.module.business.login.LoginResponseCodeConst; +import net.lab1024.smartadmin.module.system.login.LoginResponseCodeConst; import net.lab1024.smartadmin.module.system.position.PositionResponseCodeConst; import net.lab1024.smartadmin.module.system.privilege.constant.PrivilegeResponseCodeConst; import net.lab1024.smartadmin.module.system.role.basic.RoleResponseCodeConst; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/BaseEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/BaseEntity.java index 2d890064..e6724c94 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/BaseEntity.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/BaseEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import java.time.LocalDateTime; import java.util.Date; /** diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/PageParamDTO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/PageParamDTO.java index 14abc61a..73590fc5 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/PageParamDTO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/PageParamDTO.java @@ -22,7 +22,7 @@ public class PageParamDTO { @NotNull(message = "每页数量不能为空") @ApiModelProperty(value = "每页数量(不能为空)", example = "10") - @Max(value = 200, message = "每页最大为200") + @Max(value = 500, message = "每页最大为500") protected Integer pageSize; @ApiModelProperty("是否查询总条数") diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/ResponseDTO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/ResponseDTO.java index d1b4845b..92ec781e 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/ResponseDTO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/domain/ResponseDTO.java @@ -85,6 +85,10 @@ public class ResponseDTO { return new ResponseDTO(codeConst, msg); } + public static ResponseDTO wrapMsg(ResponseCodeConst codeConst, String msg) { + return new ResponseDTO(codeConst, msg); + } + public String getMsg() { return msg; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/mybatis/MyBatisSqlQuerySqlDebugPlugin.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/mybatis/MyBatisSqlQuerySqlDebugPlugin.java deleted file mode 100644 index dcd18c02..00000000 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/mybatis/MyBatisSqlQuerySqlDebugPlugin.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.lab1024.smartadmin.common.mybatis; - -import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.mapping.BoundSql; -import org.apache.ibatis.mapping.MappedStatement; -import org.apache.ibatis.plugin.*; -import org.apache.ibatis.session.ResultHandler; -import org.apache.ibatis.session.RowBounds; - -import java.util.Properties; - -/** - * [ mybaits sql 拦截 ] - * - * @author zhuoda - * @version 1.0 - * @company 1024lab.net - * @copyright (c) 2019 1024lab.netInc. All rights reserved. - * @date - * @since JDK1.8 - */ -@Intercepts({@Signature(type = org.apache.ibatis.executor.Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})}) -@Slf4j -public class MyBatisSqlQuerySqlDebugPlugin implements Interceptor { - - @Override - public Object intercept(Invocation invocation) throws Throwable { - MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; - Object parameter = invocation.getArgs()[1]; - BoundSql boundSql = mappedStatement.getBoundSql(parameter); - log.info(boundSql.getSql()+"\r\n"+boundSql.getParameterMappings().toString()); - Object obj = invocation.proceed(); - return obj; - } - - @Override - public Object plugin(Object arg0) { - return Plugin.wrap(arg0,this); - } - - @Override - public void setProperties(Properties arg0) { - - } - -} \ No newline at end of file diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/mybatis/MyBatisSqlUpdateSqlDebugPlugin.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/mybatis/MyBatisSqlUpdateSqlDebugPlugin.java deleted file mode 100644 index 5f8f5850..00000000 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/mybatis/MyBatisSqlUpdateSqlDebugPlugin.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.lab1024.smartadmin.common.mybatis; - -import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.mapping.BoundSql; -import org.apache.ibatis.mapping.MappedStatement; -import org.apache.ibatis.plugin.*; - -import java.util.Properties; - -/** - * [ mybaits sql 拦截 ] - * - * @author zhuoda - * @version 1.0 - * @company 1024lab.net - * @copyright (c) 2019 1024lab.netInc. All rights reserved. - * @date - * @since JDK1.8 - */ -@Intercepts({@Signature(type = org.apache.ibatis.executor.Executor.class, method = "update", args = {MappedStatement.class, Object.class})}) -@Slf4j -public class MyBatisSqlUpdateSqlDebugPlugin implements Interceptor { - - @Override - public Object intercept(Invocation invocation) throws Throwable { - MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; - Object parameter = invocation.getArgs()[1]; - BoundSql boundSql = mappedStatement.getBoundSql(parameter); - log.info(boundSql.getSql()+"\r\n"+boundSql.getParameterMappings().toString()); - Object obj = invocation.proceed(); - return obj; - } - - @Override - public Object plugin(Object arg0) { - return Plugin.wrap(arg0,this); - } - - @Override - public void setProperties(Properties arg0) { - - } - -} \ No newline at end of file diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/swagger/SmartSwaggerApiModelEnumPlugin.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/swagger/SmartSwaggerApiModelEnumPlugin.java index 15037fb8..dbc2d586 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/swagger/SmartSwaggerApiModelEnumPlugin.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/swagger/SmartSwaggerApiModelEnumPlugin.java @@ -45,22 +45,23 @@ public class SmartSwaggerApiModelEnumPlugin implements ModelPropertyBuilderPlugi @Override public void apply(ModelPropertyContext context) { - Optional annotation = Optional.absent(); + Optional enumOptional = Optional.absent(); if (context.getAnnotatedElement().isPresent()) { - annotation = annotation.or(findApiModePropertyAnnotation(context.getAnnotatedElement().get())); + enumOptional = enumOptional.or(findApiModePropertyAnnotation(context.getAnnotatedElement().get())); } if (context.getBeanPropertyDefinition().isPresent()) { - annotation = annotation.or(findPropertyAnnotation(context.getBeanPropertyDefinition().get(), ApiModelPropertyEnum.class)); + enumOptional = enumOptional.or(findPropertyAnnotation(context.getBeanPropertyDefinition().get(), ApiModelPropertyEnum.class)); } - if (annotation.isPresent()) { - Class aClass = annotation.get().value(); - String enumInfo = BaseEnum.getInfo(aClass); - String enumDesc = annotation.get().enumDesc(); - context.getBuilder().required(annotation.transform(toIsRequired()).or(false)) - .description(enumDesc +":"+enumInfo) - .example(annotation.transform(toExample()).orNull()); + if (enumOptional.isPresent()) { + ApiModelPropertyEnum anEnum = enumOptional.get(); + String enumInfo = BaseEnum.getInfo(anEnum.value()); + context.getBuilder() + .required(enumOptional.transform(toIsRequired()).or(false)) + .description(anEnum.enumDesc() + ":" + enumInfo) + .example(enumOptional.transform(toExample()).orNull()) + .isHidden(anEnum.hidden()); } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/validator/en/EnumValidator.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/validator/en/EnumValidator.java index 953a90d3..adbc1dbe 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/validator/en/EnumValidator.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/common/validator/en/EnumValidator.java @@ -5,6 +5,8 @@ import net.lab1024.smartadmin.common.domain.BaseEnum; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 枚举类校验器 @@ -15,9 +17,9 @@ import java.util.List; public class EnumValidator implements ConstraintValidator { /** - * 枚举类的类对象 + * 枚举类实例集合 */ - private Class enumClass; + private List enumValList; /** * 是否必须 @@ -27,8 +29,9 @@ public class EnumValidator implements ConstraintValidator { @Override public void initialize(CheckEnum constraintAnnotation) { // 获取注解传入的枚举类对象 - enumClass = constraintAnnotation.enumClazz(); required = constraintAnnotation.required(); + Class enumClass = constraintAnnotation.enumClazz(); + enumValList = Stream.of(enumClass.getEnumConstants()).map(BaseEnum::getValue).collect(Collectors.toList()); } @Override @@ -44,7 +47,7 @@ public class EnumValidator implements ConstraintValidator { } // 校验是否为合法的枚举值 - return this.hasEnum(value); + return enumValList.contains(value); } /** @@ -58,23 +61,11 @@ public class EnumValidator implements ConstraintValidator { // 必须的情况下 list 不能为空 return false; } - for (Object obj : list) { - boolean hasEnum = this.hasEnum(obj); - if (!hasEnum) { - return false; - } + // 校验是否重复 + long count = list.stream().distinct().count(); + if (count != list.size()) { + return false; } - return true; - } - - private boolean hasEnum(Object value) { - // 校验是否为合法的枚举值 - BaseEnum[] enums = enumClass.getEnumConstants(); - for (BaseEnum baseEnum : enums) { - if (baseEnum.getValue().equals(value)) { - return true; - } - } - return false; + return enumValList.containsAll(list); } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartDruidDataSourceConfig.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartDruidDataSourceConfig.java index f0107110..560bda2a 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartDruidDataSourceConfig.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartDruidDataSourceConfig.java @@ -65,7 +65,7 @@ public class SmartDruidDataSourceConfig { @Value("${spring.datasource.time-between-eviction-runs-millis}") long timeBetweenEvictionRunsMillis; - @Value("${spring.datasource.min-evictable-edle-time-millis}") + @Value("${spring.datasource.min-evictable-idle-time-millis}") long minEvictableIdleTimeMillis; @Value("${spring.datasource.filters}") diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartKaptchaConfig.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartKaptchaConfig.java index 44744a8c..06dd1c95 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartKaptchaConfig.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartKaptchaConfig.java @@ -30,8 +30,8 @@ public class SmartKaptchaConfig { properties.setProperty("kaptcha.border.color", "34,114,200"); properties.setProperty("kaptcha.image.width", "125"); properties.setProperty("kaptcha.image.height", "45"); - properties.setProperty("kaptcha.textproducer.char.string", "ABCDEFG23456789"); - properties.setProperty("kaptcha.textproducer.char.length", "5"); + properties.setProperty("kaptcha.textproducer.char.string", "0123456789"); + properties.setProperty("kaptcha.textproducer.char.length", "4"); properties.setProperty("kaptcha.textproducer.font.names", "Arial,Arial Narrow,Serif,Helvetica,Tahoma,Times New Roman,Verdana"); properties.setProperty("kaptcha.textproducer.font.size", "38"); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartMybatisPlusConfig.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartMybatisPlusConfig.java index 95d20208..6bdcfb08 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartMybatisPlusConfig.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartMybatisPlusConfig.java @@ -1,15 +1,10 @@ package net.lab1024.smartadmin.config; -import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; -import net.lab1024.smartadmin.common.mybatis.MyBatisSqlQuerySqlDebugPlugin; -import net.lab1024.smartadmin.common.mybatis.MyBatisSqlUpdateSqlDebugPlugin; -import net.lab1024.smartadmin.constant.SystemEnvironmentEnum; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; import org.springframework.transaction.annotation.EnableTransactionManagement; /** @@ -29,16 +24,4 @@ public class SmartMybatisPlusConfig { return new PaginationInterceptor().setCountSqlParser(new JsqlParserCountOptimize(true)); } - /** - * 打印sql log - * @return - */ - @Bean - @Profile(SystemEnvironmentEnum.DEV_ENV) - ConfigurationCustomizer mybatisConfigurationCustomizer() { - return configuration -> { - configuration.addInterceptor(new MyBatisSqlUpdateSqlDebugPlugin()); - configuration.addInterceptor(new MyBatisSqlQuerySqlDebugPlugin()); - }; - } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartSwaggerDynamicGroupConfig.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartSwaggerDynamicGroupConfig.java index b3ca6d9a..aad7b175 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartSwaggerDynamicGroupConfig.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartSwaggerDynamicGroupConfig.java @@ -1,6 +1,6 @@ package net.lab1024.smartadmin.config; -import net.lab1024.smartadmin.constant.SwaggerTagConst; +import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import com.google.common.base.Optional; import com.google.common.base.Predicate; import com.google.common.base.Predicates; @@ -8,6 +8,8 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; +import net.lab1024.smartadmin.constant.SwaggerTagConst; +import net.lab1024.smartadmin.interceptor.SmartAuthenticationInterceptor; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; @@ -18,11 +20,14 @@ import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.core.env.Environment; +import org.springframework.web.bind.annotation.ResponseBody; 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.*; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; @@ -48,6 +53,7 @@ import java.util.Map; */ @Slf4j @EnableSwagger2 +@EnableKnife4j @Configuration @Profile({"dev", "sit", "pre", "prod"}) public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDefinitionRegistryPostProcessor { @@ -86,9 +92,9 @@ public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDef private String groupName = "default"; - private List groupList = Lists.newArrayList(); + private final List groupList = Lists.newArrayList(); - private Map> groupMap = Maps.newHashMap(); + private final Map> groupMap = Maps.newHashMap(); @Override public void setEnvironment(Environment environment) { @@ -105,7 +111,7 @@ public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDef this.groupBuild(); for (Map.Entry> entry : groupMap.entrySet()) { String group = entry.getKey(); - BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(Docket.class, this :: baseDocket); + BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(Docket.class, this::baseDocket); BeanDefinition beanDefinition = builder.getRawBeanDefinition(); registry.registerBeanDefinition(group + "Api", beanDefinition); } @@ -134,6 +140,16 @@ public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDef } private Docket baseDocket() { + // 配置全局参数 token + ParameterBuilder tokenPar = new ParameterBuilder(); + Parameter parameter = tokenPar.name(SmartAuthenticationInterceptor.TOKEN_NAME) + .description("token") + .modelRef(new ModelRef("string")) + .parameterType("header") + .defaultValue("") + .required(false) + .build(); + // 请求类型过滤规则 Predicate controllerPredicate = getControllerPredicate(); // controller 包路径 @@ -148,17 +164,18 @@ public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDef .build() .apiInfo(this.serviceApiInfo()) .securitySchemes(securitySchemes()) - .securityContexts(securityContexts()); + .securityContexts(securityContexts()) + .globalOperationParameters(Lists.newArrayList(parameter)); } private List securitySchemes() { - List apiKeyList= new ArrayList<>(); + List apiKeyList = new ArrayList<>(); apiKeyList.add(new ApiKey("x-access-token", "x-access-token", "header")); return apiKeyList; } private List securityContexts() { - List securityContexts=new ArrayList<>(); + List securityContexts = new ArrayList<>(); securityContexts.add( SecurityContext.builder() .securityReferences(defaultAuth()) @@ -171,7 +188,7 @@ public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDef AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; - List securityReferences=new ArrayList<>(); + List securityReferences = new ArrayList<>(); securityReferences.add(new SecurityReference("x-access-token", authorizationScopes)); return securityReferences; } @@ -192,7 +209,11 @@ public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDef return false; }; groupIndex++; - return Predicates.and(RequestHandlerSelectors.withClassAnnotation(RestController.class), methodPredicate); + return Predicates.or( + Predicates.and(RequestHandlerSelectors.withClassAnnotation(RestController.class), methodPredicate), + Predicates.and( + RequestHandlerSelectors.withMethodAnnotation(ResponseBody.class), methodPredicate) + ); } private ApiInfo serviceApiInfo() { @@ -212,6 +233,4 @@ public class SmartSwaggerDynamicGroupConfig implements EnvironmentAware, BeanDef } - - } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/handler/SmartOperateLogAspect.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/handler/SmartOperateLogAspect.java index 7bf5e923..0dd49cd2 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/handler/SmartOperateLogAspect.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/handler/SmartOperateLogAspect.java @@ -5,7 +5,7 @@ import net.lab1024.smartadmin.common.anno.OperateLog; import net.lab1024.smartadmin.common.constant.JudgeEnum; import net.lab1024.smartadmin.module.business.log.LogService; import net.lab1024.smartadmin.module.business.log.useroperatelog.domain.UserOperateLogEntity; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.util.SmartRequestTokenUtil; import net.lab1024.smartadmin.util.SmartStringUtil; import io.swagger.annotations.Api; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java index 4d949393..30f299f9 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java @@ -5,9 +5,9 @@ import net.lab1024.smartadmin.common.anno.NoNeedLogin; import net.lab1024.smartadmin.common.anno.NoValidPrivilege; import net.lab1024.smartadmin.common.domain.ResponseDTO; import net.lab1024.smartadmin.constant.CommonConst; -import net.lab1024.smartadmin.module.business.login.LoginResponseCodeConst; -import net.lab1024.smartadmin.module.business.login.LoginTokenService; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.LoginResponseCodeConst; +import net.lab1024.smartadmin.module.system.login.LoginTokenService; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.module.system.privilege.service.PrivilegeEmployeeService; import net.lab1024.smartadmin.util.SmartRequestTokenUtil; import net.lab1024.smartadmin.util.SmartStringUtil; @@ -36,7 +36,7 @@ import java.util.List; @Component public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter { - private static final String TOKEN_NAME = "x-access-token"; + public static final String TOKEN_NAME = "x-access-token"; @Value("${access-control-allow-origin}") private String accessControlAllowOrigin; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/log/orderoperatelog/OrderOperateLogService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/log/orderoperatelog/OrderOperateLogService.java index be9ebf5b..601b8cef 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/log/orderoperatelog/OrderOperateLogService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/log/orderoperatelog/OrderOperateLogService.java @@ -9,6 +9,7 @@ import net.lab1024.smartadmin.util.SmartStringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/NoticeManage.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/NoticeManage.java index 4fe6b183..7f65e416 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/NoticeManage.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/NoticeManage.java @@ -1,7 +1,7 @@ package net.lab1024.smartadmin.module.business.notice; import net.lab1024.smartadmin.common.constant.JudgeEnum; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.module.business.notice.dao.NoticeDao; import net.lab1024.smartadmin.module.business.notice.dao.NoticeReceiveRecordDao; import net.lab1024.smartadmin.module.business.notice.domain.dto.NoticeUpdateDTO; @@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.Date; /** diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/NoticeService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/NoticeService.java index 4faf77b7..113c285c 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/NoticeService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/NoticeService.java @@ -6,7 +6,7 @@ import net.lab1024.smartadmin.common.constant.ResponseCodeConst; import net.lab1024.smartadmin.common.domain.PageParamDTO; import net.lab1024.smartadmin.common.domain.PageResultDTO; import net.lab1024.smartadmin.common.domain.ResponseDTO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.module.business.notice.dao.NoticeDao; import net.lab1024.smartadmin.module.business.notice.dao.NoticeReceiveRecordDao; import net.lab1024.smartadmin.module.business.notice.domain.dto.*; @@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.Date; import java.util.HashMap; import java.util.List; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/dao/NoticeDao.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/dao/NoticeDao.java index bb8cca72..de7caec5 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/dao/NoticeDao.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/notice/dao/NoticeDao.java @@ -2,8 +2,10 @@ package net.lab1024.smartadmin.module.business.notice.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import net.lab1024.smartadmin.common.anno.DataScope; import net.lab1024.smartadmin.module.business.notice.domain.dto.*; import net.lab1024.smartadmin.module.business.notice.domain.entity.NoticeEntity; +import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeWhereInTypeEnum; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; @@ -29,6 +31,7 @@ public interface NoticeDao extends BaseMapper { * @param queryDTO * @return NoticeEntity */ + @DataScope(joinSql = "n.create_user in (#employeeIds)", whereInType = DataScopeWhereInTypeEnum.EMPLOYEE) List queryByPage(Page page, @Param("queryDTO") NoticeQueryDTO queryDTO); @@ -38,6 +41,7 @@ public interface NoticeDao extends BaseMapper { * @param employeeId * @return */ + @DataScope(joinSql = "e.department_id in (#departmentIds)", whereInType = DataScopeWhereInTypeEnum.DEPARTMENT) List queryUnreadByPage(Page page, @Param("employeeId") Long employeeId, @Param("sendStatus") Integer sendStatus); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/file/FileController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/file/FileController.java index 408f2aac..001e99d2 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/file/FileController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/file/FileController.java @@ -10,7 +10,7 @@ import net.lab1024.smartadmin.module.support.file.domain.dto.FileQueryDTO; import net.lab1024.smartadmin.module.support.file.domain.vo.FileVO; import net.lab1024.smartadmin.module.support.file.domain.vo.UploadVO; import net.lab1024.smartadmin.module.support.file.service.FileService; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.util.SmartRequestTokenUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/file/service/FileService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/file/service/FileService.java index b889c077..9f645620 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/file/service/FileService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/file/service/FileService.java @@ -13,7 +13,7 @@ import net.lab1024.smartadmin.module.support.file.domain.dto.FileQueryDTO; import net.lab1024.smartadmin.module.support.file.domain.entity.FileEntity; import net.lab1024.smartadmin.module.support.file.domain.vo.FileVO; import net.lab1024.smartadmin.module.support.file.domain.vo.UploadVO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.util.SmartBaseEnumUtil; import net.lab1024.smartadmin.util.SmartBeanUtil; import net.lab1024.smartadmin.util.SmartPageUtil; @@ -26,6 +26,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.time.LocalDateTime; import java.util.Arrays; import java.util.Date; import java.util.List; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/idgenerator/domain/IdGeneratorEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/idgenerator/domain/IdGeneratorEntity.java index 051cca36..e1d64ffc 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/idgenerator/domain/IdGeneratorEntity.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/idgenerator/domain/IdGeneratorEntity.java @@ -42,6 +42,4 @@ public class IdGeneratorEntity extends BaseEntity implements Serializable { * 备注 */ private String remark; - private Date updateTime; - private Date createTime; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/domain/entity/QuartzTaskEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/domain/entity/QuartzTaskEntity.java index f010c604..cb419b84 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/domain/entity/QuartzTaskEntity.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/domain/entity/QuartzTaskEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import net.lab1024.smartadmin.common.domain.BaseEntity; import lombok.Data; + /** * [ ] * diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/service/QuartzTask.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/service/QuartzTask.java index c09e7ba2..4b327d1f 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/service/QuartzTask.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/service/QuartzTask.java @@ -1,14 +1,14 @@ package net.lab1024.smartadmin.module.support.quartz.service; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.smartadmin.common.domain.ITask; import net.lab1024.smartadmin.module.support.quartz.constant.QuartzConst; import net.lab1024.smartadmin.module.support.quartz.constant.TaskResultEnum; import net.lab1024.smartadmin.module.support.quartz.domain.entity.QuartzTaskEntity; import net.lab1024.smartadmin.module.support.quartz.domain.entity.QuartzTaskLogEntity; -import net.lab1024.smartadmin.common.domain.ITask; import net.lab1024.smartadmin.third.SmartApplicationContext; import net.lab1024.smartadmin.util.SmartIPUtil; import net.lab1024.smartadmin.util.SmartQuartzUtil; -import lombok.extern.slf4j.Slf4j; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -35,7 +35,7 @@ public class QuartzTask extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { JobDetail jobDetail = context.getJobDetail(); - Object params = jobDetail.getJobDataMap().get(QuartzConst.QUARTZ_PARAMS_KEY); + Object params = context.getMergedJobDataMap().get(QuartzConst.QUARTZ_PARAMS_KEY); JobKey jobKey = jobDetail.getKey(); Long taskId = SmartQuartzUtil.getTaskIdByJobKey(jobKey); @@ -47,7 +47,11 @@ public class QuartzTask extends QuartzJobBean { QuartzTaskLogEntity taskLogEntity = new QuartzTaskLogEntity(); taskLogEntity.setTaskId(taskId); taskLogEntity.setIpAddress(SmartIPUtil.getLocalHostIP()); - taskLogEntity.setTaskName(quartzTaskEntity.getTaskName()); + try { + taskLogEntity.setTaskName(quartzTaskEntity.getTaskName()); + } catch (Exception e) { + e.printStackTrace(); + } String paramsStr = null; if (params != null) { paramsStr = params.toString(); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/service/QuartzTaskService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/service/QuartzTaskService.java index bce68330..9f88132a 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/service/QuartzTaskService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/service/QuartzTaskService.java @@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -82,7 +83,7 @@ public class QuartzTaskService { @Transactional(rollbackFor = Throwable.class) public ResponseDTO saveOrUpdateTask(QuartzTaskDTO quartzTaskDTO) throws Exception { ResponseDTO baseValid = this.baseValid(quartzTaskDTO); - if (! baseValid.isSuccess()) { + if (!baseValid.isSuccess()) { return baseValid; } Long taskId = quartzTaskDTO.getId(); @@ -103,7 +104,7 @@ public class QuartzTaskService { if (taskBean == null) { return ResponseDTO.wrap(ResponseCodeConst.ERROR_PARAM, "taskBean 不存在"); } - if (! CronExpression.isValidExpression(quartzTaskDTO.getTaskCron())) { + if (!CronExpression.isValidExpression(quartzTaskDTO.getTaskCron())) { return ResponseDTO.wrap(ResponseCodeConst.ERROR_PARAM, "请传入正确的正则表达式"); } return ResponseDTO.succ(); @@ -129,7 +130,12 @@ public class QuartzTaskService { taskEntity.setTaskStatus(updateEntity.getTaskStatus()); taskEntity.setUpdateTime(new Date()); quartzTaskDao.updateById(taskEntity); - this.updateQuartzTask(scheduler, taskEntity); + if(this.checkExist(taskEntity.getId())){ + this.updateQuartzTask(scheduler, taskEntity); + }else{ + this.createQuartzTask(scheduler,taskEntity); + } + return ResponseDTO.succ(); } @@ -164,7 +170,7 @@ public class QuartzTaskService { } quartzTaskEntity.setTaskStatus(TaskStatusEnum.PAUSE.getStatus()); quartzTaskDao.updateById(quartzTaskEntity); - this.pauseQuartzTask(scheduler, taskId); + this.pauseQuartzTask(scheduler, quartzTaskEntity); return ResponseDTO.succ(); } @@ -183,7 +189,7 @@ public class QuartzTaskService { } quartzTaskEntity.setTaskStatus(TaskStatusEnum.NORMAL.getStatus()); quartzTaskDao.updateById(quartzTaskEntity); - this.resumeQuartzTask(scheduler, taskId); + this.resumeQuartzTask(scheduler, quartzTaskEntity); return ResponseDTO.succ(); } @@ -232,6 +238,10 @@ public class QuartzTaskService { jobDetail.getJobDataMap().put(QuartzConst.QUARTZ_PARAMS_KEY, taskEntity.getTaskParams()); scheduler.scheduleJob(jobDetail, trigger); + //如果任务是暂停状态,则暂停任务 + if (TaskStatusEnum.PAUSE.getStatus().equals(taskEntity.getTaskStatus())) { + this.pauseQuartzTask(scheduler, taskEntity); + } } /** @@ -255,7 +265,7 @@ public class QuartzTaskService { scheduler.rescheduleJob(triggerKey, trigger); //如果更新之前任务是暂停状态,此时再次暂停任务 if (TaskStatusEnum.PAUSE.getStatus().equals(taskEntity.getTaskStatus())) { - this.pauseQuartzTask(scheduler, Long.valueOf(taskEntity.getId())); + this.pauseQuartzTask(scheduler, taskEntity); } } @@ -275,6 +285,11 @@ public class QuartzTaskService { JobDataMap dataMap = new JobDataMap(); dataMap.put(QuartzConst.QUARTZ_PARAMS_KEY, taskEntity.getTaskParams()); JobKey jobKey = SmartQuartzUtil.getJobKey(taskEntity.getId()); + if(!scheduler.checkExists(jobKey)){ + this.createQuartzTask(scheduler,taskEntity); + scheduler.triggerJob(jobKey, dataMap); + return; + } scheduler.triggerJob(jobKey, dataMap); } @@ -282,11 +297,16 @@ public class QuartzTaskService { * 暂停任务 * * @param scheduler - * @param taskId + * @param quartzTaskEntity * @throws Exception */ - private void pauseQuartzTask(Scheduler scheduler, Long taskId) throws Exception { - JobKey jobKey = SmartQuartzUtil.getJobKey(taskId); + private void pauseQuartzTask(Scheduler scheduler, QuartzTaskEntity quartzTaskEntity) throws Exception { + JobKey jobKey = SmartQuartzUtil.getJobKey(quartzTaskEntity.getId()); + if(!scheduler.checkExists(jobKey)){ + this.createQuartzTask(scheduler,quartzTaskEntity); + scheduler.pauseJob(jobKey); + return; + } scheduler.pauseJob(jobKey); } @@ -294,11 +314,15 @@ public class QuartzTaskService { * 恢复任务 * * @param scheduler - * @param taskId + * @param quartzTaskEntity * @throws Exception */ - private void resumeQuartzTask(Scheduler scheduler, Long taskId) throws Exception { - JobKey jobKey = SmartQuartzUtil.getJobKey(taskId); + private void resumeQuartzTask(Scheduler scheduler, QuartzTaskEntity quartzTaskEntity) throws Exception { + JobKey jobKey = SmartQuartzUtil.getJobKey(quartzTaskEntity.getId()); + if(!scheduler.checkExists(jobKey)){ + this.createQuartzTask(scheduler,quartzTaskEntity); + return; + } scheduler.resumeJob(jobKey); } @@ -311,6 +335,15 @@ public class QuartzTaskService { */ private void deleteQuartzTask(Scheduler scheduler, Long taskId) throws Exception { JobKey jobKey = SmartQuartzUtil.getJobKey(taskId); + if(!scheduler.checkExists(jobKey)){ + return; + } scheduler.deleteJob(jobKey); } + + + private Boolean checkExist(Long taskId) throws Exception{ + JobKey jobKey = SmartQuartzUtil.getJobKey(taskId); + return scheduler.checkExists(jobKey); + } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/task/test/Example.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/task/test/Example.java index 8502555a..f62d22b5 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/task/test/Example.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/support/quartz/task/test/Example.java @@ -1,5 +1,6 @@ package net.lab1024.smartadmin.module.support.quartz.task.test; +import lombok.extern.slf4j.Slf4j; import net.lab1024.smartadmin.common.domain.ITask; import net.lab1024.smartadmin.util.SmartDateUtil; import org.springframework.stereotype.Component; @@ -16,11 +17,12 @@ import java.util.Date; * @date 2019/4/13 0013 下午 14:26 * @since JDK1.8 */ +@Slf4j @Component("exampleTask") public class Example implements ITask { @Override public void execute(String paramJson) throws Exception { - System.out.println(SmartDateUtil.formatYMDHMS(new Date()) + ",今天搬了" + System.currentTimeMillis() + "块砖,paramJson:" + paramJson); + log.warn("{}-今天搬了{}块砖,paramJson:{}",SmartDateUtil.formatYMDHMS(new Date()),System.currentTimeMillis(),paramJson ); } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeTypeEnum.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeTypeEnum.java index 4cbc11ce..66ebb8f9 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeTypeEnum.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeTypeEnum.java @@ -1,6 +1,8 @@ package net.lab1024.smartadmin.module.system.datascope.constant; +import net.lab1024.smartadmin.common.domain.BaseEnum; + /** * [ ] * @@ -11,30 +13,32 @@ package net.lab1024.smartadmin.module.system.datascope.constant; * @date 2019/4/28 0028 下午 15:37 * @since JDK1.8 */ -public enum DataScopeTypeEnum { +public enum DataScopeTypeEnum implements BaseEnum { DEFAULT(0,0,"默认类型","数据范围样例"); - private Integer type; + private Integer value; private Integer sort; private String name; private String desc; - DataScopeTypeEnum(Integer type,Integer sort,String name,String desc) { - this.type = type; + DataScopeTypeEnum(Integer value,Integer sort,String name,String desc) { + this.value = value; this.sort = sort; this.name = name; this.desc = desc; } - public Integer getType() { - return type; + @Override + public Integer getValue() { + return value; } public Integer getSort() { return sort; } + @Override public String getDesc() { return desc; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeViewTypeEnum.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeViewTypeEnum.java index da93f96c..75ddf0c9 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeViewTypeEnum.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeViewTypeEnum.java @@ -1,6 +1,8 @@ package net.lab1024.smartadmin.module.system.datascope.constant; +import net.lab1024.smartadmin.common.domain.BaseEnum; + import java.util.Arrays; import java.util.Optional; @@ -14,7 +16,7 @@ import java.util.Optional; * @date 2019/4/28 0028 下午 15:37 * @since JDK1.8 */ -public enum DataScopeViewTypeEnum { +public enum DataScopeViewTypeEnum implements BaseEnum { ME(0,0,"本人"), @@ -24,32 +26,29 @@ public enum DataScopeViewTypeEnum { ALL(3,15,"全部"); - private Integer type; + private Integer value; private Integer level; - private String name; + private String desc; - DataScopeViewTypeEnum(Integer type,Integer level, String name) { - this.type = type; + DataScopeViewTypeEnum(Integer value,Integer level, String desc) { + this.value = value; this.level = level; - this.name = name; + this.desc = desc; } - public Integer getType() { - return type; + @Override + public Integer getValue() { + return value; } public Integer getLevel() { return level; } - public String getName() { - return name; + @Override + public String getDesc() { + return desc; } - public static DataScopeViewTypeEnum valueOf(Integer type) { - DataScopeViewTypeEnum[] values = DataScopeViewTypeEnum.values(); - Optional first = Arrays.stream(values).filter(e -> e.getType().equals(type)).findFirst(); - return !first.isPresent() ? null : first.get(); - } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeWhereInTypeEnum.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeWhereInTypeEnum.java index 5dbbdc37..e9037373 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeWhereInTypeEnum.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/constant/DataScopeWhereInTypeEnum.java @@ -1,5 +1,7 @@ package net.lab1024.smartadmin.module.system.datascope.constant; +import net.lab1024.smartadmin.common.domain.BaseEnum; + /** * [ ] * @@ -10,25 +12,28 @@ package net.lab1024.smartadmin.module.system.datascope.constant; * @date 2019/5/8 0008 下午 16:00 * @since JDK1.8 */ -public enum DataScopeWhereInTypeEnum { +public enum DataScopeWhereInTypeEnum implements BaseEnum { EMPLOYEE(0,"以员工IN"), - DEPARTMENT(1,"以部门IN"); + DEPARTMENT(1,"以部门IN"), - private Integer type; + CUSTOM_STRATEGY(2,"自定义策略"); + + private Integer value; private String desc; - DataScopeWhereInTypeEnum(Integer type, String desc) { - this.type = type; + DataScopeWhereInTypeEnum(Integer value, String desc) { + this.value = value; this.desc = desc; } - public Integer getType() { - return type; + @Override + public Integer getValue() { + return value; } - + @Override public String getDesc() { return desc; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/domain/dto/DataScopeSqlConfigDTO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/domain/dto/DataScopeSqlConfigDTO.java index 3e79309a..422933de 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/domain/dto/DataScopeSqlConfigDTO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/domain/dto/DataScopeSqlConfigDTO.java @@ -1,6 +1,8 @@ package net.lab1024.smartadmin.module.system.datascope.domain.dto; import lombok.Data; +import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeTypeEnum; +import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeWhereInTypeEnum; /** * [ ] @@ -15,11 +17,24 @@ import lombok.Data; @Data public class DataScopeSqlConfigDTO { - private Integer dataScopeType; + /** + * 数据范围类型 + * {@link DataScopeTypeEnum} + */ + private DataScopeTypeEnum dataScopeType; + + /** + * join sql 具体实现类 + */ + private Class joinSqlImplClazz; private String joinSql; private Integer whereIndex; - private Integer dataScopeWhereInType; + /** + * whereIn类型 + * {@link DataScopeWhereInTypeEnum} + */ + private DataScopeWhereInTypeEnum dataScopeWhereInType; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeService.java index 8a231dd7..46b80bd4 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeService.java @@ -58,7 +58,7 @@ public class DataScopeService { DataScopeViewTypeEnum[] enums = DataScopeViewTypeEnum.class.getEnumConstants(); DataScopeViewTypeVO dataScopeViewTypeDTO; for (DataScopeViewTypeEnum viewTypeEnum : enums) { - dataScopeViewTypeDTO = DataScopeViewTypeVO.builder().viewType(viewTypeEnum.getType()).viewTypeLevel(viewTypeEnum.getLevel()).viewTypeName(viewTypeEnum.getName()).build(); + dataScopeViewTypeDTO = DataScopeViewTypeVO.builder().viewType(viewTypeEnum.getValue()).viewTypeLevel(viewTypeEnum.getLevel()).viewTypeName(viewTypeEnum.getDesc()).build(); viewTypeList.add(dataScopeViewTypeDTO); } Comparator comparator = (h1, h2) -> h1.getViewTypeLevel().compareTo(h2.getViewTypeLevel()); @@ -72,7 +72,7 @@ public class DataScopeService { DataScopeDTO dataScopeDTO; for (DataScopeTypeEnum typeEnum : enums) { dataScopeDTO = - DataScopeDTO.builder().dataScopeType(typeEnum.getType()).dataScopeTypeDesc(typeEnum.getDesc()).dataScopeTypeName(typeEnum.getName()).dataScopeTypeSort(typeEnum.getSort()).build(); + DataScopeDTO.builder().dataScopeType(typeEnum.getValue()).dataScopeTypeDesc(typeEnum.getDesc()).dataScopeTypeName(typeEnum.getName()).dataScopeTypeSort(typeEnum.getSort()).build(); dataScopeTypeList.add(dataScopeDTO); } Comparator comparator = (h1, h2) -> h1.getDataScopeTypeSort().compareTo(h2.getDataScopeTypeSort()); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeSqlConfigService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeSqlConfigService.java index 70a9b358..30381384 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeSqlConfigService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeSqlConfigService.java @@ -1,9 +1,14 @@ package net.lab1024.smartadmin.module.system.datascope.service; +import lombok.extern.slf4j.Slf4j; import net.lab1024.smartadmin.common.anno.DataScope; +import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeTypeEnum; +import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeViewTypeEnum; import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeWhereInTypeEnum; import net.lab1024.smartadmin.module.system.datascope.domain.dto.DataScopeSqlConfigDTO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.datascope.strategy.DataScopePowerStrategy; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.third.SmartApplicationContext; import net.lab1024.smartadmin.util.SmartRequestTokenUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -32,6 +37,7 @@ import java.util.concurrent.ConcurrentHashMap; * @date 2019/4/29 0029 上午 10:12 * @since JDK1.8 */ +@Slf4j @Service public class DataScopeSqlConfigService { @@ -67,9 +73,10 @@ public class DataScopeSqlConfigService { DataScope dataScopeAnnotation = method.getAnnotation(DataScope.class); if (dataScopeAnnotation != null) { DataScopeSqlConfigDTO configDTO = new DataScopeSqlConfigDTO(); - configDTO.setDataScopeType(dataScopeAnnotation.dataScopeType().getType()); + configDTO.setDataScopeType(dataScopeAnnotation.dataScopeType()); configDTO.setJoinSql(dataScopeAnnotation.joinSql()); configDTO.setWhereIndex(dataScopeAnnotation.whereIndex()); + configDTO.setDataScopeWhereInType(dataScopeAnnotation.whereInType()); dataScopeMethodMap.put(method.getDeclaringClass().getSimpleName() + "." + method.getName(), configDTO); } } @@ -94,12 +101,26 @@ public class DataScopeSqlConfigService { * @return */ public String getJoinSql(DataScopeSqlConfigDTO sqlConfigDTO) { - Integer dataScopeType = sqlConfigDTO.getDataScopeType(); + DataScopeTypeEnum dataScopeTypeEnum = sqlConfigDTO.getDataScopeType(); String joinSql = sqlConfigDTO.getJoinSql(); RequestTokenBO requestToken = SmartRequestTokenUtil.getThreadLocalUser(); Long employeeId = requestToken.getRequestUserId(); - if (DataScopeWhereInTypeEnum.EMPLOYEE.getType().equals(sqlConfigDTO.getDataScopeWhereInType())) { - List canViewEmployeeIds = dataScopeViewService.getCanViewEmployeeId(dataScopeType, employeeId); + if (DataScopeWhereInTypeEnum.CUSTOM_STRATEGY == sqlConfigDTO.getDataScopeWhereInType()) { + Class strategyClass = sqlConfigDTO.getJoinSqlImplClazz(); + if(strategyClass == null){ + log.warn("data scope custom strategy class is null"); + return ""; + } + DataScopePowerStrategy powerStrategy = (DataScopePowerStrategy)SmartApplicationContext.getBean(sqlConfigDTO.getJoinSqlImplClazz()); + if (powerStrategy == null) { + log.warn("data scope custom strategy class:{} ,bean is null",sqlConfigDTO.getJoinSqlImplClazz()); + return ""; + } + DataScopeViewTypeEnum viewTypeEnum = dataScopeViewService.getEmployeeDataScopeViewType(dataScopeTypeEnum, employeeId); + return powerStrategy.getCondition(viewTypeEnum,sqlConfigDTO); + } + if (DataScopeWhereInTypeEnum.EMPLOYEE == sqlConfigDTO.getDataScopeWhereInType()) { + List canViewEmployeeIds = dataScopeViewService.getCanViewEmployeeId(dataScopeTypeEnum, employeeId); if (CollectionUtils.isEmpty(canViewEmployeeIds)) { return ""; } @@ -107,8 +128,8 @@ public class DataScopeSqlConfigService { String sql = joinSql.replaceAll(EMPLOYEE_PARAM, employeeIds); return sql; } - if (DataScopeWhereInTypeEnum.DEPARTMENT.getType().equals(sqlConfigDTO.getDataScopeWhereInType())) { - List canViewDepartmentIds = dataScopeViewService.getCanViewDepartmentId(dataScopeType, employeeId); + if (DataScopeWhereInTypeEnum.DEPARTMENT == sqlConfigDTO.getDataScopeWhereInType()) { + List canViewDepartmentIds = dataScopeViewService.getCanViewDepartmentId(dataScopeTypeEnum, employeeId); if (CollectionUtils.isEmpty(canViewDepartmentIds)) { return ""; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeViewService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeViewService.java index 28a4cd65..11ec5bc7 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeViewService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/service/DataScopeViewService.java @@ -1,6 +1,8 @@ package net.lab1024.smartadmin.module.system.datascope.service; +import com.google.common.collect.Lists; import net.lab1024.smartadmin.module.system.datascope.DataScopeRoleDao; +import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeTypeEnum; import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeViewTypeEnum; import net.lab1024.smartadmin.module.system.datascope.domain.entity.DataScopeRoleEntity; import net.lab1024.smartadmin.module.system.department.DepartmentTreeService; @@ -10,7 +12,7 @@ import net.lab1024.smartadmin.module.system.employee.domain.entity.EmployeeEntit import net.lab1024.smartadmin.module.system.employee.domain.vo.EmployeeVO; import net.lab1024.smartadmin.module.system.privilege.service.PrivilegeEmployeeService; import net.lab1024.smartadmin.module.system.role.roleemployee.RoleEmployeeDao; -import com.google.common.collect.Lists; +import net.lab1024.smartadmin.util.SmartBaseEnumUtil; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,33 +53,40 @@ public class DataScopeViewService { /** * 获取某人可以查看的所有人员信息 * - * @param dataScopeType + * @param dataScopeTypeEnum * @param employeeId * @return */ - public List getCanViewEmployeeId(Integer dataScopeType, Long employeeId) { - Integer viewType = this.getEmployeeDataScopeViewType(dataScopeType, employeeId); - if (DataScopeViewTypeEnum.ME.getType().equals(viewType)) { + public List getCanViewEmployeeId(DataScopeTypeEnum dataScopeTypeEnum, Long employeeId) { + DataScopeViewTypeEnum viewType = this.getEmployeeDataScopeViewType(dataScopeTypeEnum, employeeId); + if (DataScopeViewTypeEnum.ME == viewType) { return this.getMeEmployeeIdList(employeeId); } - if (DataScopeViewTypeEnum.DEPARTMENT.getType().equals(viewType)) { + if (DataScopeViewTypeEnum.DEPARTMENT == viewType) { return this.getDepartmentEmployeeIdList(employeeId); } - if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB.getType().equals(viewType)) { + if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB == viewType) { return this.getDepartmentAndSubEmployeeIdList(employeeId); } return Lists.newArrayList(); } - public List getCanViewDepartmentId(Integer dataScopeType, Long employeeId) { - Integer viewType = this.getEmployeeDataScopeViewType(dataScopeType, employeeId); - if (DataScopeViewTypeEnum.ME.getType().equals(viewType)) { + /** + * 获取某人可以查看的所有部门信息 + * + * @param dataScopeTypeEnum + * @param employeeId + * @return + */ + public List getCanViewDepartmentId(DataScopeTypeEnum dataScopeTypeEnum, Long employeeId) { + DataScopeViewTypeEnum viewType = this.getEmployeeDataScopeViewType(dataScopeTypeEnum, employeeId); + if (DataScopeViewTypeEnum.ME == viewType) { return this.getMeDepartmentIdList(employeeId); } - if (DataScopeViewTypeEnum.DEPARTMENT.getType().equals(viewType)) { + if (DataScopeViewTypeEnum.DEPARTMENT == viewType) { return this.getMeDepartmentIdList(employeeId); } - if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB.getType().equals(viewType)) { + if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB == viewType) { return this.getDepartmentAndSubIdList(employeeId); } return Lists.newArrayList(); @@ -101,28 +110,28 @@ public class DataScopeViewService { * @param employeeId * @return */ - private Integer getEmployeeDataScopeViewType(Integer dataScopeType, Long employeeId) { + public DataScopeViewTypeEnum getEmployeeDataScopeViewType(DataScopeTypeEnum dataScopeTypeEnum, Long employeeId) { if (employeeId == null) { - return DataScopeViewTypeEnum.ME.getType(); + return DataScopeViewTypeEnum.ME; } if (privilegeEmployeeService.isSuperman(employeeId)) { - return DataScopeViewTypeEnum.ALL.getType(); + return DataScopeViewTypeEnum.ALL; } List roleIdList = roleEmployeeDao.selectRoleIdByEmployeeId(employeeId); //未设置角色 默认本人 if (CollectionUtils.isEmpty(roleIdList)) { - return DataScopeViewTypeEnum.ME.getType(); + return DataScopeViewTypeEnum.ME; } //未设置角色数据范围 默认本人 List dataScopeRoleList = dataScopeRoleDao.listByRoleIdList(roleIdList); if (CollectionUtils.isEmpty(dataScopeRoleList)) { - return DataScopeViewTypeEnum.ME.getType(); + return DataScopeViewTypeEnum.ME; } - Map> listMap = dataScopeRoleList.stream().collect(Collectors.groupingBy(DataScopeRoleEntity :: getDataScopeType)); - List viewLevelList = listMap.get(dataScopeType); - DataScopeRoleEntity maxLevel = viewLevelList.stream().max(Comparator.comparing(e -> DataScopeViewTypeEnum.valueOf(e.getViewType()).getLevel())).get(); - return maxLevel.getViewType(); + Map> listMap = dataScopeRoleList.stream().collect(Collectors.groupingBy(DataScopeRoleEntity::getDataScopeType)); + List viewLevelList = listMap.get(dataScopeTypeEnum.getValue()); + DataScopeRoleEntity maxLevel = viewLevelList.stream().max(Comparator.comparing(e -> SmartBaseEnumUtil.getEnumByValue(e.getViewType(), DataScopeViewTypeEnum.class).getLevel())).get(); + return SmartBaseEnumUtil.getEnumByValue(maxLevel.getViewType(), DataScopeViewTypeEnum.class); } /** @@ -134,6 +143,7 @@ public class DataScopeViewService { private List getMeEmployeeIdList(Long employeeId) { return Lists.newArrayList(employeeId); } + /** * 获取本部门相关 可查看员工id * diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/strategy/DataScopePowerStrategy.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/strategy/DataScopePowerStrategy.java new file mode 100644 index 00000000..d12cbf15 --- /dev/null +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/strategy/DataScopePowerStrategy.java @@ -0,0 +1,24 @@ +package net.lab1024.smartadmin.module.system.datascope.strategy; +import net.lab1024.smartadmin.module.system.datascope.constant.DataScopeViewTypeEnum; +import net.lab1024.smartadmin.module.system.datascope.domain.dto.DataScopeSqlConfigDTO; + +/** + * [ 数据范围策略 ,使用DataScopeWhereInTypeEnum.CUSTOM_STRATEGY类型,DataScope注解的joinSql属性无用] + * + * @author yandanyang + * @version 1.0 + * @company 1024lab.net + * @copyright (c) 2018 1024lab.netInc. All rights reserved. + * @date 2020/11/28 0008 下午 16:00 + * @since JDK1.8 + */ +public abstract class DataScopePowerStrategy { + + /** + * 获取joinsql 字符串 + * @param viewTypeEnum 查看的类型 + * @param sqlConfigDTO + * @return + */ + public abstract String getCondition(DataScopeViewTypeEnum viewTypeEnum, DataScopeSqlConfigDTO sqlConfigDTO); +} diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentController.java index 98d477b9..1a070773 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentController.java @@ -59,15 +59,15 @@ public class DepartmentController { } @ApiOperation(value = "删除部门", notes = "删除部门") - @PostMapping("/department/delete/{departmentId}") - public ResponseDTO delDepartment(@PathVariable("departmentId") Long departmentId) { - return departmentService.delDepartment(departmentId); + @PostMapping("/department/delete/{deptId}") + public ResponseDTO delDepartment(@PathVariable Long deptId) { + return departmentService.delDepartment(deptId); } @ApiOperation(value = "获取部门信息", notes = "获取部门") - @GetMapping("/department/query/{departmentId}") - public ResponseDTO getDepartment(@PathVariable("departmentId") Long departmentId) { - return departmentService.getDepartmentById(departmentId); + @GetMapping("/department/query/{deptId}") + public ResponseDTO getDepartment(@PathVariable Long deptId) { + return departmentService.getDepartmentById(deptId); } @ApiOperation(value = "查询部门列表", notes = "查询部门列表") @@ -78,21 +78,21 @@ public class DepartmentController { @ApiOperation(value = "上下移动") - @GetMapping("/department/upOrDown/{departmentId}/{swapId}") - public ResponseDTO upOrDown(@PathVariable("departmentId") Long departmentId,@PathVariable("swapId") Long swapId) { - return departmentService.upOrDown(departmentId,swapId); + @GetMapping("/department/upOrDown/{deptId}/{swapId}") + public ResponseDTO upOrDown(@PathVariable Long deptId, @PathVariable Long swapId) { + return departmentService.upOrDown(deptId, swapId); } @ApiOperation(value = "升级") - @GetMapping("/department/upgrade/{departmentId}") - public ResponseDTO upgrade(@PathVariable("departmentId") Long departmentId) { - return departmentService.upgrade(departmentId); + @GetMapping("/department/upgrade/{deptId}") + public ResponseDTO upgrade(@PathVariable Long deptId) { + return departmentService.upgrade(deptId); } @ApiOperation(value = "降级") - @GetMapping("/department/downgrade/{departmentId}/{preId}") - public ResponseDTO downgrade(@PathVariable("departmentId") Long departmentId,@PathVariable("preId") Long preId) { - return departmentService.downgrade(departmentId,preId); + @GetMapping("/department/downgrade/{deptId}/{preId}") + public ResponseDTO downgrade(@PathVariable Long deptId, @PathVariable Long preId) { + return departmentService.downgrade(deptId, preId); } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentDao.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentDao.java index 2abe5ffd..d7bc2f77 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentDao.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentDao.java @@ -19,14 +19,13 @@ import java.util.List; @Mapper public interface DepartmentDao extends BaseMapper { - /** - * 根据部门id,查询此部门子部门的数量 + * 根据部门id,查询此部门直接子部门的数量 * - * @param departmentId + * @param deptId * @return int 子部门的数量 */ - Integer countSubDepartment(@Param("departmentId") Long departmentId); + Integer countSubDepartment(@Param("deptId") Long deptId); /** * 获取全部部门列表 diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentResponseCodeConst.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentResponseCodeConst.java index 9ffacba9..a7a219e0 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentResponseCodeConst.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentResponseCodeConst.java @@ -14,7 +14,7 @@ public class DepartmentResponseCodeConst extends ResponseCodeConst { /** * 部门不存在 1001 */ - public static final DepartmentResponseCodeConst DEPT_NOT_EXISTS = new DepartmentResponseCodeConst(2001, "部门不存在!"); + public static final DepartmentResponseCodeConst DEPT_NOT_EXISTS = new DepartmentResponseCodeConst(2001, "部门不存在"); /** * 当前部门有子级部门 不能删除 10003 diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentService.java index 73c9f7f4..b5b99ab0 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/department/DepartmentService.java @@ -64,7 +64,7 @@ public class DepartmentService { departmentVOList = filterDepartment(departmentVOList, departmentName); } - Map departmentMap = departmentVOList.stream().collect(Collectors.toMap(DepartmentVO :: getId, Function.identity())); + Map departmentMap = departmentVOList.stream().collect(Collectors.toMap(DepartmentVO::getId, Function.identity())); // 获取全部员工列表 List employeeList = employeeDao.listAll(); employeeList.forEach(employeeDTO -> { @@ -103,7 +103,7 @@ public class DepartmentService { List filterResult = new ArrayList<>(); getParentDepartment(departmentVOList, parentId, filterResult); for (DepartmentVO dto : filterResult) { - if (! departmentMap.containsKey(dto.getId())) { + if (!departmentMap.containsKey(dto.getId())) { departmentMap.put(dto.getId(), dto); } } @@ -165,23 +165,27 @@ public class DepartmentService { * 1、需要判断当前部门是否有子部门,有子部门则不允许删除 * 2、需要判断当前部门是否有员工,有员工则不能删除 * - * @param departmentId - * @return AjaxResult + * @param deptId + * @return */ @Transactional(rollbackFor = Exception.class) - public ResponseDTO delDepartment(Long departmentId) { + public ResponseDTO delDepartment(Long deptId) { + DepartmentEntity departmentEntity = departmentDao.selectById(deptId); + if (null == departmentEntity) { + return ResponseDTO.wrap(DepartmentResponseCodeConst.DEPT_NOT_EXISTS); + } // 是否有子级部门 - int subDepartmentNum = departmentDao.countSubDepartment(departmentId); + int subDepartmentNum = departmentDao.countSubDepartment(deptId); if (subDepartmentNum > 0) { return ResponseDTO.wrap(DepartmentResponseCodeConst.CANNOT_DEL_DEPARTMENT_WITH_CHILD); } - // 是否有员工 - int employeeNum = employeeDao.countByDepartmentId(departmentId); + // 是否有未删除员工 + int employeeNum = employeeDao.countByDepartmentId(deptId, false); if (employeeNum > 0) { return ResponseDTO.wrap(DepartmentResponseCodeConst.CANNOT_DEL_DEPARTMENT_WITH_EMPLOYEE); } - departmentDao.deleteById(departmentId); + departmentDao.deleteById(deptId); return ResponseDTO.succ(); } @@ -278,5 +282,4 @@ public class DepartmentService { departmentDao.updateById(departmentEntity); return ResponseDTO.succ(); } - } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeController.java index eb7befe0..33c788e1 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeController.java @@ -7,7 +7,7 @@ import net.lab1024.smartadmin.common.domain.ResponseDTO; import net.lab1024.smartadmin.constant.SwaggerTagConst; import net.lab1024.smartadmin.module.system.employee.domain.dto.*; import net.lab1024.smartadmin.module.system.employee.domain.vo.EmployeeVO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.util.SmartRequestTokenUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -86,7 +86,6 @@ public class EmployeeController { public ResponseDTO updatePwd(@Valid @RequestBody EmployeeUpdatePwdDTO updatePwdDTO) { RequestTokenBO requestToken = SmartRequestTokenUtil.getRequestUser(); return employeeService.updatePwd(updatePwdDTO, requestToken); -// return ResponseDTO.succ(); } @ApiOperation(value = "通过部门id获取当前部门的人员&没有部门的人", notes = "@author yandanyang") diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeDao.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeDao.java index 11ce08a9..d77779ea 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeDao.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeDao.java @@ -34,6 +34,7 @@ public interface EmployeeDao extends BaseMapper { /** * 不带分页查询员工列表 + * * @param queryDTO * @return */ @@ -84,10 +85,11 @@ public interface EmployeeDao extends BaseMapper { /** * 获取某个部门员工数 * - * @param departmentId + * @param depId + * @param deleteFlag 可以null * @return */ - Integer countByDepartmentId(@Param("departmentId") Long departmentId); + Integer countByDepartmentId(@Param("depId") Long depId, @Param("deleteFlag") Boolean deleteFlag); /** * 获取一批员工 @@ -99,6 +101,7 @@ public interface EmployeeDao extends BaseMapper { EmployeeDTO getEmployeeById(@Param("id") Long employeeId); + /** * 获取某个部门的员工 * @@ -128,6 +131,7 @@ public interface EmployeeDao extends BaseMapper { /** * 查询所有员工 + * * @return */ List selectAll(); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeService.java index 700ca99a..a689bea2 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/EmployeeService.java @@ -1,6 +1,7 @@ package net.lab1024.smartadmin.module.system.employee; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.common.collect.Lists; import net.lab1024.smartadmin.common.constant.JudgeEnum; import net.lab1024.smartadmin.common.domain.PageResultDTO; import net.lab1024.smartadmin.common.domain.ResponseDTO; @@ -13,7 +14,7 @@ import net.lab1024.smartadmin.module.system.employee.domain.bo.EmployeeBO; import net.lab1024.smartadmin.module.system.employee.domain.dto.*; import net.lab1024.smartadmin.module.system.employee.domain.entity.EmployeeEntity; import net.lab1024.smartadmin.module.system.employee.domain.vo.EmployeeVO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.module.system.position.PositionDao; import net.lab1024.smartadmin.module.system.position.PositionService; import net.lab1024.smartadmin.module.system.position.domain.dto.PositionRelationAddDTO; @@ -25,7 +26,6 @@ import net.lab1024.smartadmin.util.SmartBeanUtil; import net.lab1024.smartadmin.util.SmartDigestUtil; import net.lab1024.smartadmin.util.SmartPageUtil; import net.lab1024.smartadmin.util.SmartVerificationUtil; -import com.google.common.collect.Lists; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang3.StringUtils; @@ -74,7 +74,7 @@ public class EmployeeService { */ private static final ConcurrentHashMap employeeCache = new ConcurrentHashMap<>(); - public List getAllEmployee(){ + public List getAllEmployee() { return employeeDao.selectAll(); } @@ -119,7 +119,7 @@ public class EmployeeService { for (EmployeeDTO employeeDTO : employeeList) { List relationResultDTOList = employeePositionMap.get(employeeDTO.getId()); - if(relationResultDTOList != null){ + if (relationResultDTOList != null) { employeeDTO.setPositionRelationList(relationResultDTOList); employeeDTO.setPositionName(relationResultDTOList.stream().map(PositionRelationResultDTO::getPositionName).collect(Collectors.joining(","))); } @@ -155,7 +155,7 @@ public class EmployeeService { return ResponseDTO.wrap(EmployeeResponseCodeConst.LOGIN_NAME_EXISTS); } //同电话员工 - EmployeeDTO samePhoneEmployee = employeeDao.getByPhone(entity.getLoginName(), EmployeeStatusEnum.NORMAL.getValue()); + EmployeeDTO samePhoneEmployee = employeeDao.getByPhone(entity.getPhone(), EmployeeStatusEnum.NORMAL.getValue()); if (null != samePhoneEmployee) { return ResponseDTO.wrap(EmployeeResponseCodeConst.PHONE_EXISTS); } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/domain/dto/EmployeeLoginFormDTO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/domain/dto/EmployeeLoginFormDTO.java index e72d1611..0bf1f1a3 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/domain/dto/EmployeeLoginFormDTO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/employee/domain/dto/EmployeeLoginFormDTO.java @@ -22,11 +22,9 @@ public class EmployeeLoginFormDTO { @ApiModelProperty(example = "123456") private String loginPwd; - @NotNull(message = "验证码id不能为空") @ApiModelProperty(value = "验证码uuid") private String codeUuid; - @NotNull(message = "验证码不能为空") @ApiModelProperty(value = "验证码") private String code; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginController.java similarity index 89% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginController.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginController.java index ddbf0fb8..414c9ad4 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginController.java @@ -1,4 +1,4 @@ -package net.lab1024.smartadmin.module.business.login; +package net.lab1024.smartadmin.module.system.login; import net.lab1024.smartadmin.common.anno.NoNeedLogin; import net.lab1024.smartadmin.common.anno.NoValidPrivilege; @@ -6,9 +6,9 @@ import net.lab1024.smartadmin.common.anno.OperateLog; import net.lab1024.smartadmin.common.domain.ResponseDTO; import net.lab1024.smartadmin.constant.SwaggerTagConst; import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeLoginFormDTO; -import net.lab1024.smartadmin.module.business.login.domain.KaptchaVO; -import net.lab1024.smartadmin.module.business.login.domain.LoginDetailVO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.KaptchaVO; +import net.lab1024.smartadmin.module.system.login.domain.LoginDetailVO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.util.SmartRequestTokenUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -42,7 +42,6 @@ public class LoginController { return loginService.login(loginForm, request); } - @GetMapping("/session/get") @ApiOperation(value = "获取session", notes = "获取session") @NoValidPrivilege diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginResponseCodeConst.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginResponseCodeConst.java similarity index 91% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginResponseCodeConst.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginResponseCodeConst.java index 0bb69e96..0cfb8d22 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginResponseCodeConst.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginResponseCodeConst.java @@ -1,4 +1,4 @@ -package net.lab1024.smartadmin.module.business.login; +package net.lab1024.smartadmin.module.system.login; import net.lab1024.smartadmin.common.constant.ResponseCodeConst; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginService.java similarity index 89% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginService.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginService.java index 9e346082..070a9ff4 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginService.java @@ -1,4 +1,4 @@ -package net.lab1024.smartadmin.module.business.login; +package net.lab1024.smartadmin.module.system.login; import net.lab1024.smartadmin.common.constant.JudgeEnum; import net.lab1024.smartadmin.common.domain.ResponseDTO; @@ -12,10 +12,10 @@ import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeDTO; import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeLoginFormDTO; import net.lab1024.smartadmin.module.business.log.LogService; import net.lab1024.smartadmin.module.business.log.userloginlog.domain.UserLoginLogEntity; -import net.lab1024.smartadmin.module.business.login.domain.KaptchaVO; -import net.lab1024.smartadmin.module.business.login.domain.LoginDetailVO; -import net.lab1024.smartadmin.module.business.login.domain.LoginPrivilegeDTO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.KaptchaVO; +import net.lab1024.smartadmin.module.system.login.domain.LoginDetailVO; +import net.lab1024.smartadmin.module.system.login.domain.LoginPrivilegeDTO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.module.system.privilege.domain.entity.PrivilegeEntity; import net.lab1024.smartadmin.module.system.privilege.service.PrivilegeEmployeeService; import net.lab1024.smartadmin.util.SmartBeanUtil; @@ -83,15 +83,15 @@ public class LoginService { * @return 登录用户基本信息 */ public ResponseDTO login(@Valid EmployeeLoginFormDTO loginForm, HttpServletRequest request) { - String redisVerificationCode = redisValueOperations.get(loginForm.getCodeUuid()); - //增加删除已使用的验证码方式 频繁登录 - redisValueOperations.getOperations().delete(loginForm.getCodeUuid()); - if (StringUtils.isEmpty(redisVerificationCode)) { - return ResponseDTO.wrap(EmployeeResponseCodeConst.VERIFICATION_CODE_INVALID); - } - if (!redisVerificationCode.equalsIgnoreCase(loginForm.getCode())) { - return ResponseDTO.wrap(EmployeeResponseCodeConst.VERIFICATION_CODE_INVALID); - } +// String redisVerificationCode = redisValueOperations.get(loginForm.getCodeUuid()); +// //增加删除已使用的验证码方式 频繁登录 +// redisValueOperations.getOperations().delete(loginForm.getCodeUuid()); +// if (StringUtils.isEmpty(redisVerificationCode)) { +// return ResponseDTO.wrap(EmployeeResponseCodeConst.VERIFICATION_CODE_INVALID); +// } +// if (!redisVerificationCode.equalsIgnoreCase(loginForm.getCode())) { +// return ResponseDTO.wrap(EmployeeResponseCodeConst.VERIFICATION_CODE_INVALID); +// } String loginPwd = SmartDigestUtil.encryptPassword(CommonConst.Password.SALT_FORMAT, loginForm.getLoginPwd()); EmployeeDTO employeeDTO = employeeDao.login(loginForm.getLoginName(), loginPwd); if (null == employeeDTO) { diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginTokenService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginTokenService.java similarity index 96% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginTokenService.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginTokenService.java index 961532e8..56ec269a 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/LoginTokenService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginTokenService.java @@ -1,11 +1,11 @@ -package net.lab1024.smartadmin.module.business.login; +package net.lab1024.smartadmin.module.system.login; import net.lab1024.smartadmin.common.constant.JudgeEnum; import net.lab1024.smartadmin.module.system.employee.EmployeeService; import net.lab1024.smartadmin.module.system.employee.constant.EmployeeStatusEnum; import net.lab1024.smartadmin.module.system.employee.domain.bo.EmployeeBO; import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeDTO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/KaptchaVO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/KaptchaVO.java similarity index 86% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/KaptchaVO.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/KaptchaVO.java index 4c5a4f4e..61814e63 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/KaptchaVO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/KaptchaVO.java @@ -1,4 +1,4 @@ -package net.lab1024.smartadmin.module.business.login.domain; +package net.lab1024.smartadmin.module.system.login.domain; import lombok.Data; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginCacheDTO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginCacheDTO.java similarity index 88% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginCacheDTO.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginCacheDTO.java index c8f8835f..c8e5f62f 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginCacheDTO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginCacheDTO.java @@ -1,4 +1,4 @@ -package net.lab1024.smartadmin.module.business.login.domain; +package net.lab1024.smartadmin.module.system.login.domain; import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeDTO; import lombok.Data; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginDetailVO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginDetailVO.java similarity index 95% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginDetailVO.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginDetailVO.java index 5cd924b5..72a27087 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginDetailVO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginDetailVO.java @@ -1,4 +1,4 @@ -package net.lab1024.smartadmin.module.business.login.domain; +package net.lab1024.smartadmin.module.system.login.domain; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginPrivilegeDTO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginPrivilegeDTO.java similarity index 92% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginPrivilegeDTO.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginPrivilegeDTO.java index cdfb3988..e1812b35 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/LoginPrivilegeDTO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/LoginPrivilegeDTO.java @@ -1,4 +1,4 @@ -package net.lab1024.smartadmin.module.business.login.domain; +package net.lab1024.smartadmin.module.system.login.domain; import net.lab1024.smartadmin.common.anno.ApiModelPropertyEnum; import net.lab1024.smartadmin.module.system.privilege.constant.PrivilegeTypeEnum; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/RequestTokenBO.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/RequestTokenBO.java similarity index 90% rename from smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/RequestTokenBO.java rename to smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/RequestTokenBO.java index 40bf1b2e..101f66db 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/business/login/domain/RequestTokenBO.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/domain/RequestTokenBO.java @@ -1,4 +1,4 @@ -package net.lab1024.smartadmin.module.business.login.domain; +package net.lab1024.smartadmin.module.system.login.domain; import net.lab1024.smartadmin.module.system.employee.domain.bo.EmployeeBO; import lombok.Getter; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/controller/PrivilegeController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/controller/PrivilegeController.java index 51c16e07..3a073a2d 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/controller/PrivilegeController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/controller/PrivilegeController.java @@ -42,7 +42,6 @@ public class PrivilegeController { @PostMapping("/privilege/menu/batchSaveMenu") public ResponseDTO menuBatchSave(@Valid @RequestBody ValidateList menuList) { return privilegeService.menuBatchSave(menuList); -// return ResponseDTO.succ(); } @@ -57,14 +56,12 @@ public class PrivilegeController { @PostMapping("/privilege/function/saveOrUpdate") public ResponseDTO functionSaveOrUpdate(@Valid @RequestBody PrivilegeFunctionDTO privilegeFunctionDTO) { return privilegeService.functionSaveOrUpdate(privilegeFunctionDTO); -// return ResponseDTO.succ(); } @ApiOperation(value = "批量保存功能点") @PostMapping("/privilege/function/batchSave") public ResponseDTO batchSaveFunctionList(@Valid @RequestBody ValidateList functionList) { return privilegeService.batchSaveFunctionList(functionList); -// return ResponseDTO.succ(); } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/dao/PrivilegeDao.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/dao/PrivilegeDao.java index c16692ef..291480d1 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/dao/PrivilegeDao.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/dao/PrivilegeDao.java @@ -54,6 +54,13 @@ public interface PrivilegeDao extends BaseMapper { */ List selectByParentKey(@Param("parentKey") String parentKey); + /** + * 根据父节点key查询 + * @param keyList + * @return + */ + List selectByKeyList(@Param("keyList") List keyList); + /** * 根据权限key查询 * @param key diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/service/PrivilegeEmployeeService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/service/PrivilegeEmployeeService.java index 366e567f..602a5b59 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/service/PrivilegeEmployeeService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/service/PrivilegeEmployeeService.java @@ -3,7 +3,7 @@ package net.lab1024.smartadmin.module.system.privilege.service; import net.lab1024.smartadmin.common.constant.JudgeEnum; import net.lab1024.smartadmin.common.exception.SmartBusinessException; import net.lab1024.smartadmin.module.system.employee.domain.dto.EmployeeDTO; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import net.lab1024.smartadmin.module.system.privilege.constant.PrivilegeTypeEnum; import net.lab1024.smartadmin.module.system.privilege.dao.PrivilegeDao; import net.lab1024.smartadmin.module.system.privilege.domain.entity.PrivilegeEntity; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/service/PrivilegeService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/service/PrivilegeService.java index dd3861dc..c66a919e 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/service/PrivilegeService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/privilege/service/PrivilegeService.java @@ -216,10 +216,18 @@ public class PrivilegeService { return ResponseDTO.wrap(PrivilegeResponseCodeConst.MENU_NOT_EXIST); } - //数据库中存在的数据 - List existFunctionList = privilegeDao.selectByParentKey(menuKey); - Map privilegeEntityMap = existFunctionList.stream().collect(Collectors.toMap(PrivilegeEntity::getKey, e -> e)); + List functionKeyList = functionList.stream().map(PrivilegeFunctionDTO::getFunctionKey).collect(Collectors.toList()); + //数据库中存在的数据 + List existFunctionList = privilegeDao.selectByKeyList(functionKeyList); + //校验是否parent key重复 + boolean parentKeyExist = existFunctionList.stream().anyMatch(e -> !menuKey.equals(e.getParentKey())); + if(parentKeyExist){ + return ResponseDTO.wrap(PrivilegeResponseCodeConst.ROUTER_KEY_NO_REPEAT); + } + + existFunctionList = privilegeDao.selectByParentKey(menuKey); + Map privilegeEntityMap = existFunctionList.stream().collect(Collectors.toMap(PrivilegeEntity::getKey, e -> e)); //如果没有,则保存全部 if (existFunctionList.isEmpty()) { List privilegeEntityList = functionList.stream().map(e -> function2Privilege(e)).collect(Collectors.toList()); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartBigDecimalUtil.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartBigDecimalUtil.java index 3dc45f68..651f3d4e 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartBigDecimalUtil.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartBigDecimalUtil.java @@ -1,4 +1,5 @@ package net.lab1024.smartadmin.util; + import java.math.BigDecimal; import java.math.RoundingMode; import java.text.NumberFormat; @@ -34,12 +35,15 @@ public class SmartBigDecimalUtil { public static BigDecimal add(BigDecimal num1, BigDecimal num2) { return setScale(num1.add(num2), PRICE_DECIMAL_POINT); } + public static BigDecimal multiply(BigDecimal num1, BigDecimal num2) { return setScale(num1.multiply(num2), PRICE_DECIMAL_POINT); } + public static BigDecimal subtract(BigDecimal num1, BigDecimal num2) { return setScale(num1.subtract(num2), PRICE_DECIMAL_POINT); } + public static BigDecimal divide(BigDecimal num1, BigDecimal num2) { return setScale(num1.divide(num2, RoundingMode.HALF_UP), PRICE_DECIMAL_POINT); } @@ -53,12 +57,15 @@ public class SmartBigDecimalUtil { public static BigDecimal add(BigDecimal num1, BigDecimal num2) { return setScale(num1.add(num2), SIX_PRICE_DECIMAL_POINT); } + public static BigDecimal multiply(BigDecimal num1, BigDecimal num2) { return setScale(num1.multiply(num2), SIX_PRICE_DECIMAL_POINT); } + public static BigDecimal subtract(BigDecimal num1, BigDecimal num2) { return setScale(num1.subtract(num2), SIX_PRICE_DECIMAL_POINT); } + public static BigDecimal divide(BigDecimal num1, BigDecimal num2) { return num1.divide(num2, PRICE_DECIMAL_POINT, RoundingMode.HALF_UP); } @@ -72,12 +79,15 @@ public class SmartBigDecimalUtil { public static BigDecimal add(BigDecimal num1, BigDecimal num2) { return setScale(num1.add(num2), WEIGHT_DECIMAL_POINT); } + public static BigDecimal multiply(BigDecimal num1, BigDecimal num2) { return setScale(num1.multiply(num2), WEIGHT_DECIMAL_POINT); } + public static BigDecimal subtract(BigDecimal num1, BigDecimal num2) { return setScale(num1.subtract(num2), WEIGHT_DECIMAL_POINT); } + public static BigDecimal divide(BigDecimal num1, BigDecimal num2) { return num1.divide(num2, WEIGHT_DECIMAL_POINT, RoundingMode.HALF_UP); } @@ -176,7 +186,7 @@ public class SmartBigDecimalUtil { * @return boolean */ public static boolean isLessThan(BigDecimal num1, BigDecimal num2) { - return num1.compareTo(num2) == - 1; + return num1.compareTo(num2) == -1; } /** @@ -227,7 +237,7 @@ public class SmartBigDecimalUtil { if (num1 == null || num2 == null) { return BigDecimal.ZERO; } - if (num2.equals(Integer.valueOf(0))) { + if (num2.equals(0)) { return BigDecimal.ZERO; } BigDecimal bigDecimalNum1 = new BigDecimal(num1); @@ -272,7 +282,7 @@ public class SmartBigDecimalUtil { * @return String */ public static Boolean isNotEmpty(BigDecimal num) { - return ! isEmpty(num); + return !isEmpty(num); } /** @@ -283,8 +293,7 @@ public class SmartBigDecimalUtil { * @return */ public static BigDecimal convertTenThousand(BigDecimal num, int point) { - BigDecimal decimal = num.divide(new BigDecimal(10000), point, RoundingMode.HALF_UP); - return decimal; + return num.divide(new BigDecimal(10000), point, RoundingMode.HALF_UP); } /** @@ -300,4 +309,25 @@ public class SmartBigDecimalUtil { return BigDecimal.ZERO.subtract(num); } + /** + * 比较 num1,num2 返回最大的值 + * + * @param num1 + * @param num2 + * @return BigDecimal + */ + public static BigDecimal max(BigDecimal num1, BigDecimal num2) { + return num1.compareTo(num2) > 0 ? num1 : num2; + } + + /** + * 比较 num1,num2 返回最小的值 + * + * @param num1 + * @param num2 + * @return BigDecimal + */ + public static BigDecimal min(BigDecimal num1, BigDecimal num2) { + return num1.compareTo(num2) < 0 ? num1 : num2; + } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartFileUtil.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartFileUtil.java new file mode 100644 index 00000000..45735c9a --- /dev/null +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartFileUtil.java @@ -0,0 +1,91 @@ +package net.lab1024.smartadmin.util; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.nio.charset.Charset; + +import org.apache.commons.io.FileUtils; + +/** + * @author zhuoda + */ +public class SmartFileUtil extends FileUtils { + + public static boolean isXmlFile(File file) { + return "xml".equalsIgnoreCase(getFileExtension(file.getName())); + } + + /** + * 文件后缀名 + * + * @param fullName + * @return + */ + public static String getFileExtension(String fullName) { + String fileName = new File(fullName).getName(); + int dotIndex = fileName.lastIndexOf('.'); + return (dotIndex == -1) ? "" : fileName.substring(dotIndex + 1); + } + + /** + * 不带后缀名的文件名 + * + * @param file + * @return + */ + public static String getNameWithoutExtension(String file) { + String fileName = new File(file).getName(); + int dotIndex = fileName.lastIndexOf('.'); + return (dotIndex == -1) ? fileName : fileName.substring(0, dotIndex); + } + + public static boolean isFileExist(String filePath) { + File file = new File(filePath); + return file.exists(); + } + + /** + * 验证文件是否存在,如果不存在则抛出异常 + * + * @param filePath + * @throws IOException + */ + public static void isFileExistThrowException(String filePath) throws IOException { + File file = new File(filePath); + if (!file.exists()) { + throw new FileNotFoundException(filePath); + } + } + + public static BufferedReader newBufferedReader(File file, Charset charset) throws FileNotFoundException { + return new BufferedReader(new InputStreamReader(new FileInputStream(file), charset)); + } + + public static BufferedWriter newBufferedWriter(File file, Charset charset) throws FileNotFoundException { + return new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), charset)); + } + + public static boolean createParentDirs(File file) throws IOException { + File parent = file.getCanonicalFile().getParentFile(); + if (parent == null) { + return false; + } + return parent.mkdirs(); + } + + public static boolean createNotExistParentDirFile(File file) throws IOException { + boolean createParentDirsRes = createParentDirs(file); + if (!createParentDirsRes) { + throw new IOException("cannot create parent Directory of " + file.getName()); + } + return file.createNewFile(); + } + +} diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartPageUtil.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartPageUtil.java index 47340927..2e1352c6 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartPageUtil.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartPageUtil.java @@ -22,7 +22,7 @@ public class SmartPageUtil { PageResultDTO result = new PageResultDTO<>(); result.setPageNum(page.getCurrent()); result.setPageSize(page.getSize()); - result.setTotal(Long.valueOf(page.getTotal())); + result.setTotal(page.getTotal()); result.setPages(page.getPages()); result.setList(page.getRecords()); return result; @@ -33,7 +33,7 @@ public class SmartPageUtil { List orders = baseDTO.getOrders(); if (orders != null && !orders.isEmpty()) { - List orderItemList = orders.stream().map(e -> convertOrderItem(e)).collect(Collectors.toList()); + List orderItemList = orders.stream().map(SmartPageUtil::convertOrderItem).collect(Collectors.toList()); page.setOrders(orderItemList); } page.setCurrent(baseDTO.getPageNum()); @@ -90,7 +90,7 @@ public class SmartPageUtil { PageResultDTO pageResultDTO = new PageResultDTO(); pageResultDTO.setPageNum(page.getCurrent()); pageResultDTO.setPageSize(page.getSize()); - pageResultDTO.setTotal(Long.valueOf(page.getTotal())); + pageResultDTO.setTotal(page.getTotal()); pageResultDTO.setPages(page.getPages()); return pageResultDTO; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartRequestTokenUtil.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartRequestTokenUtil.java index c8342f35..7ae5f5fc 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartRequestTokenUtil.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/SmartRequestTokenUtil.java @@ -1,6 +1,6 @@ package net.lab1024.smartadmin.util; -import net.lab1024.smartadmin.module.business.login.domain.RequestTokenBO; +import net.lab1024.smartadmin.module.system.login.domain.RequestTokenBO; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcel.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcel.java new file mode 100644 index 00000000..47f6e8cd --- /dev/null +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcel.java @@ -0,0 +1,83 @@ +package net.lab1024.smartadmin.util.excel; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +/** + * zhuoda + */ +public class SmartExcel { + + List sheetList = new ArrayList();; + + public SmartExcel(String fileName) { + org.apache.poi.ss.usermodel.Workbook workbook = null; + try { + workbook = fileName.endsWith(".xls") ? new HSSFWorkbook(new FileInputStream(fileName)) : new XSSFWorkbook(new FileInputStream(fileName)); + int numberOfSheets = workbook.getNumberOfSheets(); + for (int index = 0; index < numberOfSheets; index++) { + addSheet(new SmartSheet(workbook.getSheetAt(index))); + } + } catch (Throwable t) { + throw new RuntimeException(t); + } finally { + if (workbook != null) { + try { + workbook.close(); + } catch (IOException e) { + } + workbook = null; + } + } + } + + public SmartExcel(InputStream ins, SmartExcelFileType fileType) { + org.apache.poi.ss.usermodel.Workbook workbook = null; + try { + workbook = fileType == SmartExcelFileType.XLS ? new HSSFWorkbook(ins) : new XSSFWorkbook(ins); + int numberOfSheets = workbook.getNumberOfSheets(); + for (int index = 0; index < numberOfSheets; index++) { + addSheet(new SmartSheet(workbook.getSheetAt(index))); + } + } catch (Throwable t) { + throw new RuntimeException(t); + } finally { + if (workbook != null) { + try { + workbook.close(); + } catch (IOException e) { + } + workbook = null; + } + } + } + + final protected void addSheet(SmartSheet sheet) { + this.sheetList.add(sheet); + } + + final protected void addSheetList(Collection sheets) { + this.sheetList.addAll(sheets); + } + + final public List getSheetList() { + return sheetList; + } + + final public SmartSheet getSheet(String sheetName) { + for (SmartSheet sheet : sheetList) { + if (sheet.getName().equals(sheetName)) { + return sheet; + } + } + return null; + } +} + diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcelFileType.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcelFileType.java new file mode 100644 index 00000000..499e43db --- /dev/null +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcelFileType.java @@ -0,0 +1,10 @@ +package net.lab1024.smartadmin.util.excel; + +/** + * @author zhuoda + */ +public enum SmartExcelFileType { + XLS, + XLSX + +} diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcelReader.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcelReader.java new file mode 100644 index 00000000..e5c1ba5b --- /dev/null +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartExcelReader.java @@ -0,0 +1,32 @@ +package net.lab1024.smartadmin.util.excel; + +/** + * @author zhuoda + * @Date 2020/8/10 + */ + +import net.lab1024.smartadmin.util.SmartFileUtil; + +import java.io.*; + +public class SmartExcelReader { + + public static SmartExcel openExcel(String filePath) throws IOException { + SmartFileUtil.isFileExistThrowException(filePath); + return new SmartExcel(new File(filePath).getCanonicalPath()); + } + + public static SmartExcel openExcel(File file) throws IOException { + return new SmartExcel(file.getCanonicalPath()); + } + + public static SmartExcel openExcel(InputStream ins, SmartExcelFileType fileType) throws IOException { + return new SmartExcel(ins, fileType); + } + + public static void main(String[] args) throws Exception { + SmartExcel smartExcel = openExcel(new FileInputStream(new File("F:/privilege.xlsx")), SmartExcelFileType.XLSX); + System.out.println(smartExcel.getSheetList()); + } + +} diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartSheet.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartSheet.java new file mode 100644 index 00000000..80aed760 --- /dev/null +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/util/excel/SmartSheet.java @@ -0,0 +1,113 @@ +package net.lab1024.smartadmin.util.excel; + + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.util.CellRangeAddress; + +/** + * @author zhuoda + */ +public class SmartSheet { + final String name; + + private final int rowCount; + private final int columnCount; + private final String[][] datas; + + public SmartSheet(org.apache.poi.ss.usermodel.Sheet sheet) { + this.name = sheet.getSheetName(); + this.rowCount = sheet.getLastRowNum() + 1; + // 初始化基本数据 + int maxColumnCount = 0; + this.datas = new String[rowCount][]; + for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) { + Row row = sheet.getRow(rowIndex); + if (row == null) { + continue; + } + int _columnCount = row.getLastCellNum() + 1; + this.datas[rowIndex] = new String[_columnCount]; + for (int colIndex = 0; colIndex < _columnCount; colIndex++) { + this.datas[rowIndex][colIndex] = getCellContents(row.getCell(colIndex)); + } + if (maxColumnCount < _columnCount) { + maxColumnCount = _columnCount; + } + } + this.columnCount = maxColumnCount; + // 根据单元格合并情况,填充内容 + for (int index = 0; index < sheet.getNumMergedRegions(); index++) { + CellRangeAddress mergedRegion = sheet.getMergedRegion(index); + String upperLeftData = this.datas[mergedRegion.getFirstRow()][mergedRegion.getFirstColumn()]; + for (int rowIndex = mergedRegion.getFirstRow(); rowIndex <= mergedRegion.getLastRow(); rowIndex++) { + String[] _rowDatas = this.datas[rowIndex]; + if (_rowDatas == null) { + this.datas[rowIndex] = new String[mergedRegion.getLastColumn() + 1]; + } else if (_rowDatas.length < mergedRegion.getLastColumn() + 1) { + String[] newStrArray = new String[mergedRegion.getLastColumn() + 1]; + System.arraycopy(_rowDatas, 0, newStrArray, 0, _rowDatas.length); + this.datas[rowIndex] = newStrArray; + } + for (int colIndex = mergedRegion.getFirstColumn(); colIndex <= mergedRegion.getLastColumn(); colIndex++) { + this.datas[rowIndex][colIndex] = upperLeftData; + } + } + } + } + + private String getCellContents(Cell cell) { + if (cell == null) { + return null; + } + return getCellContents(cell.getCellType(), cell); + } + + private String getCellContents(CellType type, Cell cell) { + switch (type) { + case BLANK: + return ""; + case NUMERIC: + return cell.getStringCellValue(); + case STRING: + return cell.getStringCellValue(); + case FORMULA: + return getCellContents(cell.getCachedFormulaResultType(), cell); + case BOOLEAN: + return String.valueOf(cell.getBooleanCellValue()); + case ERROR: + default: + throw new IllegalArgumentException(String.format("unsupported cell type:%d, col:%d, row:%d, sheet:%s", cell.getCellType(), cell.getColumnIndex(), + cell.getRowIndex(), getName())); + } + } + + public int getRowCount() { + return rowCount; + } + + public int getColumnCount() { + return columnCount; + } + + public String getValue(int rowIndex, int columnIndex) { + if (rowIndex < 0 || rowIndex >= datas.length) { + return ""; + } + if (columnIndex < 0 || datas[rowIndex] == null || columnIndex >= datas[rowIndex].length) { + return ""; + } + String value = datas[rowIndex][columnIndex]; + return value == null ? "": value; + } + + + public String getName() { + return name; + } + + + +} + diff --git a/smart-admin-service/smart-admin-api/src/main/resources/banner.txt b/smart-admin-service/smart-admin-api/src/main/resources/banner.txt index ee858a4d..d3187732 100644 --- a/smart-admin-service/smart-admin-api/src/main/resources/banner.txt +++ b/smart-admin-service/smart-admin-api/src/main/resources/banner.txt @@ -4,5 +4,5 @@ ____) | | | | | | (_| | | | |_ / ____ \ (_| | | | | | | | | | | |_____/|_| |_| |_|\__,_|_| \__/_/ \_\__,_|_| |_| |_|_|_| |_| -SmartAdmin v1.1.0 +SmartAdmin v1.2.0 diff --git a/smart-admin-service/smart-admin-api/src/main/resources/dev/application.properties b/smart-admin-service/smart-admin-api/src/main/resources/dev/application.properties index 061552d8..b4468249 100644 --- a/smart-admin-service/smart-admin-api/src/main/resources/dev/application.properties +++ b/smart-admin-service/smart-admin-api/src/main/resources/dev/application.properties @@ -23,7 +23,7 @@ spring.servlet.multipart.max-request-size=30MB file-upload-service.path=/home/upload/ ######################### database ######################### -spring.datasource.url=jdbc:mysql://127.0.0.1:3306/smart-admin-dev?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC +spring.datasource.url=jdbc:p6spy:mysql://127.0.0.1:3306/smart-admin-dev?autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=Root.123 spring.datasource.initial-size=2 @@ -31,8 +31,8 @@ spring.datasource.min-idle=1 spring.datasource.max-active=10 spring.datasource.max-wait=60000 spring.datasource.time-between-eviction-runs-millis=60000 -spring.datasource.min-evictable-edle-time-millis=300000 -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.min-evictable-idle-time-millis=300000 +spring.datasource.driver-class-name=com.p6spy.engine.spy.P6SpyDriver spring.datasource.filters=stat spring.datasource.druid.username=druid spring.datasource.druid.password=123456 @@ -44,16 +44,16 @@ spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.timeout=10000ms spring.redis.password= -spring.redis.lettuce..pool.max-active=100 +spring.redis.lettuce.pool.max-active=10 spring.redis.lettuce.pool.min-idle=5 spring.redis.lettuce.pool.max-idle=10 spring.redis.lettuce.pool.max-wait=30000ms ########################## rest http pool ######################### #\u6700\u5927\u8FDE\u63A5\u6570 -http.pool.max-total=100 +http.pool.max-total=10 #\u5355\u8DEF\u7531\u6700\u5927\u8FDE\u63A5\u6570 -http.pool.default-max-per-route=25 +http.pool.default-max-per-route=5 #\u670D\u52A1\u5668\u8FD4\u56DE\u6570\u636E(response)\u7684\u65F6\u95F4 http.pool.socket-timeout=8000 #\u8FDE\u63A5\u4E0A\u670D\u52A1\u5668(\u63E1\u624B\u6210\u529F)\u7684\u65F6\u95F4 @@ -83,14 +83,14 @@ jwt.key=smart-admin-jwt-key ########################## smart reload ######################### smart-reload.thread-count=1 -smart-reload.time-interval=5 +smart-reload.time-interval=300 ######################### cros ######################### access-control-allow-origin=* ######################### heart beat ######################### heart-beat.delayHandlerTime=60000 -heart-beat.intervalTime=180000 +heart-beat.intervalTime=300000 ######################### quartz ############################# #\u8C03\u5EA6\u6807\u8BC6\u540D \u96C6\u7FA4\u4E2D\u6BCF\u4E00\u4E2A\u5B9E\u4F8B\u90FD\u5FC5\u987B\u4F7F\u7528\u76F8\u540C\u7684\u540D\u79F0 @@ -106,8 +106,8 @@ spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore. spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_ spring.quartz.properties.org.quartz.jobStore.isClustered=true -#\u8C03\u5EA6\u5B9E\u4F8B\u5931\u6548\u7684\u68C0\u67E5\u65F6\u95F4\u95F4\u9694 -spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=10000 +#\u8C03\u5EA6\u5B9E\u4F8B\u5931\u6548\u7684\u68C0\u67E5\u65F6\u95F4\u95F4\u9694, \u5F00\u53D1\u73AF\u5883\u6539\u4E3A\u4E8660\u79D2 +spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=60000 spring.quartz.properties.org.quartz.jobStore.useProperties=false #\u8C03\u5EA6\u7EBF\u7A0B spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool @@ -119,3 +119,5 @@ spring.quartz.job-store-type=jdbc #ALWAYS,EMBEDDED,NEVER spring.quartz.jdbc.initialize-schema=NEVER spring.quartz.jdbc.schema=classpath:sql/quartz_mysql_2.3.0.sql +#\u81EA\u52A8\u626B\u63CF\u4EFB\u52A1\u5355\u5E76\u53D1\u73B0\u6539\u52A8\u7684\u65F6\u95F4\u95F4\u9694,\u5355\u4F4D\u4E3A\u79D2 +org.quartz.plugin.jobInitializer.scanInterval = 300 diff --git a/smart-admin-service/smart-admin-api/src/main/resources/dev/spy.properties b/smart-admin-service/smart-admin-api/src/main/resources/dev/spy.properties new file mode 100644 index 00000000..22c91d1e --- /dev/null +++ b/smart-admin-service/smart-admin-api/src/main/resources/dev/spy.properties @@ -0,0 +1,20 @@ +#modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory +# \u81EA\u5B9A\u4E49\u65E5\u5FD7\u6253\u5370 +logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger +#\u65E5\u5FD7\u8F93\u51FA\u5230\u63A7\u5236\u53F0 +appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger +# \u4F7F\u7528\u65E5\u5FD7\u7CFB\u7EDF\u8BB0\u5F55 sql +#appender=com.p6spy.engine.spy.appender.Slf4JLogger +# \u8BBE\u7F6E p6spy driver \u4EE3\u7406 +deregisterdrivers=true +# \u53D6\u6D88JDBC URL\u524D\u7F00 +useprefix=true +# \u914D\u7F6E\u8BB0\u5F55 Log \u4F8B\u5916,\u53EF\u53BB\u6389\u7684\u7ED3\u679C\u96C6\u6709error,info,batch,debug,statement,commit,rollback,result,resultset. +#excludecategories=info,debug,result,commit,resultset +# \u65E5\u671F\u683C\u5F0F +dateformat=yyyy-MM-dd HH:mm:ss + +# \u662F\u5426\u5F00\u542F\u6162SQL\u8BB0\u5F55 +outagedetection=true +# \u6162SQL\u8BB0\u5F55\u6807\u51C6 2 \u79D2 +outagedetectioninterval=2 \ No newline at end of file diff --git a/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/department/DepartmentMapper.xml b/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/department/DepartmentMapper.xml index f6c33da3..837a287c 100644 --- a/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/department/DepartmentMapper.xml +++ b/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/department/DepartmentMapper.xml @@ -18,15 +18,6 @@ d.create_time - - + + \ No newline at end of file diff --git a/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/employee/EmployeeMapper.xml b/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/employee/EmployeeMapper.xml index fe1397a4..2b13a478 100644 --- a/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/employee/EmployeeMapper.xml +++ b/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/employee/EmployeeMapper.xml @@ -106,7 +106,7 @@ FROM t_employee e WHERE - e.login_name = #{phone} and e.is_disabled = #{isDisabled} + e.phone = #{phone} and e.is_disabled = #{isDisabled} @@ -124,7 +124,10 @@ FROM t_employee e WHERE - e.department_id = #{departmentId} + e.department_id = #{depId} + + AND e.is_delete = #{deleteFlag} + @@ -146,7 +149,7 @@ t_employee e WHERE e.department_id IN - + #{item} order by e.create_time desc @@ -158,7 +161,7 @@ FROM t_employee e where e.id IN - + #{item} order by e.create_time desc diff --git a/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/privilege/PrivilegeMapper.xml b/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/privilege/PrivilegeMapper.xml index 3b3d3695..7d224b22 100644 --- a/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/privilege/PrivilegeMapper.xml +++ b/smart-admin-service/smart-admin-api/src/main/resources/mapper/system/privilege/PrivilegeMapper.xml @@ -99,6 +99,19 @@ p.key = #{key} + + - + 记住密码 @@ -18,7 +18,7 @@
-

其他方式登陆(账号:demo/123456 demo1/123456)

+

其他方式登陆(账号:demo/123456)

@@ -47,14 +47,15 @@ export default { default: () => { return [{ required: true, message: '密码不能为空', trigger: 'blur' }]; } - }, - // 验证码规则 - codedRules: { - type: Array, - default: () => { - return [{ required: true, message: '验证码不能为空', trigger: 'blur' }]; - } } + // , + // // 验证码规则 + // codedRules: { + // type: Array, + // default: () => { + // return [{ required: true, message: '验证码不能为空', trigger: 'blur' }]; + // } + // } }, data() { return { @@ -63,7 +64,7 @@ export default { formData: { code: '', codeUuid: '', - loginName: 'demo', + loginName: 'sa', loginPwd: '123456' }, codeUrl: '' @@ -79,7 +80,7 @@ export default { } }, mounted() { - this.verificationCode(); + // this.verificationCode(); }, methods: { // 获取验证码 @@ -125,9 +126,9 @@ export default { //TODO zhuoda sentry console.error(e); this.btnLoading = false; - this.verificationCode(); + //this.verificationCode(); } } } }; - \ No newline at end of file + diff --git a/smart-admin-web/src/views/login/login.less b/smart-admin-web/src/views/login/login.less index d1d6fc2b..82a52efc 100644 --- a/smart-admin-web/src/views/login/login.less +++ b/smart-admin-web/src/views/login/login.less @@ -26,7 +26,7 @@ width: 424px; background: #fff; padding: 32px 32px; - border-radius: 0 8px 8px 0; + border-radius: 8px; .ivu-input { border: 1px solid #E8E8EE; border-radius: 4px; diff --git a/smart-admin-web/src/views/support/task/task-list.vue b/smart-admin-web/src/views/support/task/task-list.vue index 9175a359..d73e96be 100644 --- a/smart-admin-web/src/views/support/task/task-list.vue +++ b/smart-admin-web/src/views/support/task/task-list.vue @@ -365,6 +365,7 @@ export default { } catch (e) { //TODO zhuoda sentry console.error(e); + } finally { this.loading = false; } }, @@ -400,33 +401,52 @@ export default { }, // 删除任务 async deleteTask(id) { - let result = await taskApi.deleteTask(id); - this.$Message.success('删除任务成功!'); - this.getTaskList(); + this.$Spin.show(); + try{ + let result = await taskApi.deleteTask(id); + this.$Message.success('删除任务成功!'); + this.getTaskList(); + } catch (error) { + console.error(e); + } finally { + this.$Spin.hide(); + } }, // 操作任务 async controlTask(type, id) { this.$Spin.show(); - switch (type) { - case 'RUN': - await taskApi.updateTaskRun(id); - break; - case 'PAUSE': - await taskApi.updateTaskPause(id); - break; - case 'RESUME': - await taskApi.updateTaskResume(id); - break; + try{ + switch (type) { + case 'RUN': + await taskApi.updateTaskRun(id); + break; + case 'PAUSE': + await taskApi.updateTaskPause(id); + break; + case 'RESUME': + await taskApi.updateTaskResume(id); + break; + } + this.$Message.success('操作成功'); + this.getTaskList(); + } catch (error) { + console.error(e); + } finally { + this.$Spin.hide(); } - this.$Spin.hide(); - this.$Message.success('操作成功'); - this.getTaskList(); }, // 触发更新 handleUpdate() { this.$refs['updateRef'].validate(valid => { if (valid) { - this.updateTask(); + this.$Spin.show(); + try{ + this.updateTask(); + } catch (error) { + console.error(e); + } finally { + this.$Spin.hide(); + } } else { this.$Message.success('验证信息不通过'); } @@ -444,6 +464,7 @@ export default { } catch (e) { //TODO zhuoda sentry console.error(e); + } finally { this.updateLoading = false; } }, @@ -464,6 +485,7 @@ export default { } catch (e) { //TODO zhuoda sentry console.error(e); + } finally { this.saveLoading = false; } }, diff --git a/smart-admin-web/src/views/system/employee/role/components/role-tree/role-tree.vue b/smart-admin-web/src/views/system/employee/role/components/role-tree/role-tree.vue index 9721599d..fe4eec67 100644 --- a/smart-admin-web/src/views/system/employee/role/components/role-tree/role-tree.vue +++ b/smart-admin-web/src/views/system/employee/role/components/role-tree/role-tree.vue @@ -21,19 +21,19 @@
{{module.name}} + @click.prevent.native="selectCheckbox(module)" + >{{module.name}}
{{childrenModule.name}}
@@ -46,23 +46,56 @@ {{pages.name}} -
+ +
+
{{pages.name}} @@ -101,6 +134,8 @@ export default { return { // 权限数据 tree: [], + //权限铺平的map + treeMap: null, loading: false, // 提交保存数据 rolePower: { @@ -133,118 +168,95 @@ export default { activated() {}, methods: { // 勾选权限 - selectCheckbox( - currentModuleList, - moduleIndex, - upOneModuleList, - upTwoModuleList - ) { - let module = currentModuleList[moduleIndex]; + selectCheckbox(module) { // 是否勾选 let findIndex = this.checkedData.indexOf(module.key); if (findIndex !== -1) { - this.spliceCheck(module); - // 取消的上级ID - // 判断同级是否全部已取消勾选 - let currentLevelAllUnchecked = this.isUnCheckedThisLevel( - currentModuleList - ); - if (currentLevelAllUnchecked && upOneModuleList) { - // 判断上级是否全部已取消勾选 - let upOneLevelAllUnchecked = this.isUnCheckedThisLevel( - upOneModuleList - ); - if (upOneLevelAllUnchecked && upTwoModuleList) { - // 判断上上级是否全部已取消勾选 - this.isUnCheckedThisLevel(upTwoModuleList); + //取消自己和孩子 + this.removeCheckAndChidlrenCheck(module); + //判断父级及其以上是否有重复 + if (module.parentKey) { + let parentPrivilege = this.treeMap.get(module.parentKey); + if (parentPrivilege) { + this.unCheckedParent(parentPrivilege); } } } else { // 选中子级所有checkBox - this.addCheck(module); - // 选中上级组件 - if (module.parentKey) { - if ( - this.checkedData.findIndex(val => val === module.parentKey) === -1 - ) { - this.checkedData.push(module.parentKey); - } - } - // 选中上上级组件 - if (upOneModuleList) { - let upOneFindIndex = upOneModuleList.findIndex( - e => e.key === module.parentKey - ); - let upOneFind = - upOneFindIndex === -1 ? null : upOneModuleList[upOneFindIndex]; - if ( - upOneFind && - upOneFind.parentKey && - this.checkedData.findIndex(val => val === upOneFind.parentKey) === - -1 - ) { - this.checkedData.push(upOneFind.parentKey); - } - // 选中上上上级组件 - if (upTwoModuleList) { - console.log(1111, upTwoModuleList, upOneFind); - let upTwoFindIndex = upTwoModuleList.findIndex( - e => e.key === upOneFind.parentKey - ); - let upTwoFind = - upTwoFindIndex === -1 ? null : upTwoModuleList[upTwoFindIndex]; - if ( - upTwoFind && - upTwoFind.parentKey && - this.checkedData.findIndex(val => val === upTwoFind.parentKey) === - -1 - ) { - this.checkedData.push(upTwoFind.parentKey); + this.addCheckAndChildrenCheck(module); + // 父类集合选中 + let parentKey = module.parentKey; + while (parentKey != null) { + let parentPrivilege = this.treeMap.get(parentKey); + if (parentPrivilege) { + let findIndex = this.checkedData.findIndex(val => val == parentKey); + if (findIndex == -1) { + this.checkedData.push(parentKey); } + parentKey = parentPrivilege.parentKey; + } else { + parentKey = null; } } } }, - // 判断同级是否全部已取消勾选 - isUnCheckedThisLevel(moduleList) { - let thisLevelAllUnchecked = true; - moduleList.forEach(e => { - let brotherIndex = this.checkedData.findIndex(val => val == e.key); - if (brotherIndex != -1) { - thisLevelAllUnchecked = false; - } - }); - if (thisLevelAllUnchecked) { - let number = this.checkedData.findIndex( - e => e == moduleList[0].parentKey - ); - if (number != -1) { - this.checkedData.splice(number, 1); + // 取消父级check + unCheckedParent(parentPrivilege) { + if ( + parentPrivilege && + parentPrivilege.children && + parentPrivilege.children.length > 0 + ) { + if (!this.judgeArrayExistCheck(parentPrivilege.children)) { + let findIndex = this.checkedData.findIndex( + val => val == parentPrivilege.key + ); + if (findIndex != -1) { + this.checkedData.splice(findIndex, 1); + } + + parentPrivilege = this.treeMap.get(parentPrivilege.parentKey); + this.unCheckedParent(parentPrivilege); } } - return thisLevelAllUnchecked; }, + //判断权限数组是否有选中的,有返回true,没有任何选中返回false + judgeArrayExistCheck(privilegeArray) { + if (!privilegeArray) { + return false; + } + + for (let privilege of privilegeArray) { + let findIndex = this.checkedData.findIndex(val => val == privilege.key); + if (findIndex != -1) { + return true; + } + } + return false; + }, + // 选中子级所有checkBox - addCheck(module) { + addCheckAndChildrenCheck(module) { let findIndex = this.checkedData.findIndex(val => val == module.key); if (findIndex == -1) { this.checkedData.push(module.key); } + if (module.children) { module.children.forEach(item => { - this.addCheck(item); + this.addCheckAndChildrenCheck(item); }); } }, // 取消自己和下级勾选 - spliceCheck(module) { + removeCheckAndChidlrenCheck(module) { let findIndex = this.checkedData.findIndex(val => val == module.key); if (findIndex != -1) { this.checkedData.splice(findIndex, 1); } if (module.children) { module.children.forEach(item => { - this.spliceCheck(item); + this.removeCheckAndChidlrenCheck(item); }); } }, @@ -272,13 +284,23 @@ export default { this.$Spin.hide(); } }, + //将权限tree 打平成map + tree2map(tree) { + if (tree) { + for (const privilege of tree) { + this.treeMap.set(privilege.key, privilege); + this.tree2map(privilege.children); + } + } + }, // 获取角色可选的功能权限 async getListPrivilegeByRoleId(id) { try { let response = await privilegeApi.getListPrivilegeByRoleId(id); let datas = response.data; this.tree = datas.privilege; - console.log('tree', this.tree); + this.treeMap = new Map(); + this.tree2map(this.tree); this.checkedData = datas.selectedKey || []; } catch (e) { console.error(e); @@ -360,14 +382,14 @@ export default { border-bottom: 1px solid rgb(240, 240, 240); padding: 10px 0; } - .level-teo { + .level-two { display: flex; align-items: center; margin-left: 4%; position: relative; border-bottom: 1px solid rgb(240, 240, 240); line-height: 40px; - .level-teo-label { + .level-two-label { width: 12%; min-width: 120px; } @@ -381,15 +403,21 @@ export default { .isLevel-four { display: flex; align-items: center; + border-bottom: 1px rgb(240, 240, 240) solid; .level-three-label { width: 12%; min-width: 120px; } - .Level-four { + .level-four { padding-left: 4%; flex: 1; min-height: 40px; border-left: 1px rgb(240, 240, 240) solid; + .level-five { + padding-left: 4%; + min-height: 40px; + border-left: 1px rgb(240, 240, 240) solid; + } } } } diff --git a/smart-admin-web/src/views/system/system-setting/system-privilege/components/privilege-form.vue b/smart-admin-web/src/views/system/system-setting/system-privilege/components/privilege-form.vue index 6233c82f..f4454771 100644 --- a/smart-admin-web/src/views/system/system-setting/system-privilege/components/privilege-form.vue +++ b/smart-admin-web/src/views/system/system-setting/system-privilege/components/privilege-form.vue @@ -17,7 +17,7 @@ - +