diff --git a/inside-notices/pom.xml b/inside-notices/pom.xml index c53fc259..4c6ca5b6 100644 --- a/inside-notices/pom.xml +++ b/inside-notices/pom.xml @@ -21,6 +21,10 @@ + + cn.axzo.basics + basics-profiles-api + cn.axzo.maokai maokai-api diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/MessageServiceV3.java b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/MessageServiceV3.java index feca8b08..b18bed9b 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/MessageServiceV3.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/MessageServiceV3.java @@ -1,18 +1,11 @@ package cn.axzo.msg.center.inside.notices.service; import cn.axzo.msg.center.api.request.v3.MessageSendReqV3; -import cn.axzo.msg.center.api.request.v3.SearchMessageReqV3; import cn.axzo.msg.center.api.response.v3.MessageSendRespV3; -import cn.axzo.msg.center.api.response.v3.SearchMessageRespV3; - -import java.util.List; /** * @author yanglin */ public interface MessageServiceV3 { MessageSendRespV3 send(MessageSendReqV3 req); - - List search(SearchMessageReqV3 req); - } \ No newline at end of file diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/impl/v3/MessageRecordServiceV3.java b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/impl/v3/MessageRecordServiceV3.java new file mode 100644 index 00000000..6bb30430 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/impl/v3/MessageRecordServiceV3.java @@ -0,0 +1,55 @@ +package cn.axzo.msg.center.inside.notices.service.impl.v3; + +import cn.axzo.basics.common.BeanMapper; +import cn.axzo.basics.profiles.api.UserProfileServiceApi; +import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; +import cn.axzo.msg.center.api.request.v3.SearchMessageReqV3; +import cn.axzo.msg.center.api.response.v3.SearchMessageRespV3; +import cn.axzo.msg.center.common.utils.BizAssertions; +import cn.axzo.msg.center.dal.MessageRecordV3Dao; +import cn.axzo.msg.center.domain.entity.MessageRecordV3; +import cn.azxo.framework.common.model.CommonResponse; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author yanglin + */ +@Component +@RequiredArgsConstructor +public class MessageRecordServiceV3 { + + private final MessageRecordV3Dao messageRecordV3Dao; + private final UserProfileServiceApi userProfileServiceApi; + + public List search(SearchMessageReqV3 req) { + if (req.getLimit() >= 100) { + req.setLimit(100); + } + if (req.getReceiverPersonId() == null && StringUtils.isNotBlank(req.getReceiverPhone())) { + CommonResponse profileResp = userProfileServiceApi + .getUnionPersonProfile(null, req.getReceiverPhone()); + PersonProfileDto personProfile = BizAssertions.assertResponse(profileResp, "未找根据手机找到接受人员"); + BizAssertions.assertNotNull(personProfile, "未找根据手机找到接受人员"); + req.setReceiverPersonId(personProfile.getId()); + } + List records = messageRecordV3Dao.lambdaQuery() + .eq(req.getReceiverOuId() != null, MessageRecordV3::getReceiverOuId, req.getReceiverOuId()) + .eq(req.getReceiverPersonId() != null, MessageRecordV3::getReceiverPersonId, req.getReceiverPersonId()) + .eq(StringUtils.isNotBlank(req.getBizEventMappingCode()), MessageRecordV3::getBizEventMappingCode, req.getBizEventMappingCode()) + .eq(StringUtils.isNotBlank(req.getBizCode()), MessageRecordV3::getBizCode, req.getBizCode()) + .eq(StringUtils.isNotBlank(req.getTemplateCode()), MessageRecordV3::getTemplateCode, req.getTemplateCode()) + .like(StringUtils.isNotBlank(req.getTitle()), MessageRecordV3::getTitle, req.getTitle()) + .like(StringUtils.isNotBlank(req.getContent()), MessageRecordV3::getContent, req.getContent()) + .ge(req.getStartTime() != null, MessageRecordV3::getCreateAt, req.getStartTime()) + .le(req.getEndTime() != null, MessageRecordV3::getCreateAt, req.getEndTime()) + .orderByDesc(MessageRecordV3::getId) + .last("LIMIT " + req.getLimit()) + .list(); + return BeanMapper.copyList(records, SearchMessageRespV3.class); + } + +} diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/impl/v3/MessageServiceV3Impl.java b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/impl/v3/MessageServiceV3Impl.java index 26cbb7f9..76393dfd 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/impl/v3/MessageServiceV3Impl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/service/impl/v3/MessageServiceV3Impl.java @@ -1,15 +1,10 @@ package cn.axzo.msg.center.inside.notices.service.impl.v3; -import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.exception.ServiceException; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.msg.center.api.request.v3.MessageSendReqV3; -import cn.axzo.msg.center.api.request.v3.SearchMessageReqV3; import cn.axzo.msg.center.api.response.v3.MessageSendRespV3; -import cn.axzo.msg.center.api.response.v3.SearchMessageRespV3; -import cn.axzo.msg.center.dal.MessageRecordV3Dao; import cn.axzo.msg.center.domain.entity.BizEventMapping; -import cn.axzo.msg.center.domain.entity.MessageRecordV3; import cn.axzo.msg.center.domain.enums.Channels; import cn.axzo.msg.center.inside.notices.service.MessageServiceV3; import cn.axzo.msg.center.inside.notices.service.impl.v3.msg.MessageMappingProcessor; @@ -22,7 +17,6 @@ import cn.axzo.msg.center.service.bizevent.request.ReachDto; import cn.axzo.msg.center.utils.UUIDUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; @@ -42,7 +36,6 @@ public class MessageServiceV3Impl implements MessageServiceV3 { private final MessageTemplateNewService messageTemplateNewService; private final FunctionalTransactionTemplate transactionTemplate; private final ApplicationContext beanFactory; - private final MessageRecordV3Dao messageRecordV3Dao; @Override public MessageSendRespV3 send(MessageSendReqV3 req) { @@ -79,25 +72,4 @@ public class MessageServiceV3Impl implements MessageServiceV3 { return resp; } - @Override - public List search(SearchMessageReqV3 req) { - if (req.getLimit() >= 100) { - req.setLimit(100); - } - List records = messageRecordV3Dao.lambdaQuery() - .eq(req.getReceiverOuId() != null, MessageRecordV3::getReceiverOuId, req.getReceiverOuId()) - .eq(req.getReceiverPersonId() != null, MessageRecordV3::getReceiverPersonId, req.getReceiverPersonId()) - .eq(StringUtils.isNotBlank(req.getBizEventMappingCode()), MessageRecordV3::getBizEventMappingCode, req.getBizEventMappingCode()) - .eq(StringUtils.isNotBlank(req.getBizCode()), MessageRecordV3::getBizCode, req.getBizCode()) - .eq(StringUtils.isNotBlank(req.getTemplateCode()), MessageRecordV3::getTemplateCode, req.getTemplateCode()) - .like(StringUtils.isNotBlank(req.getTitle()), MessageRecordV3::getTitle, req.getTitle()) - .like(StringUtils.isNotBlank(req.getContent()), MessageRecordV3::getContent, req.getContent()) - .ge(req.getStartTime() != null, MessageRecordV3::getCreateAt, req.getStartTime()) - .le(req.getEndTime() != null, MessageRecordV3::getCreateAt, req.getEndTime()) - .orderByDesc(MessageRecordV3::getId) - .last("LIMIT " + req.getLimit()) - .list(); - return BeanMapper.copyList(records, SearchMessageRespV3.class); - } - } \ No newline at end of file diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PrivateMessageController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PrivateMessageController.java index 076b5b8a..6781ce24 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PrivateMessageController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PrivateMessageController.java @@ -1,7 +1,7 @@ package cn.axzo.msg.center.message.controller; import cn.axzo.msg.center.api.request.v3.SearchMessageReqV3; -import cn.axzo.msg.center.inside.notices.service.MessageServiceV3; +import cn.axzo.msg.center.inside.notices.service.impl.v3.MessageRecordServiceV3; import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; @@ -26,7 +26,7 @@ import java.util.List; public class PrivateMessageController { private final PendingMessageNewService pendingMessageNewService; - private final MessageServiceV3 messageServiceV3; + private final MessageRecordServiceV3 messageRecordServiceV3; @PostMapping("/determinePageQueryTemplateCode") public List determinePageQueryTemplateCode( @@ -42,7 +42,7 @@ public class PrivateMessageController { @PostMapping("/searchImRecord") public Object searchImRecord(@RequestBody @Valid SearchMessageReqV3 req) { - return messageServiceV3.search(req); + return messageRecordServiceV3.search(req); } } \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/api/request/v3/SearchMessageReqV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/api/request/v3/SearchMessageReqV3.java index 1c9cc54c..0a646857 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/api/request/v3/SearchMessageReqV3.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/api/request/v3/SearchMessageReqV3.java @@ -14,6 +14,7 @@ import java.util.Date; public class SearchMessageReqV3 { private Long receiverOuId; private Long receiverPersonId; + private String receiverPhone; private String bizEventMappingCode; private String bizCode; private String title; diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/api/response/v3/SearchMessageRespV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/api/response/v3/SearchMessageRespV3.java index 3643cb6b..56037edb 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/api/response/v3/SearchMessageRespV3.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/api/response/v3/SearchMessageRespV3.java @@ -5,6 +5,7 @@ import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -130,5 +131,6 @@ public class SearchMessageRespV3 { /** * 发送时间 */ + @JsonFormat(pattern = "yyyy-MM-hh HH:mm:ss") private Date sendTime; } \ No newline at end of file diff --git a/msg-center-common/src/main/java/cn/axzo/msg/center/common/utils/BizAssertions.java b/msg-center-common/src/main/java/cn/axzo/msg/center/common/utils/BizAssertions.java index 5cc33c65..ccd62db5 100644 --- a/msg-center-common/src/main/java/cn/axzo/msg/center/common/utils/BizAssertions.java +++ b/msg-center-common/src/main/java/cn/axzo/msg/center/common/utils/BizAssertions.java @@ -85,7 +85,7 @@ public class BizAssertions { } public static T assertResponse(CommonResponse response, String message, Object... args) { - if (response.getCode() != HttpStatus.HTTP_OK) { + if (response == null || response.getCode() != HttpStatus.HTTP_OK) { ServiceException e = new ServiceException(MessageFormatter.arrayFormat(message, args).getMessage()); log.warn("remote call response with error", e); throw e; diff --git a/start/src/main/java/cn/axzo/msg/center/MsgCenterConfig.java b/start/src/main/java/cn/axzo/msg/center/MsgCenterConfig.java index e63be196..6ad4eeef 100644 --- a/start/src/main/java/cn/axzo/msg/center/MsgCenterConfig.java +++ b/start/src/main/java/cn/axzo/msg/center/MsgCenterConfig.java @@ -13,6 +13,7 @@ import java.util.concurrent.TimeUnit; import static cn.axzo.msg.center.MsgCenterConfig.IM_CENTER; import static cn.axzo.msg.center.MsgCenterConfig.WORKSPACE; +import static cn.axzo.msg.center.MsgCenterConfig.PUDGE; /** * @author cn @@ -21,11 +22,12 @@ import static cn.axzo.msg.center.MsgCenterConfig.WORKSPACE; * @date 2023/5/30 11:33 */ @Configuration -@EnableFeignClients(basePackages = {IM_CENTER, WORKSPACE}) +@EnableFeignClients(basePackages = {IM_CENTER, WORKSPACE, PUDGE}) public class MsgCenterConfig { public static final String IM_CENTER = "cn.axzo.im.center.api.feign"; public static final String WORKSPACE = "cn.axzo.apollo.workspace"; + public static final String PUDGE = "cn.axzo.basics.profiles.api"; @Bean @Primary public ExecutorService defaultExecutor() {