feat(REQ-1138): 管理端App改版

背景:
  https://jira.axzo.cn/browse/REQ-1138?goToView=7

修改:
  新增代办分页查询的接口

影响:
  无
This commit is contained in:
luofu 2023-09-25 14:43:16 +08:00
parent d2f4811670
commit 4e97cc369d
6 changed files with 70 additions and 2 deletions

View File

@ -3,12 +3,14 @@ package cn.axzo.msg.center.inside.notices.controller.pending;
import cn.axzo.msg.center.api.PendingMessageServiceApi;
import cn.axzo.msg.center.api.request.PendingMessagePageReq;
import cn.axzo.msg.center.api.request.PendingMessageTemporarilyStatisticReq;
import cn.axzo.msg.center.api.response.PendingMessageBriefRes;
import cn.axzo.msg.center.api.response.PendingMessageStatisticRes;
import cn.axzo.msg.center.api.response.PendingMessageTemporarilyStatisticRes;
import cn.axzo.msg.center.api.response.PendingMessageTemporarilyTypeRes;
import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig;
import cn.axzo.msg.center.inside.notices.service.PendingMessageService;
import cn.azxo.framework.common.model.CommonResponse;
import cn.azxo.framework.common.model.Page;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@ -48,4 +50,9 @@ public class PendingMessageStatisticController implements PendingMessageServiceA
return CommonResponse.success(pendingMessageService.listTemporarilyTypes());
}
@Override
public CommonResponse<Page<PendingMessageBriefRes>> pageQuery(PendingMessagePageReq request) {
return CommonResponse.success(pendingMessageService.pageQuery(request));
}
}

View File

@ -2,9 +2,11 @@ package cn.axzo.msg.center.inside.notices.service;
import cn.axzo.msg.center.api.request.PendingMessagePageReq;
import cn.axzo.msg.center.api.request.PendingMessageTemporarilyStatisticReq;
import cn.axzo.msg.center.api.response.PendingMessageBriefRes;
import cn.axzo.msg.center.api.response.PendingMessageStatisticRes;
import cn.axzo.msg.center.api.response.PendingMessageTemporarilyStatisticRes;
import cn.axzo.msg.center.api.response.PendingMessageTemporarilyTypeRes;
import cn.azxo.framework.common.model.Page;
import java.util.List;
@ -40,4 +42,12 @@ public interface PendingMessageService {
* @return 待办消息临时分类的列表
*/
List<PendingMessageTemporarilyTypeRes> listTemporarilyTypes();
/**
* 分页查询代办消息
*
* @param request 查询条件
* @return 符合条件的代办消息数量
*/
Page<PendingMessageBriefRes> pageQuery(PendingMessagePageReq request);
}

View File

