Merge branch 'dev' of axzsource.com:universal/infrastructure/backend/msg-center-plat into dev
This commit is contained in:
commit
0257f5552e
@ -1,7 +1,6 @@
|
||||
package cn.axzo.msg.center.message.controller;
|
||||
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.msg.center.message.domain.param.MessageTemplateSaveOrUpdateParam;
|
||||
import cn.axzo.msg.center.message.domain.param.MessageTemplateV3SaveOrUpdateParam;
|
||||
import cn.axzo.msg.center.message.domain.param.RelationTemplateMapInitParam;
|
||||
import cn.axzo.msg.center.message.domain.vo.RelationTemplateMapInitRequest;
|
||||
@ -11,11 +10,8 @@ import cn.axzo.msg.center.message.service.MessageTemplateV3Service;
|
||||
import cn.axzo.msg.center.message.service.RelationTemplateMapService;
|
||||
import cn.axzo.msg.center.service.template.client.MessageTemplateV3Client;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3CreateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplatePageRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateSyncDto;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateSyncQueryRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateUpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateUpdateStatusRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3DeleteRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3PageRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateRequest;
|
||||
@ -29,6 +25,7 @@ import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.azxo.framework.common.model.Page;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.MediaType;
|
||||
@ -59,29 +56,34 @@ public class MessageTemplateV3Controller implements MessageTemplateV3Client {
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> save(MessageTemplateV3CreateRequest request) {
|
||||
log.info("MessageTemplateV3Controller#save,request:{}", JSON.toJSONString(request));
|
||||
return CommonResponse.success(
|
||||
messageTemplateV3Service.createTemplate(MessageTemplateV3SaveOrUpdateParam.from(request)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> update(MessageTemplateV3UpdateRequest request) {
|
||||
log.info("MessageTemplateV3Controller#update,request:{}", JSON.toJSONString(request));
|
||||
messageTemplateV3Service.updateTemplate(MessageTemplateV3SaveOrUpdateParam.from(request));
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Void> delete(MessageTemplateV3DeleteRequest request) {
|
||||
log.info("MessageTemplateV3Controller#delete,request:{}", JSON.toJSONString(request));
|
||||
messageTemplateV3Service.deleteTemplate(MessageTemplateV3SaveOrUpdateParam.from(request));
|
||||
return CommonResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<MessageTemplateV3DetailResponse> detail(String templateCode) {
|
||||
log.info("MessageTemplateV3Controller#detail,templateCode:{}", templateCode);
|
||||
return CommonResponse.success(messageTemplateV3Service.detail(templateCode));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<Page<MessageTemplateV3PageResponse>> page(MessageTemplateV3PageRequest request) {
|
||||
log.info("MessageTemplateV3Controller#detail,request:{}", JSON.toJSONString(request));
|
||||
return CommonResponse.success(messageTemplateV3Service.page(request));
|
||||
}
|
||||
|
||||
|
||||
@ -1,15 +1,13 @@
|
||||
package cn.axzo.msg.center.message.domain.param;
|
||||
|
||||
import cn.axzo.msg.center.common.exception.ServiceException;
|
||||
import cn.axzo.msg.center.service.dto.MessageButtonRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageDetailRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateButtonV3DTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateCardJumpV3DTO;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateGroupV3CreateRequest;
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateGroupV3CreateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3CreateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateSyncDto;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateUpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3DeleteRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateRequest;
|
||||
import cn.axzo.msg.center.utils.MessageTemplateCategoryUtil;
|
||||
@ -92,15 +90,15 @@ public class MessageTemplateV3SaveOrUpdateParam implements Serializable {
|
||||
/**
|
||||
* 消息卡片信息标签列表,可为空
|
||||
*/
|
||||
private List<MessageTemplateGroupV3CreateRequest> messageTemplateGroups;
|
||||
private List<MessageTemplateGroupV3CreateRequest> groups;
|
||||
/**
|
||||
* 业务详情展示策略
|
||||
* 卡片跳转
|
||||
*/
|
||||
private MessageDetailRouteStrategyDTO bizDetailShowStrategy;
|
||||
private MessageTemplateCardJumpV3DTO cardJump;
|
||||
/**
|
||||
* 路由策略列表
|
||||
* 按钮列表
|
||||
*/
|
||||
private List<MessageButtonRouteStrategyDTO> routers;
|
||||
private List<MessageTemplateButtonV3DTO> buttons;
|
||||
/**
|
||||
* 待办样式, BIZ_COMMON: 业务待办能用, FLOW_COMMON: 审批待办能用, 其它动态配置的
|
||||
*/
|
||||
@ -121,13 +119,13 @@ public class MessageTemplateV3SaveOrUpdateParam implements Serializable {
|
||||
.leafGroupNodes(request.getLeafGroupNodes())
|
||||
.title(request.getMsgTitle())
|
||||
.content(request.getMsgContent())
|
||||
.messageTemplateGroups(request.getMessageTemplateGroups())
|
||||
.groups(request.getGroups())
|
||||
.icon(request.getMsgIcon())
|
||||
.minAppVersion(request.getMinAppVersion())
|
||||
.operatorId(request.getOperatorId())
|
||||
.routers(request.getRouters())
|
||||
.buttons(request.getButtons())
|
||||
.pushTerminals(request.getPushTerminals())
|
||||
.bizDetailShowStrategy(request.getDetailStrategy())
|
||||
.cardJump(request.getCardJump())
|
||||
.pushData(request.getPushData())
|
||||
.build();
|
||||
}
|
||||
@ -141,14 +139,14 @@ public class MessageTemplateV3SaveOrUpdateParam implements Serializable {
|
||||
.leafGroupNodes(request.getLeafGroupNodes())
|
||||
.title(request.getMsgTitle())
|
||||
.content(request.getMsgContent())
|
||||
.messageTemplateGroups(request.getMessageTemplateGroups())
|
||||
.groups(request.getGroups())
|
||||
.minAppVersion(request.getMinAppVersion())
|
||||
.icon(request.getMsgIcon())
|
||||
.operatorId(request.getOperatorId())
|
||||
.operatorName(request.getOperatorName())
|
||||
.routers(request.getRouters())
|
||||
.buttons(request.getButtons())
|
||||
.pushTerminals(request.getPushTerminals())
|
||||
.bizDetailShowStrategy(request.getDetailStrategy())
|
||||
.groups(request.getGroups())
|
||||
.pushData(request.getPushData())
|
||||
.build();
|
||||
}
|
||||
@ -161,25 +159,6 @@ public class MessageTemplateV3SaveOrUpdateParam implements Serializable {
|
||||
}
|
||||
|
||||
|
||||
public static MessageTemplateV3SaveOrUpdateParam fromSync(MessageTemplateSyncDto request) {
|
||||
MessageCategoryEnum category = MessageTemplateCategoryUtil
|
||||
.checkAndReturnSubCategory(request.getCategory(), request.getSubCategory())
|
||||
.orElseThrow(() -> new ServiceException("无效的参数"));
|
||||
return MessageTemplateV3SaveOrUpdateParam.builder()
|
||||
.templateName(request.getTemplateName())
|
||||
.msgCategory(category)
|
||||
.leafGroupNodes(request.getLeafGroupNodes())
|
||||
.title(request.getMsgTitle())
|
||||
.content(request.getMsgContent())
|
||||
// .msgCardContentItems(request.getCardContentItems())
|
||||
.icon(request.getMsgIcon())
|
||||
.minAppVersion(request.getMinAppVersion())
|
||||
.operatorId(request.getOperatorId())
|
||||
.routers(request.getRouters())
|
||||
.pushTerminals(request.getPushTerminals())
|
||||
.bizDetailShowStrategy(request.getDetailStrategy())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package cn.axzo.msg.center.message.service;
|
||||
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateGroupV3;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateButtonV3DTO;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateGroupV3CreateRequest;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 消息模板分类管理
|
||||
*
|
||||
* @author cold_blade
|
||||
* @date 2023/10/5
|
||||
* @version 1.0
|
||||
*/
|
||||
public interface MessageTemplateButtonV3Service {
|
||||
|
||||
|
||||
/**
|
||||
* 保存按钮
|
||||
*/
|
||||
void saveTemplateButton(String messageTemplateCode, List<MessageTemplateButtonV3DTO> buttonV3List);
|
||||
|
||||
/**
|
||||
* 更新按钮
|
||||
*/
|
||||
void updateTemplateButton(String messageTemplateCode, List<MessageTemplateButtonV3DTO> buttonV3List);
|
||||
|
||||
void deleteTemplateButton(String templateNode);
|
||||
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
package cn.axzo.msg.center.message.service.impl;
|
||||
|
||||
import cn.axzo.msg.center.dal.MessageTemplateButtonV3Dao;
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateButtonV3;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateButtonV3Service;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateButtonV3DTO;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/10/5
|
||||
* @version 1.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class MessageTemplateButtonV3ServiceImpl implements MessageTemplateButtonV3Service {
|
||||
|
||||
private final MessageTemplateButtonV3Dao messageTemplateButtonV3Dao;
|
||||
|
||||
@Override
|
||||
public void saveTemplateButton(String messageTemplateCode, List<MessageTemplateButtonV3DTO> buttonV3List) {
|
||||
log.info("ButtonV3#saveTemplateButton,code:{},buttonV3List:{}",messageTemplateCode, JSON.toJSONString(buttonV3List));
|
||||
if (StringUtils.isBlank(messageTemplateCode) || CollectionUtils.isEmpty(buttonV3List)) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<MessageTemplateButtonV3> buttonV3s = buttonV3List.stream().map(item -> {
|
||||
MessageTemplateButtonV3 buttonV3 = BeanUtil.copyProperties(item, MessageTemplateButtonV3.class);
|
||||
buttonV3.setTemplateCode(messageTemplateCode);
|
||||
return buttonV3;
|
||||
}).collect(Collectors.toList());
|
||||
log.info("ButtonV3#saveTemplateButton,code:{},buttonV3s:{}",messageTemplateCode, JSON.toJSONString(buttonV3s));
|
||||
messageTemplateButtonV3Dao.saveBatch(buttonV3s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTemplateButton(String messageTemplateCode, List<MessageTemplateButtonV3DTO> buttonV3List) {
|
||||
log.info("ButtonV3#updateTemplateButton,code:{},buttonV3List:{}",messageTemplateCode, JSON.toJSONString(buttonV3List));
|
||||
//逻辑删除
|
||||
this.deleteTemplateButton(messageTemplateCode);
|
||||
// 保存
|
||||
this.saveTemplateButton(messageTemplateCode, buttonV3List);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteTemplateButton(String templateNode) {
|
||||
log.info("ButtonV3#deleteTemplateButton,code:{}",templateNode);
|
||||
if (StringUtils.isBlank(templateNode)) {
|
||||
log.info("the templateNode is blank.");
|
||||
return;
|
||||
}
|
||||
messageTemplateButtonV3Dao.lambdaUpdate()
|
||||
.eq(MessageTemplateButtonV3::getTemplateCode, templateNode)
|
||||
.eq(MessageTemplateButtonV3::getIsDelete, 0)
|
||||
.setSql("is_delete = id")
|
||||
.update();
|
||||
}
|
||||
}
|
||||
@ -8,10 +8,10 @@ import cn.axzo.msg.center.dal.MessageTemplateGroupV3Dao;
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateGroup;
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateGroupV3;
|
||||
import cn.axzo.msg.center.message.service.MessageGroupNodeService;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateGroupService;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateGroupV3Service;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateGroupV3CreateRequest;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -132,6 +132,7 @@ public class MessageTemplateGroupV3ServiceImpl implements MessageTemplateGroupV3
|
||||
|
||||
@Override
|
||||
public void saveTemplateGroup(String messageTemplateCode, List<MessageTemplateGroupV3CreateRequest> groupV3List) {
|
||||
log.info("groupV3#saveTemplateGroup,templateCode:{},groupV3List:{}", messageTemplateCode, JSON.toJSONString(groupV3List));
|
||||
if (CollectionUtils.isEmpty(groupV3List)) {
|
||||
log.info("groupV3List is empty.");
|
||||
return;
|
||||
@ -142,11 +143,13 @@ public class MessageTemplateGroupV3ServiceImpl implements MessageTemplateGroupV3
|
||||
messageTemplateGroupV3.setTemplateCode(messageTemplateCode);
|
||||
return messageTemplateGroupV3;
|
||||
}).collect(Collectors.toList());
|
||||
log.info("groupV3#saveTemplateGroup,templateCode:{},templateGroupV3List:{}", messageTemplateCode, JSON.toJSONString(templateGroupV3List));
|
||||
messageTemplateGroupV3Dao.saveBatch(templateGroupV3List);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTemplateGroup(String messageTemplateCode, List<MessageTemplateGroupV3CreateRequest> groupV3List) {
|
||||
log.info("groupV3#updateTemplateGroup,templateCode:{},groupV3List:{}", messageTemplateCode, JSON.toJSONString(groupV3List));
|
||||
// 删除卡片分组
|
||||
deleteTemplateGroup(messageTemplateCode);
|
||||
// 插入新的分组
|
||||
|
||||
@ -18,6 +18,7 @@ import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO.MessageRou
|
||||
import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO.MessageRouteDetailDTO;
|
||||
import cn.axzo.msg.center.message.domain.param.MessageTemplateV3SaveOrUpdateParam;
|
||||
import cn.axzo.msg.center.message.service.MessageGroupNodeService;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateButtonV3Service;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateGroupService;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateGroupV3Service;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateRouterService;
|
||||
@ -26,16 +27,13 @@ import cn.axzo.msg.center.message.service.group.GroupTemplateService;
|
||||
import cn.axzo.msg.center.service.dto.MessageBaseTemplateDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageButtonRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateButtonV3DTO;
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
import cn.axzo.msg.center.service.enums.StatusEnum;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateGroupV3CreateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplatePageRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3PageRequest;
|
||||
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateGroupV3DTO;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplatePageResponse;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateV3DetailResponse;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateV3PageResponse;
|
||||
import cn.axzo.msg.center.utils.JSONObjectUtil;
|
||||
@ -92,33 +90,41 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
private final GroupTemplateService groupTemplateService;
|
||||
private final MessageTemplateV3Dao messageTemplateV3Dao;
|
||||
private final MessageTemplateGroupV3Service messageTemplateGroupV3Service;
|
||||
private final MessageTemplateButtonV3Service messageTemplateButtonV3Service;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTemplate(MessageTemplateV3SaveOrUpdateParam param) {
|
||||
// 创建模板基础数据
|
||||
log.info("MessageTemplateV3ServiceImpl#createTemplate,param:{}", JSON.toJSONString(param));
|
||||
//1 创建模板基础数据
|
||||
String templateCode = saveTemplate(param);
|
||||
// 创建模板的路由数据
|
||||
// saveTemplateRouters(param, templateCode);
|
||||
// 创建模板与分类的关联关系数据
|
||||
messageTemplateGroupV3Service.saveTemplateGroup(templateCode,param.getMessageTemplateGroups());
|
||||
//2 创建模板与分类的关联关系数据
|
||||
messageTemplateGroupV3Service.saveTemplateGroup(templateCode,param.getGroups());
|
||||
//3 保存按钮列表
|
||||
messageTemplateButtonV3Service.saveTemplateButton(templateCode, param.getButtons());
|
||||
//4 创建模板与分类的关联关系数据
|
||||
messageTemplateGroupService.templateGroup(templateCode, param.getLeafGroupNodes());
|
||||
return templateCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTemplate(MessageTemplateV3SaveOrUpdateParam param) {
|
||||
// 更新模板基础数据
|
||||
log.info("MessageTemplateV3ServiceImpl#updateTemplate,param:{}", JSON.toJSONString(param));
|
||||
//1 更新模板基础数据
|
||||
updateMessageTemplate(param);
|
||||
// 更新模板分类信息
|
||||
//2 更新分组
|
||||
messageTemplateGroupV3Service.updateTemplateGroup(param.getTemplateCode(), param.getGroups());
|
||||
//3 更新按钮列表
|
||||
messageTemplateButtonV3Service.updateTemplateButton(param.getTemplateCode(), param.getButtons());
|
||||
//4 更新模板分类信息
|
||||
updateTemplateGroupRelation(param);
|
||||
// 更新模板路由信息
|
||||
// updateTemplateRouters(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteTemplate(MessageTemplateV3SaveOrUpdateParam param) {
|
||||
log.info("MessageTemplateV3ServiceImpl#deleteTemplate,param:{}", JSON.toJSONString(param));
|
||||
if (Objects.isNull(param) || StringUtils.isBlank(param.getTemplateCode())) {
|
||||
log.info("messageTemplateCode is blank");
|
||||
return;
|
||||
@ -132,6 +138,7 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
|
||||
@Override
|
||||
public MessageTemplateV3DetailResponse detail(String templateCode) {
|
||||
log.info("MessageTemplateV3ServiceImpl#deleteTemplate,templateCode:{}", templateCode);
|
||||
if (StringUtils.isBlank(templateCode)) {
|
||||
return null;
|
||||
}
|
||||
@ -276,6 +283,7 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
private String saveTemplate(MessageTemplateV3SaveOrUpdateParam param) {
|
||||
String templateCode = UUIDUtil.uuidString();
|
||||
MessageTemplateV3 template = convert(param);
|
||||
log.info("templateV3#saveTemplate,template:{}", JSON.toJSONString(template));
|
||||
boolean result = doSaveTemplate(template, templateCode);
|
||||
int retryCnt = 0;
|
||||
while (!result && retryCnt++ < RETRY_CNT_MAX) {
|
||||
@ -297,6 +305,7 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
return false;
|
||||
}
|
||||
template.setCode(templateCode);
|
||||
log.info("templateV3#doSaveTemplate,template:{}", JSON.toJSONString(template));
|
||||
messageTemplateV3Dao.save(template);
|
||||
return true;
|
||||
} finally {
|
||||
@ -318,7 +327,6 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
template.setTitle(param.getTitle());
|
||||
template.setContent(param.getContent());
|
||||
template.setDetailStyleCode(param.getDetailStyleCode());
|
||||
// template.setCardContent(JSONObjectUtil.toJSONString(param.getMsgCardContentItems()));
|
||||
template.setIcon(param.getIcon());
|
||||
template.setPushTerminal(JSONObjectUtil.toJSONString(param.getPushTerminals()));
|
||||
template.setMinAppVersion(param.getMinAppVersion());
|
||||
@ -329,15 +337,15 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
template.setUpdatePersonId(param.getOperatorId());
|
||||
template.setUpdatePersonName(param.getOperatorName());
|
||||
template.setPushData(param.getPushData());
|
||||
return template;
|
||||
}
|
||||
|
||||
public void saveTemplateRouters(MessageTemplateV3SaveOrUpdateParam param, String templateCode) {
|
||||
MessageTemplateRouterDTO templateRouter = buildTemplateRouter(param, templateCode);
|
||||
if (templateRouter.isValid()) {
|
||||
// 模板配置了路由的场景
|
||||
messageTemplateRouterService.saveOrUpdate(templateRouter, false, templateCode);
|
||||
if (Objects.nonNull(param) && Objects.nonNull(param.getCardJump())) {
|
||||
if (Objects.nonNull(param.getCardJump().getCardUrlOpenStrategy())) {
|
||||
template.setCardUrlOpenStrategy(param.getCardJump().getCardUrlOpenStrategy());
|
||||
}
|
||||
if (Objects.nonNull(param.getCardJump().getCardUrlConfig())) {
|
||||
template.setCardUrlConfig(param.getCardJump().getCardUrlConfig());
|
||||
}
|
||||
}
|
||||
return template;
|
||||
}
|
||||
|
||||
private void updateMessageTemplate(MessageTemplateV3SaveOrUpdateParam param) {
|
||||
@ -351,6 +359,10 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
.set(StringUtils.isNotBlank(param.getTitle()), MessageTemplateV3::getTitle, param.getTitle())
|
||||
// .set(MessageBaseTemplate::getCardContent, JSONObjectUtil.toJSONString(param.getMsgCardContentItems()))
|
||||
.set(MessageTemplateV3::getContent, param.getContent())
|
||||
.set(Objects.nonNull(param.getCardJump()) && Objects.nonNull(param.getCardJump().getCardUrlOpenStrategy())
|
||||
,MessageTemplateV3::getCardUrlOpenStrategy,param.getCardJump().getCardUrlOpenStrategy())
|
||||
.set(Objects.nonNull(param.getCardJump()) && Objects.nonNull(param.getCardJump().getCardUrlConfig())
|
||||
,MessageTemplateV3::getCardUrlConfig, param.getCardJump().getCardUrlConfig())
|
||||
.set(StringUtils.isNotBlank(param.getDetailStyleCode()),
|
||||
MessageTemplateV3::getDetailStyleCode, param.getDetailStyleCode())
|
||||
.set(MessageTemplateV3::getUpdatePersonId, param.getOperatorId())
|
||||
@ -370,17 +382,6 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
messageTemplateGroupService.updateTemplateGroup(param.getTemplateCode(), param.getLeafGroupNodes());
|
||||
}
|
||||
|
||||
private void updateTemplateRouters(MessageTemplateV3SaveOrUpdateParam param) {
|
||||
MessageTemplateRouterDTO templateRouter = buildTemplateRouter(param, param.getTemplateCode());
|
||||
boolean isCleanOldFlag = Objects.isNull(param.getBizDetailShowStrategy())
|
||||
|| CollectionUtils.isEmpty(param.getBizDetailShowStrategy().getTerminals())
|
||||
|| CollectionUtils.isEmpty(param.getRouters());
|
||||
if (templateRouter.isValid() || isCleanOldFlag) {
|
||||
// 模板修改了路由的场景
|
||||
messageTemplateRouterService.saveOrUpdate(templateRouter, true, param.getTemplateCode());
|
||||
}
|
||||
}
|
||||
|
||||
private IPage<MessageTemplateV3> pageQueryBaseTemplate(MessageTemplateV3PageRequest request) {
|
||||
List<String> templateCodes = Lists.newArrayList();
|
||||
if (StringUtils.isNotBlank(request.getGroupNodeCode())) {
|
||||
@ -495,8 +496,8 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
.msgContent(record.getContent())
|
||||
.messageTemplateGroups(CollectionUtils.isNotEmpty(messageTemplateGroups) ? BeanUtil.copyToList(messageTemplateGroups, MessageTemplateGroupV3DTO.class) : Lists.newArrayList())
|
||||
.msgIcon(record.getIcon())
|
||||
.detailStrategy(MessageRouterUtil.fetchBizDetailShowStrategy(msgTemplateRouter).orElse(null))
|
||||
.routers(MessageRouterUtil.fetchMessageRouterButtonStrategies(msgTemplateRouter))
|
||||
// .detailStrategy(MessageRouterUtil.fetchBizDetailShowStrategy(msgTemplateRouter).orElse(null))
|
||||
// .routers(MessageRouterUtil.fetchMessageRouterButtonStrategies(msgTemplateRouter))
|
||||
.minAppVersion(record.getMinAppVersion())
|
||||
.createTimestamp(record.getCreateAt().getTime())
|
||||
.updateTimestamp(record.getUpdateAt().getTime())
|
||||
@ -507,21 +508,4 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
.pushData(record.getPushData())
|
||||
.build();
|
||||
}
|
||||
|
||||
private MessageTemplateRouterDTO buildTemplateRouter(MessageTemplateV3SaveOrUpdateParam param, String templateCode) {
|
||||
MessageTemplateRouterDTO templateRouter = MessageTemplateRouterDTO.builder().build();
|
||||
if (Objects.nonNull(param.getBizDetailShowStrategy())
|
||||
&& CollectionUtils.isNotEmpty(param.getBizDetailShowStrategy().getTerminals())) {
|
||||
MessageRouteDetailDTO detailRouter = MessageRouteDetailDTO.from(param.getBizDetailShowStrategy(), templateCode);
|
||||
templateRouter.setRouteDetail(detailRouter);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(param.getRouters())) {
|
||||
List<MessageRouteButtonDTO> btnRouters = param.getRouters().stream()
|
||||
.filter(MessageButtonRouteStrategyDTO::isValid)
|
||||
.map(e -> MessageRouteButtonDTO.from(e, templateCode))
|
||||
.collect(Collectors.toList());
|
||||
templateRouter.setRouteButtons(btnRouters);
|
||||
}
|
||||
return templateRouter;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,100 @@
|
||||
package cn.axzo.msg.center.service.dto;
|
||||
|
||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
||||
import cn.axzo.msg.center.service.enums.ButtonStyleEnum;
|
||||
import cn.axzo.msg.center.service.enums.PresetButtonType;
|
||||
import cn.axzo.msg.center.service.enums.RouterButtonSourceEnum;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description
|
||||
*
|
||||
* @author cold_blade
|
||||
* @date 2023/9/23
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MessageTemplateButtonV3DTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -9083376003614521781L;
|
||||
|
||||
/**
|
||||
* 预设按钮类型
|
||||
*/
|
||||
private PresetButtonType presetBtnCode;
|
||||
|
||||
/**
|
||||
* 按钮来源
|
||||
* SYSTEM: 系统
|
||||
* CUSTOM: 自定义
|
||||
*/
|
||||
private RouterButtonSourceEnum source;
|
||||
|
||||
/**
|
||||
* 路由分类
|
||||
* JUMP: 直接跳转
|
||||
* ACTION: 接口调用
|
||||
* PRESET_BUTTON: 预设按钮
|
||||
*/
|
||||
private RouterCategoryEnum category;
|
||||
|
||||
/**
|
||||
* 路由按钮的跳转url配置
|
||||
*/
|
||||
private UrlConfig urlConfig;
|
||||
|
||||
/**
|
||||
* 按钮样式配置
|
||||
* HIGH_LIGHT: 按钮高亮展示
|
||||
* OVER_CARD: 按钮显示在卡片上
|
||||
*/
|
||||
private List<ButtonStyleEnum> style;
|
||||
|
||||
/**
|
||||
* 执行人可见:true 不可见:false
|
||||
*/
|
||||
private Boolean executorShow;
|
||||
|
||||
/**
|
||||
* 待办状态可见可见:true 不可见:false
|
||||
*/
|
||||
private Boolean pendingShow;
|
||||
|
||||
/**
|
||||
* 按钮优先级,数值越大优先级越低
|
||||
*/
|
||||
private Integer priority;
|
||||
|
||||
/**
|
||||
* <p>要改2处都要记得改
|
||||
*/
|
||||
public boolean isValid() {
|
||||
// if (RouterCategoryEnum.ACTION.equals(category)) {
|
||||
// return StringUtils.isNotBlank(apiUrl);
|
||||
// }
|
||||
if (RouterCategoryEnum.PRESET_BUTTON.equals(category)) {
|
||||
return presetBtnCode != null;
|
||||
}
|
||||
//TODO
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,42 @@
|
||||
package cn.axzo.msg.center.service.dto;
|
||||
|
||||
import cn.axzo.msg.center.service.domain.CardUrlConfig;
|
||||
import cn.axzo.msg.center.service.enums.CardUrlOpenStrategy;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author cold_blade
|
||||
* @date 2023/11/6
|
||||
* @version 1.0
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MessageTemplateCardJumpV3DTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -3496745332397525305L;
|
||||
|
||||
/**
|
||||
* 卡片跳转方式. NONE: 无跳转, OPEN_TODO_DETAIL: 打开待办详情, OPEN_CUSTOM_PAGE: 打开指定页面
|
||||
*/
|
||||
private CardUrlOpenStrategy cardUrlOpenStrategy;
|
||||
|
||||
/**
|
||||
* 卡片跳转配置. 在links的基础上再包一层, 避免以后卡片增加自己的配置
|
||||
*/
|
||||
private CardUrlConfig cardUrlConfig;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -1,17 +1,13 @@
|
||||
package cn.axzo.msg.center.service.template.client;
|
||||
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3CreateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplatePageRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateSyncDto;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateSyncQueryRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateUpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateUpdateStatusRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3DeleteRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3PageRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateStatusRequest;
|
||||
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplatePageResponse;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateV3DetailResponse;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateV3PageResponse;
|
||||
|
||||
@ -4,8 +4,6 @@ import cn.axzo.msg.center.service.domain.GroupConfig;
|
||||
import cn.axzo.msg.center.service.enums.GroupType;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description
|
||||
*
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
package cn.axzo.msg.center.service.template.request;
|
||||
|
||||
import cn.axzo.msg.center.service.dto.MessageButtonRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageDetailRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateButtonV3DTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateCardJumpV3DTO;
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
@ -33,7 +32,6 @@ public class MessageTemplateV3CreateRequest implements Serializable {
|
||||
/**
|
||||
* 操作者的自然人id
|
||||
*/
|
||||
@NotNull(message = "operatorId is required")
|
||||
private Long operatorId;
|
||||
/**
|
||||
* 操作人人姓名
|
||||
@ -87,17 +85,19 @@ public class MessageTemplateV3CreateRequest implements Serializable {
|
||||
*/
|
||||
private String msgIcon;
|
||||
/**
|
||||
* 消息卡片信息标签列表,可为空
|
||||
* 卡片分组
|
||||
*/
|
||||
private List<MessageTemplateGroupV3CreateRequest> messageTemplateGroups;
|
||||
private List<MessageTemplateGroupV3CreateRequest> groups;
|
||||
|
||||
/**
|
||||
* 详情展示策略
|
||||
* 卡片跳转
|
||||
*/
|
||||
private MessageDetailRouteStrategyDTO detailStrategy;
|
||||
private MessageTemplateCardJumpV3DTO cardJump;
|
||||
|
||||
/**
|
||||
* 路由策略列表
|
||||
* 按钮列表
|
||||
*/
|
||||
private List<MessageButtonRouteStrategyDTO> routers;
|
||||
private List<MessageTemplateButtonV3DTO> buttons;
|
||||
/**
|
||||
* 待办样式, BIZ_COMMON: 业务待办能用, FLOW_COMMON: 审批待办能用, 其它动态配置的
|
||||
*/
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
package cn.axzo.msg.center.service.template.request;
|
||||
|
||||
import cn.axzo.msg.center.service.dto.MessageButtonRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageDetailRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateButtonV3DTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateCardJumpV3DTO;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -70,15 +69,15 @@ public class MessageTemplateV3UpdateRequest implements Serializable {
|
||||
/**
|
||||
* 卡片分组
|
||||
*/
|
||||
private List<MessageTemplateGroupV3CreateRequest> messageTemplateGroups;
|
||||
private List<MessageTemplateGroupV3CreateRequest> groups;
|
||||
/**
|
||||
* 详情展示策略
|
||||
* 卡片跳转
|
||||
*/
|
||||
private MessageDetailRouteStrategyDTO detailStrategy;
|
||||
private MessageTemplateCardJumpV3DTO cardJump;
|
||||
/**
|
||||
* 路由策略列表
|
||||
* 按钮列表
|
||||
*/
|
||||
private List<MessageButtonRouteStrategyDTO> routers;
|
||||
private List<MessageTemplateButtonV3DTO> buttons;
|
||||
/**
|
||||
* 待办样式, BIZ_COMMON: 业务待办能用, FLOW_COMMON: 审批待办能用, 其它动态配置的
|
||||
*/
|
||||
|
||||
@ -44,7 +44,6 @@ public class MessageTemplateGroupV3DTO{
|
||||
/**
|
||||
* 分组配置
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private GroupConfig groupConfig;
|
||||
|
||||
}
|
||||
@ -1,12 +1,12 @@
|
||||
package cn.axzo.msg.center.service.template.response;
|
||||
|
||||
import cn.axzo.msg.center.service.dto.MessageButtonRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageDetailRouteStrategyDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateButtonV3DTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageTemplateCardJumpV3DTO;
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.PushTerminalEnum;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateGroupV3CreateRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -79,13 +79,13 @@ public class MessageTemplateV3DetailResponse implements Serializable {
|
||||
*/
|
||||
private List<MessageTemplateGroupV3DTO> messageTemplateGroups;
|
||||
/**
|
||||
* 详情展示策略
|
||||
* 卡片跳转
|
||||
*/
|
||||
private MessageDetailRouteStrategyDTO detailStrategy;
|
||||
private MessageTemplateCardJumpV3DTO cardJump;
|
||||
/**
|
||||
* 路由策略列表
|
||||
* 按钮列表
|
||||
*/
|
||||
private List<MessageButtonRouteStrategyDTO> routers;
|
||||
private List<MessageTemplateButtonV3DTO> buttons;
|
||||
/**
|
||||
* 模板创建时间戳
|
||||
*/
|
||||
|
||||
@ -2,12 +2,14 @@ package cn.axzo.msg.center.domain.entity;
|
||||
|
||||
import cn.axzo.msg.center.domain.persistence.BaseEntityExt;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Data
|
||||
@Setter
|
||||
@Getter
|
||||
public abstract class BaseEntityWithOperator<T extends Model<T>> extends BaseEntityExt<T> {
|
||||
/**
|
||||
* 创建人id
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.msg.center.domain.entity;
|
||||
|
||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
||||
import cn.axzo.msg.center.service.enums.ButtonStyleEnum;
|
||||
import cn.axzo.msg.center.service.enums.PresetButtonType;
|
||||
import cn.axzo.msg.center.service.enums.RouterButtonSourceEnum;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@ -54,7 +57,7 @@ public class MessageTemplateButtonV3 extends BaseEntityWithOperator<MessageTempl
|
||||
* 按钮style配置
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private JSONArray style;
|
||||
private List<ButtonStyleEnum> style;
|
||||
|
||||
/**
|
||||
* 执行人可见:true 不可见:false
|
||||
|
||||
@ -79,7 +79,7 @@ public class MessageTemplateV3 extends BaseEntityWithOperator<MessageTemplateV3>
|
||||
* 卡片跳转配置. 在links的基础上再包一层, 避免以后卡片增加自己的配置
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private CardUrlConfig cardUrConfig;
|
||||
private CardUrlConfig cardUrlConfig;
|
||||
|
||||
/**
|
||||
* IM发送优先级
|
||||
|
||||
Loading…
Reference in New Issue
Block a user