From 23576a52867c857a59285cfd5aedda5be6d1dad1 Mon Sep 17 00:00:00 2001 From: aikai Date: Thu, 21 Mar 2024 20:13:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E9=A1=B5=E9=9D=A2=E8=B7=B3=E8=BD=AC=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../convert/message/BpmMessageConvert.java | 75 +++++++++---------- .../message/BpmMessageServiceImpl.java | 48 ++++++------ .../oa/BpmOAProcurePayServiceImpl.java | 2 +- .../service/oa/BpmOAProcureServiceImpl.java | 2 +- .../subscribe/dto/SubscribeMessageReqDTO.java | 8 +- .../SubscribeMessageSendApiImpl.java | 32 +++----- 6 files changed, 80 insertions(+), 87 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/message/BpmMessageConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/message/BpmMessageConvert.java index 3b513622..8648c1a7 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/message/BpmMessageConvert.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/message/BpmMessageConvert.java @@ -5,13 +5,11 @@ import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDT import cn.iocoder.yudao.module.system.api.sms.dto.send.SmsSendSingleToUserReqDTO; import cn.iocoder.yudao.module.system.api.subscribe.dto.MsgData; import cn.iocoder.yudao.module.system.api.subscribe.dto.SubscribeMessageReqDTO; -import org.flowable.bpmn.model.UserTask; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; import java.util.Date; -import java.util.List; import java.util.Map; @Mapper @@ -32,56 +30,56 @@ public interface BpmMessageConvert { /** - * - * @param openId 微信小程序唯一id + * @param openId 微信小程序唯一id * @param processInstanceName 流程名称 - * @param result 审批结果 - * @param reason 审批原因 - * @param miniProgramState 小程序的状态 + * @param result 审批结果 + * @param reason 审批原因 + * @param miniProgramState 小程序的状态 * @return */ - default SubscribeMessageReqDTO convertApprovalResultNotification(String openId, String processInstanceName, String time, String result, String reason, String miniProgramState) { - SubscribeMessageReqDTO message = new SubscribeMessageReqDTO() ; - message.setToUser(openId) ; - message.setTemplateId("OnJjp5pdjG1PHMoELYaqp3Xq8jWZ5E6ndO0clEIQ4tk") ; + default SubscribeMessageReqDTO convertApprovalResultNotification(String openId, String processInstanceName, String time, String result, String reason, String processInstanceId, + String miniProgramState) { + SubscribeMessageReqDTO message = new SubscribeMessageReqDTO(); + message.setToUser(openId); + message.setTemplateId("OnJjp5pdjG1PHMoELYaqp3Xq8jWZ5E6ndO0clEIQ4tk"); //审批类型 MsgData processType = new MsgData(); - processType.setName("thing1") ; - processType.setValue(processInstanceName) ; + processType.setName("thing1"); + processType.setValue(processInstanceName); message.addData(processType); //发起时间 MsgData createTime = new MsgData(); - createTime.setName("time2") ; - createTime.setValue(time) ; + createTime.setName("time2"); + createTime.setValue(time); message.addData(createTime); //审批时间 MsgData approvalTime = new MsgData(); - approvalTime.setName("time7") ; - approvalTime.setValue(DateUtils.dateFormat(new Date(),DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)) ; + approvalTime.setName("time7"); + approvalTime.setValue(DateUtils.dateFormat(new Date(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); message.addData(approvalTime); //审批结果 MsgData approvalResult = new MsgData(); - approvalResult.setName("phrase3") ; - approvalResult.setValue(result) ; + approvalResult.setName("phrase3"); + approvalResult.setValue(result); message.addData(approvalResult); - if(reason != null ) { + if (reason != null) { MsgData approvalReason = new MsgData(); - approvalReason.setName("thing12") ; - approvalReason.setValue(reason) ; + approvalReason.setName("thing12"); + approvalReason.setValue(reason); message.addData(approvalReason); } - message.setMiniprogramState(miniProgramState) ; + message.setMiniprogramState(miniProgramState); + message.setPage("pages/home/index?id=" + processInstanceId); return message; } /** - * - * @param openId 微信小程序唯一id + * @param openId 微信小程序唯一id * @param processInstanceName 流程名称 * @param startUserNickname 申请人 * @param time 申请时间 @@ -89,35 +87,36 @@ public interface BpmMessageConvert { * @param miniProgramState 小程序的状态 * @return */ - default SubscribeMessageReqDTO convertProcessToDoReminder(String openId, String processInstanceName,String startUserNickname, String time, String schedule, String miniProgramState) { - SubscribeMessageReqDTO message = new SubscribeMessageReqDTO() ; - message.setToUser(openId) ; - message.setTemplateId("3cP4btlFSSiZk65qVewN_WoT_bh0OfUkYzzTsADOrR4") ; + default SubscribeMessageReqDTO convertProcessToDoReminder(String openId, String processInstanceName, String startUserNickname, String time, String schedule, String processInstanceId, String miniProgramState) { + SubscribeMessageReqDTO message = new SubscribeMessageReqDTO(); + message.setToUser(openId); + message.setTemplateId("3cP4btlFSSiZk65qVewN_WoT_bh0OfUkYzzTsADOrR4"); //待办标题 MsgData processType = new MsgData(); - processType.setName("thing1") ; - processType.setValue("您收到了一条新的待办任务:"+processInstanceName) ; + processType.setName("thing1"); + processType.setValue("您收到了一条新的待办任务:" + processInstanceName); message.addData(processType); //申请人 MsgData applicant = new MsgData(); - applicant.setName("thing4") ; - applicant.setValue(startUserNickname) ; + applicant.setName("thing4"); + applicant.setValue(startUserNickname); message.addData(applicant); //申请时间 MsgData createTime = new MsgData(); - createTime.setName("time5") ; - createTime.setValue(time) ; + createTime.setName("time5"); + createTime.setValue(time); message.addData(createTime); //当前进度 MsgData currentSchedule = new MsgData(); - currentSchedule.setName("thing6") ; - currentSchedule.setValue(schedule) ; + currentSchedule.setName("thing6"); + currentSchedule.setValue(schedule); message.addData(currentSchedule); - message.setMiniprogramState(miniProgramState) ; + message.setMiniprogramState(miniProgramState); + message.setPage("pages/bpm/task/todo/examineApprove?id=" + processInstanceId); return message; } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageServiceImpl.java index 239e4f9a..e7a845c2 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/message/BpmMessageServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.bpm.service.message; -import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.web.config.WebProperties; import cn.iocoder.yudao.module.bpm.convert.message.BpmMessageConvert; import cn.iocoder.yudao.module.bpm.enums.message.BpmMessageEnum; @@ -17,7 +16,8 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.*; +import java.util.HashMap; +import java.util.Map; /** * BPM 消息 Service 实现类 @@ -36,7 +36,7 @@ public class BpmMessageServiceImpl implements BpmMessageService { private NotifyMessageSendApi notifyMessageSendApi; @Resource - private SubscribeMessageSendApi subscribeMessageSendApi ; + private SubscribeMessageSendApi subscribeMessageSendApi; @Resource private WebProperties webProperties; @@ -53,15 +53,16 @@ public class BpmMessageServiceImpl implements BpmMessageService { BpmMessageEnum.PROCESS_INSTANCE_APPROVE.getSmsTemplateCode(), templateParams)); //发送审批结果通知 - String openId = getUserOpenId(reqDTO.getStartUserId()) ; - if(openId != null ) { + String openId = getUserOpenId(reqDTO.getStartUserId()); + if (openId != null) { subscribeMessageSendApi.sendApprovalResultNotification( BpmMessageConvert.INSTANCE.convertApprovalResultNotification( - openId,reqDTO.getProcessInstanceName(), reqDTO.getCreateTime(), "通过", reqDTO.getReason(), + openId, reqDTO.getProcessInstanceName(), reqDTO.getCreateTime(), "通过", reqDTO.getReason(), + reqDTO.getProcessInstanceId(), /** * 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 */ - "formal") ) ; + "formal")); } } @@ -78,15 +79,16 @@ public class BpmMessageServiceImpl implements BpmMessageService { reqDTO.getStartUserId(), BpmMessageEnum.PROCESS_INSTANCE_REJECT.getSmsTemplateCode(), templateParams)); // //发送审批结果通知 - String openId = getUserOpenId(reqDTO.getStartUserId()) ; - if(openId != null ) { + String openId = getUserOpenId(reqDTO.getStartUserId()); + if (openId != null) { subscribeMessageSendApi.sendApprovalResultNotification( BpmMessageConvert.INSTANCE.convertApprovalResultNotification( - openId,reqDTO.getProcessInstanceName(),reqDTO.getCreateTime(),"不通过", reqDTO.getReason(), + openId, reqDTO.getProcessInstanceName(), reqDTO.getCreateTime(), "不通过", reqDTO.getReason(), + reqDTO.getProcessInstanceId(), /** * 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 */ - "formal") ) ; + "formal")); } } @@ -95,10 +97,10 @@ public class BpmMessageServiceImpl implements BpmMessageService { public void sendMessageWhenTaskAssigned(BpmMessageSendWhenTaskCreatedReqDTO reqDTO) { //任务分配 Long startUserId = reqDTO.getStartUserId(); //流程发起人 - Long assigneeUserId = reqDTO.getAssigneeUserId() ; //任务审批人 - String taskName = reqDTO.getTaskName() ; + Long assigneeUserId = reqDTO.getAssigneeUserId(); //任务审批人 + String taskName = reqDTO.getTaskName(); //如果流程发起人和任务审批是同一个人, 那么不发送站内信,否则就发送 - if(!assigneeUserId.toString().equals(startUserId.toString())) { + if (!assigneeUserId.toString().equals(startUserId.toString())) { Map templateParams = new HashMap<>(); templateParams.put("processInstanceName", reqDTO.getProcessInstanceName()); // templateParams.put("taskName", reqDTO.getTaskName()); @@ -112,11 +114,12 @@ public class BpmMessageServiceImpl implements BpmMessageService { reqDTO.getAssigneeUserId(), BpmMessageEnum.TASK_ASSIGNED.getSmsTemplateCode(), templateParams)); //微信小程序订阅消息 //发送OA流程待办提醒 - String openId = getUserOpenId(reqDTO.getStartUserId()) ; //只有在微信小程序登陆过用户才会有openid - if(openId != null ) { - subscribeMessageSendApi.sendProcessToDoReminder( BpmMessageConvert.INSTANCE.convertProcessToDoReminder( - openId, reqDTO.getProcessInstanceName(), reqDTO.getStartUserNickname(),reqDTO.getCreateTime(),reqDTO.getSchedule() , - "formal" ) ) ; + String openId = getUserOpenId(reqDTO.getStartUserId()); //只有在微信小程序登陆过用户才会有openid + if (openId != null) { + subscribeMessageSendApi.sendProcessToDoReminder(BpmMessageConvert.INSTANCE.convertProcessToDoReminder( + openId, reqDTO.getProcessInstanceName(), reqDTO.getStartUserNickname(), reqDTO.getCreateTime(), reqDTO.getSchedule(), + reqDTO.getProcessInstanceId(), + "formal")); } } } @@ -127,10 +130,11 @@ public class BpmMessageServiceImpl implements BpmMessageService { } @Resource - private AdminUserApi adminUserApi ; + private AdminUserApi adminUserApi; + private String getUserOpenId(Long userId) { AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(userId).getData(); - String openId = adminUserRespDTO.getOpenId() ; - return openId ; + String openId = adminUserRespDTO.getOpenId(); + return openId; } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java index f86c1705..58e3c4ff 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java @@ -69,7 +69,7 @@ public class BpmOAProcurePayServiceImpl extends BpmOABaseService implements BpmO private BpmProcessInstanceService bpmProcessInstanceService; /** - * OA 请假对应的流程定义 KEY + * OA 采购支付对应的流程定义 KEY */ public static final String PROCESS_KEY = "oa_procure_pay"; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java index 78b52a52..6db1d31b 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java @@ -40,7 +40,7 @@ public class BpmOAProcureServiceImpl extends BpmOABaseService implements BpmOAPr @Resource private BpmProcessInstanceApi processInstanceApi; /** - * OA 请假对应的流程定义 KEY + * OA 采购申请对应的流程定义 KEY */ public static final String PROCESS_KEY = "oa_procure"; diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/subscribe/dto/SubscribeMessageReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/subscribe/dto/SubscribeMessageReqDTO.java index cc79bfa8..afeaa0d3 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/subscribe/dto/SubscribeMessageReqDTO.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/subscribe/dto/SubscribeMessageReqDTO.java @@ -30,9 +30,13 @@ public class SubscribeMessageReqDTO { @Schema(description = "跳转小程序类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "developer为开发版;trial为体验版;formal为正式版;默认为正式版") @NotNull(message = "跳转小程序类型不能为空") - private String miniprogramState = "formal" ; + private String miniprogramState = "formal"; + + @Schema(description = "小程序页面地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "pages/home/index") + @NotNull(message = "小程序页面地址不能为空") + private String page; public void addData(MsgData data) { - this.data.add(data) ; + this.data.add(data); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/subscribe/SubscribeMessageSendApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/subscribe/SubscribeMessageSendApiImpl.java index 1e543317..91ec0ae4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/subscribe/SubscribeMessageSendApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/subscribe/SubscribeMessageSendApiImpl.java @@ -1,29 +1,15 @@ package cn.iocoder.yudao.module.system.api.subscribe; -import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.api.WxMaSubscribeService; -import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; -import cn.binarywang.wx.miniapp.config.impl.WxMaRedisBetterConfigImpl; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.cache.CacheUtils; import cn.iocoder.yudao.module.system.api.subscribe.dto.MsgData; import cn.iocoder.yudao.module.system.api.subscribe.dto.SubscribeMessageReqDTO; import cn.iocoder.yudao.module.system.service.social.SocialClientService; -import com.binarywang.spring.starter.wxjava.miniapp.properties.WxMaProperties; -import com.binarywang.spring.starter.wxjava.mp.properties.WxMpProperties; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; import lombok.SneakyThrows; -import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps; -import me.chanjar.weixin.mp.api.WxMpService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; - -import java.time.Duration; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -36,7 +22,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; */ @RestController // 提供 RESTful API 接口,给 Feign 调用 @Validated -public class SubscribeMessageSendApiImpl implements SubscribeMessageSendApi{ +public class SubscribeMessageSendApiImpl implements SubscribeMessageSendApi { @Resource private SocialClientService socialClientService; @@ -55,21 +41,21 @@ public class SubscribeMessageSendApiImpl implements SubscribeMessageSendApi{ return success(1L); } - private WxMaSubscribeMessage initWxMaSubscribeMessage( SubscribeMessageReqDTO reqDTO ) { + private WxMaSubscribeMessage initWxMaSubscribeMessage(SubscribeMessageReqDTO reqDTO) { WxMaSubscribeMessage message = WxMaSubscribeMessage.builder() .toUser(reqDTO.getToUser()) .templateId(reqDTO.getTemplateId()) .build(); message.setMiniprogramState(reqDTO.getMiniprogramState()); - List dataList = reqDTO.getData() ; + List dataList = reqDTO.getData(); for (MsgData msgData : dataList) { - WxMaSubscribeMessage.MsgData wxMsgData = new WxMaSubscribeMessage.MsgData() ; - wxMsgData.setName(msgData.getName()) ; - wxMsgData.setValue(msgData.getValue()) ; - message.addData(wxMsgData) ; + WxMaSubscribeMessage.MsgData wxMsgData = new WxMaSubscribeMessage.MsgData(); + wxMsgData.setName(msgData.getName()); + wxMsgData.setValue(msgData.getValue()); + message.addData(wxMsgData); } - message.setPage("pages/home/index") ; - return message ; + message.setPage(reqDTO.getPage()); + return message; } }