diff --git a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java index f4c2d45e89..66d04ff05f 100644 --- a/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java +++ b/epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java @@ -74,4 +74,9 @@ public interface TopicConstants { * 社区服务,原居民需求 */ String COMMUNITY_SERVICE="community_service"; + + /** + * 志愿者 + */ + String VOLUNTEER ="volunteer"; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseFormDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseFormDTO.java new file mode 100644 index 0000000000..fc436b5b29 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/MqBaseFormDTO.java @@ -0,0 +1,45 @@ +package com.epmet.commons.tools.dto.form.mq; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * desc:rocketmq 基础参数 + * + * @author zhaoqifeng + * @dscription + * @date 2021/6/7 16:23 + */ +@NoArgsConstructor +@Data +public class MqBaseFormDTO implements Serializable { + private static final long serialVersionUID = -6616119263736477518L; + + /** + * 客户Id + */ + private String customerId; + + /** + * 对象id 没有则查询全部 + */ + private String objectId; + + /** + * 对象id 没有则查询全部 + */ + private List objectIdList; + + public MqBaseFormDTO(String customerId, String objectId) { + this.customerId = customerId; + this.objectId = objectId; + } + + public MqBaseFormDTO(String customerId, List objectIdList) { + this.customerId = customerId; + this.objectIdList = objectIdList; + } +} diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java index ca857bf0f5..13f409ca36 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java @@ -105,6 +105,11 @@ public interface SystemMessageType { */ String IC_RESI_USER_DEL = "ic_resi_user_del"; + /** + * 志愿者变动 + */ + String VOLUNTEER_CHANGED = "volunteer_changed"; + /** * 需求完成,如果服务方是区域化党建单位,重新计算这个单位的满意度 */ diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java index 24dbd8694f..dba68dfe74 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/SystemMsgFormDTO.java @@ -1,9 +1,13 @@ package com.epmet.dto.form; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; +@AllArgsConstructor +@NoArgsConstructor @Data public class SystemMsgFormDTO { diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java index fa5d21967a..debd15686f 100644 --- a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java @@ -3,6 +3,7 @@ package com.epmet.send; import com.alibaba.fastjson.JSON; import com.epmet.commons.rocketmq.messages.*; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.form.mq.MqBaseFormDTO; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.SystemMessageType; import com.epmet.dto.form.SystemMsgFormDTO; @@ -207,6 +208,35 @@ public class SendMqMsgUtil { return true; } log.error("发送(项目变动)系统消息到message服务失败:{},msg:{}", JSON.toJSONString(sendMsgResult), JSON.toJSONString(systemMsgFormDTO)); + } catch (Exception e) { + log.error("sendProjectMqMsg exception", e); + } + return false; + } + + /** + * desc: 发送mq消息 + * + * @param msgContent + * @return boolean + * @author LiuJanJun + * @date 2021/4/23 3:01 下午 + * @remark 失败重试1次,调用端自行判断如果失败是否要继续执行 + */ + public boolean sendRocketMqMsg(String msgType, MqBaseFormDTO msgContent) { + try { + SystemMsgFormDTO form = new SystemMsgFormDTO(msgType,msgContent); + Result sendMsgResult; + log.info("sendRocketMqMsg param:{}",msgContent); + int retryTime = 0; + do { + sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); + } while ((sendMsgResult == null || !sendMsgResult.success()) && retryTime++ < NumConstant.TWO); + + if (sendMsgResult != null && sendMsgResult.success()) { + return true; + } + log.error("发送系统消息到message服务失败:{},msg:{}", JSON.toJSONString(sendMsgResult), JSON.toJSONString(form)); } catch (Exception e) { log.error("sendMqMsg exception", e); } diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java index 77fe52d141..3e210d13a0 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java @@ -230,6 +230,10 @@ public class SystemMessageServiceImpl implements SystemMessageService { case SystemMessageType.FINISH_USER_DEMAND: topic=TopicConstants.COMMUNITY_SERVICE; break; + //志愿者变动 + case SystemMessageType.VOLUNTEER_CHANGED: + topic=TopicConstants.VOLUNTEER; + break; default: logger.error("getTopicByMsgType msgType:{} is not support for any topic", msgType); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index efe9ecc9d0..7d9a20dfd9 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -30,6 +30,7 @@ import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.Constant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.dto.form.mq.MqBaseFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; import com.epmet.commons.tools.enums.IcFormCodeEnum; @@ -60,6 +61,7 @@ import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.resi.partymember.dto.partymember.IcPartyMemberDTO; +import com.epmet.send.SendMqMsgUtil; import com.epmet.service.IcResiUserExportService; import com.epmet.service.IcResiUserImportService; import com.epmet.service.IcResiUserService; @@ -217,9 +219,24 @@ public class IcResiUserController implements ResultDataResolver { form.setMessageType(SystemMessageType.IC_RESI_USER_ADD); form.setContent(mqMsg); epmetMessageOpenFeignClient.sendSystemMsgByMQ(form); + + this.sendVolunteerMsg(tokenDto.getCustomerId(), resiUserId); return new Result(); } + /** + * desc:发送 志愿者变动消息 + * @param customerId + * @param resiUserId + */ + private void sendVolunteerMsg(String customerId, String resiUserId) { + //发送志愿者人员消息变动 + boolean flag = SendMqMsgUtil.build().sendRocketMqMsg(SystemMessageType.VOLUNTEER_CHANGED, new MqBaseFormDTO(customerId, resiUserId)); + if (!flag){ + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"发送志愿者变动消息失败","发送志愿者变动消息失败"); + } + } + /** * @Author sun * @Description 党建互联平台--修改居民信息 @@ -230,6 +247,8 @@ public class IcResiUserController implements ResultDataResolver { String resiUserId = icResiUserService.edit(tokenDto, formDTO); //推送MQ事件 editResiMq(tokenDto.getCustomerId(), resiUserId); + + this.sendVolunteerMsg(tokenDto.getCustomerId(), resiUserId); return new Result(); }