Merge branch 'feature/REQ-1138' into 'master'

Feature/req 1138

See merge request universal/infrastructure/backend/msg-center-plat!63
This commit is contained in:
金海洋 2023-10-14 01:34:19 +00:00
commit 28491ae138
17 changed files with 301 additions and 18 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

@ -8,6 +8,7 @@ import cn.axzo.msg.center.domain.entity.MessageRelation;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@ -37,4 +38,6 @@ public interface MessageRelationService {
void delete(Long id);
void syncData(List<SyncRelationDataDTO> dtoList);
List<Long> listRelationIds(Collection<Long> moduleIds);
}

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

@ -39,9 +39,9 @@ public class IYouMengMessageServiceImpl implements IYouMengMessageService {
msg.setMsgId(extraData.getLong("msgId"));
msg.setType(extraData.getInteger("type"));
try {
upushService.sendAndroidCustomizedcast(msg, msgFromClient);
upushService.sendAndroidCustomizedcast(msg, msgFromClient, extraData);
msg.setRouter(extraData.getString("ir"));
upushService.sendIOSCustomizedcast(msg, msgFromClient);
upushService.sendIOSCustomizedcast(msg, msgFromClient, extraData);
} catch (Exception e) {
log.error("推送消息发送失败:{}", e.getMessage());
}

View File

@ -6,7 +6,12 @@ import cn.axzo.msg.center.api.request.CreateModuleReq;
import cn.axzo.msg.center.api.request.SearchModuleReq;
import cn.axzo.msg.center.api.request.SyncModuleDataReq;
import cn.axzo.msg.center.api.request.UpdateModuleReq;
import cn.axzo.msg.center.api.response.*;
import cn.axzo.msg.center.api.response.CommonPlatManagerRes;
import cn.axzo.msg.center.api.response.MessageModuleRes;
import cn.axzo.msg.center.api.response.ModuleGroupByNameResponse;
import cn.axzo.msg.center.api.response.SyncModuleDataRes;
import cn.axzo.msg.center.api.response.SyncRouterDataRes;
import cn.axzo.msg.center.api.response.SyncTemplateDataRes;
import cn.axzo.msg.center.common.utils.BeanConvertUtils;
import cn.axzo.msg.center.domain.dto.CreateModuleDTO;
import cn.axzo.msg.center.domain.dto.SearchModuleDTO;
@ -32,7 +37,14 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -40,7 +52,6 @@ import java.util.stream.Collectors;
@RestController
public class InsideMessageModuleApiImpl implements InsideMessageModuleApi {
@Resource
private MessageModuleService moduleService;
@Resource
@ -52,7 +63,6 @@ public class InsideMessageModuleApiImpl implements InsideMessageModuleApi {
@Resource
private MessageRouterService routerService;
@Override
public CommonResponse<Map<Long, String>> getModules(@PathVariable Integer identityType) {
Map<Long, String> moduleMap = new HashMap<>();
@ -201,4 +211,27 @@ public class InsideMessageModuleApiImpl implements InsideMessageModuleApi {
moduleService.syncData(syncModuleDataDTOS);
return CommonResponse.success();
}
@Override
public CommonResponse<List<ModuleGroupByNameResponse>> listModulesGroupByName() {
Map<String, List<Long>> resultList = groupByField(MessageModule::getModuleName);
List<ModuleGroupByNameResponse> responses = resultList.entrySet().stream()
.filter(e -> !"项目公告".equals(e.getKey()))
.map(e -> ModuleGroupByNameResponse.builder()
.moduleName(e.getKey())
.ids(e.getValue())
.build())
.collect(Collectors.toList());
return CommonResponse.success(responses);
}
private <T> Map<T, List<Long>> groupByField(Function<MessageModule, T> groupByField) {
if (Objects.isNull(groupByField)) {
log.warn("groupByField is null...");
return Collections.emptyMap();
}
return moduleService.getAllModules().stream()
.collect(Collectors.groupingBy(groupByField,
Collectors.mapping(MessageModule::getId, Collectors.toList())));
}
}

View File

@ -309,6 +309,7 @@ public class MessageRecordServiceImpl implements MessageRecordService {
}
});
}
extra.put("terminalId", message.getTerminalId());
extra.put("msgId", message.getId());
extra.put("p", message.getRouterParams());
extra.put("t", message.getTitle());
@ -485,8 +486,8 @@ public class MessageRecordServiceImpl implements MessageRecordService {
);
calcCount(constructionList, res);
List<MsgStatisticsDTO> tradeList = messageRecordDao.statisticsMsg4Trade(personId);
calcCount(tradeList, res);
// List<MsgStatisticsDTO> tradeList = messageRecordDao.statisticsMsg4Trade(personId);
// calcCount(tradeList, res);
return res;
}

