From 01fe8a7c1630c2fd2266aad4cbbc3351bebea028 Mon Sep 17 00:00:00 2001 From: yandanyang Date: Sat, 28 Nov 2020 23:02:08 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9quartz=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=822=E5=AE=8C=E5=96=84=E6=95=B0=E6=8D=AE=E8=8C=83?= =?UTF-8?q?=E5=9B=B4=E6=B7=BB=E5=8A=A0=E7=AD=96=E7=95=A5=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E3=80=823=E4=BF=AE=E6=94=B9swaggerbug=E3=80=824=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E9=AA=8C=E8=AF=81=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartadmin/common/anno/DataScope.java | 12 ++++ .../SmartSwaggerDynamicGroupConfig.java | 7 ++- .../support/quartz/service/QuartzTask.java | 5 +- .../quartz/service/QuartzTaskService.java | 52 +++++++++++++---- .../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 | 34 ++++++++--- .../service/DataScopeViewService.java | 52 ++++++++++------- .../strategy/DataScopePowerStrategy.java | 24 ++++++++ .../domain/dto/EmployeeLoginFormDTO.java | 2 - .../module/system/login/LoginService.java | 18 +++--- .../src/views/login/components/login-form.vue | 23 ++++---- .../src/views/support/task/task-list.vue | 56 +++++++++++++------ 17 files changed, 263 insertions(+), 115 deletions(-) create mode 100644 smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/datascope/strategy/DataScopePowerStrategy.java 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 01a045c9..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 @@ -2,6 +2,7 @@ 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; @@ -27,11 +28,22 @@ public @interface DataScope { 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/config/SmartSwaggerDynamicGroupConfig.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/config/SmartSwaggerDynamicGroupConfig.java index 649b1508..48451f93 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 @@ -19,6 +19,7 @@ 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; @@ -194,7 +195,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() { 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 dbbdee2b..58b2e32c 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; @@ -17,7 +17,6 @@ import org.springframework.scheduling.quartz.QuartzJobBean; import java.io.PrintWriter; import java.io.StringWriter; -import java.time.LocalDateTime; import java.util.Date; /** 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 30408d5f..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 @@ -130,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(); } @@ -165,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(); } @@ -184,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(); } @@ -233,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); + } } /** @@ -256,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); } } @@ -276,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); } @@ -283,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); } @@ -295,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); } @@ -312,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 b6285481..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.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,10 +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().getType()); + configDTO.setDataScopeWhereInType(dataScopeAnnotation.whereInType()); dataScopeMethodMap.put(method.getDeclaringClass().getSimpleName() + "." + method.getName(), configDTO); } } @@ -95,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 ""; } @@ -108,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/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/system/login/LoginService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginService.java index 55e6f67c..070a9ff4 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginService.java @@ -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-web/src/views/login/components/login-form.vue b/smart-admin-web/src/views/login/components/login-form.vue index d5cac85a..84a19a2e 100644 --- a/smart-admin-web/src/views/login/components/login-form.vue +++ b/smart-admin-web/src/views/login/components/login-form.vue @@ -7,10 +7,10 @@ - + 记住密码 @@ -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 { @@ -79,7 +80,7 @@ export default { } }, mounted() { - this.verificationCode(); + // this.verificationCode(); }, methods: { // 获取验证码 @@ -125,7 +126,7 @@ export default { //TODO zhuoda sentry console.error(e); this.btnLoading = false; - this.verificationCode(); + //this.verificationCode(); } } } 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; } },