@ -26,9 +26,11 @@ import cn.axzo.msg.center.inside.notices.service.MessageRouterService;
import cn.axzo.msg.center.inside.notices.service.PendingMessageService;
import cn.axzo.msg.center.notices.common.enums.ReturnCodeEnum;
import cn.axzo.msg.center.notices.common.exception.BizException;
import cn.azxo.framework.common.model.Page;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import jodd.util.concurrent.ThreadFactoryBuilder;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
@ -180,6 +182,31 @@ public class PendingMessageServiceImpl implements PendingMessageService {
.collect(Collectors.toList());
}
@Override
public Page<PendingMessageBriefRes> pageQuery(PendingMessagePageReq request) {
IPage<MessageRecord> page = request.toPage();
// 获取数据冷热隔离的分界
final LocalDateTime queryFrom = getQueryFromTime();
Set<Long> relationIds = Optional.ofNullable(request.getModuleId()).map(Sets::newHashSet).orElse(null);
// 这里对前端未传入参的情况做一个兜底
Collection<MsgStateEnum> msgStates = CollectionUtils.isEmpty(request.getStates()) ? ALL_WITHOUT_UNSENT :
request.getStates();
// 分页查询message_record的数据
page = page(request.getPersonId(), request.getIdentifyId(), request.getIdentifyTypes(), relationIds,
msgStates, queryFrom, page);
if (CollectionUtils.isEmpty(page.getRecords())) {
// 列表为空的场景
return Page.toPage(page.getCurrent(), page.getSize(), page.getTotal(), Collections.emptyList());
}
// 查询消息对应的路由集
Map<Long, MessageRouterInfoRes> routerMap = listRouters(page.getRecords(), request.getSystemType());
// 原始的数据库模型数据转化为页面展示的数据模型
List<PendingMessageBriefRes> msgRecordBriefs = page.getRecords().stream()
.map(e -> convert(e, null, routerMap))
.collect(Collectors.toList());
return Page.toPage(page.getCurrent(), page.getSize(), page.getTotal(), msgRecordBriefs);
}
private PendingMessageTemporarilyStatisticRes statisticAndPickFirst(PendingMessageTemporarilyStatisticReq request,
MsgTempBizCategoryConfig categoryConfig,
Collection<ReceiveTypeEnum> identifyTypes,
@ -247,7 +274,9 @@ public class PendingMessageServiceImpl implements PendingMessageService {
Map<Long, MessageRouterInfoRes> routerMap) {
PendingMessageBriefRes msgBrief = BeanConvertUtils.copyBean(record, PendingMessageBriefRes.class);
msgBrief.setMsgId(record.getId());
msgBrief.setTempBizCategory(getTempCategory(record.getRelationId(), categoryConfigs));
if (CollectionUtils.isNotEmpty(categoryConfigs)) {
msgBrief.setTempBizCategory(getTempCategory(record.getRelationId(), categoryConfigs));
}
msgBrief.setRouter(routerMap.get(record.getId()));
msgBrief.setCreateTimestamp(Optional.ofNullable(record.getCreateAt()).map(Date::getTime).orElse(0L));
return msgBrief;

View File

@ -3,10 +3,12 @@ package cn.axzo.msg.center.api;
import cn.axzo.msg.center.api.fallback.PendingMessageServiceApiFallBack;
import cn.axzo.msg.center.api.request.PendingMessagePageReq;
import cn.axzo.msg.center.api.request.PendingMessageTemporarilyStatisticReq;
import cn.axzo.msg.center.api.response.PendingMessageBriefRes;
import cn.axzo.msg.center.api.response.PendingMessageStatisticRes;
import cn.axzo.msg.center.api.response.PendingMessageTemporarilyStatisticRes;
import cn.axzo.msg.center.api.response.PendingMessageTemporarilyTypeRes;
import cn.azxo.framework.common.model.CommonResponse;
import cn.azxo.framework.common.model.Page;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
@ -56,4 +58,13 @@ public interface PendingMessageServiceApi {
*/
@PostMapping("api/message/pending-msg/temporary-type/list")
CommonResponse<List<PendingMessageTemporarilyTypeRes>> listTemporarilyTypes();
/**
* 分页查询代办消息
*
* @param request 分页查询的入参
* @return 符合条件的待办消息
*/
@PostMapping("api/message/pending-msg/page")
CommonResponse<Page<PendingMessageBriefRes>> pageQuery(@RequestBody PendingMessagePageReq request);
}

View File

@ -3,10 +3,12 @@ package cn.axzo.msg.center.api.fallback;
import cn.axzo.msg.center.api.PendingMessageServiceApi;
import cn.axzo.msg.center.api.request.PendingMessagePageReq;
import cn.axzo.msg.center.api.request.PendingMessageTemporarilyStatisticReq;
import cn.axzo.msg.center.api.response.PendingMessageBriefRes;
import cn.axzo.msg.center.api.response.PendingMessageStatisticRes;
import cn.axzo.msg.center.api.response.PendingMessageTemporarilyStatisticRes;
import cn.axzo.msg.center.api.response.PendingMessageTemporarilyTypeRes;
import cn.azxo.framework.common.model.CommonResponse;
import cn.azxo.framework.common.model.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -43,4 +45,10 @@ public class PendingMessageServiceApiFallBack implements PendingMessageServiceAp
log.error("调用列表查询待办消息临时分类的接口时发送异常......");
return CommonResponse.error("调用列表查询待办消息临时分类的接口时发送异常");
}
@Override
public CommonResponse<Page<PendingMessageBriefRes>> pageQuery(PendingMessagePageReq request) {
log.error("调用分页查询待办消息接口时发送异常......");
return CommonResponse.error("调用分页查询待办消息接口时发送异常");
}
}

View File

@ -52,6 +52,9 @@ public class PendingMessagePageReq extends PageRequest implements Serializable {
/**
* 系统类型
*/
@NotNull(message = "systemType is required")
private String systemType;
/**
* 模板id
*/
private Long moduleId;
}