Merge branch 'feature/REQ-1465' of axzsource.com:universal/infrastructure/backend/msg-center-plat into pre
This commit is contained in:
commit
ecbd4190f1
@ -1,6 +1,5 @@
|
|||||||
package cn.axzo.msg.center.message.controller;
|
package cn.axzo.msg.center.message.controller;
|
||||||
|
|
||||||
import cn.axzo.core.utils.converter.BeanConverter;
|
|
||||||
import cn.axzo.msg.center.message.domain.param.MessageTemplateSaveOrUpdateParam;
|
import cn.axzo.msg.center.message.domain.param.MessageTemplateSaveOrUpdateParam;
|
||||||
import cn.axzo.msg.center.message.domain.param.RelationTemplateMapInitParam;
|
import cn.axzo.msg.center.message.domain.param.RelationTemplateMapInitParam;
|
||||||
import cn.axzo.msg.center.message.domain.vo.RelationTemplateMapInitRequest;
|
import cn.axzo.msg.center.message.domain.vo.RelationTemplateMapInitRequest;
|
||||||
@ -74,7 +73,7 @@ public class MessageTemplateController implements MessageTemplateClient {
|
|||||||
|
|
||||||
@PostMapping(value = "/message/template/relation/init", produces = {MediaType.APPLICATION_JSON_VALUE})
|
@PostMapping(value = "/message/template/relation/init", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||||
public CommonResponse<Void> initRelationTemplateMap(@RequestBody @Valid RelationTemplateMapInitRequest request) {
|
public CommonResponse<Void> initRelationTemplateMap(@RequestBody @Valid RelationTemplateMapInitRequest request) {
|
||||||
RelationTemplateMapInitParam param = BeanConverter.convert(request, RelationTemplateMapInitParam.class);
|
RelationTemplateMapInitParam param = request.toInitParam();
|
||||||
relationTemplateMapService.init(param);
|
relationTemplateMapService.init(param);
|
||||||
return CommonResponse.success();
|
return CommonResponse.success();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package cn.axzo.msg.center.message.domain.param;
|
package cn.axzo.msg.center.message.domain.param;
|
||||||
|
|
||||||
|
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
@ -7,7 +8,8 @@ import lombok.Getter;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author cold_blade
|
* @author cold_blade
|
||||||
@ -21,7 +23,7 @@ import java.util.Collection;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class RelationTemplateMapInitParam {
|
public class RelationTemplateMapInitParam {
|
||||||
|
|
||||||
private Collection<Long> relationIds;
|
private Map<Long, List<PushTerminalEnum>> relationPushTerminalMap;
|
||||||
private String groupNodeCode;
|
private String groupNodeCode;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -1,14 +1,22 @@
|
|||||||
package cn.axzo.msg.center.message.domain.vo;
|
package cn.axzo.msg.center.message.domain.vo;
|
||||||
|
|
||||||
|
import cn.axzo.msg.center.message.domain.param.RelationTemplateMapInitParam;
|
||||||
|
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author cold_blade
|
* @author cold_blade
|
||||||
@ -22,12 +30,37 @@ import java.util.Collection;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class RelationTemplateMapInitRequest {
|
public class RelationTemplateMapInitRequest {
|
||||||
|
|
||||||
private Collection<Long> relationIds;
|
private Collection<MapEntry> entries;
|
||||||
@NotBlank(message = "groupNodeCode is required")
|
@NotBlank(message = "groupNodeCode is required")
|
||||||
private String groupNodeCode;
|
private String groupNodeCode;
|
||||||
|
|
||||||
|
public RelationTemplateMapInitParam toInitParam() {
|
||||||
|
Map<Long, List<PushTerminalEnum>> map = Collections.emptyMap();
|
||||||
|
if (CollectionUtils.isNotEmpty(entries)) {
|
||||||
|
map = entries.stream()
|
||||||
|
.collect(Collectors.toMap(MapEntry::getKey, MapEntry::getValue));
|
||||||
|
}
|
||||||
|
return RelationTemplateMapInitParam.builder()
|
||||||
|
.groupNodeCode(groupNodeCode)
|
||||||
|
.relationPushTerminalMap(map)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return JSON.toJSONString(this);
|
return JSON.toJSONString(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
static class MapEntry {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* key
|
||||||
|
*/
|
||||||
|
private Long key;
|
||||||
|
/**
|
||||||
|
* value
|
||||||
|
*/
|
||||||
|
private List<PushTerminalEnum> value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package cn.axzo.msg.center.message.service.impl;
|
package cn.axzo.msg.center.message.service.impl;
|
||||||
|
|
||||||
|
import cn.axzo.framework.core.util.MapUtil;
|
||||||
import cn.axzo.msg.center.common.enums.TableIsDeleteEnum;
|
import cn.axzo.msg.center.common.enums.TableIsDeleteEnum;
|
||||||
import cn.axzo.msg.center.dal.MessageBaseTemplateDao;
|
import cn.axzo.msg.center.dal.MessageBaseTemplateDao;
|
||||||
import cn.axzo.msg.center.dal.RelationTemplateMapDao;
|
import cn.axzo.msg.center.dal.RelationTemplateMapDao;
|
||||||
@ -102,12 +103,16 @@ public class RelationTemplateMapServiceImpl implements RelationTemplateMapServic
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void init(RelationTemplateMapInitParam param) {
|
public void init(RelationTemplateMapInitParam param) {
|
||||||
List<MessageRelation> allRelations = messageRelationService.getAllRelations();
|
List<MessageRelation> allRelations = messageRelationService.getAllRelations();
|
||||||
if (CollectionUtils.isNotEmpty(param.getRelationIds())) {
|
if (MapUtil.isNotEmpty(param.getRelationPushTerminalMap())) {
|
||||||
// 指定了需要创建并关联的relationId
|
// 指定了需要创建并关联的relationId
|
||||||
allRelations = allRelations.stream()
|
allRelations = allRelations.stream()
|
||||||
.filter(e -> param.getRelationIds().contains(e.getId()))
|
.filter(e -> param.getRelationPushTerminalMap().containsKey(e.getId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
if (CollectionUtils.isEmpty(allRelations)) {
|
||||||
|
log.info("not found any valid relation id.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
// relationId与templateId的map
|
// relationId与templateId的map
|
||||||
Map<Long, Long> relationIdTemplateIdMap = allRelations.stream()
|
Map<Long, Long> relationIdTemplateIdMap = allRelations.stream()
|
||||||
.collect(Collectors.toMap(MessageRelation::getId, MessageRelation::getTemplateId));
|
.collect(Collectors.toMap(MessageRelation::getId, MessageRelation::getTemplateId));
|
||||||
@ -117,6 +122,10 @@ public class RelationTemplateMapServiceImpl implements RelationTemplateMapServic
|
|||||||
relationIdTemplateIdMap = relationIdTemplateIdMap.entrySet().stream()
|
relationIdTemplateIdMap = relationIdTemplateIdMap.entrySet().stream()
|
||||||
.filter(e -> !mappedRelationIds.contains(e.getKey()))
|
.filter(e -> !mappedRelationIds.contains(e.getKey()))
|
||||||
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||||
|
if (MapUtil.isEmpty(relationIdTemplateIdMap)) {
|
||||||
|
log.info("{} has been mapped.", param.getRelationPushTerminalMap().keySet());
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 获取生效中的模板
|
// 获取生效中的模板
|
||||||
Map<Long, MessageTemplate> messageTemplates = messageTemplateService.getAllTemplates().stream()
|
Map<Long, MessageTemplate> messageTemplates = messageTemplateService.getAllTemplates().stream()
|
||||||
.collect(Collectors.toMap(MessageTemplate::getId, Function.identity()));
|
.collect(Collectors.toMap(MessageTemplate::getId, Function.identity()));
|
||||||
@ -130,7 +139,8 @@ public class RelationTemplateMapServiceImpl implements RelationTemplateMapServic
|
|||||||
.collect(Collectors.groupingBy(MessageRouter::getRelationId));
|
.collect(Collectors.groupingBy(MessageRouter::getRelationId));
|
||||||
// 转化为新模板的数据模型wrapper
|
// 转化为新模板的数据模型wrapper
|
||||||
List<CreateNewTemplateAndMapWrapper> wrappers = relationIdTemplateIdMap.entrySet().stream()
|
List<CreateNewTemplateAndMapWrapper> wrappers = relationIdTemplateIdMap.entrySet().stream()
|
||||||
.map(e -> convert(e.getKey(), messageTemplates.get(e.getValue()), messageRouters.get(e.getKey())))
|
.map(e -> convert(e.getKey(), messageTemplates.get(e.getValue()), messageRouters.get(e.getKey()),
|
||||||
|
param.getRelationPushTerminalMap()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
// 批量插入
|
// 批量插入
|
||||||
messageBaseTemplateDao.saveBatch(wrappers.stream()
|
messageBaseTemplateDao.saveBatch(wrappers.stream()
|
||||||
@ -149,9 +159,12 @@ public class RelationTemplateMapServiceImpl implements RelationTemplateMapServic
|
|||||||
mapRelationAndTemplate(relationIdTemplateCodeMap);
|
mapRelationAndTemplate(relationIdTemplateCodeMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
private CreateNewTemplateAndMapWrapper convert(Long relationId, MessageTemplate template,
|
private CreateNewTemplateAndMapWrapper convert(Long relationId, MessageTemplate template, List<MessageRouter> routers,
|
||||||
List<MessageRouter> routers) {
|
Map<Long, List<PushTerminalEnum>> relationPushTerminalMap) {
|
||||||
MessageBaseTemplate baseTemplate = convert(template);
|
MessageBaseTemplate baseTemplate = convert(template);
|
||||||
|
if (MapUtil.isNotEmpty(relationPushTerminalMap) && relationPushTerminalMap.containsKey(relationId)) {
|
||||||
|
baseTemplate.setPushTerminal(JSONObjectUtil.toJSONString(relationPushTerminalMap.get(relationId)));
|
||||||
|
}
|
||||||
CreateNewTemplateAndMapWrapper wrapper = CreateNewTemplateAndMapWrapper.builder()
|
CreateNewTemplateAndMapWrapper wrapper = CreateNewTemplateAndMapWrapper.builder()
|
||||||
.baseTemplate(baseTemplate)
|
.baseTemplate(baseTemplate)
|
||||||
.relationId(relationId)
|
.relationId(relationId)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user