REQ-2010: 根据手机查询用户im消息

This commit is contained in:
yanglin 2024-02-28 18:29:00 +08:00
parent a35421e5ed
commit 66ecd05071
9 changed files with 69 additions and 40 deletions

View File

@ -21,6 +21,10 @@
</properties>
<dependencies>
<dependency>
<groupId>cn.axzo.basics</groupId>
<artifactId>basics-profiles-api</artifactId>
</dependency>
<dependency>
<groupId>cn.axzo.maokai</groupId>
<artifactId>maokai-api</artifactId>

View File

@ -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<SearchMessageRespV3> search(SearchMessageReqV3 req);
}

View File

@ -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<SearchMessageRespV3> search(SearchMessageReqV3 req) {
if (req.getLimit() >= 100) {
req.setLimit(100);
}
if (req.getReceiverPersonId() == null && StringUtils.isNotBlank(req.getReceiverPhone())) {
CommonResponse<PersonProfileDto> profileResp = userProfileServiceApi
.getUnionPersonProfile(null, req.getReceiverPhone());
PersonProfileDto personProfile = BizAssertions.assertResponse(profileResp, "未找根据手机找到接受人员");
BizAssertions.assertNotNull(personProfile, "未找根据手机找到接受人员");
req.setReceiverPersonId(personProfile.getId());
}
List<MessageRecordV3> 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);
}
}

View File

@ -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<SearchMessageRespV3> search(SearchMessageReqV3 req) {
if (req.getLimit() >= 100) {
req.setLimit(100);
}
List<MessageRecordV3> 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);
}
}

View File

@ -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<String> 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);
}
}

View File

@ -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;

View File

@ -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;
}

View File

@ -85,7 +85,7 @@ public class BizAssertions {
}
public static <T> T assertResponse(CommonResponse<T> 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;

View File

@ -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() {