Merge branch 'feature/REQ-1507' of axzsource.com:universal/infrastructure/backend/msg-center-plat into dev

This commit is contained in:
luofu 2023-11-14 17:44:30 +08:00
commit cc6ccd18f3
6 changed files with 133 additions and 2 deletions

View File

@ -10,6 +10,7 @@ import cn.axzo.msg.center.service.pending.client.PendingMessageClient;
import cn.axzo.msg.center.service.pending.request.PendingMessageCountUncompletedRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageQueryRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.service.pending.response.PendingMessageStatisticResponse;
@ -56,6 +57,11 @@ public class PendingMessageNewController implements PendingMessageClient {
return CommonResponse.success(pendingMessageNewService.pageQuery(request));
}
@Override
public CommonResponse<PendingMessageResponse> query(PendingMessageQueryRequest request) {
return CommonResponse.success(pendingMessageNewService.query(request));
}
@Override
public CommonResponse<PendingMessageResponse> detail(String msgIdentityCode, TerminalTypeEnum terminalType) {
PendingMessageDTO pendingMessage = pendingMessageNewService.detail(msgIdentityCode, terminalType)

View File

@ -6,6 +6,7 @@ import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam;
import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageQueryRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.azxo.framework.common.model.Page;
@ -45,6 +46,14 @@ public interface PendingMessageNewService {
*/
Page<PendingMessageResponse> pageQuery(PendingMessagePageRequest request);
/**
* 代办列表指定item查询
*
* @param request 查询相关参数
* @return 指定的item数据
*/
PendingMessageResponse query(PendingMessageQueryRequest request);
/**
* 查询代办详情
*

View File

@ -31,6 +31,7 @@ import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageQueryRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.utils.JSONObjectUtil;
import cn.axzo.msg.center.utils.MessageCardUtil;
@ -130,6 +131,18 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
return Page.toPage(request.getPage(), request.getPageSize(), result.getTotal(), responseRecords);
}
@Override
public PendingMessageResponse query(PendingMessageQueryRequest request) {
return pendingMessageRecordDao.queryByIdentityCode(request.getMsgIdentityCode())
.filter(v -> filter(v, request))
.map(v -> {
List<MessageTemplateDTO> messageTemplates = messageTemplateNewService
.listByTemplateCodes(Lists.newArrayList(v.getTemplateCode()));
return convert(v, messageTemplates).toResponse(request.getTerminalType());
})
.orElse(null);
}
@Override
public Optional<PendingMessageDTO> detail(String msgIdentityCode, TerminalTypeEnum terminalType) {
if (StringUtils.isBlank(msgIdentityCode)) {
@ -143,8 +156,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
}
List<MessageTemplateDTO> messageTemplates = messageTemplateNewService
.listByTemplateCodes(Lists.newArrayList(record.getTemplateCode()));
return pendingMessageRecordDao.queryByIdentityCode(msgIdentityCode)
.map(v -> convert(v, messageTemplates));
return Optional.of(convert(record, messageTemplates));
}
@Override
@ -368,4 +380,21 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
record.setBizFinalState(param.getBizFinalState());
record.setDeadline(param.getDeadline());
}
private boolean filter(PendingMessageRecord pendingMessage, PendingMessageQueryRequest request) {
if (Objects.nonNull(request.getBizFinalState())
&& !request.getBizFinalState().equals(pendingMessage.getBizFinalState())) {
return false;
}
if (Objects.nonNull(request.getMsgState())
&& !request.getMsgState().equals(pendingMessage.getState())) {
return false;
}
if (StringUtils.isNotBlank(request.getTitle())
&& !pendingMessage.getTitle().contains(request.getTitle())) {
return false;
}
return Objects.isNull(request.getWorkspaceId())
|| Objects.equals(request.getWorkspaceId(), pendingMessage.getOrgId());
}
}

View File

@ -5,6 +5,7 @@ import cn.axzo.msg.center.service.pending.client.fallback.PendingMessageClientFa
import cn.axzo.msg.center.service.pending.request.PendingMessageCountUncompletedRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageQueryRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.service.pending.response.PendingMessageStatisticResponse;
@ -61,6 +62,15 @@ public interface PendingMessageClient {
@PostMapping(value = "/pending-message/record/page", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<Page<PendingMessageResponse>> pageQuery(@RequestBody @Valid PendingMessagePageRequest request);
/**
* 代办列表指定item查询
*
* @param request 查询相关参数
* @return 指定的item数据
*/
@PostMapping(value = "/pending-message/record/query", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<PendingMessageResponse> query(@RequestBody @Valid PendingMessageQueryRequest request);
/**
* 查询代办详情
*

View File

@ -5,6 +5,7 @@ import cn.axzo.msg.center.service.pending.client.PendingMessageClient;
import cn.axzo.msg.center.service.pending.request.PendingMessageCountUncompletedRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageQueryRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.service.pending.response.PendingMessageStatisticResponse;
@ -44,6 +45,12 @@ public class PendingMessageClientFallback implements PendingMessageClient {
return CommonResponse.error("fall back while page querying pending message");
}
@Override
public CommonResponse<PendingMessageResponse> query(PendingMessageQueryRequest request) {
log.error("fall back while querying pending message. req:{}", request);
return CommonResponse.error("fall back while querying pending message");
}
@Override
public CommonResponse<PendingMessageResponse> detail(String msgIdentityCode, TerminalTypeEnum terminalType) {
log.error("fall back while querying pending message. msgIdentityCode:[{}], terminalType:[{}]",

View File

@ -0,0 +1,70 @@
package cn.axzo.msg.center.service.pending.request;
import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @description
* 代办记录查询参数的数模型
* @author cold_blade
* @date 2023/9/23
* @version 1.0
*/
@Setter
@Getter
public class PendingMessageQueryRequest implements Serializable {
private static final long serialVersionUID = 3981382821433771344L;
/**
* APP终端类型(前端不care)
* WEB: web端页面
* MINI_PROGRAM: 安心筑小程序端页面
* IOS: 原生IOS端页面
* ANDROID: 原生Android端页面
* WEB_VIEW: H5页面
* WECHAT_MINI_PROGRAM: 微信小程序页面
*/
private TerminalTypeEnum terminalType;
/**
* 代办消息状态
* UNSENT: 未发送
* HAS_BEEN_SENT: 已发送
* COMPLETED: 已办
* RETRACT: 已撤回
* DELETED: 已删除
*/
private PendingMessageStateEnum msgState;
/**
* COMPLETED: 已处理
* RETRACT: 已撤销
* PASSED: 已通过
* REJECTED: 已拒绝
*/
private BizFinalStateEnum bizFinalState;
/**
* 消息标题
*/
private String title;
/**
* 工作台id
*/
private Long workspaceId;
/**
* 待办消息记录的唯一标识
*/
@NotBlank(message = "msgIdentityCode is required")
private String msgIdentityCode;
@Override
public String toString() {
return JSON.toJSONString(this);
}
}