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 4e080dcac..b1896fc01 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 @@ -33,7 +33,6 @@ import org.dromara.system.domain.vo.SysClientVo; import org.dromara.system.service.ISysClientService; import org.dromara.system.service.ISysConfigService; import org.dromara.system.service.ISysSocialService; -import org.dromara.web.domain.vo.LoginTenantVo; import org.dromara.web.domain.vo.LoginVo; import org.dromara.web.service.IAuthStrategy; import org.dromara.web.service.SysLoginService; @@ -94,9 +93,10 @@ public class AuthController { Long userId = LoginHelper.getUserId(); scheduledExecutorService.schedule(() -> { - SseMessageDTO dto = new SseMessageDTO(); - dto.setMessage(DateUtils.getTodayHour(new Date()) + "好,欢迎登录 RuoYi-Vue-Plus 后台管理系统"); - dto.setUserIds(List.of(userId)); + SseMessageDTO dto = new SseMessageDTO( + List.of(userId), + DateUtils.getTodayHour(new Date()) + "好,欢迎登录 RuoYi-Vue-Plus 后台管理系统" + ); SseMessageUtils.publishMessage(dto); }, 5, TimeUnit.SECONDS); return R.ok(loginVo); @@ -194,9 +194,14 @@ public class AuthController { @GetMapping("/tenant/list") public R tenantList(HttpServletRequest request) throws Exception { // 暂时预留给前端使用 后续删除 - LoginTenantVo result = new LoginTenantVo(); - result.setTenantEnabled(false); - return R.ok(result); + return R.ok(new LoginTenantVo(false)); } + /** + * 登录租户列表响应对象。 + * + * @param tenantEnabled 是否启用租户 + */ + public record LoginTenantVo(Boolean tenantEnabled) { + } } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java index ab9f3acab..9c89a8993 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/CaptchaController.java @@ -25,7 +25,6 @@ import org.dromara.common.web.config.properties.CaptchaProperties; import org.dromara.sms4j.api.SmsBlend; import org.dromara.sms4j.api.entity.SmsResponse; import org.dromara.sms4j.core.factory.SmsFactory; -import org.dromara.web.domain.vo.CaptchaVo; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.standard.SpelExpressionParser; @@ -119,9 +118,7 @@ public class CaptchaController { public R getCode() { boolean captchaEnabled = captchaProperties.getEnable(); if (!captchaEnabled) { - CaptchaVo captchaVo = new CaptchaVo(); - captchaVo.setCaptchaEnabled(false); - return R.ok(captchaVo); + return R.ok(new CaptchaVo(false, null, null)); } return R.ok(SpringUtils.getAopProxy(this).getCodeImpl()); } @@ -157,10 +154,17 @@ public class CaptchaController { code = exp.getValue(String.class); } RedisUtils.setCacheObject(verifyKey, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); - CaptchaVo captchaVo = new CaptchaVo(); - captchaVo.setUuid(uuid); - captchaVo.setImg(captcha.getImageBase64()); - return captchaVo; + return new CaptchaVo(true, uuid, captcha.getImageBase64()); + } + + /** + * 图片验证码响应对象。 + * + * @param captchaEnabled 是否启用验证码 + * @param uuid 验证码标识 + * @param img Base64 图片数据 + */ + public record CaptchaVo(Boolean captchaEnabled, String uuid, String img) { } } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/CaptchaVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/CaptchaVo.java deleted file mode 100644 index df08f9ee8..000000000 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/CaptchaVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.dromara.web.domain.vo; - -import lombok.Data; - -/** - * 验证码信息 - * - * @author Michelle.Chung - */ -@Data -public class CaptchaVo { - - /** - * 是否开启验证码 - */ - private Boolean captchaEnabled = true; - - /** - * 验证码唯一标识。 - */ - private String uuid; - - /** - * 验证码图片 - */ - private String img; - -} diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginTenantVo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginTenantVo.java deleted file mode 100644 index cde1f3770..000000000 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginTenantVo.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.dromara.web.domain.vo; - -import lombok.Data; - -/** - * 登录页租户信息返回对象。 - * - * @author Michelle.Chung - */ -@Data -public class LoginTenantVo { - - /** - * 租户开关 - */ - private Boolean tenantEnabled; - -} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/FlowCopyDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/FlowCopyDTO.java index 6001331d5..d461bbdf0 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/FlowCopyDTO.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/FlowCopyDTO.java @@ -1,30 +1,14 @@ package org.dromara.common.core.domain.dto; -import lombok.Data; - -import java.io.Serial; -import java.io.Serializable; - - /** * 抄送 * + * @param userId 抄送用户 ID + * @param nickName 抄送用户昵称 * @author may */ -@Data -public class FlowCopyDTO implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 用户id - */ - private Long userId; - - /** - * 用户昵称 - */ - private String nickName; - +public record FlowCopyDTO( + Long userId, + String nickName +) { } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/StartProcessReturnDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/StartProcessReturnDTO.java index 84de4ce1e..5cb159f2f 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/StartProcessReturnDTO.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/StartProcessReturnDTO.java @@ -1,30 +1,14 @@ package org.dromara.common.core.domain.dto; - -import lombok.Data; - -import java.io.Serial; -import java.io.Serializable; - /** * 启动流程后的返回结果对象。 * + * @param processInstanceId 流程实例 ID + * @param taskId 首个任务 ID * @author Lion Li */ -@Data -public class StartProcessReturnDTO implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 流程实例id - */ - private Long processInstanceId; - - /** - * 任务id - */ - private Long taskId; - +public record StartProcessReturnDTO( + Long processInstanceId, + Long taskId +) { } diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index 4f8442a26..e31f64685 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java @@ -162,7 +162,7 @@ public class OssClient { String eTag = uploadResult.response().eTag(); // 提取上传结果中的 ETag,并构建一个自定义的 UploadResult 对象 - return UploadResult.builder().url(getUrl() + StringUtils.SLASH + key).filename(key).eTag(eTag).build(); + return new UploadResult(getUrl() + StringUtils.SLASH + key, key, eTag); } catch (Exception e) { // 捕获异常并抛出自定义异常 throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]"); @@ -220,7 +220,7 @@ public class OssClient { String eTag = uploadResult.response().eTag(); // 提取上传结果中的 ETag,并构建一个自定义的 UploadResult 对象 - return UploadResult.builder().url(getUrl() + StringUtils.SLASH + key).filename(key).eTag(eTag).build(); + return new UploadResult(getUrl() + StringUtils.SLASH + key, key, eTag); } catch (Exception e) { throw new OssException("上传文件失败,请检查配置信息:[" + e.getMessage() + "]"); } diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/UploadResult.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/UploadResult.java index 81a18e62a..26af1ff70 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/UploadResult.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/entity/UploadResult.java @@ -1,30 +1,16 @@ package org.dromara.common.oss.entity; -import lombok.Builder; -import lombok.Data; - /** * 上传返回体 * + * @param url 文件访问地址 + * @param filename 文件名 + * @param eTag 存储服务返回的 ETag * @author Lion Li */ -@Data -@Builder -public class UploadResult { - - /** - * 文件路径 - */ - private String url; - - /** - * 文件名 - */ - private String filename; - - /** - * 已上传对象的实体标记(用来校验文件) - */ - private String eTag; - +public record UploadResult( + String url, + String filename, + String eTag +) { } diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java index 67af7b947..09d35923e 100644 --- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java +++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java @@ -205,12 +205,10 @@ public class SseEmitterManager { * @param sseMessageDTO 要发布的SSE消息对象 */ public void publishMessage(SseMessageDTO sseMessageDTO) { - SseMessageDTO broadcastMessage = new SseMessageDTO(); - broadcastMessage.setMessage(sseMessageDTO.getMessage()); - broadcastMessage.setUserIds(sseMessageDTO.getUserIds()); + SseMessageDTO broadcastMessage = new SseMessageDTO(sseMessageDTO.userIds(), sseMessageDTO.message()); RedisUtils.publish(SSE_TOPIC, broadcastMessage, consumer -> { log.info("SSE发送主题订阅消息topic:{} session keys:{} message:{}", - SSE_TOPIC, sseMessageDTO.getUserIds(), sseMessageDTO.getMessage()); + SSE_TOPIC, sseMessageDTO.userIds(), sseMessageDTO.message()); }); } @@ -220,8 +218,7 @@ public class SseEmitterManager { * @param message 要发布的消息内容 */ public void publishAll(String message) { - SseMessageDTO broadcastMessage = new SseMessageDTO(); - broadcastMessage.setMessage(message); + SseMessageDTO broadcastMessage = new SseMessageDTO(null, message); RedisUtils.publish(SSE_TOPIC, broadcastMessage, consumer -> { log.info("SSE发送主题订阅消息topic:{} message:{}", SSE_TOPIC, message); }); diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/dto/SseMessageDTO.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/dto/SseMessageDTO.java index 78603a8e3..8a2bf90ce 100644 --- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/dto/SseMessageDTO.java +++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/dto/SseMessageDTO.java @@ -1,29 +1,16 @@ package org.dromara.common.sse.dto; -import lombok.Data; - -import java.io.Serial; -import java.io.Serializable; import java.util.List; /** * 消息的DTO * + * @param userIds 接收消息的用户 ID 列表 + * @param message 推送消息内容 * @author zendwang */ -@Data -public class SseMessageDTO implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 需要推送到的session key 列表 - */ - private List userIds; - - /** - * 需要发送的消息 - */ - private String message; +public record SseMessageDTO( + List userIds, + String message +) { } diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java index 7a4dff13e..5f452d22f 100644 --- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java +++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/listener/SseTopicListener.java @@ -28,14 +28,14 @@ public class SseTopicListener implements ApplicationRunner, Ordered { @Override public void run(ApplicationArguments args) throws Exception { sseEmitterManager.subscribeMessage((message) -> { - log.info("SSE主题订阅收到消息session keys={} message={}", message.getUserIds(), message.getMessage()); + log.info("SSE主题订阅收到消息session keys={} message={}", message.userIds(), message.message()); // 如果key不为空就按照key发消息 如果为空就群发 - if (CollUtil.isNotEmpty(message.getUserIds())) { - message.getUserIds().forEach(key -> { - sseEmitterManager.sendMessage(key, message.getMessage()); + if (CollUtil.isNotEmpty(message.userIds())) { + message.userIds().forEach(key -> { + sseEmitterManager.sendMessage(key, message.message()); }); } else { - sseEmitterManager.sendMessage(message.getMessage()); + sseEmitterManager.sendMessage(message.message()); } }); log.info("初始化SSE主题订阅监听器成功"); diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/dto/WebSocketMessageDTO.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/dto/WebSocketMessageDTO.java index 850a38c2d..a2efd7b29 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/dto/WebSocketMessageDTO.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/dto/WebSocketMessageDTO.java @@ -1,29 +1,16 @@ package org.dromara.common.websocket.dto; -import lombok.Data; - -import java.io.Serial; -import java.io.Serializable; import java.util.List; /** * 消息的DTO * + * @param sessionKeys WebSocket 会话标识列表 + * @param message 推送消息内容 * @author zendwang */ -@Data -public class WebSocketMessageDTO implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 需要推送到的session key 列表 - */ - private List sessionKeys; - - /** - * 需要发送的消息 - */ - private String message; +public record WebSocketMessageDTO( + List sessionKeys, + String message +) { } 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 b905ae066..da9a326f6 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 @@ -51,9 +51,7 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler { LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); // 创建WebSocket消息DTO对象 - WebSocketMessageDTO messageDTO = new WebSocketMessageDTO(); - messageDTO.setSessionKeys(List.of(loginUser.getUserId())); - messageDTO.setMessage(message.getPayload()); + WebSocketMessageDTO messageDTO = new WebSocketMessageDTO(List.of(loginUser.getUserId()), message.getPayload()); WebSocketUtils.publishMessage(messageDTO); } diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java index 0ad39affe..77709e5b6 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/listener/WebSocketTopicListener.java @@ -26,17 +26,17 @@ public class WebSocketTopicListener implements ApplicationRunner, Ordered { public void run(ApplicationArguments args) throws Exception { // 订阅WebSocket消息 WebSocketUtils.subscribeMessage((message) -> { - log.info("WebSocket主题订阅收到消息session keys={} message={}", message.getSessionKeys(), message.getMessage()); + log.info("WebSocket主题订阅收到消息session keys={} message={}", message.sessionKeys(), message.message()); // 如果key不为空就按照key发消息 如果为空就群发 - if (CollUtil.isNotEmpty(message.getSessionKeys())) { - message.getSessionKeys().forEach(key -> { + if (CollUtil.isNotEmpty(message.sessionKeys())) { + message.sessionKeys().forEach(key -> { if (WebSocketSessionHolder.existSession(key)) { - WebSocketUtils.sendMessage(key, message.getMessage()); + WebSocketUtils.sendMessage(key, message.message()); } }); } else { WebSocketSessionHolder.getSessionsAll().forEach(key -> { - WebSocketUtils.sendMessage(key, message.getMessage()); + WebSocketUtils.sendMessage(key, message.message()); }); } }); diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java index 900076a6c..44b31c97f 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java @@ -56,21 +56,19 @@ public class WebSocketUtils { public static void publishMessage(WebSocketMessageDTO webSocketMessage) { List unsentSessionKeys = new ArrayList<>(); // 当前服务内session,直接发送消息 - for (Long sessionKey : webSocketMessage.getSessionKeys()) { + for (Long sessionKey : webSocketMessage.sessionKeys()) { if (WebSocketSessionHolder.existSession(sessionKey)) { - WebSocketUtils.sendMessage(sessionKey, webSocketMessage.getMessage()); + WebSocketUtils.sendMessage(sessionKey, webSocketMessage.message()); continue; } unsentSessionKeys.add(sessionKey); } // 不在当前服务内session,发布订阅消息 if (CollUtil.isNotEmpty(unsentSessionKeys)) { - WebSocketMessageDTO broadcastMessage = new WebSocketMessageDTO(); - broadcastMessage.setMessage(webSocketMessage.getMessage()); - broadcastMessage.setSessionKeys(unsentSessionKeys); + WebSocketMessageDTO broadcastMessage = new WebSocketMessageDTO(unsentSessionKeys, webSocketMessage.message()); RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { log.info(" WebSocket发送主题订阅消息topic:{} session keys:{} message:{}", - WEB_SOCKET_TOPIC, unsentSessionKeys, webSocketMessage.getMessage()); + WEB_SOCKET_TOPIC, unsentSessionKeys, webSocketMessage.message()); }); } } @@ -81,8 +79,7 @@ public class WebSocketUtils { * @param message 要发布的消息内容 */ public static void publishAll(String message) { - WebSocketMessageDTO broadcastMessage = new WebSocketMessageDTO(); - broadcastMessage.setMessage(message); + WebSocketMessageDTO broadcastMessage = new WebSocketMessageDTO(null, message); RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { log.info("WebSocket发送主题订阅消息topic:{} message:{}", WEB_SOCKET_TOPIC, message); }); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/entity/BillDTO.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/entity/BillDTO.java index 47820dd6e..d9f4912b5 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/entity/BillDTO.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/entity/BillDTO.java @@ -1,30 +1,19 @@ package org.dromara.job.entity; -import lombok.Data; - import java.math.BigDecimal; -@Data -public class BillDTO { - - /** - * 账单ID - */ - private Long billId; - - /** - * 账单渠道 - */ - private String billChannel; - - /** - * 账单日期 - */ - private String billDate; - - /** - * 账单金额 - */ - private BigDecimal billAmount; - +/** + * 账单数据传输对象。 + * + * @param billId 账单 ID + * @param billChannel 账单渠道 + * @param billDate 账单日期 + * @param billAmount 账单金额 + */ +public record BillDTO( + Long billId, + String billChannel, + String billDate, + BigDecimal billAmount +) { } diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java index 759707766..ee2904add 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/AlipayBillTask.java @@ -23,16 +23,12 @@ import java.math.BigDecimal; public class AlipayBillTask { public ExecuteResult jobExecute(JobArgs jobArgs) throws InterruptedException { - BillDTO billDTO = new BillDTO(); - billDTO.setBillId(23456789L); - billDTO.setBillChannel("alipay"); // 设置清算日期 String settlementDate = (String) jobArgs.getWfContext().get("settlementDate"); if (StrUtil.equals(settlementDate, "sysdate")) { settlementDate = DateUtil.today(); } - billDTO.setBillDate(settlementDate); - billDTO.setBillAmount(new BigDecimal("2345.67")); + BillDTO billDTO = new BillDTO(23456789L, "alipay", settlementDate, new BigDecimal("2345.67")); // 把billDTO对象放入上下文进行传递 jobArgs.appendContext("alipay", JsonUtils.toJsonString(billDTO)); SnailJobLog.REMOTE.info("上下文: {}", jobArgs.getWfContext()); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java index 2bc37d6a3..544339b06 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/SummaryBillTask.java @@ -27,14 +27,14 @@ public class SummaryBillTask { String wechat = (String) jobArgs.getWfContext("wechat"); if (StrUtil.isNotBlank(wechat)) { BillDTO wechatBillDTO = JsonUtils.parseObject(wechat, BillDTO.class); - wechatAmount = wechatBillDTO.getBillAmount(); + wechatAmount = wechatBillDTO.billAmount(); } // 获得支付宝账单 BigDecimal alipayAmount = BigDecimal.valueOf(0); String alipay = (String) jobArgs.getWfContext("alipay"); if (StrUtil.isNotBlank(alipay)) { BillDTO alipayBillDTO = JsonUtils.parseObject(alipay, BillDTO.class); - alipayAmount = alipayBillDTO.getBillAmount(); + alipayAmount = alipayBillDTO.billAmount(); } // 汇总账单 BigDecimal totalAmount = wechatAmount.add(alipayAmount); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java index 63c3a8755..adeb638e0 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/org/dromara/job/snailjob/WechatBillTask.java @@ -23,17 +23,13 @@ import java.math.BigDecimal; public class WechatBillTask { public ExecuteResult jobExecute(JobArgs jobArgs) throws InterruptedException { - BillDTO billDTO = new BillDTO(); - billDTO.setBillId(123456789L); - billDTO.setBillChannel("wechat"); // 从上下文中获得清算日期并设置,如果上下文中清算日期 // 是sysdate设置为当前日期;否则取管理页面设置的值 String settlementDate = (String) jobArgs.getWfContext().get("settlementDate"); if (StrUtil.equals(settlementDate, "sysdate")) { settlementDate = DateUtil.today(); } - billDTO.setBillDate(settlementDate); - billDTO.setBillAmount(new BigDecimal("1234.56")); + BillDTO billDTO = new BillDTO(123456789L, "wechat", settlementDate, new BigDecimal("1234.56")); // 把billDTO对象放入上下文进行传递 jobArgs.appendContext("wechat", JsonUtils.toJsonString(billDTO)); SnailJobLog.REMOTE.info("上下文: {}", jobArgs.getWfContext()); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java index 9fbf71e39..500fb5519 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java @@ -13,7 +13,6 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.core.domain.PageResult; import org.dromara.common.web.core.BaseController; import org.dromara.system.domain.bo.SysOssBo; -import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; import org.springframework.http.MediaType; @@ -76,10 +75,7 @@ public class SysOssController extends BaseController { @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R upload(@RequestPart("file") MultipartFile file) { SysOssVo oss = ossService.upload(file); - SysOssUploadVo uploadVo = new SysOssUploadVo(); - uploadVo.setUrl(oss.getUrl()); - uploadVo.setFileName(oss.getOriginalName()); - uploadVo.setOssId(oss.getOssId().toString()); + SysOssUploadVo uploadVo = new SysOssUploadVo(oss.getUrl(), oss.getOriginalName(), oss.getOssId().toString()); return R.ok(uploadVo); } @@ -110,4 +106,13 @@ public class SysOssController extends BaseController { return toAjax(ossService.deleteWithValidByIds(List.of(ossIds), true)); } + /** + * OSS 上传响应对象。 + * + * @param url 文件访问地址 + * @param fileName 原始文件名 + * @param ossId OSS 对象 ID + */ + public record SysOssUploadVo(String url, String fileName, String ossId) { + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java deleted file mode 100644 index 11e0ff866..000000000 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.dromara.system.domain.vo; - -import lombok.Data; - -/** - * 上传对象信息 - * - * @author Michelle.Chung - */ -@Data -public class SysOssUploadVo { - - /** - * URL地址 - */ - private String url; - - /** - * 文件名 - */ - private String fileName; - - /** - * 对象存储主键 - */ - private String ossId; - -} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index 949d77a7d..a9775d0c2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -258,9 +258,9 @@ public class SysOssServiceImpl implements ISysOssService, OssService { @NotNull private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult, SysOssExt ext1) { SysOss oss = new SysOss(); - oss.setUrl(uploadResult.getUrl()); + oss.setUrl(uploadResult.url()); oss.setFileSuffix(suffix); - oss.setFileName(uploadResult.getFilename()); + oss.setFileName(uploadResult.filename()); oss.setOriginalName(originalfileName); oss.setService(configKey); oss.setExt1(JsonUtils.toJsonString(ext1)); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCancelBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCancelBo.java index 60a4a6c59..24241fe91 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCancelBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCancelBo.java @@ -1,31 +1,18 @@ package org.dromara.workflow.domain.bo; import jakarta.validation.constraints.NotBlank; -import lombok.Data; import org.dromara.common.core.validate.AddGroup; -import java.io.Serial; -import java.io.Serializable; - /** * 撤销流程请求对象。 * + * @param businessId 业务 ID + * @param message 撤销说明 * @author may */ -@Data -public class FlowCancelBo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 任务ID - */ +public record FlowCancelBo( @NotBlank(message = "业务ID不能为空", groups = AddGroup.class) - private String businessId; - - /** - * 办理意见 - */ - private String message; + String businessId, + String message +) { } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInvalidBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInvalidBo.java index e47e55821..c2d857267 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInvalidBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInvalidBo.java @@ -1,31 +1,18 @@ package org.dromara.workflow.domain.bo; import jakarta.validation.constraints.NotNull; -import lombok.Data; import org.dromara.common.core.validate.AddGroup; -import java.io.Serial; -import java.io.Serializable; - /** * 作废流程请求对象。 * + * @param id 流程实例 ID + * @param comment 作废意见 * @author may */ -@Data -public class FlowInvalidBo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 流程实例id - */ +public record FlowInvalidBo( @NotNull(message = "流程实例id为空", groups = AddGroup.class) - private Long id; - - /** - * 审批意见 - */ - private String comment; + Long id, + String comment +) { } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTerminationBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTerminationBo.java index 897fc21ee..b6c3d0a20 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTerminationBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTerminationBo.java @@ -1,31 +1,18 @@ package org.dromara.workflow.domain.bo; import jakarta.validation.constraints.NotNull; -import lombok.Data; import org.dromara.common.core.validate.AddGroup; -import java.io.Serial; -import java.io.Serializable; - /** * 终止任务请求对象 * + * @param taskId 任务 ID + * @param comment 终止意见 * @author may */ -@Data -public class FlowTerminationBo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 任务id - */ +public record FlowTerminationBo( @NotNull(message = "任务id为空", groups = AddGroup.class) - private Long taskId; - - /** - * 审批意见 - */ - private String comment; + Long taskId, + String comment +) { } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowVariableBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowVariableBo.java index 9361299fe..0e64851a8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowVariableBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowVariableBo.java @@ -1,39 +1,22 @@ package org.dromara.workflow.domain.bo; import jakarta.validation.constraints.NotNull; -import lombok.Data; import org.dromara.common.core.validate.AddGroup; -import java.io.Serial; -import java.io.Serializable; - /** * 流程变量参数 * + * @param instanceId 流程实例 ID + * @param key 变量键 + * @param value 变量值 * @author may */ -@Data -public class FlowVariableBo implements Serializable { - - @Serial - private static final long serialVersionUID = 1L; - - /** - * 流程实例id - */ +public record FlowVariableBo( @NotNull(message = "流程实例id为空", groups = AddGroup.class) - private Long instanceId; - - /** - * 流程变量key - */ + Long instanceId, @NotNull(message = "流程变量key为空", groups = AddGroup.class) - private String key; - - /** - * 流程变量value - */ + String key, @NotNull(message = "流程变量value为空", groups = AddGroup.class) - private String value; - + String value +) { } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java index 57ed2af71..31fb3f85e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java @@ -92,9 +92,7 @@ public class FlwCommonServiceImpl implements IFlwCommonService { try { switch (messageTypeEnum) { case SYSTEM_MESSAGE -> { - SseMessageDTO dto = new SseMessageDTO(); - dto.setUserIds(userIds); - dto.setMessage(message); + SseMessageDTO dto = new SseMessageDTO(userIds, message); SseMessageUtils.publishMessage(dto); } case EMAIL_MESSAGE -> MailUtils.sendText(emails, subject, message); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index f9610dddb..38743ec72 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -311,7 +311,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { @Override @Transactional(rollbackFor = Exception.class) public boolean cancelProcessApply(FlowCancelBo bo) { - Instance instance = selectInstByBusinessId(bo.getBusinessId()); + Instance instance = selectInstByBusinessId(bo.businessId()); if (instance == null) { throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); } @@ -319,7 +319,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { if (definition == null) { throw new ServiceException(ExceptionCons.NOT_FOUNT_DEF); } - String message = bo.getMessage(); + String message = bo.message(); String userIdStr = LoginHelper.getUserIdStr(); BusinessStatusEnum.checkCancelStatus(instance.getFlowStatus()); FlowParams flowParams = FlowParams.build() @@ -445,16 +445,16 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { @Override @Transactional(rollbackFor = Exception.class) public boolean updateVariable(FlowVariableBo bo) { - FlowInstance flowInstance = flowInstanceMapper.selectById(bo.getInstanceId()); + FlowInstance flowInstance = flowInstanceMapper.selectById(bo.instanceId()); if (flowInstance == null) { throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); } Map variableMap = new HashMap<>(Optional.ofNullable(flowInstance.getVariableMap()).orElse(Collections.emptyMap())); - if (!variableMap.containsKey(bo.getKey())) { - log.error("变量不存在: {}", bo.getKey()); + if (!variableMap.containsKey(bo.key())) { + log.error("变量不存在: {}", bo.key()); return false; } - variableMap.put(bo.getKey(), bo.getValue()); + variableMap.put(bo.key(), bo.value()); flowInstance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap)); return flowInstanceMapper.updateById(flowInstance) > 0; } @@ -503,16 +503,16 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { @Override @Transactional(rollbackFor = Exception.class) public boolean processInvalid(FlowInvalidBo bo) { - Instance instance = insService.getById(bo.getId()); + Instance instance = insService.getById(bo.id()); if (instance != null) { BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); } FlowParams flowParams = FlowParams.build() - .message(bo.getComment()) + .message(bo.comment()) .flowStatus(BusinessStatusEnum.INVALID.getStatus()) .hisStatus(TaskStatusEnum.INVALID.getStatus()) .ignore(true); - taskService.terminationByInsId(bo.getId(), flowParams); + taskService.terminationByInsId(bo.id(), flowParams); return true; } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 3e248f02c..e6b6818a4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -133,9 +133,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } taskService.mergeVariable(flowInstance, variables); insService.updateById(flowInstance); - StartProcessReturnDTO dto = new StartProcessReturnDTO(); - dto.setProcessInstanceId(taskList.get(0).getInstanceId()); - dto.setTaskId(taskList.get(0).getId()); + StartProcessReturnDTO dto = new StartProcessReturnDTO(taskList.get(0).getInstanceId(), taskList.get(0).getId()); // 保存流程实例业务信息 this.buildFlowInstanceBizExt(flowInstance, bizExt); return dto; @@ -166,10 +164,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { if (taskList.size() > 1) { throw new ServiceException("请检查流程第一个环节是否为申请人!"); } - StartProcessReturnDTO dto = new StartProcessReturnDTO(); - dto.setProcessInstanceId(instance.getId()); - dto.setTaskId(taskList.get(0).getId()); - return dto; + return new StartProcessReturnDTO(instance.getId(), taskList.get(0).getId()); } /** @@ -570,7 +565,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { @Override @Transactional(rollbackFor = Exception.class) public boolean terminationTask(FlowTerminationBo bo) { - Long taskId = bo.getTaskId(); + Long taskId = bo.taskId(); Task task = taskService.getById(taskId); if (task == null) { throw new ServiceException("任务不存在!"); @@ -580,7 +575,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); } FlowParams flowParams = FlowParams.build() - .message(bo.getComment()) + .message(bo.comment()) .flowStatus(BusinessStatusEnum.TERMINATION.getStatus()) .hisStatus(TaskStatusEnum.TERMINATION.getStatus()); taskService.termination(taskId, flowParams); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index c6901a403..2fd9f1fbc 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -166,7 +166,7 @@ public class WorkflowServiceImpl implements WorkflowService { StartProcessReturnDTO result = flwTaskService.startWorkFlow(processBo); CompleteTaskBo taskBo = new CompleteTaskBo(); - taskBo.setTaskId(result.getTaskId()); + taskBo.setTaskId(result.taskId()); taskBo.setMessageType(Collections.singletonList(MessageTypeEnum.SYSTEM_MESSAGE.getCode())); taskBo.setVariables(startProcess.getVariables()); taskBo.setHandler(startProcess.getHandler());