From 1f86cb92687552c45d4f39d593d9a7cc6ca82881 Mon Sep 17 00:00:00 2001 From: zhuxinru Date: Wed, 3 Dec 2025 10:54:59 +0800 Subject: [PATCH] =?UTF-8?q?spdm=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/ServiceNameConstants.java | 5 ++ .../honeycom-flow-task-biz/pom.xml | 6 ++ .../task/service/impl/RemoteServiceImpl.java | 18 +++++- .../api/constant/MsgConfigDefaultData.java | 3 +- .../msg/api/constant/MsgConfigKeyType.java | 3 +- .../msg/api/dto/MessageListUserQueryDto.java | 3 + .../msg/api/dto/MessageOpenApiDTO.java | 3 + .../msg/api/feign/RemoteMessageService.java | 5 ++ .../msg/controller/MessageApiController.java | 2 + .../impl/MessageListItemServiceImpl.java | 1 + .../service/impl/MessageListServiceImpl.java | 1 + honeycom-spdm/pom.xml | 5 ++ .../spdm/controller/SpdmFlowController.java | 2 - .../spdm/controller/SpdmMsgController.java | 56 +++++++++++++++++++ .../honeycom/spdm/dto/MessageDto.java | 19 +++++++ .../spdm/feign/RemoteMsgServiceFeign.java | 19 +++++++ 16 files changed, 146 insertions(+), 5 deletions(-) create mode 100644 honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/controller/SpdmMsgController.java create mode 100644 honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/dto/MessageDto.java create mode 100644 honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/feign/RemoteMsgServiceFeign.java diff --git a/honeycom-common/honeycom-common-core/src/main/java/com/honeycombis/honeycom/common/core/constant/ServiceNameConstants.java b/honeycom-common/honeycom-common-core/src/main/java/com/honeycombis/honeycom/common/core/constant/ServiceNameConstants.java index f3ee621..7b52f88 100644 --- a/honeycom-common/honeycom-common-core/src/main/java/com/honeycombis/honeycom/common/core/constant/ServiceNameConstants.java +++ b/honeycom-common/honeycom-common-core/src/main/java/com/honeycombis/honeycom/common/core/constant/ServiceNameConstants.java @@ -89,6 +89,11 @@ public interface ServiceNameConstants { */ String STEP_SERVICE = "honeycom-step-biz"; + /** + * 消息模块 + */ + String MSG_SERVICE = "honeycom-msg-biz"; + /** * spdm中转模块 */ diff --git a/honeycom-flow/honeycom-flow-task/honeycom-flow-task-biz/pom.xml b/honeycom-flow/honeycom-flow-task/honeycom-flow-task-biz/pom.xml index 2751adc..98fe8b4 100644 --- a/honeycom-flow/honeycom-flow-task/honeycom-flow-task-biz/pom.xml +++ b/honeycom-flow/honeycom-flow-task/honeycom-flow-task-biz/pom.xml @@ -73,6 +73,12 @@ com.honeycombis honeycom-common-log + + com.honeycombis + honeycom-msg-api + 5.4.0 + compile + com.baomidou diff --git a/honeycom-flow/honeycom-flow-task/honeycom-flow-task-biz/src/main/java/com/honeycombis/honeycom/flow/task/service/impl/RemoteServiceImpl.java b/honeycom-flow/honeycom-flow-task/honeycom-flow-task-biz/src/main/java/com/honeycombis/honeycom/flow/task/service/impl/RemoteServiceImpl.java index e1757e0..014afcd 100644 --- a/honeycom-flow/honeycom-flow-task/honeycom-flow-task-biz/src/main/java/com/honeycombis/honeycom/flow/task/service/impl/RemoteServiceImpl.java +++ b/honeycom-flow/honeycom-flow-task/honeycom-flow-task-biz/src/main/java/com/honeycombis/honeycom/flow/task/service/impl/RemoteServiceImpl.java @@ -15,6 +15,7 @@ import com.honeycombis.honeycom.admin.api.feign.RemoteDeptService; import com.honeycombis.honeycom.admin.api.utils.DataUtil; import com.honeycombis.honeycom.common.core.constant.SecurityConstants; import com.honeycombis.honeycom.common.core.util.R; +import com.honeycombis.honeycom.common.data.tenant.TenantContextHolder; import com.honeycombis.honeycom.common.security.service.HoneycomUser; import com.honeycombis.honeycom.common.security.util.SecurityUtils; import com.honeycombis.honeycom.flow.task.api.feign.RemoteFlowEngineService; @@ -25,8 +26,11 @@ import com.honeycombis.honeycom.flow.task.dto.*; import com.honeycombis.honeycom.flow.task.entity.*; import com.honeycombis.honeycom.flow.task.entity.Process; import com.honeycombis.honeycom.flow.task.service.*; +import com.honeycombis.honeycom.msg.api.dto.MessageOpenApiDTO; +import com.honeycombis.honeycom.msg.api.feign.RemoteMessageService; import com.honeycombis.honeycom.user.feign.HoneycomUserServiceFeign; import com.honeycombis.honeycom.user.vo.SysUserVO; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -64,6 +68,9 @@ public class RemoteServiceImpl implements IRemoteService { private final RemoteSpdmService remoteSpdmService; + @Resource + private RemoteMessageService remoteMessageService; + private final IProcessNodeDataService iProcessNodeDataService; @@ -385,7 +392,16 @@ public class RemoteServiceImpl implements IRemoteService { */ @Override public R startAssignUser(ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto) { - return processNodeRecordAssignUserService.addAssignUser(processNodeRecordAssignUserParamDto); + processNodeRecordAssignUserService.addAssignUser(processNodeRecordAssignUserParamDto); + // 审批消息通知 + Process process = processService.getByFlowId(processNodeRecordAssignUserParamDto.getFlowId()); + MessageOpenApiDTO messageOpenApiDTO = new MessageOpenApiDTO(); + messageOpenApiDTO.setTitle("审批消息通知"); + messageOpenApiDTO.setContent("收到一条" + process.getName() + "审批任务代办,请前往任务中心-代办任务-流程任务审批"); + messageOpenApiDTO.setStaffCode(String.valueOf(processNodeRecordAssignUserParamDto.getUserId())); + messageOpenApiDTO.setTenantCode(String.valueOf(TenantContextHolder.getTenantId())); + remoteMessageService.pushMessage(messageOpenApiDTO); + return R.ok(); } /** diff --git a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/constant/MsgConfigDefaultData.java b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/constant/MsgConfigDefaultData.java index d715e18..cbaf97f 100644 --- a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/constant/MsgConfigDefaultData.java +++ b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/constant/MsgConfigDefaultData.java @@ -33,8 +33,9 @@ public class MsgConfigDefaultData { list.add(new MessageConfigAddDto(MsgConfigKeyType.MSG_CONFIG_KEY_MILESTONE_POSTPONE.getCode(),2,"里程碑延期通知","{%里程碑名称%}里程碑已延期,请点击查看详情",MsgRoleType.MSG_ROLE_PROJECT_MEMBERS.getCode(),2,"0,1","里程碑计划时间结束已到但关联任务仍未完成触发一条消息","1/DAY")); list.add(new MessageConfigAddDto(MsgConfigKeyType.MSG_CONFIG_KEY_INVITE.getCode(),2,"邀请通知","{%租户名称%}邀请您加入",MsgRoleType.MSG_ROLE_INVITEES.getCode(),0,"0,1","点击发送邀请后受邀人接受一条消息","")); list.add(new MessageConfigAddDto(MsgConfigKeyType.MSG_CONFIG_KEY_ORGANIZATIONAL_MESSAGES.getCode(),2,"组织消息","{%员工名称%}加入了{%部门名称%}",MsgRoleType.MSG_ROLE_ROLE_ADMIN.getCode(),0,"0,1","受邀人点击同意加入邀请公司后租户管理员收到一条消息","")); - list.add(new MessageConfigAddDto(MsgConfigKeyType.MSG_CONFIG_KEY_OPEN_API.getCode(),2,"消息标题","消息内容",MsgRoleType.MSG_ROLE_PROJECT_MEMBERS.getCode(),0,"0,1","第三方api调用发送消息","")); + list.add(new MessageConfigAddDto(MsgConfigKeyType.MSG_CONFIG_KEY_OPEN_API.getCode(),2,"消息标题","消息内容",MsgRoleType.MSG_ROLE_PROJECT_MEMBERS.getCode(),0,"0,1","第三方api调用发送消息","")) + ; return list; } } \ No newline at end of file diff --git a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/constant/MsgConfigKeyType.java b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/constant/MsgConfigKeyType.java index b966c26..1d47daf 100644 --- a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/constant/MsgConfigKeyType.java +++ b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/constant/MsgConfigKeyType.java @@ -54,7 +54,8 @@ public enum MsgConfigKeyType { MSG_CONFIG_KEY_INVITE("INVITE", "邀请", 4), MSG_CONFIG_KEY_ORGANIZATIONAL_MESSAGES("ORGANIZATIONAL_MESSAGES", "组织消息", 4), MSG_CONFIG_KEY_OPEN_API("OPEN_API_MESSAGE", "对外开放消息模板", 99), - MSG_CONFIG_KEY_ADD_NOTIFY("ADD_NOTIFY", "新增通知", 0); + MSG_CONFIG_KEY_ADD_NOTIFY("ADD_NOTIFY", "新增通知", 0), + MSG_CONFIG_KEY_APPROVE_NOTICE("APPROVE_NOTICE", "审批消息通知", 0); private final String code; diff --git a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/dto/MessageListUserQueryDto.java b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/dto/MessageListUserQueryDto.java index de27a16..f9102cc 100644 --- a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/dto/MessageListUserQueryDto.java +++ b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/dto/MessageListUserQueryDto.java @@ -30,4 +30,7 @@ public class MessageListUserQueryDto { */ @Schema(description="是否已读(0:未读,1:已读,2:忽略)") private Integer isRead; + + @Schema(description="消息标题") + private Integer msgTitle; } diff --git a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/dto/MessageOpenApiDTO.java b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/dto/MessageOpenApiDTO.java index 557447e..d50f638 100644 --- a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/dto/MessageOpenApiDTO.java +++ b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/dto/MessageOpenApiDTO.java @@ -17,4 +17,7 @@ public class MessageOpenApiDTO { @Schema(description = "消息内容") private String content; + + @Schema(description = "业务id") + private String businessId; } diff --git a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/feign/RemoteMessageService.java b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/feign/RemoteMessageService.java index 8560fd8..5a2206e 100644 --- a/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/feign/RemoteMessageService.java +++ b/honeycom-msg/honeycom-msg-api/src/main/java/com/honeycombis/honeycom/msg/api/feign/RemoteMessageService.java @@ -4,6 +4,7 @@ import com.honeycombis.honeycom.common.core.constant.SecurityConstants; import com.honeycombis.honeycom.common.core.util.R; import com.honeycombis.honeycom.msg.api.dto.MessageDeleteParamDTO; import com.honeycombis.honeycom.msg.api.dto.MessageListBusinessAddDto; +import com.honeycombis.honeycom.msg.api.dto.MessageOpenApiDTO; import io.swagger.v3.oas.annotations.Operation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; @@ -31,4 +32,8 @@ public interface RemoteMessageService { @PostMapping("/message/list/deleteMessageByParam" ) R deleteMessageByParam(@RequestBody MessageDeleteParamDTO messageDeleteParamDTO, @RequestHeader(SecurityConstants.FROM) String from); + @Operation(summary = "提供给外围系统发布消息通知", description = "提供给外围系统发布消息通知") + @PostMapping(value = "/openapi/push") + R pushMessage(@RequestBody MessageOpenApiDTO dto); + } diff --git a/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/controller/MessageApiController.java b/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/controller/MessageApiController.java index fbceb20..ecbeda9 100644 --- a/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/controller/MessageApiController.java +++ b/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/controller/MessageApiController.java @@ -4,6 +4,7 @@ import com.honeycombis.honeycom.common.core.exception.ErrorType; import com.honeycombis.honeycom.common.core.exception.HoneycomException; import com.honeycombis.honeycom.common.core.util.R; import com.honeycombis.honeycom.common.log.annotation.SysLog; +import com.honeycombis.honeycom.common.security.annotation.Inner; import com.honeycombis.honeycom.msg.api.dto.MessageListBusinessAddDto; import com.honeycombis.honeycom.msg.api.dto.MessageOpenApiDTO; import com.honeycombis.honeycom.msg.service.MessageListService; @@ -34,6 +35,7 @@ public class MessageApiController { @Operation(summary = "发布新消息", description = "发布新消息") @SysLog("发布新消息") @PostMapping(value = "/push") + @Inner(value = false) public R addByConfigKey(@RequestBody MessageOpenApiDTO dto) { if (StringUtils.isBlank(dto.getStaffCode())) { log.error("用户ID不能为空!"); diff --git a/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/service/impl/MessageListItemServiceImpl.java b/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/service/impl/MessageListItemServiceImpl.java index 0021701..ef3398d 100644 --- a/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/service/impl/MessageListItemServiceImpl.java +++ b/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/service/impl/MessageListItemServiceImpl.java @@ -107,6 +107,7 @@ public class MessageListItemServiceImpl extends ServiceImpla.eq(MessageListItemEntity::getTenantId, TenantContextHolder.getTenantId()).or().isNull(MessageListItemEntity::getTenantId)); // 已读未读查询条件过滤 wrapper.eq(Objects.nonNull(query.getIsRead()), MessageListItemEntity::getIsRead, query.getIsRead()); diff --git a/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/service/impl/MessageListServiceImpl.java b/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/service/impl/MessageListServiceImpl.java index de0ce72..3a6a71b 100644 --- a/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/service/impl/MessageListServiceImpl.java +++ b/honeycom-msg/honeycom-msg-biz/src/main/java/com/honeycombis/honeycom/msg/service/impl/MessageListServiceImpl.java @@ -357,6 +357,7 @@ public class MessageListServiceImpl extends ServiceImplhoneycom-user-api 5.4.0 + + com.honeycombis + honeycom-msg-api + 5.4.0 + diff --git a/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/controller/SpdmFlowController.java b/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/controller/SpdmFlowController.java index a3d9a16..37339ae 100644 --- a/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/controller/SpdmFlowController.java +++ b/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/controller/SpdmFlowController.java @@ -21,8 +21,6 @@ package com.honeycombis.honeycom.spdm.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.json.JSON; -import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.alibaba.cloud.commons.lang.StringUtils; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/controller/SpdmMsgController.java b/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/controller/SpdmMsgController.java new file mode 100644 index 0000000..d96916a --- /dev/null +++ b/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/controller/SpdmMsgController.java @@ -0,0 +1,56 @@ +/* + * + * Copyright (c) 2018-2025, honeycom All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: honeycom + * + */ + +package com.honeycombis.honeycom.spdm.controller; + +import com.honeycombis.honeycom.common.core.util.R; +import com.honeycombis.honeycom.msg.api.dto.MessageOpenApiDTO; +import com.honeycombis.honeycom.spdm.dto.*; +import com.honeycombis.honeycom.spdm.feign.RemoteMsgServiceFeign; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + + + +@RestController +@AllArgsConstructor +@RequestMapping("/spdm-msg") +@Tag(description = "spdm", name = "提供给SPDM的流程模块") +@Slf4j +public class SpdmMsgController { + + @Resource + private RemoteMsgServiceFeign remoteMsgServiceFeign; + + @Operation(summary = "发起流程") + @PostMapping(value = "/sendMessage") + public R sendMessage(@RequestBody MessageDto messageDto) { + MessageOpenApiDTO messageOpenApiDTO = new MessageOpenApiDTO(); + messageOpenApiDTO.setTitle(messageDto.getTitle()); + messageOpenApiDTO.setContent(messageDto.getContent()); + messageOpenApiDTO.setStaffCode(messageDto.getUserId()); + messageOpenApiDTO.setTenantCode(messageDto.getTenantId()); + return remoteMsgServiceFeign.pushMessage(messageOpenApiDTO, messageDto.getTenantId()); + } + +} diff --git a/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/dto/MessageDto.java b/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/dto/MessageDto.java new file mode 100644 index 0000000..85c3bc2 --- /dev/null +++ b/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/dto/MessageDto.java @@ -0,0 +1,19 @@ +package com.honeycombis.honeycom.spdm.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class MessageDto { + @Schema(description = "租户代码") + private String tenantId; + + @Schema(description = "员工工号") + private String userId; + + @Schema(description = "消息标题") + private String title; + + @Schema(description = "消息内容") + private String content; +} diff --git a/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/feign/RemoteMsgServiceFeign.java b/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/feign/RemoteMsgServiceFeign.java new file mode 100644 index 0000000..e87d09c --- /dev/null +++ b/honeycom-spdm/src/main/java/com/honeycombis/honeycom/spdm/feign/RemoteMsgServiceFeign.java @@ -0,0 +1,19 @@ +package com.honeycombis.honeycom.spdm.feign; + +import com.honeycombis.honeycom.common.core.constant.CommonConstants; +import com.honeycombis.honeycom.common.core.constant.ServiceNameConstants; +import com.honeycombis.honeycom.common.core.util.R; +import com.honeycombis.honeycom.common.feign.config.FeignConfig; +import com.honeycombis.honeycom.msg.api.dto.MessageOpenApiDTO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + + +@FeignClient(contextId = "remoteMsgService", value = ServiceNameConstants.MSG_SERVICE, configuration = FeignConfig.class) +public interface RemoteMsgServiceFeign { + + @PostMapping(value = "/openapi/push") + R pushMessage(@RequestBody MessageOpenApiDTO dto, @RequestHeader(CommonConstants.TENANT_ID) String tenantId); + + +}