From 00e8ae34b9badd75ee5fd307a71c9e1b0675a8a8 Mon Sep 17 00:00:00 2001 From: Kurisu Date: Tue, 28 Sep 2021 11:13:54 +0800 Subject: [PATCH] :lipstick: 优化发送接口 --- fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/api/IMessageCenterService.java | 4 +++- fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/params/TemplateMessageParam.java | 12 +++--------- fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/MessageSendMq.java | 4 ++++ fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/SendResult.java | 25 +++++++++++++++++++++++++ fw-hestia-server/src/main/java/cn/fw/hestia/server/controller/api/MessageCenterServiceImpl.java | 5 ++++- fw-hestia-service/src/main/java/cn/fw/hestia/service/buz/MessageCenterBizService.java | 32 ++++++++++++++++++++++++-------- 6 files changed, 63 insertions(+), 19 deletions(-) create mode 100644 fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/SendResult.java diff --git a/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/api/IMessageCenterService.java b/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/api/IMessageCenterService.java index 6f4033a..864d5f3 100644 --- a/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/api/IMessageCenterService.java +++ b/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/api/IMessageCenterService.java @@ -2,6 +2,7 @@ package cn.fw.hestia.sdk.api; import cn.fw.data.base.domain.common.Message; import cn.fw.hestia.sdk.params.TemplateMessageParam; +import cn.fw.hestia.sdk.result.SendResult; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import java.util.List; /** * @author : kurisu @@ -26,7 +28,7 @@ public interface IMessageCenterService { * @return */ @PostMapping("/send") - Message send(@Valid @RequestBody TemplateMessageParam templateMessageParam); + Message> send(@Valid @RequestBody TemplateMessageParam templateMessageParam); /** * 撤回消息 diff --git a/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/params/TemplateMessageParam.java b/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/params/TemplateMessageParam.java index 547463f..2bfdb1c 100644 --- a/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/params/TemplateMessageParam.java +++ b/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/params/TemplateMessageParam.java @@ -3,11 +3,11 @@ package cn.fw.hestia.sdk.params; import lombok.Data; import lombok.ToString; -import javax.validation.constraints.Max; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.util.Map; +import java.util.Set; /** * 模板消息param @@ -19,12 +19,6 @@ import java.util.Map; * 变更结果:{{keyword2.DATA}} * {{remark.DATA}} * - * 示例: - * 尊敬的客户,您的业务状态已经发生变更 变更详情如下: - * 变更类型:组局地点 - * 变更结果:由清水河改为滨江 - * 如有疑问,请拨打客服电话 - * * @author kurisu */ @Data @@ -33,8 +27,8 @@ public class TemplateMessageParam { /** * 会员id */ - @NotNull(message = "会员id不能为空") - private Long memberId; + @Size(min = 1, message = "会员id不能为空") + private Set memberIdSet; /** * 标题 小程序展示用 * maxLength 32 diff --git a/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/MessageSendMq.java b/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/MessageSendMq.java index 32cd6f2..5a5098e 100644 --- a/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/MessageSendMq.java +++ b/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/MessageSendMq.java @@ -22,6 +22,10 @@ public class MessageSendMq { */ private Long sceneToken; /** + * 用户id + */ + private Long memberId; + /** * 发送时间 */ private Date sendTime; diff --git a/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/SendResult.java b/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/SendResult.java new file mode 100644 index 0000000..cfd2250 --- /dev/null +++ b/fw-hestia-sdk/src/main/java/cn/fw/hestia/sdk/result/SendResult.java @@ -0,0 +1,25 @@ +package cn.fw.hestia.sdk.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author : kurisu + * @className : SendResult + * @description : 消息发送返回结果 + * @date: 2021-09-28 11:00 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SendResult { + /** + * 唯一标识 + */ + private Long sceneToken; + /** + * 用户id + */ + private Long memberId; +} diff --git a/fw-hestia-server/src/main/java/cn/fw/hestia/server/controller/api/MessageCenterServiceImpl.java b/fw-hestia-server/src/main/java/cn/fw/hestia/server/controller/api/MessageCenterServiceImpl.java index a05855f..60b7ba7 100644 --- a/fw-hestia-server/src/main/java/cn/fw/hestia/server/controller/api/MessageCenterServiceImpl.java +++ b/fw-hestia-server/src/main/java/cn/fw/hestia/server/controller/api/MessageCenterServiceImpl.java @@ -4,6 +4,7 @@ import cn.fw.common.web.annotation.ControllerMethod; import cn.fw.data.base.domain.common.Message; import cn.fw.hestia.sdk.api.IMessageCenterService; import cn.fw.hestia.sdk.params.TemplateMessageParam; +import cn.fw.hestia.sdk.result.SendResult; import cn.fw.hestia.service.buz.MessageCenterBizService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -12,6 +13,8 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import java.util.List; + import static cn.fw.common.web.util.ResultBuilder.success; /** @@ -34,7 +37,7 @@ public class MessageCenterServiceImpl implements IMessageCenterService { @PostMapping("/send") @Override @ControllerMethod("发送模板消息") - public Message send(@Valid @RequestBody TemplateMessageParam templateMessageParam) { + public Message> send(@Valid @RequestBody TemplateMessageParam templateMessageParam) { return success(messageCenterBizService.saveMessage(templateMessageParam)); } diff --git a/fw-hestia-service/src/main/java/cn/fw/hestia/service/buz/MessageCenterBizService.java b/fw-hestia-service/src/main/java/cn/fw/hestia/service/buz/MessageCenterBizService.java index 879a27d..b2998e5 100644 --- a/fw-hestia-service/src/main/java/cn/fw/hestia/service/buz/MessageCenterBizService.java +++ b/fw-hestia-service/src/main/java/cn/fw/hestia/service/buz/MessageCenterBizService.java @@ -15,6 +15,7 @@ import cn.fw.hestia.rpc.passport.TemplateMessageService; import cn.fw.hestia.rpc.passport.dto.TMParam; import cn.fw.hestia.sdk.params.TemplateMessageParam; import cn.fw.hestia.sdk.result.MessageSendMq; +import cn.fw.hestia.sdk.result.SendResult; import cn.fw.hestia.service.data.MessageHistoryService; import cn.fw.hestia.service.data.SendLogService; import cn.fw.passport.sdk.api.param.WxMpTempMessageData; @@ -63,10 +64,14 @@ public class MessageCenterBizService { * @return token */ @Transactional(rollbackFor = Exception.class) - public Long saveMessage(TemplateMessageParam templateMessageParam) { - MessageHistory messageHistory = createBean(templateMessageParam); - messageHistoryService.save(messageHistory); - return messageHistory.getId(); + public List saveMessage(TemplateMessageParam templateMessageParam) { + List messageHistory = createBeans(templateMessageParam); + messageHistoryService.saveBatch(messageHistory); + List list = new ArrayList<>(); + for (MessageHistory history : messageHistory) { + list.add(new SendResult(history.getId(), history.getMemberId())); + } + return list; } @@ -84,7 +89,7 @@ public class MessageCenterBizService { if (succeed) { history.setState(MessageStateEnum.SUMI); //发送成功发送mq - sendMsgProducer.send(new MessageSendMq(history.getId(), new Date())); + sendMsgProducer.send(new MessageSendMq(history.getId(), history.getMemberId(), new Date())); } else { history.setSendTime(DateUtil.getExpired(history.getSendTime(), 1 << frequency, Calendar.MINUTE)); } @@ -204,7 +209,7 @@ public class MessageCenterBizService { boolean succeed = MessageConstant.SUCCEED_STR.equals(result); if (succeed) { messageHistory.setState(MessageStateEnum.SUMI); - sendMsgProducer.send(new MessageSendMq(messageHistory.getId(), new Date())); + sendMsgProducer.send(new MessageSendMq(messageHistory.getId(), messageHistory.getMemberId(), new Date())); } messageHistoryService.updateById(messageHistory); return result; @@ -223,9 +228,20 @@ public class MessageCenterBizService { return result; } - private MessageHistory createBean(TemplateMessageParam param) { + private List createBeans(TemplateMessageParam param) { + List list = new ArrayList<>(); + Set idSet = param.getMemberIdSet(); + BV.isNotEmpty(idSet, () -> "发送的目标用户不能为空"); + for (Long memberId : idSet) { + createBeans(param, memberId); + list.add(createBeans(param, memberId)); + } + return list; + } + + private MessageHistory createBeans(TemplateMessageParam param, Long memberId) { MessageHistory messageHistory = new MessageHistory(); - messageHistory.setMemberId(param.getMemberId()); + messageHistory.setMemberId(memberId); messageHistory.setTemplateCode(getTemplateCode()); messageHistory.setTitle(param.getTitle()); messageHistory.setContent(param.getContent()); -- libgit2 0.22.2