REQ-1898: 调整接口返回模型
This commit is contained in:
parent
4ae7ed98ef
commit
9bfca165e2
@ -1,8 +1,8 @@
|
||||
package cn.axzo.msg.center.inside.notices.controller.msg;
|
||||
|
||||
import cn.axzo.msg.center.api.MessageAPIV3;
|
||||
import cn.axzo.msg.center.api.request.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.MessageSendRespV3;
|
||||
import cn.axzo.msg.center.api.request.v3.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.v3.MessageSendRespV3;
|
||||
import cn.axzo.msg.center.inside.notices.service.MessageServiceV3;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
package cn.axzo.msg.center.inside.notices.service;
|
||||
|
||||
import cn.axzo.msg.center.api.request.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.MessageSendRespV3;
|
||||
import cn.axzo.msg.center.api.request.v3.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.v3.MessageSendRespV3;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public interface MessageServiceV3 {
|
||||
MessageSendRespV3 send(MessageSendReqV3 req);
|
||||
}
|
||||
}
|
||||
@ -5,9 +5,10 @@ import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.im.center.api.vo.req.MessageInfo;
|
||||
import cn.axzo.im.center.api.vo.resp.MessageDispatchResp;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.msg.center.api.request.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.MessageSendRespV3;
|
||||
import cn.axzo.msg.center.api.response.MessageSendResultV3;
|
||||
import cn.axzo.msg.center.api.request.v3.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.v3.MessageSendRespV3;
|
||||
import cn.axzo.msg.center.api.response.v3.MessageSendResultV3;
|
||||
import cn.axzo.msg.center.api.response.v3.TemplateSendResultV3;
|
||||
import cn.axzo.msg.center.dal.MessageRecordV3Dao;
|
||||
import cn.axzo.msg.center.domain.entity.BizEventMapping;
|
||||
import cn.axzo.msg.center.domain.entity.MessageRecordV3;
|
||||
@ -66,7 +67,7 @@ public class MessageServiceV3Impl implements MessageServiceV3 {
|
||||
.queryEnableTemplateByCode(cfg.getTemplateCode())
|
||||
.orElseThrow(() -> new ServiceException(String.format(
|
||||
"未查询到对应的模板, templateCode=%s", cfg.getTemplateCode())));
|
||||
batches.add(new TemplateMessage(req, batchNo, template));
|
||||
batches.add(new TemplateMessage(req, batchNo, cfg, template));
|
||||
}
|
||||
|
||||
List<MessageRecordV3> messages = batches.stream()
|
||||
@ -75,9 +76,15 @@ public class MessageServiceV3Impl implements MessageServiceV3 {
|
||||
messageRecordV3Dao.saveBatch(messages);
|
||||
batches.forEach(this::batchSendByTemplate);
|
||||
MessageSendRespV3 resp = new MessageSendRespV3();
|
||||
for (MessageRecordV3 message : messages) {
|
||||
resp.addResult(new MessageSendResultV3(
|
||||
message.getReceiverPersonId(), message.getId()));
|
||||
for (TemplateMessage batch : batches) {
|
||||
TemplateSendResultV3 templateResult = new TemplateSendResultV3();
|
||||
templateResult.setTemplateCode(batch.getTemplate().getCode());
|
||||
templateResult.setBizActionCategory(batch.getConfig().getCategory());
|
||||
resp.addResult(templateResult);
|
||||
for (MessageRecordV3 message : batch.getMessageRecords()) {
|
||||
templateResult.addResult(new MessageSendResultV3(
|
||||
message.getReceiverPersonId(), message.getId()));
|
||||
}
|
||||
}
|
||||
return resp;
|
||||
}
|
||||
|
||||
@ -4,12 +4,13 @@ import cn.axzo.framework.jackson.utility.JSON;
|
||||
import cn.axzo.im.center.api.vo.req.MessageInfo;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.msg.center.api.enums.MsgStateV3Enum;
|
||||
import cn.axzo.msg.center.api.request.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.request.v3.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.common.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.msg.center.common.utils.PlaceholderResolver;
|
||||
import cn.axzo.msg.center.domain.entity.MessageRecordV3;
|
||||
import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO;
|
||||
import cn.axzo.msg.center.message.domain.vo.GeneralMessagePushVO;
|
||||
import cn.axzo.msg.center.service.bizevent.request.ReachDto;
|
||||
import cn.axzo.msg.center.service.dto.PersonV3DTO;
|
||||
import cn.axzo.msg.center.utils.UUIDUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -34,6 +35,8 @@ class TemplateMessage {
|
||||
private final MessageSendReqV3 req;
|
||||
private final String batchNo;
|
||||
@Getter
|
||||
private final ReachDto config;
|
||||
@Getter
|
||||
private final MessageTemplateDTO template;
|
||||
|
||||
private List<MessageRecordV3> records;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
package cn.axzo.msg.center.api;
|
||||
|
||||
import cn.axzo.msg.center.api.fallback.LoggingFallbackFactory;
|
||||
import cn.axzo.msg.center.api.request.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.MessageSendRespV3;
|
||||
import cn.axzo.msg.center.api.request.v3.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.v3.MessageSendRespV3;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package cn.axzo.msg.center.api.request;
|
||||
package cn.axzo.msg.center.api.request.v3;
|
||||
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.msg.center.service.dto.PersonV3DTO;
|
||||
@ -1,47 +0,0 @@
|
||||
package cn.axzo.msg.center.api.response;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public class MessageSendRespV3 implements Serializable {
|
||||
|
||||
/**
|
||||
* 接收者personId -> 发送结果
|
||||
*/
|
||||
private final Map<Long, MessageSendResultV3> receiverPersonId2Result = new HashMap<>();
|
||||
|
||||
public void addResult(MessageSendResultV3 result) {
|
||||
receiverPersonId2Result.put(result.getReceiverPersonId(), result);
|
||||
}
|
||||
|
||||
public Optional<MessageSendResultV3> findResultByReceiver(Long receiverPersonId) {
|
||||
if (receiverPersonId == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
return Optional.ofNullable(receiverPersonId2Result.get(receiverPersonId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回的数量不一定和发送请求中的receivers数量一致, 发送的时候根据receiver的personId去了重
|
||||
* <p>推荐使用 {@link #findResultByReceiver}, 根据接收者获取发送结果
|
||||
*
|
||||
* @return 所有的发送结果
|
||||
*/
|
||||
public Collection<MessageSendResultV3> getSendResults() {
|
||||
return new ArrayList<>(receiverPersonId2Result.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(receiverPersonId2Result);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,41 @@
|
||||
package cn.axzo.msg.center.api.response.v3;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public class MessageSendRespV3 implements Serializable {
|
||||
|
||||
/**
|
||||
* 模版code -> 模版发送结果
|
||||
*/
|
||||
private Map<String, TemplateSendResultV3> templateCode2SendResult = new HashMap<>();
|
||||
|
||||
public void addResult(TemplateSendResultV3 result) {
|
||||
templateCode2SendResult.put(result.getTemplateCode(), result);
|
||||
}
|
||||
|
||||
public Optional<TemplateSendResultV3> findTemplateSendResult(String templateCode) {
|
||||
return Optional.ofNullable(templateCode2SendResult.get(templateCode));
|
||||
}
|
||||
|
||||
public Map<String, TemplateSendResultV3> getTemplateSendResult() {
|
||||
return Collections.unmodifiableMap(templateCode2SendResult);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(templateCode2SendResult);
|
||||
}
|
||||
}
|
||||
@ -1,15 +1,17 @@
|
||||
package cn.axzo.msg.center.api.response;
|
||||
package cn.axzo.msg.center.api.response.v3;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ -0,0 +1,61 @@
|
||||
package cn.axzo.msg.center.api.response.v3;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TemplateSendResultV3 implements Serializable {
|
||||
|
||||
/**
|
||||
* 接收者personId -> 接收人发送结果
|
||||
*/
|
||||
private Map<Long, MessageSendResultV3> receiverPersonId2SendResult = new HashMap<>();
|
||||
@Getter
|
||||
private String templateCode;
|
||||
/**
|
||||
* NOTIFICATION: 通知, PENDING: 待办
|
||||
*/
|
||||
@Getter
|
||||
private String bizActionCategory;
|
||||
|
||||
public void addResult(MessageSendResultV3 result) {
|
||||
receiverPersonId2SendResult.put(result.getReceiverPersonId(), result);
|
||||
}
|
||||
|
||||
public Optional<MessageSendResultV3> findResultByReceiver(Long receiverPersonId) {
|
||||
if (receiverPersonId == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
return Optional.ofNullable(receiverPersonId2SendResult.get(receiverPersonId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回的数量不一定和发送请求中的receivers数量一致, 发送的时候根据receiver的personId去了重
|
||||
* <p>推荐使用 {@link #findResultByReceiver}, 根据接收者获取发送结果
|
||||
*
|
||||
* @return 所有的发送结果
|
||||
*/
|
||||
public Collection<MessageSendResultV3> getMessageSendResults() {
|
||||
return new ArrayList<>(receiverPersonId2SendResult.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(receiverPersonId2SendResult);
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,8 @@
|
||||
package cn.axzo.msg.center.inside.notices.service;
|
||||
|
||||
import cn.axzo.msg.center.MsgCenterApplication;
|
||||
import cn.axzo.msg.center.api.request.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.MessageSendRespV3;
|
||||
import cn.axzo.msg.center.api.request.v3.MessageSendReqV3;
|
||||
import cn.axzo.msg.center.api.response.v3.MessageSendRespV3;
|
||||
import cn.axzo.msg.center.common.utils.MiscUtils;
|
||||
import cn.axzo.msg.center.service.dto.IdentityDTO;
|
||||
import cn.axzo.msg.center.service.dto.PersonV3DTO;
|
||||
@ -65,7 +65,8 @@ class MessageServiceV3Test {
|
||||
.build()));
|
||||
|
||||
MessageSendRespV3 resp = messageServiceV3.send(req);
|
||||
System.out.println(JSON.toJSONString(resp));
|
||||
String json = JSON.toJSONString(resp);
|
||||
System.out.println(json);
|
||||
|
||||
// 使用异步发送, 避免测试结束
|
||||
MiscUtils.sleepQuietly(10, TimeUnit.SECONDS);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user