From 7cf9c1598401dc7b54d8d1ccedccc17ec3f33f3e Mon Sep 17 00:00:00 2001 From: ibaiyy Date: Thu, 23 May 2024 21:49:24 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8A=9E=E7=90=86?= =?UTF-8?q?=E6=97=B6=E6=A0=A1=E9=AA=8C=E6=98=AF=E5=90=A6=E6=98=AF=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8A=9E=E7=90=86=E4=BA=BA=E3=80=90=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E3=80=81=E5=A7=94=E6=89=98=E3=80=81=E8=BD=AC=E5=8A=9E=E3=80=81?= =?UTF-8?q?=E7=BB=88=E6=AD=A2=E3=80=81=E9=80=80=E5=9B=9E=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ActTaskServiceImpl.java | 19 +++++----------- .../dromara/workflow/utils/WorkflowUtils.java | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 1a4866d21..6a6b1b1cb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -159,15 +159,8 @@ public class ActTaskServiceImpl implements IActTaskService { @Transactional(rollbackFor = Exception.class) public boolean completeTask(CompleteTaskBo completeTaskBo) { try { - List roles = LoginHelper.getLoginUser().getRoles(); String userId = String.valueOf(LoginHelper.getUserId()); - TaskQuery taskQuery = QueryUtils.taskQuery(); - taskQuery.taskId(completeTaskBo.getTaskId()).taskCandidateOrAssigned(userId); - if (CollUtil.isNotEmpty(roles)) { - List groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); - taskQuery.taskCandidateGroupIn(groupIds); - } - Task task = taskQuery.singleResult(); + Task task = WorkflowUtils.getTaskByCurrUser(completeTaskBo.getTaskId()); if (task == null) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -470,8 +463,8 @@ public class ActTaskServiceImpl implements IActTaskService { @Override @Transactional(rollbackFor = Exception.class) public boolean delegateTask(DelegateBo delegateBo) { - TaskQuery query = QueryUtils.taskQuery(); - TaskEntity task = (TaskEntity) query.taskId(delegateBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult(); + Task task = WorkflowUtils.getTaskByCurrUser(delegateBo.getTaskId()); + if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -544,7 +537,7 @@ public class ActTaskServiceImpl implements IActTaskService { */ @Override public boolean transferTask(TransmitBo transmitBo) { - Task task = QueryUtils.taskQuery().taskId(transmitBo.getTaskId()).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())).singleResult(); + Task task = WorkflowUtils.getTaskByCurrUser(transmitBo.getTaskId()); if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } @@ -669,9 +662,9 @@ public class ActTaskServiceImpl implements IActTaskService { @Override @Transactional(rollbackFor = Exception.class) public String backProcess(BackProcessBo backProcessBo) { - TaskQuery query = QueryUtils.taskQuery(); String userId = String.valueOf(LoginHelper.getUserId()); - Task task = query.taskId(backProcessBo.getTaskId()).taskCandidateOrAssigned(userId).singleResult(); + Task task = WorkflowUtils.getTaskByCurrUser(backProcessBo.getTaskId()); + if (ObjectUtil.isEmpty(task)) { throw new ServiceException(FlowConstant.MESSAGE_CURRENT_TASK_IS_NULL); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java index f475f1978..a620289e9 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.SpringUtils; @@ -14,6 +15,7 @@ import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.reflect.ReflectUtils; import org.dromara.common.mail.utils.MailUtils; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.utils.WebSocketUtils; @@ -38,6 +40,7 @@ import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; import org.flowable.identitylink.api.history.HistoricIdentityLink; import org.flowable.task.api.Task; +import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.service.impl.persistence.entity.TaskEntity; @@ -340,4 +343,23 @@ public class WorkflowUtils { } } } + + /** + * 根据任务id查询 当前用户的任务,检查 当前人员 是否是该 taskId 的办理人 + * @param taskId 任务id + * @return + */ + public static Task getTaskByCurrUser(String taskId){ + TaskQuery taskQuery = QueryUtils.taskQuery(); + taskQuery.taskId(taskId).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())); + + List roles = LoginHelper.getLoginUser().getRoles(); + if (CollUtil.isNotEmpty(roles)) { + List groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); + taskQuery.taskCandidateGroupIn(groupIds); + } + Task task = taskQuery.singleResult(); + + return task; + } } From ea23e604f9017d22d383f88944e3f00760a5fc04 Mon Sep 17 00:00:00 2001 From: zhuweitung Date: Fri, 24 May 2024 09:12:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=98=B5=E7=A7=B0=E4=BF=AE=E6=94=B9=E5=90=8E=E6=9C=AA=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E5=AF=B9=E5=BA=94=E7=BC=93=E5=AD=98=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/system/service/impl/SysUserServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 9c8988894..d8f481dbf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -37,6 +37,7 @@ import org.dromara.system.domain.vo.SysUserExportVo; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.*; import org.dromara.system.service.ISysUserService; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -338,6 +339,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { * @return 结果 */ @Override + @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId") @Transactional(rollbackFor = Exception.class) public int updateUser(SysUserBo user) { // 新增用户与角色管理 @@ -386,6 +388,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { * @param user 用户信息 * @return 结果 */ + @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId") @Override public int updateUserProfile(SysUserBo user) { return baseMapper.update(null, From ba1a540add437649bae209ba8a8b44f2e2d95451 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Fri, 24 May 2024 05:30:51 +0000 Subject: [PATCH 3/4] =?UTF-8?q?!542=20=E6=9B=B4=E6=96=B0SnailJob=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=88=B01.0.0-beta2=20*=20feat:=20=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B9=E5=8F=98=E6=9B=B4=EF=BC=8C=E9=81=BF=E5=85=8D=E8=AF=AF?= =?UTF-8?q?=E8=A7=A3snail-job.group-name=20=3D>=20snail-job.group=20*=20ch?= =?UTF-8?q?ore:=20=E6=9B=B4=E6=96=B0snail-job=E7=89=88=E6=9C=AC=E5=88=B01.?= =?UTF-8?q?0.0-beta2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- ruoyi-admin/src/main/resources/application-dev.yml | 4 ++-- ruoyi-admin/src/main/resources/application-prod.yml | 3 ++- .../java/org/dromara/common/job/config/SnailJobConfig.java | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 4d04d3963..b57f2365f 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.2.7 4.3.0 2.14.4 - 1.0.0-beta1 + 1.0.0-beta2 1.3.6 0.2.0 1.18.32 diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 529a106bd..398af9c91 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ spring.boot.admin.client: snail-job: enabled: true # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group-name: "ruoyi_group" + group: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -21,7 +21,6 @@ snail-job: # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} - --- # 数据源配置 spring: datasource: @@ -102,6 +101,7 @@ spring.data: # 是否开启ssl ssl.enabled: false +--- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 0613bd7df..4dabb6823 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -15,7 +15,7 @@ spring.boot.admin.client: snail-job: enabled: false # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group-name: "ruoyi_group" + group: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -104,6 +104,7 @@ spring.data: # 是否开启ssl ssl.enabled: false +--- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java index d671f0ed8..e48fe7fb4 100644 --- a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java +++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java @@ -21,7 +21,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; @AutoConfiguration @ConditionalOnProperty(prefix = "snail-job", name = "enabled", havingValue = "true") @EnableScheduling -@EnableSnailJob(group = "${snail-job.group-name}") +@EnableSnailJob(group = "${snail-job.group}") public class SnailJobConfig { @EventListener(SnailClientStartingEvent.class) From 2154033879f7bbfcde9bcebe508a369ef951a1ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sat, 25 May 2024 02:05:34 +0000 Subject: [PATCH 4/4] =?UTF-8?q?=E5=9B=9E=E9=80=80=20'Pull=20Request=20!542?= =?UTF-8?q?=20:=20=E6=9B=B4=E6=96=B0SnailJob=E7=89=88=E6=9C=AC=E5=88=B01.0?= =?UTF-8?q?.0-beta2'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- ruoyi-admin/src/main/resources/application-dev.yml | 4 ++-- ruoyi-admin/src/main/resources/application-prod.yml | 3 +-- .../java/org/dromara/common/job/config/SnailJobConfig.java | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b57f2365f..4d04d3963 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.2.7 4.3.0 2.14.4 - 1.0.0-beta2 + 1.0.0-beta1 1.3.6 0.2.0 1.18.32 diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 398af9c91..529a106bd 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ spring.boot.admin.client: snail-job: enabled: true # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group: "ruoyi_group" + group-name: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -21,6 +21,7 @@ snail-job: # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} + --- # 数据源配置 spring: datasource: @@ -101,7 +102,6 @@ spring.data: # 是否开启ssl ssl.enabled: false ---- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 4dabb6823..0613bd7df 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -15,7 +15,7 @@ spring.boot.admin.client: snail-job: enabled: false # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 - group: "ruoyi_group" + group-name: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/snail_job.sql `sj_group_config` 表 token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: @@ -104,7 +104,6 @@ spring.data: # 是否开启ssl ssl.enabled: false ---- # redisson 配置 redisson: # redis key前缀 keyPrefix: diff --git a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java index e48fe7fb4..d671f0ed8 100644 --- a/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java +++ b/ruoyi-common/ruoyi-common-job/src/main/java/org/dromara/common/job/config/SnailJobConfig.java @@ -21,7 +21,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; @AutoConfiguration @ConditionalOnProperty(prefix = "snail-job", name = "enabled", havingValue = "true") @EnableScheduling -@EnableSnailJob(group = "${snail-job.group}") +@EnableSnailJob(group = "${snail-job.group-name}") public class SnailJobConfig { @EventListener(SnailClientStartingEvent.class)