diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageNoticeDTO.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageNoticeDTO.java new file mode 100644 index 000000000..78e76577b --- /dev/null +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/dto/MessageNoticeDTO.java @@ -0,0 +1,53 @@ +package com.pig4cloud.pigx.admin.api.dto; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.experimental.FieldNameConstants; + +import java.util.ArrayList; +import java.util.List; + +/** + * 站内消息/公告发送 + * + * @author lengleng + * @date 2024/07/18 + */ +@Data +@FieldNameConstants +public class MessageNoticeDTO { + + /** + * 分类 0-公告 1-站内信 + */ + @NotBlank + private String category; + + /** + * 标题 + */ + @NotBlank + private String title; + + /** + * 内容 + */ + @NotBlank + private String content; + + /** + * 通知全体 0-否 1-是 + */ + private String allFlag = "0"; + + /** + * 接收用户ID列表(allFlag=0时必填) + */ + private List userIds = new ArrayList<>(); + + /** + * 排序(越大越在前) + */ + private Integer sort = 0; + +} diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMessageService.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMessageService.java index be7fd96ce..1b3688b15 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMessageService.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/feign/RemoteMessageService.java @@ -21,6 +21,7 @@ package com.pig4cloud.pigx.admin.api.feign; import com.pig4cloud.pigx.admin.api.dto.MessageEmailDTO; import com.pig4cloud.pigx.admin.api.dto.MessageHookDTO; +import com.pig4cloud.pigx.admin.api.dto.MessageNoticeDTO; import com.pig4cloud.pigx.admin.api.dto.MessageSmsDTO; import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants; import com.pig4cloud.pigx.common.core.util.R; @@ -64,4 +65,13 @@ public interface RemoteMessageService { @PostMapping("/sysMessage/send/hook") R sendHook(@RequestBody MessageHookDTO hookDTO); + /** + * 发送站内消息/公告 + * + * @param noticeDTO 站内消息 DTO + * @return {@link R } + */ + @PostMapping("/sysMessage/send/notice") + R sendNotice(@RequestBody MessageNoticeDTO noticeDTO); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMessageController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMessageController.java index 79a2a0f67..0dcac18ab 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMessageController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMessageController.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pig4cloud.pigx.admin.api.dto.MessageEmailDTO; import com.pig4cloud.pigx.admin.api.dto.MessageHookDTO; +import com.pig4cloud.pigx.admin.api.dto.MessageNoticeDTO; import com.pig4cloud.pigx.admin.api.dto.MessageSmsDTO; import com.pig4cloud.pigx.admin.api.entity.SysMessageEntity; import com.pig4cloud.pigx.admin.api.vo.SysMessageVO; @@ -200,7 +201,10 @@ public class SysMessageController { * @param messageSmsDTO 消息 短信 DTO * @return {@link R } */ + @Operation(summary = "发送短信", description = "发送短信") + @SysLog("发送短信") @PostMapping("/send/sms") + @HasPermission("sys_message_add") public R sendSms(@Valid @RequestBody MessageSmsDTO messageSmsDTO) { return sysMessageService.sendSms(messageSmsDTO); } @@ -211,7 +215,10 @@ public class SysMessageController { * @param messageEmailDTO 留言内容 电子邮件 DTO * @return {@link R } */ + @Operation(summary = "发送邮件", description = "发送邮件") + @SysLog("发送邮件") @PostMapping("/send/email") + @HasPermission("sys_message_add") public R sendEmail(@Valid @RequestBody MessageEmailDTO messageEmailDTO) { return sysMessageService.sendEmail(messageEmailDTO); } @@ -222,7 +229,10 @@ public class SysMessageController { * @param messageHookDTO 消息挂钩 DTO * @return {@link R } */ + @Operation(summary = "发送 webhook", description = "发送 webhook") + @SysLog("发送 webhook") @PostMapping("/send/hook") + @HasPermission("sys_message_add") public R sendWebhook(@Valid @RequestBody MessageHookDTO messageHookDTO) { return sysMessageService.sendHook(messageHookDTO); } @@ -232,4 +242,18 @@ public class SysMessageController { return sysMessageService.listHookBizCode(messageHookDTO); } + /** + * 发送站内消息/公告 + * + * @param noticeDTO 站内消息 DTO + * @return {@link R } + */ + @Operation(summary = "发送站内消息/公告", description = "发送站内消息/公告") + @SysLog("发送站内消息/公告") + @PostMapping("/send/notice") + @HasPermission("sys_message_add") + public R sendNotice(@Valid @RequestBody MessageNoticeDTO noticeDTO) { + return sysMessageService.sendNotice(noticeDTO); + } + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMessageService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMessageService.java index 14ccb1699..e8554f26f 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMessageService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysMessageService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.admin.api.dto.MessageEmailDTO; import com.pig4cloud.pigx.admin.api.dto.MessageHookDTO; +import com.pig4cloud.pigx.admin.api.dto.MessageNoticeDTO; import com.pig4cloud.pigx.admin.api.dto.MessageSmsDTO; import com.pig4cloud.pigx.admin.api.entity.SysMessageEntity; import com.pig4cloud.pigx.admin.api.vo.SysMessageVO; @@ -102,4 +103,12 @@ public interface SysMessageService extends IService { */ R listHookBizCode(MessageHookDTO messageHookDTO); + /** + * 发送站内消息/公告 + * + * @param noticeDTO 站内消息 DTO + * @return {@link R } + */ + R sendNotice(MessageNoticeDTO noticeDTO); + } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMessageServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMessageServiceImpl.java index a0dbb1660..0c5864877 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMessageServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysMessageServiceImpl.java @@ -24,10 +24,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.pig4cloud.pigx.admin.api.constant.SmsBizCodeEnum; import com.pig4cloud.pigx.admin.api.constant.SystemConfigTypeEnum; import com.pig4cloud.pigx.admin.api.constant.UpmsErrorCodes; -import com.pig4cloud.pigx.admin.api.dto.MessageEmailDTO; -import com.pig4cloud.pigx.admin.api.dto.MessageHookDTO; -import com.pig4cloud.pigx.admin.api.dto.MessageSmsDTO; -import com.pig4cloud.pigx.admin.api.dto.SysLogDTO; +import com.pig4cloud.pigx.admin.api.dto.*; import com.pig4cloud.pigx.admin.api.entity.*; import com.pig4cloud.pigx.admin.api.feign.RemoteLogService; import com.pig4cloud.pigx.admin.api.vo.OrgTreeVO; @@ -149,10 +146,12 @@ public class SysMessageServiceImpl extends ServiceImpllambdaQuery() .eq(SysMessageRelationEntity::getMsgId, messageEntity.getId())); @@ -549,4 +548,40 @@ public class SysMessageServiceImpl extends ServiceImpl userList = noticeDTO.getUserIds().stream().map(userId -> { + OrgTreeVO orgTreeVO = new OrgTreeVO(); + orgTreeVO.setId(userId); + return orgTreeVO; + }).toList(); + messageVO.setUserList(userList); + } + + // 保存消息 + saveOrUpdateMessage(messageVO); + + // 立即发送消息 + sendMessage(messageVO.getId()); + + return R.ok(messageVO.getId()); + } + }