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:
commit
28491ae138
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
@ -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())));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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("调用分页查询待办消息接口时发送异常");
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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() {
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user