View File

@ -180,4 +180,17 @@ public class MessageRelationServiceImpl implements MessageRelationService {
});
}
@Override
public List<Long> listRelationIds(Collection<Long> moduleIds) {
if (CollectionUtils.isEmpty(moduleIds)) {
return Collections.emptyList();
}
return messageRelationDao.lambdaQuery()
.in(MessageRelation::getModuleId, moduleIds)
.eq(MessageRelation::getIsDelete, 0)
.list().stream()
.map(MessageRelation::getId)
.collect(Collectors.toList());
}
}

View File

@ -14,6 +14,8 @@ import cn.axzo.msg.center.api.response.PendingMessageTemporarilyTypeRes;
import cn.axzo.msg.center.common.utils.BeanConvertUtils;
import cn.axzo.msg.center.common.utils.PlaceholderResolver;
import cn.axzo.msg.center.dal.MessageRecordDao;
import cn.axzo.msg.center.domain.dto.MsgModuleDTO;
import cn.axzo.msg.center.domain.entity.MessageModule;
import cn.axzo.msg.center.domain.entity.MessageRecord;
import cn.axzo.msg.center.domain.entity.MessageRouter;
import cn.axzo.msg.center.domain.enums.MsgRouteTypeEnum;
@ -22,10 +24,14 @@ import cn.axzo.msg.center.domain.enums.YesNoEnum;
import cn.axzo.msg.center.inside.notices.config.MessageSystemConfig;
import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig;
import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig.MsgTempBizCategoryConfig;
import cn.axzo.msg.center.inside.notices.service.MessageModuleService;
import cn.axzo.msg.center.inside.notices.service.MessageRelationService;
import cn.axzo.msg.center.inside.notices.service.MessageRouterService;
import cn.axzo.msg.center.inside.notices.service.PendingMessageService;
import cn.axzo.msg.center.inside.notices.utils.MessageRecordHelper;
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;
@ -43,6 +49,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -55,6 +62,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@ -88,6 +96,8 @@ public class PendingMessageServiceImpl implements PendingMessageService {
private final MessageRecordDao messageRecordDao;
private final MessageSystemConfig messageSystemConfig;
private final MessageRouterService messageRouterService;
private final MessageModuleService messageModuleService;
private final MessageRelationService messageRelationService;
private final PendingMessageBizConfig pendingMessageBizConfig;
@Override
@ -184,6 +194,100 @@ public class PendingMessageServiceImpl implements PendingMessageService {
.collect(Collectors.toList());
}
@Override
public Page<PendingMessageBriefRes> pageQuery(PendingMessagePageReq request) {
IPage<MessageRecord> page = request.toPage();
Set<Long> relationIds = null;
if (CollectionUtils.isNotEmpty(request.getModuleIds())) {
List<Long> relationIdList = listRelationIds(request.getModuleIds());
if (CollectionUtils.isEmpty(relationIdList)) {
// 对应模块及其关联的模板删除的场景
return Page.toPage(page.getCurrent(), page.getSize(), page.getTotal(), Collections.emptyList());
}
relationIds = new HashSet<>(relationIdList);
}
// 获取数据冷热隔离的分界
final LocalDateTime queryFrom = getQueryFromTime();
// 这里对前端未传入参的情况做一个兜底
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());
// 查询消息对应的模块集
Map<Long, MsgModuleDTO> moduleMap = listMessageModules(page.getRecords());
// 原始的数据库模型数据转化为页面展示的数据模型
List<PendingMessageBriefRes> msgRecordBriefs = page.getRecords().stream()
.filter(e -> moduleMap.containsKey(e.getId()))
.map(e -> convert(e, moduleMap.get(e.getId()), routerMap))
.collect(Collectors.toList());
return Page.toPage(page.getCurrent(), page.getSize(), page.getTotal(), msgRecordBriefs);
}
private List<Long> listRelationIds(List<Long> moduleIds) {
List<MessageModule> modules = messageModuleService.getModuleByIds(moduleIds);
if (CollectionUtils.isEmpty(modules)) {
return Collections.emptyList();
}
moduleIds = modules.stream().map(MessageModule::getId).collect(Collectors.toList());
return messageRelationService.listRelationIds(moduleIds);
}
private Map<Long, MsgModuleDTO> listMessageModules(List<MessageRecord> msgRecords) {
//获取relationId集合
Set<Long> relationIds = msgRecords.stream().map(MessageRecord::getRelationId).collect(Collectors.toSet());
if (CollectionUtils.isNotEmpty(relationIds)) {
relationIds.remove(null);
relationIds.remove(0L);
}
//获取oldTypeId集合
Set<Integer> oldTypeIds = msgRecords.stream().map(MessageRecord::getOldTypeId).collect(Collectors.toSet());
if (CollectionUtils.isNotEmpty(oldTypeIds)) {
oldTypeIds.remove(null);
oldTypeIds.remove(0);
}
if (CollectionUtils.isEmpty(relationIds) && CollectionUtils.isEmpty(oldTypeIds)) {
return Collections.emptyMap();
}
//获取模板列表
List<MsgModuleDTO> modules = messageModuleService.listModuleByRelationIdsOrTypeIds(oldTypeIds, relationIds);
//新关联键分组
Map<Long, List<MsgModuleDTO>> relationModuleMap = modules.stream()
.filter(e -> Objects.nonNull(e.getRelationId()) && e.getRelationId() != 0)
.collect(Collectors.groupingBy(MsgModuleDTO::getRelationId));
//老关联键分组
Map<Integer, List<MsgModuleDTO>> typeIdModuleMap = modules.stream()
.filter(e -> Objects.nonNull(e.getTypeId()) && e.getTypeId() != 0)
.collect(Collectors.groupingBy(MsgModuleDTO::getTypeId));
return msgRecords.stream()
.map(e -> selectModule(e, relationModuleMap, typeIdModuleMap))
.filter(Objects::nonNull)
.collect(Collectors.toMap(MsgModuleDTO::getMsgId, Function.identity(), (pre, cur) -> cur));
}
private MsgModuleDTO selectModule(MessageRecord record, Map<Long, List<MsgModuleDTO>> relationModuleMap,
Map<Integer, List<MsgModuleDTO>> typeIdModuleMap) {
MsgModuleDTO module = null;
// 优先使用relation关联的模板
if (MessageRecordHelper.isRelationIdValid(record.getRelationId())) {
module = relationModuleMap.get(record.getRelationId()).stream()
.findFirst().orElse(null);
}
if (Objects.isNull(module) && MessageRecordHelper.isOldTypeIdValid(record.getOldTypeId())) {
module = typeIdModuleMap.get(record.getOldTypeId()).stream()
.findFirst().orElse(null);
}
Optional.ofNullable(module)
.ifPresent(v -> v.setMsgId(record.getId()));
return module;
}
private PendingMessageTemporarilyStatisticRes statisticAndPickFirst(PendingMessageTemporarilyStatisticReq request,
MsgTempBizCategoryConfig categoryConfig,
Collection<ReceiveTypeEnum> identifyTypes,
@ -251,7 +355,20 @@ 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;
}
private PendingMessageBriefRes convert(MessageRecord record, MsgModuleDTO module,
Map<Long, MessageRouterInfoRes> routerMap) {
PendingMessageBriefRes msgBrief = BeanConvertUtils.copyBean(record, PendingMessageBriefRes.class);
msgBrief.setMsgId(record.getId());
msgBrief.setModuleName(module.getMsgModuleName());
msgBrief.setModuleIcon(module.getMsgModuleIcon());
msgBrief.setRouter(routerMap.get(record.getId()));
msgBrief.setCreateTimestamp(Optional.ofNullable(record.getCreateAt()).map(Date::getTime).orElse(0L));
return msgBrief;

View File

@ -163,7 +163,7 @@ public class UpushService {
client.send(groupcast);
}
public void sendAndroidCustomizedcast(Message message, MsgBody4Guest msgFromClient)
public void sendAndroidCustomizedcast(Message message, MsgBody4Guest msgFromClient, com.alibaba.fastjson.JSONObject extraData)
throws Exception {
AndroidCustomizedcast customizedcast;
@ -214,6 +214,7 @@ public class UpushService {
customizedcast.setExtraField("fromGrade", message.getFromGrade());
customizedcast.setExtraField("router", message.getRouter());
customizedcast.setExtraField("msgId", String.valueOf(message.getMsgId()));
customizedcast.setExtraField("terminalId", extraData.getString("terminalId"));
String audio = message.getAudio();
if (audio != null) {
customizedcast.setExtraField("audio", message.getAudio());
@ -227,7 +228,7 @@ public class UpushService {
}
public void sendIOSCustomizedcast(Message message, MsgBody4Guest msgFromClient)
public void sendIOSCustomizedcast(Message message, MsgBody4Guest msgFromClient, com.alibaba.fastjson.JSONObject extraData)
throws Exception {
IOSCustomizedcast customizedcast;
if (Objects.nonNull(msgFromClient.getAppClient()) && "cmp".equals(msgFromClient.getAppClient())) {
@ -272,6 +273,7 @@ public class UpushService {
.setCustomizedField("conversationId", String.valueOf(message.getConversationId()));
customizedcast.setCustomizedField("params", message.getParams());
customizedcast.setCustomizedField("msgId", String.valueOf(message.getMsgId()));
customizedcast.setCustomizedField("terminalId", extraData.getString("terminalId"));
// TODO Set your alias and alias_type here, and use comma to split them if there are multiple alias.
// And if you have many alias, you can also upload a file containing these alias, then
// use file_id to send customized notification.

View File

@ -7,16 +7,22 @@ import cn.axzo.msg.center.api.request.SyncModuleDataReq;
import cn.axzo.msg.center.api.request.UpdateModuleReq;
import cn.axzo.msg.center.api.response.CommonPlatManagerRes;
import cn.axzo.msg.center.api.response.MessageModuleRes;
import cn.axzo.msg.center.api.response.ModuleGroupByNameResponse;
import cn.axzo.msg.center.api.response.SyncModuleDataRes;
import cn.azxo.framework.common.model.CommonResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
@FeignClient(name = "msg-center", url = "${server.serviceUrl}", fallback = InsideMessageModuleApiFallBack.class)
@FeignClient(name = "msg-center", url = "${server.serviceUrl:http://msg-center:8080}", fallback = InsideMessageModuleApiFallBack.class)
@Component
public interface InsideMessageModuleApi {
@ -82,5 +88,11 @@ public interface InsideMessageModuleApi {
@PostMapping ("/sync/module/data")
CommonResponse<Void> syncData(@RequestBody List<SyncModuleDataReq> dtoList);
/**
* 查询模块列表并分组
*
* @return 分组后的模块列表
*/
@GetMapping("/module/group-by-name")
CommonResponse<List<ModuleGroupByNameResponse>> listModulesGroupByName();
}

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

@ -7,6 +7,7 @@ import cn.axzo.msg.center.api.request.SyncModuleDataReq;
import cn.axzo.msg.center.api.request.UpdateModuleReq;
import cn.axzo.msg.center.api.response.CommonPlatManagerRes;
import cn.axzo.msg.center.api.response.MessageModuleRes;
import cn.axzo.msg.center.api.response.ModuleGroupByNameResponse;
import cn.axzo.msg.center.api.response.SyncModuleDataRes;
import cn.azxo.framework.common.model.CommonResponse;
import lombok.extern.slf4j.Slf4j;
@ -63,4 +64,9 @@ public class InsideMessageModuleApiFallBack implements InsideMessageModuleApi {
public CommonResponse<Void> syncData(List<SyncModuleDataReq> dtoList) {
return null;
}
@Override
public CommonResponse<List<ModuleGroupByNameResponse>> listModulesGroupByName() {
return null;
}
}

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

@ -10,6 +10,7 @@ import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
/**
* @description
@ -52,6 +53,13 @@ public class PendingMessagePageReq extends PageRequest implements Serializable {
/**
* 系统类型
*/
@NotNull(message = "systemType is required")
private String systemType;
/**
* 模板id
*/
private Long moduleId;
/**
* 模块id列表
*/
private List<Long> moduleIds;
}

View File

@ -0,0 +1,40 @@
package cn.axzo.msg.center.api.response;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
/**
* @author cold_blade
* @date 2023/10/9
* @version 1.0
*/
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ModuleGroupByNameResponse implements Serializable {
private static final long serialVersionUID = -6354884288735626666L;
/**
* 模块id列表
*/
private List<Long> ids;
/**
* 模块名称
*/
private String moduleName;
@Override
public String toString() {
return JSON.toJSONString(this);
}
}

View File

@ -47,6 +47,10 @@ public class PendingMessageBriefRes implements Serializable {
* 消息关联的终端名称企业名/项目名
*/
private String terminalName;
/**
* 消息所属标识Id 用于跳转
*/
private Long terminalId;
/**
* 消息时间戳
*/
@ -66,6 +70,14 @@ public class PendingMessageBriefRes implements Serializable {
* 消息路由数据模型
*/
private MessageRouterInfoRes router;
/**
* 模块名称
*/
private String moduleName;
/**
* 模块图标
*/
private String moduleIcon;
@Override
public String toString() {

View File

@ -55,9 +55,9 @@
and record.is_delete = 0
and (
(record.to_id = #{identityId} and record.receive_type = #{receiveType})
<if test="personId != null">
or (record.to_id = 0 and record.receive_type = 9 and record.person_id = #{personId} )
</if>
<!-- <if test="personId != null">-->
<!-- or (record.to_id = 0 and record.receive_type = 9 and record.person_id = #{personId} )-->
<!-- </if>-->
)
<if test="states != null and states.size > 0">
and record.state in