Merge branch 'feature/REQ-1465' of axzsource.com:universal/infrastructure/backend/msg-center-plat into dev
This commit is contained in:
commit
db18279ed0
@ -15,8 +15,6 @@ import cn.azxo.framework.common.model.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/17
|
||||
@ -42,12 +40,15 @@ public class MessageTemplateGroupRelationController implements MessageTemplateGr
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> move(MessageTemplateGroupRelationMoveRequest request) {
|
||||
return null;
|
||||
messageTemplateGroupService.move(request.getCurNodeCode(), request.getTargetNodeCode(),
|
||||
request.getTemplateCodes());
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<List<String>> remove(MessageTemplateGroupRelationRemoveRequest request) {
|
||||
return null;
|
||||
public CommonResponse<Void> remove(MessageTemplateGroupRelationRemoveRequest request) {
|
||||
messageTemplateGroupService.remove(request.getCurNodeCode(), request.getTemplateCodes());
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
private MessageTemplateGroupRelationResponse convert(MessageBaseTemplateDTO dto) {
|
||||
|
||||
@ -51,4 +51,23 @@ public interface MessageTemplateGroupService {
|
||||
* @return 模板编码与分类的path列表的映射关系
|
||||
*/
|
||||
Map<String, List<String>> listMessageTemplateGroupPaths(Collection<String> templateCodes);
|
||||
|
||||
/**
|
||||
* 解除模板与当前分类的关联关系
|
||||
* 注:当模板只关联一个分类时,该关联关系不能解除
|
||||
*
|
||||
* @param curGroupNodeCode 当前分类结点的编码
|
||||
* @param templateCodes 待解除关连关系的模板编码
|
||||
*/
|
||||
void remove(String curGroupNodeCode, Collection<String> templateCodes);
|
||||
|
||||
/**
|
||||
* 解除模板与当前分类的关联关系
|
||||
* 注:当模板只关联一个分类时,该关联关系不能解除
|
||||
*
|
||||
* @param srcGroupNodeCode 源分类结点的编码
|
||||
* @param tgtGroupNodeCode 目标分类结点的编码
|
||||
* @param templateCodes 待变更关连关系的模板编码
|
||||
*/
|
||||
void move(String srcGroupNodeCode, String tgtGroupNodeCode, Collection<String> templateCodes);
|
||||
}
|
||||
|
||||
@ -117,6 +117,7 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService {
|
||||
boolean removeResult = messageGroupNodeDao.lambdaUpdate()
|
||||
.eq(MessageGroupNode::getCode, nodeCode)
|
||||
.eq(MessageGroupNode::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
// TODO: [cold_blade] [P2] 这里需要逻辑删除而非物理删除
|
||||
.remove();
|
||||
if (removeResult) {
|
||||
// 刷新缓存
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
package cn.axzo.msg.center.message.service.impl;
|
||||
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.msg.center.common.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.msg.center.dal.MessageTemplateGroupDao;
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateGroup;
|
||||
import cn.axzo.msg.center.message.service.MessageGroupNodeService;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateGroupService;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
@ -15,6 +17,8 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -80,6 +84,7 @@ public class MessageTemplateGroupServiceImpl implements MessageTemplateGroupServ
|
||||
messageTemplateGroupDao.lambdaUpdate()
|
||||
.eq(MessageTemplateGroup::getTemplateCode, templateNode)
|
||||
.eq(MessageTemplateGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
// TODO: [cold_blade] [P2] 这里需要逻辑删除而非物理删除
|
||||
.remove();
|
||||
}
|
||||
|
||||
@ -95,4 +100,67 @@ public class MessageTemplateGroupServiceImpl implements MessageTemplateGroupServ
|
||||
.collect(Collectors.groupingBy(MessageTemplateGroup::getTemplateCode,
|
||||
Collectors.mapping(MessageTemplateGroup::getPath, Collectors.toList())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void remove(String curGroupNodeCode, Collection<String> templateCodes) {
|
||||
// TODO: [cold_blade]
|
||||
// 参数校验
|
||||
AssertUtil.isTrue(StringUtils.isNotBlank(curGroupNodeCode), "curGroupNodeCode can not be blank");
|
||||
AssertUtil.notEmpty(templateCodes, "templateCodes can not be empty");
|
||||
// 通过分类结点编码获取其对应的结点编码的路径
|
||||
Map<String, String> nodeCodePathMap = messageGroupNodeService
|
||||
.leafGroupNodeCodePaths(Lists.newArrayList(curGroupNodeCode));
|
||||
// 通过能否成功获取到其树路径来校验其有效性
|
||||
AssertUtil.isFalse(nodeCodePathMap.isEmpty(), "curGroupNodeCode is invalid");
|
||||
// 统计指定的模板编码关联的分类数量
|
||||
Map<String, Long> templateCodeList = messageTemplateGroupDao.lambdaQuery()
|
||||
.in(MessageTemplateGroup::getTemplateCode, templateCodes)
|
||||
.eq(MessageTemplateGroup::getPath, nodeCodePathMap.get(curGroupNodeCode))
|
||||
.eq(MessageTemplateGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
// 这里仅查询模板编码字段即可
|
||||
.select(MessageTemplateGroup::getTemplateCode)
|
||||
.list().stream()
|
||||
.map(MessageTemplateGroup::getTemplateCode)
|
||||
// 内存中来做groupingBy操作
|
||||
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
||||
// 筛选出仅关联了一个分类的模板编码
|
||||
List<String> onlyContainsOneTemplateCodes = templateCodeList.entrySet().stream()
|
||||
.filter(e -> Objects.equals(e.getValue(), 1L))
|
||||
.map(Map.Entry::getKey)
|
||||
.collect(Collectors.toList());
|
||||
AssertUtil.isEmpty(onlyContainsOneTemplateCodes, removeErrorStr(onlyContainsOneTemplateCodes));
|
||||
// 解除关联关系
|
||||
messageTemplateGroupDao.lambdaUpdate()
|
||||
.in(MessageTemplateGroup::getTemplateCode, templateCodes)
|
||||
.eq(MessageTemplateGroup::getPath, nodeCodePathMap.get(curGroupNodeCode))
|
||||
.eq(MessageTemplateGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
// TODO: [cold_blade] [P2] 这里需要逻辑删除而非物理删除
|
||||
.remove();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void move(String srcGroupNodeCode, String tgtGroupNodeCode, Collection<String> templateCodes) {
|
||||
// 参数校验
|
||||
AssertUtil.isTrue(StringUtils.isNotBlank(srcGroupNodeCode), "srcGroupNodeCode can not be blank");
|
||||
AssertUtil.isTrue(StringUtils.isNotBlank(tgtGroupNodeCode), "tgtGroupNodeCode can not be blank");
|
||||
AssertUtil.notEmpty(templateCodes, "templateCodes can not be empty");
|
||||
// 通过分类结点编码获取其对应的结点编码的路径
|
||||
Map<String, String> nodeCodePathMap = messageGroupNodeService
|
||||
.leafGroupNodeCodePaths(Lists.newArrayList(srcGroupNodeCode, tgtGroupNodeCode));
|
||||
// 通过能否成功获取到其树路径来校验其有效性
|
||||
AssertUtil.isTrue(StringUtils.isNotBlank(nodeCodePathMap.get(srcGroupNodeCode)), "srcGroupNodeCode is invalid");
|
||||
AssertUtil.isTrue(StringUtils.isNotBlank(nodeCodePathMap.get(tgtGroupNodeCode)), "tgtGroupNodeCode is invalid");
|
||||
// 更新分类路径与模板编码的映射关系
|
||||
messageTemplateGroupDao.lambdaUpdate()
|
||||
.eq(MessageTemplateGroup::getPath, nodeCodePathMap.get(srcGroupNodeCode))
|
||||
.in(MessageTemplateGroup::getTemplateCode, templateCodes)
|
||||
.eq(MessageTemplateGroup::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.set(MessageTemplateGroup::getPath, nodeCodePathMap.get(tgtGroupNodeCode))
|
||||
.update();
|
||||
}
|
||||
|
||||
private String removeErrorStr(List<String> onlyContainsOneTemplateCodes) {
|
||||
return String.format("模板:%s。解除关联后,将无关联分类!本次操作无效!",
|
||||
String.join("、", onlyContainsOneTemplateCodes));
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,6 +63,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
|
||||
messageTemplateRouterDao.lambdaUpdate()
|
||||
.eq(MessageTemplateRouter::getTemplateCode, templateCode)
|
||||
.eq(MessageTemplateRouter::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
// TODO: [cold_blade] [P2] 这里需要逻辑删除而非物理删除
|
||||
.remove();
|
||||
// 创建信息的路由信息
|
||||
List<RawMessageRouterDTO> newRouters = routers.stream()
|
||||
|
||||
@ -12,7 +12,6 @@ import org.springframework.http.MediaType;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
@ -47,11 +46,11 @@ public interface MessageTemplateGroupRelationClient {
|
||||
CommonResponse<Void> move(@RequestBody @Valid MessageTemplateGroupRelationMoveRequest request);
|
||||
|
||||
/**
|
||||
* 变更模板与分类的关联关系
|
||||
* 解除分类与模板的关联关系
|
||||
*
|
||||
* @param request 变更分类的相关参数
|
||||
* @return 关联关系解除失败的模板编码
|
||||
*/
|
||||
@PostMapping(value = "/message/template/group-relation/remove", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<List<String>> remove(@RequestBody @Valid MessageTemplateGroupRelationRemoveRequest request);
|
||||
CommonResponse<Void> remove(@RequestBody @Valid MessageTemplateGroupRelationRemoveRequest request);
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ public class MessageTemplateGroupRelationClientFallback implements MessageTempla
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<List<String>> remove(MessageTemplateGroupRelationRemoveRequest request) {
|
||||
public CommonResponse<Void> remove(MessageTemplateGroupRelationRemoveRequest request) {
|
||||
log.error("fall back while removing message template group relation. request:{}", request);
|
||||
return CommonResponse.error("fall back while removing message template group relation");
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user