From a474e9e5d1cf47d6128115b4bdac10e99601f124 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Fri, 7 Jun 2024 21:27:05 +0800 Subject: [PATCH 01/22] =?UTF-8?q?add=20=E8=A1=A5=E5=85=85=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E6=B5=81=E7=A8=8Bkey=E7=9B=91=E5=90=AC=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TestLeaveServiceImpl.java | 95 +++++++++++++++++-- 1 file changed, 87 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index b938a989a..c59b7ad41 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -114,13 +114,27 @@ public Boolean deleteWithValidByIds(Collection ids) { return baseMapper.deleteBatchIds(ids) > 0; } + /** + * 执行办理任务监听 + * + * @param processTaskEvent 参数 + */ + @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'") + public void leave1Task(ProcessTaskEvent processTaskEvent) { + log.info("当前任务执行了{}", processTaskEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey())); + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + baseMapper.updateById(testLeave); + } + + /** * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) * * @param processEvent 参数 */ @EventListener(condition = "#processEvent.key=='leave1'") - public void processHandler(ProcessEvent processEvent) { + public void leave1(ProcessEvent processEvent) { log.info("当前任务执行了{}", processEvent.toString()); TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); testLeave.setStatus(processEvent.getStatus()); @@ -131,17 +145,82 @@ public void processHandler(ProcessEvent processEvent) { } /** - * 执行办理任务监听 + * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) * - * @param processTaskEvent 参数 + * @param processEvent 参数 */ - @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'") - public void processTaskHandler(ProcessTaskEvent processTaskEvent) { - log.info("当前任务执行了{}", processTaskEvent.toString()); - TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey())); - testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + @EventListener(condition = "#processEvent.key=='leave2'") + public void leave2(ProcessEvent processEvent) { + log.info("当前任务执行了{}", processEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); + testLeave.setStatus(processEvent.getStatus()); + if (processEvent.isSubmit()) { + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + } baseMapper.updateById(testLeave); } + /** + * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.key=='leave3'") + public void leave3(ProcessEvent processEvent) { + log.info("当前任务执行了{}", processEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); + testLeave.setStatus(processEvent.getStatus()); + if (processEvent.isSubmit()) { + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + } + baseMapper.updateById(testLeave); + } + /** + * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.key=='leave4'") + public void leave4(ProcessEvent processEvent) { + log.info("当前任务执行了{}", processEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); + testLeave.setStatus(processEvent.getStatus()); + if (processEvent.isSubmit()) { + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + } + baseMapper.updateById(testLeave); + } + + /** + * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.key=='leave5'") + public void leave5(ProcessEvent processEvent) { + log.info("当前任务执行了{}", processEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); + testLeave.setStatus(processEvent.getStatus()); + if (processEvent.isSubmit()) { + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + } + baseMapper.updateById(testLeave); + } + + /** + * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.key=='leave6'") + public void leave6(ProcessEvent processEvent) { + log.info("当前任务执行了{}", processEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); + testLeave.setStatus(processEvent.getStatus()); + if (processEvent.isSubmit()) { + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + } + baseMapper.updateById(testLeave); + } } From 65421639f1faff704e42f6c481b89c0cd7c3d81a Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Fri, 7 Jun 2024 21:42:24 +0800 Subject: [PATCH 02/22] =?UTF-8?q?remove=20=E5=88=A0=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/workflow/service/ITestLeaveService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java index 5c95547a5..943c919ae 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java @@ -2,7 +2,6 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.workflow.domain.TestLeave; import org.dromara.workflow.domain.bo.TestLeaveBo; import org.dromara.workflow.domain.vo.TestLeaveVo; From 5d18d02a9c87745d2cf7d8d3728947c5fa098d85 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Fri, 7 Jun 2024 22:19:09 +0800 Subject: [PATCH 03/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TestLeaveServiceImpl.java | 101 ++---------------- 1 file changed, 11 insertions(+), 90 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index c59b7ad41..e437a569e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -114,43 +114,15 @@ public Boolean deleteWithValidByIds(Collection ids) { return baseMapper.deleteBatchIds(ids) > 0; } - /** - * 执行办理任务监听 - * - * @param processTaskEvent 参数 - */ - @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'") - public void leave1Task(ProcessTaskEvent processTaskEvent) { - log.info("当前任务执行了{}", processTaskEvent.toString()); - TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey())); - testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); - baseMapper.updateById(testLeave); - } - - - /** - * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) - * - * @param processEvent 参数 - */ - @EventListener(condition = "#processEvent.key=='leave1'") - public void leave1(ProcessEvent processEvent) { - log.info("当前任务执行了{}", processEvent.toString()); - TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); - testLeave.setStatus(processEvent.getStatus()); - if (processEvent.isSubmit()) { - testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); - } - baseMapper.updateById(testLeave); - } - /** * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) + * 正常使用只需#processEvent.key=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key * * @param processEvent 参数 */ - @EventListener(condition = "#processEvent.key=='leave2'") - public void leave2(ProcessEvent processEvent) { + @EventListener(condition = "#processEvent.key.startsWith('leave')") + public void processHandler(ProcessEvent processEvent) { log.info("当前任务执行了{}", processEvent.toString()); TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); testLeave.setStatus(processEvent.getStatus()); @@ -161,66 +133,15 @@ public void leave2(ProcessEvent processEvent) { } /** - * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) - * - * @param processEvent 参数 - */ - @EventListener(condition = "#processEvent.key=='leave3'") - public void leave3(ProcessEvent processEvent) { - log.info("当前任务执行了{}", processEvent.toString()); - TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); - testLeave.setStatus(processEvent.getStatus()); - if (processEvent.isSubmit()) { - testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); - } - baseMapper.updateById(testLeave); - } - - /** - * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) - * - * @param processEvent 参数 - */ - @EventListener(condition = "#processEvent.key=='leave4'") - public void leave4(ProcessEvent processEvent) { - log.info("当前任务执行了{}", processEvent.toString()); - TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); - testLeave.setStatus(processEvent.getStatus()); - if (processEvent.isSubmit()) { - testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); - } - baseMapper.updateById(testLeave); - } - - /** - * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) - * - * @param processEvent 参数 - */ - @EventListener(condition = "#processEvent.key=='leave5'") - public void leave5(ProcessEvent processEvent) { - log.info("当前任务执行了{}", processEvent.toString()); - TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); - testLeave.setStatus(processEvent.getStatus()); - if (processEvent.isSubmit()) { - testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); - } - baseMapper.updateById(testLeave); - } - - /** - * 总体流程监听(例如: 提交 退回 撤销 终止 作废等) + * 执行办理任务监听 * - * @param processEvent 参数 + * @param processTaskEvent 参数 */ - @EventListener(condition = "#processEvent.key=='leave6'") - public void leave6(ProcessEvent processEvent) { - log.info("当前任务执行了{}", processEvent.toString()); - TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); - testLeave.setStatus(processEvent.getStatus()); - if (processEvent.isSubmit()) { - testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); - } + @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'") + public void processTaskHandler(ProcessTaskEvent processTaskEvent) { + log.info("当前任务执行了{}", processTaskEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey())); + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); baseMapper.updateById(testLeave); } } From 810691b5df3d21ab1391ca57d317a2728db175ee Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sat, 8 Jun 2024 09:22:20 +0800 Subject: [PATCH 04/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=8A=9E=E7=90=86=E7=9B=91=E5=90=AC=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=A4=BA=E4=BE=8B=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/event/ProcessTaskEvent.java | 9 +++++++-- .../flowable/handler/FlowProcessEventHandler.java | 12 +++++++----- .../workflow/service/impl/ActTaskServiceImpl.java | 4 ++-- .../workflow/service/impl/TestLeaveServiceImpl.java | 7 ++++++- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java index 09c84bd91..019ca823b 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java @@ -18,9 +18,14 @@ public class ProcessTaskEvent implements Serializable { private static final long serialVersionUID = 1L; /** - * 流程定义key与流程节点标识(拼接方式:流程定义key_流程节点) + * 流程定义key */ - private String keyNode; + private String key; + + /** + * 审批节点key + */ + private String taskDefinitionKey; /** * 任务id diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java index 17dba8c7a..69ae70a07 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/handler/FlowProcessEventHandler.java @@ -34,13 +34,15 @@ public void processHandler(String key, String businessKey, String status, boolea /** * 执行办理任务监听 * - * @param keyNode 流程定义key与流程节点标识(拼接方式:流程定义key_流程节点) - * @param taskId 任务id - * @param businessKey 业务id + * @param key 流程key + * @param taskDefinitionKey 审批节点key + * @param taskId 任务id + * @param businessKey 业务id */ - public void processTaskHandler(String keyNode, String taskId, String businessKey) { + public void processTaskHandler(String key, String taskDefinitionKey, String taskId, String businessKey) { ProcessTaskEvent processTaskEvent = new ProcessTaskEvent(); - processTaskEvent.setKeyNode(keyNode); + processTaskEvent.setKey(key); + processTaskEvent.setTaskDefinitionKey(taskDefinitionKey); processTaskEvent.setTaskId(taskId); processTaskEvent.setBusinessKey(businessKey); SpringUtils.context().publishEvent(processTaskEvent); 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 523a77c49..32be130ec 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 @@ -184,8 +184,8 @@ public boolean completeTask(CompleteTaskBo completeTaskBo) { } runtimeService.updateBusinessStatus(task.getProcessInstanceId(), BusinessStatusEnum.WAITING.getStatus()); //办理监听 - String keyNode = processInstance.getProcessDefinitionKey() + "_" + task.getTaskDefinitionKey(); - flowProcessEventHandler.processTaskHandler(keyNode, task.getId(), processInstance.getBusinessKey()); + flowProcessEventHandler.processTaskHandler(processInstance.getProcessDefinitionKey(), task.getTaskDefinitionKey(), + task.getId(), processInstance.getBusinessKey()); //办理意见 taskService.addComment(completeTaskBo.getTaskId(), task.getProcessInstanceId(), TaskStatusEnum.PASS.getStatus(), StringUtils.isBlank(completeTaskBo.getMessage()) ? "同意" : completeTaskBo.getMessage()); //办理任务 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index e437a569e..13a1bb204 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -134,10 +134,15 @@ public void processHandler(ProcessEvent processEvent) { /** * 执行办理任务监听 + * 示例:也可通过 @EventListener(condition = "#processTaskEvent.key=='leave1'")进行判断 + * 在方法中判断流程节点key + * if ("xxx".equals(processTaskEvent.getTaskDefinitionKey())) { + * //执行业务逻辑 + * } * * @param processTaskEvent 参数 */ - @EventListener(condition = "#processTaskEvent.keyNode=='leave1_Activity_14633hx'") + @EventListener(condition = "#processTaskEvent.key=='leave1' && #processTaskEvent.taskDefinitionKey=='Activity_14633hx'") public void processTaskHandler(ProcessTaskEvent processTaskEvent) { log.info("当前任务执行了{}", processTaskEvent.toString()); TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey())); From 26445851cc71e27551ba44e3e6d736b17ccdf9ee Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 13 Jun 2024 16:14:28 +0800 Subject: [PATCH 05/22] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8Dtoken=E6=97=A0?= =?UTF-8?q?=E6=95=88=E6=97=B6=E5=85=B3=E9=97=ADws?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../websocket/handler/PlusWebSocketHandler.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index 759aecea0..d5da7bf9f 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -1,5 +1,6 @@ package org.dromara.common.websocket.handler; +import cn.hutool.core.util.ObjectUtil; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.websocket.dto.WebSocketMessageDto; @@ -8,6 +9,7 @@ import org.springframework.web.socket.*; import org.springframework.web.socket.handler.AbstractWebSocketHandler; +import java.io.IOException; import java.util.List; import static org.dromara.common.websocket.constant.WebSocketConstants.LOGIN_USER_KEY; @@ -24,8 +26,13 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { * 连接成功后 */ @Override - public void afterConnectionEstablished(WebSocketSession session) { + public void afterConnectionEstablished(WebSocketSession session) throws IOException { LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); + if (ObjectUtil.isNull(loginUser)) { + session.close(CloseStatus.BAD_DATA); + log.info("[disconnect] invalid token received. sessionId: {}", session.getId()); + return; + } WebSocketSessionHolder.addSession(loginUser.getUserId(), session); log.info("[connect] sessionId: {},userId:{},userType:{}", session.getId(), loginUser.getUserId(), loginUser.getUserType()); } @@ -94,6 +101,10 @@ public void handleTransportError(WebSocketSession session, Throwable exception) @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) { LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); + if (ObjectUtil.isNull(loginUser)) { + log.info("[disconnect] invalid token received. sessionId: {}", session.getId()); + return; + } WebSocketSessionHolder.removeSession(loginUser.getUserId()); log.info("[disconnect] sessionId: {},userId:{},userType:{}", session.getId(), loginUser.getUserId(), loginUser.getUserType()); } From 0cb0a355bbfa117a1b0017d3e13716e5c5093898 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 13 Jun 2024 16:42:28 +0800 Subject: [PATCH 06/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96ws=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/websocket/handler/PlusWebSocketHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java index d5da7bf9f..8b1cc5dab 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/handler/PlusWebSocketHandler.java @@ -30,7 +30,7 @@ public void afterConnectionEstablished(WebSocketSession session) throws IOExcept LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); if (ObjectUtil.isNull(loginUser)) { session.close(CloseStatus.BAD_DATA); - log.info("[disconnect] invalid token received. sessionId: {}", session.getId()); + log.info("[connect] invalid token received. sessionId: {}", session.getId()); return; } WebSocketSessionHolder.addSession(loginUser.getUserId(), session); From 5e09884e99be53a928d09490f729a8ec4b6c95b0 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, 15 Jun 2024 15:29:29 +0800 Subject: [PATCH 07/22] update mybatis-plus 3.5.6 => 3.5.7 update redisson 3.29.0 => 3.31.0 update dynamic-ds 4.3.0 => 4.3.1 --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 7d89d8a85..c2763e5c4 100644 --- a/pom.xml +++ b/pom.xml @@ -25,14 +25,14 @@ 3.3.4 2.3 1.38.0 - 3.5.6 + 3.5.7 3.9.1 5.8.27 4.10.0 3.2.3 - 3.29.0 + 3.31.0 2.2.7 - 4.3.0 + 4.3.1 2.14.4 1.0.0-beta3 1.3.6 From 8985f1dba67e5becaf1cc2bd8dc56d2229117310 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, 15 Jun 2024 16:27:01 +0800 Subject: [PATCH 08/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=B9=A6?= =?UTF-8?q?=E5=86=99=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/dromara/common/log/aspect/LogAspect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java index 87240729c..cdbd00f09 100644 --- a/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java +++ b/ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java @@ -56,7 +56,7 @@ public class LogAspect { * 处理请求前执行 */ @Before(value = "@annotation(controllerLog)") - public void boBefore(JoinPoint joinPoint, Log controllerLog) { + public void doBefore(JoinPoint joinPoint, Log controllerLog) { StopWatch stopWatch = new StopWatch(); KEY_CACHE.set(stopWatch); stopWatch.start(); From e5ee98a6aa39cdce0b916507414c9d8d74cad099 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, 15 Jun 2024 16:45:28 +0800 Subject: [PATCH 09/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E8=8E=B7?= =?UTF-8?q?=E5=8F=96aop=E4=BB=A3=E7=90=86=E7=9A=84=E6=96=B9=E5=BC=8F=20?= =?UTF-8?q?=E5=87=8F=E5=B0=91=E4=B8=8E=E5=85=B6=E4=BB=96=E4=BD=BF=E7=94=A8?= =?UTF-8?q?aop=E7=9A=84=E5=8A=9F=E8=83=BD=E5=86=B2=E7=AA=81=E7=9A=84?= =?UTF-8?q?=E6=A6=82=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/core/config/ApplicationConfig.java | 3 +-- .../main/java/org/dromara/common/core/utils/SpringUtils.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ApplicationConfig.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ApplicationConfig.java index d12008706..d9f70e426 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ApplicationConfig.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/ApplicationConfig.java @@ -10,8 +10,7 @@ * @author Lion Li */ @AutoConfiguration -// 表示通过aop框架暴露该代理对象,AopContext能够访问 -@EnableAspectJAutoProxy(exposeProxy = true) +@EnableAspectJAutoProxy @EnableAsync(proxyTargetClass = true) public class ApplicationConfig { diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/SpringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/SpringUtils.java index e58c394ac..169c6e217 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/SpringUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/SpringUtils.java @@ -1,7 +1,6 @@ package org.dromara.common.core.utils; import cn.hutool.extra.spring.SpringUtil; -import org.springframework.aop.framework.AopContext; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.boot.autoconfigure.thread.Threading; import org.springframework.context.ApplicationContext; @@ -50,7 +49,7 @@ public static String[] getAliases(String name) throws NoSuchBeanDefinitionExcept */ @SuppressWarnings("unchecked") public static T getAopProxy(T invoker) { - return (T) AopContext.currentProxy(); + return (T) getBean(invoker.getClass()); } From 20a339612877e579749c89b9b5f88eec15707c3f 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: Mon, 17 Jun 2024 10:43:28 +0800 Subject: [PATCH 10/22] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20websocket=20cl?= =?UTF-8?q?ientid=20=E5=8F=82=E6=95=B0=E4=B8=8D=E8=B5=B0mvc=E6=8B=A6?= =?UTF-8?q?=E6=88=AA=E5=99=A8=20=E6=97=A0=E6=B3=95=E7=94=9F=E6=95=88?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/PlusWebSocketInterceptor.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java index 0abbbd3c9..1ad8ad665 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/interceptor/PlusWebSocketInterceptor.java @@ -1,7 +1,11 @@ package org.dromara.common.websocket.interceptor; +import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.stp.StpUtil; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.core.utils.ServletUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; @@ -31,7 +35,21 @@ public class PlusWebSocketInterceptor implements HandshakeInterceptor { */ @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) { + // 检查是否登录 是否有token LoginUser loginUser = LoginHelper.getLoginUser(); + + // 解决 ws 不走 mvc 拦截器问题(cloud 版本不受影响) + // 检查 header 与 param 里的 clientid 与 token 里的是否一致 + String headerCid = ServletUtils.getRequest().getHeader(LoginHelper.CLIENT_KEY); + String paramCid = ServletUtils.getParameter(LoginHelper.CLIENT_KEY); + String clientId = StpUtil.getExtra(LoginHelper.CLIENT_KEY).toString(); + if (!StringUtils.equalsAny(clientId, headerCid, paramCid)) { + // token 无效 + throw NotLoginException.newInstance(StpUtil.getLoginType(), + "-100", "客户端ID与Token不匹配", + StpUtil.getTokenValue()); + } + attributes.put(LOGIN_USER_KEY, loginUser); return true; } From 618688161567a5e92263874076c50d3d5eff48fc 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: Mon, 17 Jun 2024 11:12:52 +0800 Subject: [PATCH 11/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=89=B9?= =?UTF-8?q?=E6=AE=8Aservice=E4=BC=A0=E5=80=BC=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/flowable/cmd/AttachmentCmd.java | 8 +++++--- .../service/impl/ActProcessInstanceServiceImpl.java | 10 ++++++---- .../workflow/service/impl/ActTaskServiceImpl.java | 12 +++++++----- .../org/dromara/workflow/utils/WorkflowUtils.java | 8 +++----- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java index dd9849afc..20a0a5f3a 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/flowable/cmd/AttachmentCmd.java @@ -3,7 +3,6 @@ import cn.hutool.core.collection.CollUtil; import org.dromara.common.core.domain.dto.OssDTO; import org.dromara.common.core.service.OssService; -import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.flowable.common.engine.impl.interceptor.Command; @@ -28,17 +27,20 @@ public class AttachmentCmd implements Command { private final String processInstanceId; - public AttachmentCmd(String fileId, String taskId, String processInstanceId) { + private final OssService ossService; + + public AttachmentCmd(String fileId, String taskId, String processInstanceId, OssService ossService) { this.fileId = fileId; this.taskId = taskId; this.processInstanceId = processInstanceId; + this.ossService = ossService; } @Override public Boolean execute(CommandContext commandContext) { try { if (StringUtils.isNotBlank(fileId)) { - List ossList = SpringUtils.getBean(OssService.class).selectByIds(fileId); + List ossList = ossService.selectByIds(fileId); if (CollUtil.isNotEmpty(ossList)) { for (OssDTO oss : ossList) { AttachmentEntityManager attachmentEntityManager = CommandContextUtil.getAttachmentEntityManager(); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index dafd05994..33227c2ef 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -10,6 +10,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; @@ -77,6 +78,7 @@ public class ActProcessInstanceServiceImpl implements IActProcessInstanceService private final IWfTaskBackNodeService wfTaskBackNodeService; private final IWfNodeConfigService wfNodeConfigService; private final FlowProcessEventHandler flowProcessEventHandler; + private final UserService userService; @Value("${flowable.activity-font-name}") private String activityFontName; @@ -323,7 +325,7 @@ private List getHistoryTaskList(String processInstanceId, Inte historyInfoVo.setEndTime(infoVo.getEndTime() == null ? null : infoVo.getEndTime()); historyInfoVo.setRunDuration(infoVo.getEndTime() == null ? null : infoVo.getRunDuration()); if (ObjectUtil.isEmpty(infoVo.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(infoVo.getId()); + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(infoVo.getId(), userService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -338,7 +340,7 @@ private List getHistoryTaskList(String processInstanceId, Inte historyInfoVo.setEndTime(e.getEndTime() == null ? null : e.getEndTime()); historyInfoVo.setRunDuration(e.getEndTime() == null ? null : e.getRunDuration()); if (ObjectUtil.isEmpty(e.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId()); + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(e.getId(), userService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { historyInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -394,7 +396,7 @@ public List getHistoryRecord(String businessKey) { } //设置人员id if (ObjectUtil.isEmpty(historicTaskInstance.getAssignee())) { - ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(historicTaskInstance.getId()); + ParticipantVo participantVo = WorkflowUtils.getCurrentTaskParticipant(historicTaskInstance.getId(), userService); if (ObjectUtil.isNotEmpty(participantVo) && CollUtil.isNotEmpty(participantVo.getCandidate())) { actHistoryInfoVo.setAssignee(StreamUtils.join(participantVo.getCandidate(), Convert::toStr)); } @@ -675,7 +677,7 @@ public boolean taskUrging(TaskUrgingBo taskUrgingBo) { message = "您的【" + processInstance.getName() + "】单据还未审批,请您及时处理。"; } List list = QueryUtils.taskQuery(taskUrgingBo.getProcessInstanceId()).list(); - WorkflowUtils.sendMessage(list, processInstance.getName(), taskUrgingBo.getMessageType(), message); + WorkflowUtils.sendMessage(list, processInstance.getName(), taskUrgingBo.getMessageType(), message, userService); } catch (ServiceException e) { throw new ServiceException(e.getMessage()); } 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 32be130ec..5cb288d00 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 @@ -10,6 +10,7 @@ import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.OssService; import org.dromara.common.core.service.UserService; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; @@ -78,8 +79,9 @@ public class ActTaskServiceImpl implements IActTaskService { private final ActHiTaskinstMapper actHiTaskinstMapper; private final IWfNodeConfigService wfNodeConfigService; private final IWfDefinitionConfigService wfDefinitionConfigService; - private final UserService userService; private final FlowProcessEventHandler flowProcessEventHandler; + private final UserService userService; + private final OssService ossService; /** * 启动任务 @@ -175,7 +177,7 @@ public boolean completeTask(CompleteTaskBo completeTaskBo) { return true; } //附件上传 - AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId()); + AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId(), ossService); managementService.executeCommand(attachmentCmd); String businessStatus = WorkflowUtils.getBusinessStatus(processInstance.getBusinessKey()); //流程提交监听 @@ -239,7 +241,7 @@ public boolean completeTask(CompleteTaskBo completeTaskBo) { */ @Async public void sendMessage(List list, String name, List messageType, String message) { - WorkflowUtils.sendMessage(list, name, messageType, message); + WorkflowUtils.sendMessage(list, name, messageType, message, userService); } /** @@ -273,7 +275,7 @@ public TableDataInfo getPageByTaskWait(TaskBo taskBo, PageQuery pageQuer List wfNodeConfigVoList = wfNodeConfigService.selectByDefIds(processDefinitionIds); for (TaskVo task : taskList) { task.setBusinessStatusName(BusinessStatusEnum.findByStatus(task.getBusinessStatus())); - task.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId())); + task.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId(), userService)); task.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(task::setWfNodeConfigVo); @@ -338,7 +340,7 @@ public TableDataInfo getPageByAllTaskWait(TaskBo taskBo, PageQuery pageQ }); } taskVo.setAssignee(StringUtils.isNotBlank(task.getAssignee()) ? Long.valueOf(task.getAssignee()) : null); - taskVo.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId())); + taskVo.setParticipantVo(WorkflowUtils.getCurrentTaskParticipant(task.getId(), userService)); taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(task.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(taskVo::setWfNodeConfigVo); 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 385bd23a2..d7c44723b 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 @@ -125,8 +125,7 @@ public static void createCopyTask(List parentTaskList, List userIds) * * @param taskId 任务id */ - public static ParticipantVo getCurrentTaskParticipant(String taskId) { - UserService userService = SpringUtils.getBean(UserService.class); + public static ParticipantVo getCurrentTaskParticipant(String taskId, UserService userService) { ParticipantVo participantVo = new ParticipantVo(); List linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId); Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); @@ -234,14 +233,13 @@ public static String getBusinessStatus(String businessKey) { * @param messageType 消息类型 * @param message 消息内容,为空则发送默认配置的消息内容 */ - public static void sendMessage(List list, String name, List messageType, String message) { - UserService userService = SpringUtils.getBean(UserService.class); + public static void sendMessage(List list, String name, List messageType, String message, UserService userService) { Set userIds = new HashSet<>(); if (StringUtils.isBlank(message)) { message = "有新的【" + name + "】单据已经提交至您的待办,请您及时处理。"; } for (Task t : list) { - ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId()); + ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId(), userService); if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { List userIdList = userService.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); if (CollUtil.isNotEmpty(userIdList)) { From 33880f3e866c26589f407bc575b57673a106732c 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: Mon, 17 Jun 2024 14:13:34 +0800 Subject: [PATCH 12/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20snailjob=20?= =?UTF-8?q?=E4=B8=8E=20=E5=85=B6=E4=BB=96=E5=BA=94=E7=94=A8=E7=AB=AF?= =?UTF-8?q?=E5=8F=A3=E5=86=B2=E7=AA=81=E9=97=AE=E9=A2=98=20=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=B8=BB=E5=BA=94=E7=94=A8=E6=BC=82=E7=A7=BB=E7=AB=AF?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/src/main/resources/application-dev.yml | 3 ++- ruoyi-admin/src/main/resources/application-prod.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 5b5597369..544853a8a 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -17,7 +17,8 @@ snail-job: token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: host: 127.0.0.1 - port: 1788 + # 28080 端口 随着主应用端口漂移 避免集群冲突 + port: 2${server.port} # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index d21644d42..5b85fd701 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -20,7 +20,8 @@ snail-job: token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: host: 127.0.0.1 - port: 1788 + # 28080 端口 随着主应用端口漂移 避免集群冲突 + port: 2${server.port} # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} From d61459e912e2bb3575554e749c7aa5dbb12e10a6 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Mon, 17 Jun 2024 16:08:41 +0800 Subject: [PATCH 13/22] =?UTF-8?q?chore:=20=E5=8D=87=E7=BA=A7SnailJob?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B01.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c2763e5c4..c4b0b6fcc 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 2.2.7 4.3.1 2.14.4 - 1.0.0-beta3 + 1.0.1 1.3.6 0.2.0 1.18.32 From 086b20613900091ad1a5a78cd68698470364ac4c 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: Mon, 17 Jun 2024 18:30:06 +0800 Subject: [PATCH 14/22] =?UTF-8?q?update=20=E5=88=A0=E9=99=A4=20=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E6=B3=95=20mp=20=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E8=87=AA=E5=B8=A6=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/mybatis/core/mapper/BaseMapperPlus.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java index 08723f608..5f0829eba 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java @@ -88,13 +88,6 @@ default boolean insertOrUpdateBatch(Collection entityList, int batchSize) { return Db.saveOrUpdateBatch(entityList, batchSize); } - /** - * 插入或更新(包含限制条数) - */ - default boolean insertOrUpdate(T entity) { - return Db.saveOrUpdate(entity); - } - default V selectVoById(Serializable id) { return selectVoById(id, this.currentVoClass()); } From cbd59f84fd7d688569cade242e4e9d6d0f381f15 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: Tue, 18 Jun 2024 18:44:04 +0800 Subject: [PATCH 15/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E7=99=BB=E5=BD=95=E4=B8=8D=E5=90=8C=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0=E7=A7=9F=E6=88=B7id?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/web/controller/AuthController.java | 16 +++++++++++++--- .../java/org/dromara/web/domain/vo/LoginVo.java | 5 +++++ .../org/dromara/web/service/SysLoginService.java | 11 ++++++----- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index 43e689be3..8b83e29b0 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -91,7 +91,7 @@ public R login(@RequestBody String body) { return R.fail(MessageUtils.message("auth.grant.type.blocked")); } // 校验租户 - loginService.checkTenant(loginBody.getTenantId()); + SysTenantVo tenant = loginService.checkTenant(loginBody.getTenantId()); // 登录 LoginVo loginVo = IAuthStrategy.login(body, client, grantType); @@ -102,6 +102,10 @@ public R login(@RequestBody String body) { dto.setSessionKeys(List.of(userId)); WebSocketUtils.publishMessage(dto); }, 3, TimeUnit.SECONDS); + + if (StringUtils.isNotBlank(tenant.getTenantId())) { + loginVo.setDomain(tenant.getDomain()); + } return R.ok(loginVo); } @@ -129,7 +133,7 @@ public R authBinding(@PathVariable("source") String source) { * @return 结果 */ @PostMapping("/social/callback") - public R socialCallback(@RequestBody SocialLoginBody loginBody) { + public R socialCallback(@RequestBody SocialLoginBody loginBody) { // 获取第三方登录信息 AuthResponse response = SocialUtils.loginAuth( loginBody.getSource(), loginBody.getSocialCode(), @@ -140,7 +144,13 @@ public R socialCallback(@RequestBody SocialLoginBody loginBody) { return R.fail(response.getMsg()); } loginService.socialRegister(authUserData); - return R.ok(); + + LoginVo loginVo = new LoginVo(); + SysTenantVo tenant = tenantService.queryByTenantId(LoginHelper.getTenantId()); + if (StringUtils.isNotBlank(tenant.getTenantId())) { + loginVo.setDomain(tenant.getDomain()); + } + return R.ok(loginVo); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginVo.java index 834afe5a1..149bee402 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginVo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginVo.java @@ -51,4 +51,9 @@ public class LoginVo { */ private String openid; + /** + * 域名 + */ + private String domain; + } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index af6e7f557..d34022950 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -221,17 +221,17 @@ public void checkLogin(LoginType loginType, String tenantId, String username, Su * * @param tenantId 租户ID */ - public void checkTenant(String tenantId) { + public SysTenantVo checkTenant(String tenantId) { if (!TenantHelper.isEnable()) { - return; - } - if (TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) { - return; + return null; } if (StringUtils.isBlank(tenantId)) { throw new TenantException("tenant.number.not.blank"); } SysTenantVo tenant = tenantService.queryByTenantId(tenantId); + if (TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) { + return tenant; + } if (ObjectUtil.isNull(tenant)) { log.info("登录租户:{} 不存在.", tenantId); throw new TenantException("tenant.not.exists"); @@ -243,6 +243,7 @@ && new Date().after(tenant.getExpireTime())) { log.info("登录租户:{} 已超过有效期.", tenantId); throw new TenantException("tenant.expired"); } + return tenant; } } From 045e09f029a9d12685d57f4df97df8e1b9bdb1f0 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: Wed, 19 Jun 2024 10:12:08 +0800 Subject: [PATCH 16/22] =?UTF-8?q?reset=20=E5=9B=9E=E6=BB=9A=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E6=8E=88=E6=9D=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/web/controller/AuthController.java | 16 +++------------- .../java/org/dromara/web/domain/vo/LoginVo.java | 5 ----- .../org/dromara/web/service/SysLoginService.java | 11 +++++------ 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index 8b83e29b0..43e689be3 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -91,7 +91,7 @@ public R login(@RequestBody String body) { return R.fail(MessageUtils.message("auth.grant.type.blocked")); } // 校验租户 - SysTenantVo tenant = loginService.checkTenant(loginBody.getTenantId()); + loginService.checkTenant(loginBody.getTenantId()); // 登录 LoginVo loginVo = IAuthStrategy.login(body, client, grantType); @@ -102,10 +102,6 @@ public R login(@RequestBody String body) { dto.setSessionKeys(List.of(userId)); WebSocketUtils.publishMessage(dto); }, 3, TimeUnit.SECONDS); - - if (StringUtils.isNotBlank(tenant.getTenantId())) { - loginVo.setDomain(tenant.getDomain()); - } return R.ok(loginVo); } @@ -133,7 +129,7 @@ public R authBinding(@PathVariable("source") String source) { * @return 结果 */ @PostMapping("/social/callback") - public R socialCallback(@RequestBody SocialLoginBody loginBody) { + public R socialCallback(@RequestBody SocialLoginBody loginBody) { // 获取第三方登录信息 AuthResponse response = SocialUtils.loginAuth( loginBody.getSource(), loginBody.getSocialCode(), @@ -144,13 +140,7 @@ public R socialCallback(@RequestBody SocialLoginBody loginBody) { return R.fail(response.getMsg()); } loginService.socialRegister(authUserData); - - LoginVo loginVo = new LoginVo(); - SysTenantVo tenant = tenantService.queryByTenantId(LoginHelper.getTenantId()); - if (StringUtils.isNotBlank(tenant.getTenantId())) { - loginVo.setDomain(tenant.getDomain()); - } - return R.ok(loginVo); + return R.ok(); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginVo.java index 149bee402..834afe5a1 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginVo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginVo.java @@ -51,9 +51,4 @@ public class LoginVo { */ private String openid; - /** - * 域名 - */ - private String domain; - } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index d34022950..af6e7f557 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -221,17 +221,17 @@ public void checkLogin(LoginType loginType, String tenantId, String username, Su * * @param tenantId 租户ID */ - public SysTenantVo checkTenant(String tenantId) { + public void checkTenant(String tenantId) { if (!TenantHelper.isEnable()) { - return null; + return; + } + if (TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) { + return; } if (StringUtils.isBlank(tenantId)) { throw new TenantException("tenant.number.not.blank"); } SysTenantVo tenant = tenantService.queryByTenantId(tenantId); - if (TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) { - return tenant; - } if (ObjectUtil.isNull(tenant)) { log.info("登录租户:{} 不存在.", tenantId); throw new TenantException("tenant.not.exists"); @@ -243,7 +243,6 @@ && new Date().after(tenant.getExpireTime())) { log.info("登录租户:{} 已超过有效期.", tenantId); throw new TenantException("tenant.expired"); } - return tenant; } } From 7c82b4c370aa63c630e7b0cbbef5d2757d46089d 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: Wed, 19 Jun 2024 14:29:32 +0800 Subject: [PATCH 17/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E7=99=BB=E5=BD=95=E4=B8=8D=E5=90=8C=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20=E9=87=87=E7=94=A8=E6=96=B0=E6=96=B9?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/web/controller/AuthController.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index 43e689be3..d99af5b62 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -1,6 +1,7 @@ package org.dromara.web.controller; import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import jakarta.servlet.http.HttpServletRequest; @@ -42,7 +43,10 @@ import org.springframework.web.bind.annotation.*; import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -112,13 +116,18 @@ public R login(@RequestBody String body) { * @return 结果 */ @GetMapping("/binding/{source}") - public R authBinding(@PathVariable("source") String source) { + public R authBinding(@PathVariable("source") String source, + @RequestParam String tenantId, @RequestParam String domain) { SocialLoginConfigProperties obj = socialProperties.getType().get(source); if (ObjectUtil.isNull(obj)) { return R.fail(source + "平台账号暂不支持"); } AuthRequest authRequest = SocialUtils.getAuthRequest(source, socialProperties); - String authorizeUrl = authRequest.authorize(AuthStateUtils.createState()); + Map map = new HashMap<>(); + map.put("tenantId", tenantId); + map.put("domain", domain); + map.put("state", AuthStateUtils.createState()); + String authorizeUrl = authRequest.authorize(Base64.encode(JsonUtils.toJsonString(map), StandardCharsets.UTF_8)); return R.ok("操作成功", authorizeUrl); } From 81293c9368f03031c13d7e45b6ea7ea0b44cae77 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: Wed, 19 Jun 2024 17:45:58 +0800 Subject: [PATCH 18/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/service/impl/ActModelServiceImpl.java | 13 +++++++++---- .../impl/ActProcessDefinitionServiceImpl.java | 9 ++++++--- .../service/impl/ActProcessInstanceServiceImpl.java | 8 ++++---- .../workflow/service/impl/ActTaskServiceImpl.java | 13 +++++++++---- .../service/impl/WfTaskBackNodeServiceImpl.java | 4 +++- 5 files changed, 31 insertions(+), 16 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java index 7ea53d81a..d4f696b6c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActModelServiceImpl.java @@ -10,6 +10,7 @@ import com.alibaba.excel.util.StringUtils; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.batik.transcoder.image.PNGTranscoder; @@ -59,6 +60,7 @@ * * @author may */ +@Slf4j @RequiredArgsConstructor @Service public class ActModelServiceImpl implements IActModelService { @@ -131,7 +133,7 @@ public boolean saveNewModel(ModelBo modelBo) { repositoryService.addModelEditorSource(model.getId(), StrUtil.utf8Bytes(xml)); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -157,6 +159,7 @@ public ModelVo getInfo(String id) { modelVo.setDescription(model.getMetaInfo()); return modelVo; } catch (Exception e) { + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -181,6 +184,7 @@ public boolean update(ModelBo modelBo) { model.setMetaInfo(modelBo.getDescription()); repositoryService.saveModel(model); } catch (Exception e) { + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } return true; @@ -230,7 +234,7 @@ public boolean editModelXml(ModelBo modelBo) { repositoryService.addModelEditorSourceExtra(model.getId(), result); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -325,7 +329,7 @@ public boolean modelDeploy(String id) { } return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -370,7 +374,7 @@ public void exportZip(List modelIds, HttpServletResponse response) { // 刷出响应流 response.flushBuffer(); } catch (IOException e) { - e.printStackTrace(); + log.error(e.getMessage(), e); } } @@ -417,6 +421,7 @@ public boolean copyModel(ModelBo modelBo) { } } } catch (Exception e) { + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } return true; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java index c37e0d016..6a17289a0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessDefinitionServiceImpl.java @@ -9,6 +9,7 @@ import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; @@ -55,6 +56,7 @@ * * @author may */ +@Slf4j @RequiredArgsConstructor @Service public class ActProcessDefinitionServiceImpl implements IActProcessDefinitionService { @@ -208,7 +210,7 @@ public boolean deleteDeployment(List deploymentIds, List process wfNodeConfigService.deleteByDefIds(processDefinitionIds); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -233,7 +235,7 @@ public boolean updateDefinitionState(String processDefinitionId) { } return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException("操作失败:" + e.getMessage()); } } @@ -262,6 +264,7 @@ public boolean migrationDefinition(String currentProcessDefinitionId, String fro .migrateProcessInstances(fromProcessDefinitionId); return true; } catch (Exception e) { + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -291,7 +294,7 @@ public boolean convertToModel(String processDefinitionId) { } return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 33227c2ef..b833bcc28 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -488,7 +488,7 @@ public boolean deleteRunInstance(ProcessInvalidBo processInvalidBo) { historicProcessInstance.getBusinessKey(), BusinessStatusEnum.INVALID.getStatus(), false); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -523,7 +523,7 @@ public boolean deleteRunAndHisInstance(List businessKeys) { wfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -547,7 +547,7 @@ public boolean deleteFinishAndHisInstance(List businessKeys) { wfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -597,7 +597,7 @@ public boolean cancelProcessApply(String businessKey) { processInstance.getBusinessKey(), BusinessStatusEnum.CANCEL.getStatus(), false); return true; } catch (Exception e) { - e.printStackTrace(); + log.error("撤销失败:" + e.getMessage(), e); throw new ServiceException("撤销失败:" + e.getMessage()); } } 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 5cb288d00..6fe0b4e65 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 @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.dto.RoleDTO; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.exception.ServiceException; @@ -65,6 +66,7 @@ * * @author may */ +@Slf4j @RequiredArgsConstructor @Service public class ActTaskServiceImpl implements IActTaskService { @@ -227,6 +229,7 @@ public boolean completeTask(CompleteTaskBo completeTaskBo) { } return true; } catch (Exception e) { + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -475,7 +478,7 @@ public boolean delegateTask(DelegateBo delegateBo) { taskService.complete(newTask.getId()); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -545,7 +548,7 @@ public boolean transferTask(TransmitBo transmitBo) { taskService.setAssignee(task.getId(), transmitBo.getUserId()); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -593,7 +596,7 @@ public boolean addMultiInstanceExecution(AddMultiBo addMultiBo) { taskService.complete(newTask.getId()); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -643,7 +646,7 @@ public boolean deleteMultiInstanceExecution(DeleteMultiBo deleteMultiBo) { taskService.complete(newTask.getId()); return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } } @@ -723,6 +726,7 @@ public String backProcess(BackProcessBo backProcessBo) { //删除驳回后的流程节点 wfTaskBackNodeService.deleteBackTaskNode(processInstanceId, backProcessBo.getTargetActivityId()); } catch (Exception e) { + log.error(e.getMessage(), e); throw new ServiceException(e.getMessage()); } return task.getProcessInstanceId(); @@ -743,6 +747,7 @@ public boolean updateAssignee(String[] taskIds, String userId) { taskService.setAssignee(task.getId(), userId); } } catch (Exception e) { + log.error("修改失败:" + e.getMessage(), e); throw new ServiceException("修改失败:" + e.getMessage()); } return true; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskBackNodeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskBackNodeServiceImpl.java index 0992f6f08..55d9883f2 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskBackNodeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WfTaskBackNodeServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.satoken.utils.LoginHelper; @@ -29,6 +30,7 @@ * @author may * @date 2024-03-13 */ +@Slf4j @RequiredArgsConstructor @Service public class WfTaskBackNodeServiceImpl implements IWfTaskBackNodeService { @@ -109,7 +111,7 @@ public boolean deleteBackTaskNode(String processInstanceId, String targetActivit } return true; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage(), e); throw new ServiceException("删除失败"); } } From b4b5aedc82d568c392396594246d333636e983b1 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: Thu, 20 Jun 2024 09:37:52 +0800 Subject: [PATCH 19/22] =?UTF-8?q?reset=20=E5=9B=9E=E6=BB=9A=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/src/main/resources/application-dev.yml | 3 +-- ruoyi-admin/src/main/resources/application-prod.yml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 544853a8a..5b5597369 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -17,8 +17,7 @@ snail-job: token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: host: 127.0.0.1 - # 28080 端口 随着主应用端口漂移 避免集群冲突 - port: 2${server.port} + port: 1788 # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 5b85fd701..d21644d42 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -20,8 +20,7 @@ snail-job: token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT" server: host: 127.0.0.1 - # 28080 端口 随着主应用端口漂移 避免集群冲突 - port: 2${server.port} + port: 1788 # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} From 147a90302d8a9d7229f99b4ad938348a1b72f880 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: Thu, 20 Jun 2024 09:49:18 +0800 Subject: [PATCH 20/22] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E4=B8=B4?= =?UTF-8?q?=E6=97=B6=E4=BF=AE=E5=A4=8D=20mp3.5.7=20=E6=89=B9=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=88=A4=E6=96=ADbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/core/mapper/BaseMapperPlus.java | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java index 5f0829eba..388925001 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/mapper/BaseMapperPlus.java @@ -50,42 +50,54 @@ default List selectList() { * 批量插入 */ default boolean insertBatch(Collection entityList) { - return Db.saveBatch(entityList); + Db.saveBatch(entityList); + // 临时解决 新版本 mp 插入状态判断错误问题 + return true; } /** * 批量更新 */ default boolean updateBatchById(Collection entityList) { - return Db.updateBatchById(entityList); + Db.updateBatchById(entityList); + // 临时解决 新版本 mp 插入状态判断错误问题 + return true; } /** * 批量插入或更新 */ default boolean insertOrUpdateBatch(Collection entityList) { - return Db.saveOrUpdateBatch(entityList); + Db.saveOrUpdateBatch(entityList); + // 临时解决 新版本 mp 插入状态判断错误问题 + return true; } /** * 批量插入(包含限制条数) */ default boolean insertBatch(Collection entityList, int batchSize) { - return Db.saveBatch(entityList, batchSize); + Db.saveBatch(entityList, batchSize); + // 临时解决 新版本 mp 插入状态判断错误问题 + return true; } /** * 批量更新(包含限制条数) */ default boolean updateBatchById(Collection entityList, int batchSize) { - return Db.updateBatchById(entityList, batchSize); + Db.updateBatchById(entityList, batchSize); + // 临时解决 新版本 mp 插入状态判断错误问题 + return true; } /** * 批量插入或更新(包含限制条数) */ default boolean insertOrUpdateBatch(Collection entityList, int batchSize) { - return Db.saveOrUpdateBatch(entityList, batchSize); + Db.saveOrUpdateBatch(entityList, batchSize); + // 临时解决 新版本 mp 插入状态判断错误问题 + return true; } default V selectVoById(Serializable id) { From 59edca8fcaa79a00e6f7f2325b9c81067208d691 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: Thu, 20 Jun 2024 10:06:17 +0800 Subject: [PATCH 21/22] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20snailjob=20?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E7=AB=AF=E5=8F=A3=E9=9A=8F=E4=B8=BB?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=BC=82=E7=A7=BB=E7=AB=AF=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/src/main/resources/application-dev.yml | 2 ++ ruoyi-admin/src/main/resources/application-prod.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 5b5597369..e24b26574 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -20,6 +20,8 @@ snail-job: port: 1788 # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} + # 随主应用端口飘逸 + port: 2${server.port} --- # 数据源配置 spring: diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index d21644d42..0192d5936 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -23,6 +23,8 @@ snail-job: port: 1788 # 详见 script/sql/snail_job.sql `sj_namespace` 表 namespace: ${spring.profiles.active} + # 随主应用端口飘逸 + port: 2${server.port} --- # 数据源配置 spring: From b27f560b336c448171cf26e7c6b6adc2e181bafe 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: Thu, 20 Jun 2024 10:09:26 +0800 Subject: [PATCH 22/22] =?UTF-8?q?=E2=99=A5=EF=B8=8F=E5=8F=91=E5=B8=83=205.?= =?UTF-8?q?2.0=20=E6=AD=A3=E5=BC=8F=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- pom.xml | 2 +- ruoyi-common/ruoyi-common-bom/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 05dd679aa..7ac544898 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![使用IntelliJ IDEA开发维护](https://img.shields.io/badge/IntelliJ%20IDEA-提供支持-blue.svg)](https://www.jetbrains.com/?from=RuoYi-Vue-Plus)
[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-5.2.0-success.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus) -[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.1-blue.svg)]() +[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.2-blue.svg)]() [![JDK-17](https://img.shields.io/badge/JDK-17-green.svg)]() [![JDK-21](https://img.shields.io/badge/JDK-21-green.svg)]() diff --git a/pom.xml b/pom.xml index c4b0b6fcc..900b61b53 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ RuoYi-Vue-Plus多租户管理系统 - 5.2.0-BETA2 + 5.2.0 3.2.6 UTF-8 UTF-8 diff --git a/ruoyi-common/ruoyi-common-bom/pom.xml b/ruoyi-common/ruoyi-common-bom/pom.xml index 39ef2b337..d546275c9 100644 --- a/ruoyi-common/ruoyi-common-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-bom/pom.xml @@ -14,7 +14,7 @@ - 5.2.0-BETA2 + 5.2.0