REQ-3045: 同步模版基础

This commit is contained in:
yanglin 2024-10-10 16:19:02 +08:00
parent fa5dd8f981
commit bd3eb78983
5 changed files with 140 additions and 24 deletions

View File

@ -1,29 +1,27 @@
package cn.axzo.msg.center.message.controller;
import cn.axzo.basics.common.util.AssertUtil;
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;
import cn.axzo.msg.center.message.service.MessageTemplateNewService;
import cn.axzo.msg.center.message.service.MessageTemplateNewSyncService;
import cn.axzo.msg.center.message.service.MessageTemplateV3Service;
import cn.axzo.msg.center.message.service.RelationTemplateMapService;
import cn.axzo.msg.center.message.service.impl.MessageTemplateV3SyncService;
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.MessageTemplateSyncDto;
import cn.axzo.msg.center.service.template.request.MessageTemplateSyncQueryRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3CreateRequest;
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.MessageTemplateV3SyncRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncResponse;
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;
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;
@ -51,7 +49,7 @@ public class MessageTemplateV3Controller implements MessageTemplateV3Client {
private final MessageTemplateNewService messageTemplateNewService;
private final RelationTemplateMapService relationTemplateMapService;
private final MessageTemplateNewSyncService messageTemplateNewSyncService;
private final MessageTemplateV3SyncService messageTemplateV3SyncService;
private final MessageTemplateV3Service messageTemplateV3Service;
@Override
@ -98,17 +96,6 @@ public class MessageTemplateV3Controller implements MessageTemplateV3Client {
return CommonResponse.success();
}
@Override
public CommonResponse<MessageTemplateSyncDto> getSyncMessageTemplate(
MessageTemplateSyncQueryRequest request) {
MessageTemplateDetailResponse detail = messageTemplateNewService.querySyncMessageTemplate(request.getTemplateCode());
AssertUtil.notNull(detail, "消息模板不存在");
MessageTemplateSyncDto result = BeanUtil.copyProperties(detail, MessageTemplateSyncDto.class);
result.setTemplateCode(request.getTemplateCode());
result.setEnv(request.getEnv());
return CommonResponse.success(result);
}
@Override
public CommonResponse<List<MessageDetailStyle>> listTemplateDetailStyles() {
List<MessageDetailStyle> styles = messageTemplateNewService.listTemplateDetailStyles();
@ -116,10 +103,16 @@ public class MessageTemplateV3Controller implements MessageTemplateV3Client {
}
@Override
public CommonResponse<Void> syncTemplate(MessageTemplateSyncDto param) {
log.info("syncTemplate param= [{}]", JSONUtil.toJsonStr(param));
messageTemplateNewSyncService.syncTemplate(param);
return CommonResponse.success();
public CommonResponse<MessageTemplateV3SyncResponse>
getSyncMessageTemplate(MessageTemplateSyncQueryRequest request) {
log.info("getSyncMessageTemplate param= [{}]", JSONUtil.toJsonStr(request));
return CommonResponse.success(messageTemplateV3SyncService.getSyncMessageTemplate(request));
}
@Override
public CommonResponse<String> syncTemplate(MessageTemplateV3SyncRequest request) {
log.info("syncTemplate param= [{}]", JSONUtil.toJsonStr(request));
return CommonResponse.success(messageTemplateV3SyncService.syncTemplate(request));
}
@PostMapping(value = "/message/template/relation/init/v3", produces = {MediaType.APPLICATION_JSON_VALUE})

View File

@ -0,0 +1,91 @@
package cn.axzo.msg.center.message.service.impl;
import cn.axzo.msg.center.common.utils.BizAssertions;
import cn.axzo.msg.center.dal.MessageTemplateButtonV3Dao;
import cn.axzo.msg.center.dal.MessageTemplateGroupV3Dao;
import cn.axzo.msg.center.dal.MessageTemplateV3Dao;
import cn.axzo.msg.center.domain.entity.BaseEntityWithOperator;
import cn.axzo.msg.center.domain.entity.MessageTemplateButtonV3;
import cn.axzo.msg.center.domain.entity.MessageTemplateGroupV3;
import cn.axzo.msg.center.domain.entity.MessageTemplateV3;
import cn.axzo.msg.center.service.template.request.MessageTemplateSyncQueryRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncResponse;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author yanglin
*/
@Service
@RequiredArgsConstructor
public class MessageTemplateV3SyncService {
private final MessageTemplateV3Dao messageTemplateV3Dao;
private final MessageTemplateGroupV3Dao messageTemplateGroupV3Dao;
private final MessageTemplateButtonV3Dao messageTemplateButtonV3Dao;
public MessageTemplateV3SyncResponse getSyncMessageTemplate(MessageTemplateSyncQueryRequest request) {
MessageTemplateV3 template = findTemplate(request.getTemplateCode());
BizAssertions.assertNotNull(template, "未找到需要同步的模版: {}", request.getTemplateCode());
List<MessageTemplateGroupV3> groups = messageTemplateGroupV3Dao.lambdaQuery()
.eq(MessageTemplateGroupV3::getTemplateCode, template.getCode())
.list();
List<MessageTemplateButtonV3> buttons = messageTemplateButtonV3Dao.lambdaQuery()
.eq(MessageTemplateButtonV3::getTemplateCode, template.getCode())
.list();
MessageTemplateV3SyncResponse resp = new MessageTemplateV3SyncResponse();
JSONObject respJson = new JSONObject();
respJson.put("template", template);
respJson.put("groups", groups);
respJson.put("buttons", buttons);
resp.setTemplate(respJson);
return resp;
}
/**
* @return error
*/
public String syncTemplate(MessageTemplateV3SyncRequest request) {
MessageTemplateV3 template = request.getTemplate()
.getObject("template", MessageTemplateV3.class);
MessageTemplateV3 savedTemplate = findTemplate(template.getCode());
if (savedTemplate != null) return "模板已存在";
List<MessageTemplateGroupV3> groups = request.getTemplate()
.getObject("groups", new TypeReference<List<MessageTemplateGroupV3>>() {});
List<MessageTemplateButtonV3> buttons = request.getTemplate()
.getObject("groups", new TypeReference<List<MessageTemplateButtonV3>>() {});
setBasicProps(template, request.getOperatorId(), request.getOperatorName());
groups.forEach(group -> setBasicProps(group, request.getOperatorId(), request.getOperatorName()));
buttons.forEach(button -> setBasicProps(button, request.getOperatorId(), request.getOperatorName()));
messageTemplateV3Dao.save(template);
if (CollectionUtils.isNotEmpty(groups))
messageTemplateGroupV3Dao.saveBatch(groups);
if (CollectionUtils.isNotEmpty(buttons))
messageTemplateButtonV3Dao.saveBatch(buttons);
return null;
}
private MessageTemplateV3 findTemplate(String templateCode) {
return messageTemplateV3Dao.lambdaQuery()
.eq(MessageTemplateV3::getCode, templateCode)
.one();
}
private void setBasicProps(BaseEntityWithOperator<?> entity, Long operatorId, String operatorName) {
entity.setCreateAt(null);
entity.setUpdateAt(null);
entity.setCreatePersonId(operatorId);
entity.setCreatePersonName(operatorName);
entity.setUpdatePersonId(operatorId);
entity.setUpdatePersonName(operatorName);
}
}

View File

@ -5,6 +5,8 @@ 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.MessageTemplateV3DeleteRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3PageRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncResponse;
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;
@ -96,14 +98,14 @@ public interface MessageTemplateV3Client {
* 查询消息模板
*/
@PostMapping(value = "/message/template/v3/sync/get", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<MessageTemplateSyncDto> getSyncMessageTemplate(@RequestBody @Valid MessageTemplateSyncQueryRequest request);
CommonResponse<MessageTemplateV3SyncResponse> getSyncMessageTemplate(@RequestBody @Valid MessageTemplateSyncQueryRequest request);
/**
* 同步消息模板
* req-1896 说明仅pre环境能同步
*/
@PostMapping(value = "/message/template/v3/sync", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<Void> syncTemplate(@RequestBody @Valid MessageTemplateSyncDto request);
CommonResponse<String> syncTemplate(@RequestBody @Valid MessageTemplateV3SyncRequest request);
/**
* 获取所有消息样式

View File

@ -0,0 +1,16 @@
package cn.axzo.msg.center.service.template.request;
import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;
/**
* @author yanglin
*/
@Setter
@Getter
public class MessageTemplateV3SyncRequest {
private JSONObject template;
private Long operatorId;
private String operatorName;
}

View File

@ -0,0 +1,14 @@
package cn.axzo.msg.center.service.template.request;
import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;
/**
* @author yanglin
*/
@Setter
@Getter
public class MessageTemplateV3SyncResponse {
private JSONObject template;
}