Merge branch 'feature/REQ-1138' into 'dev'
Feature/req 1138 See merge request universal/infrastructure/backend/msg-center-plat!49
This commit is contained in:
commit
b40cef0dc9
@ -52,6 +52,9 @@ public class PendingMessageStatisticController implements PendingMessageServiceA
|
||||
|
||||
@Override
|
||||
public CommonResponse<Page<PendingMessageBriefRes>> pageQuery(PendingMessagePageReq request) {
|
||||
//FIXME:[cold_blade]这里临时处理 企业端不关注身份的场景
|
||||
request.setIdentifyId(null);
|
||||
request.setIdentifyTypes(null);
|
||||
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);
|
||||
}
|
||||
|
||||
@ -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,26 @@ 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()
|
||||
.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())));
|
||||
}
|
||||
}
|
||||
|
||||
@ -182,4 +182,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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@ 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;
|
||||
@ -24,6 +25,7 @@ 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;
|
||||
@ -33,7 +35,6 @@ 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;
|
||||
@ -48,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;
|
||||
@ -95,6 +97,7 @@ public class PendingMessageServiceImpl implements PendingMessageService {
|
||||
private final MessageSystemConfig messageSystemConfig;
|
||||
private final MessageRouterService messageRouterService;
|
||||
private final MessageModuleService messageModuleService;
|
||||
private final MessageRelationService messageRelationService;
|
||||
private final PendingMessageBizConfig pendingMessageBizConfig;
|
||||
|
||||
@Override
|
||||
@ -194,9 +197,17 @@ public class PendingMessageServiceImpl implements PendingMessageService {
|
||||
@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();
|
||||
Set<Long> relationIds = Optional.ofNullable(request.getModuleId()).map(Sets::newHashSet).orElse(null);
|
||||
// 这里对前端未传入参的情况做一个兜底
|
||||
Collection<MsgStateEnum> msgStates = CollectionUtils.isEmpty(request.getStates()) ? ALL_WITHOUT_UNSENT :
|
||||
request.getStates();
|
||||
@ -219,6 +230,15 @@ public class PendingMessageServiceImpl implements PendingMessageService {
|
||||
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());
|
||||
|
||||
@ -7,11 +7,17 @@ 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;
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
@ -57,4 +58,8 @@ public class PendingMessagePageReq extends PageRequest implements Serializable {
|
||||
* 模板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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user