diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateGroupRelationController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateGroupRelationController.java new file mode 100644 index 00000000..19f03b33 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateGroupRelationController.java @@ -0,0 +1,61 @@ +package cn.axzo.msg.center.message.controller; + +import cn.axzo.msg.center.common.utils.PageHelperUtil; +import cn.axzo.msg.center.message.service.MessageTemplateGroupService; +import cn.axzo.msg.center.message.service.MessageTemplateNewService; +import cn.axzo.msg.center.service.dto.MessageBaseTemplateDTO; +import cn.axzo.msg.center.service.group.client.MessageTemplateGroupRelationClient; +import cn.axzo.msg.center.service.group.request.MessageTemplateGroupRelationMoveRequest; +import cn.axzo.msg.center.service.group.request.MessageTemplateGroupRelationPageRequest; +import cn.axzo.msg.center.service.group.request.MessageTemplateGroupRelationRemoveRequest; +import cn.axzo.msg.center.service.group.response.MessageTemplateGroupRelationResponse; +import cn.axzo.msg.center.service.template.request.MessageTemplatePageRequest; +import cn.azxo.framework.common.model.CommonResponse; +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 + * @version 1.0 + */ +@RestController +@RequiredArgsConstructor +public class MessageTemplateGroupRelationController implements MessageTemplateGroupRelationClient { + + private final MessageTemplateNewService messageTemplateNewService; + private final MessageTemplateGroupService messageTemplateGroupService; + + @Override + public CommonResponse> page(MessageTemplateGroupRelationPageRequest request) { + MessageTemplatePageRequest pageRequest = new MessageTemplatePageRequest(); + pageRequest.setPage(request.getPage()); + pageRequest.setPageSize(request.getPageSize()); + pageRequest.setTemplateName(request.getTemplateName()); + pageRequest.setGroupNodeCode(request.getNodeCode()); + Page result = messageTemplateNewService.pageBaseTemplate(pageRequest); + return CommonResponse.success(PageHelperUtil.convert(result, this::convert)); + } + + @Override + public CommonResponse move(MessageTemplateGroupRelationMoveRequest request) { + return null; + } + + @Override + public CommonResponse> remove(MessageTemplateGroupRelationRemoveRequest request) { + return null; + } + + private MessageTemplateGroupRelationResponse convert(MessageBaseTemplateDTO dto) { + MessageTemplateGroupRelationResponse response = new MessageTemplateGroupRelationResponse(); + response.setTitle(dto.getTitle()); + response.setTemplateCode(dto.getCode()); + response.setTemplateName(dto.getName()); + response.setCreateTimestamp(dto.getCreateTimestamp()); + return response; + } +} diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java index 5ce92b17..74d94bf8 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.param.MessageTemplateSaveOrUpdateParam; +import cn.axzo.msg.center.service.dto.MessageBaseTemplateDTO; import cn.axzo.msg.center.service.enums.StatusEnum; import cn.axzo.msg.center.service.template.request.MessageTemplatePageRequest; import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse; @@ -76,6 +77,14 @@ public interface MessageTemplateNewService { */ Page page(MessageTemplatePageRequest request); + /** + * 分页查询模板基础数据 + * + * @param request 分页请求参数 + * @return 模板数据列表 + */ + Page pageBaseTemplate(MessageTemplatePageRequest request); + /** * 通过模板编码查询对应的模板 * diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java index 479119f6..cfeb374c 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java @@ -15,6 +15,7 @@ import cn.axzo.msg.center.message.service.MessageGroupNodeService; import cn.axzo.msg.center.message.service.MessageTemplateGroupService; import cn.axzo.msg.center.message.service.MessageTemplateNewService; import cn.axzo.msg.center.message.service.MessageTemplateRouterService; +import cn.axzo.msg.center.service.dto.MessageBaseTemplateDTO; import cn.axzo.msg.center.service.dto.MessageRouterButtonDTO; import cn.axzo.msg.center.service.enums.PushTerminalEnum; import cn.axzo.msg.center.service.enums.StatusEnum; @@ -204,6 +205,43 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService return Page.toPage(request.getPage(), request.getPageSize(), result.getTotal(), records); } + @Override + public Page pageBaseTemplate(MessageTemplatePageRequest request) { + List templateCodes = Lists.newArrayList(); + if (StringUtils.isNotBlank(request.getGroupNodeCode())) { + templateCodes = messageTemplateGroupService.listMessageTemplateCodes(request.getGroupNodeCode()); + if (CollectionUtils.isEmpty(templateCodes)) { + // 入参中的分类没有关联任何模板,直接返回查询结果 + return PageHelperUtil.emptyPage(request.getPage(), request.getPageSize()); + } + } + if (StringUtils.isNotBlank(request.getTemplateCode())) { + if (CollectionUtils.isNotEmpty(templateCodes) + && !templateCodes.contains(request.getTemplateCode())) { + // 分页查询的入参中没指定的模板编码与分类映射的模板编码无交集 + return PageHelperUtil.emptyPage(request.getPage(), request.getPageSize()); + } + // 取两者的交集 + templateCodes = Lists.newArrayList(request.getTemplateCode()); + } + IPage pageRequest = request.toPage(); + IPage result = messageBaseTemplateDao.lambdaQuery() + .like(StringUtils.isNotBlank(request.getTemplateName()), + MessageBaseTemplate::getName, request.getTemplateName()) + .in(CollectionUtils.isNotEmpty(templateCodes), + MessageBaseTemplate::getCode, request.getTemplateCode()) + .eq(Objects.nonNull(request.getCategory()), MessageBaseTemplate::getMsgCategory, request.getCategory()) + .eq(Objects.nonNull(request.getStatus()), MessageBaseTemplate::getStatus, request.getStatus()) + .page(pageRequest); + if (CollectionUtils.isEmpty(result.getRecords())) { + return PageHelperUtil.emptyPage(request.getPage(), request.getPageSize()); + } + List records = result.getRecords().stream() + .map(this::convert) + .collect(Collectors.toList()); + return Page.toPage(request.getPage(), request.getPageSize(), result.getTotal(), records); + } + @Override public List listByCodes(Collection templateCodes) { if (CollectionUtils.isEmpty(templateCodes)) { @@ -322,6 +360,20 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService messageTemplateRouterService.updateTemplateRoutes(param.getTemplateCode(), param.getRouters()); } + private MessageBaseTemplateDTO convert(MessageBaseTemplate record) { + return MessageBaseTemplateDTO.builder() + .name(record.getName()) + .code(record.getCode()) + .msgCategory(record.getMsgCategory()) + .title(record.getTitle()) + .content(record.getContent()) + .cardContent(record.getCardContent()) + .icon(record.getIcon()) + .pushTerminals(JSON.parseArray(record.getPushTerminal(), PushTerminalEnum.class)) + .createTimestamp(record.getCreateAt().getTime()) + .build(); + } + private MessageTemplatePageResponse convert(MessageBaseTemplate record, Map> groupNodePaths, Map codeNameMap) { MessageTemplatePageResponse response = new MessageTemplatePageResponse(); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageBaseTemplateDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageBaseTemplateDTO.java index 3ae986b1..521e9405 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageBaseTemplateDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/MessageBaseTemplateDTO.java @@ -58,6 +58,10 @@ public class MessageBaseTemplateDTO implements Serializable { * 推送终端配置列表 */ private List pushTerminals; + /** + * 消息模板创建时间戳 + */ + private Long createTimestamp; @Override public String toString() { diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationPageRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationPageRequest.java index 200bd48f..4544126c 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationPageRequest.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageTemplateGroupRelationPageRequest.java @@ -24,6 +24,10 @@ public class MessageTemplateGroupRelationPageRequest extends PageRequest impleme */ @NotBlank(message = "nodeCode is required") private String nodeCode; + /** + * 模板名称 + */ + private String templateName; @Override public String toString() { diff --git a/msg-center-common/src/main/java/cn/axzo/msg/center/common/utils/PageHelperUtil.java b/msg-center-common/src/main/java/cn/axzo/msg/center/common/utils/PageHelperUtil.java index 4d3a6b79..12158c79 100644 --- a/msg-center-common/src/main/java/cn/axzo/msg/center/common/utils/PageHelperUtil.java +++ b/msg-center-common/src/main/java/cn/axzo/msg/center/common/utils/PageHelperUtil.java @@ -5,6 +5,8 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; import java.util.Collections; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author cold_blade @@ -17,4 +19,13 @@ public final class PageHelperUtil { public static Page emptyPage(Long pageNum, Long pageSize) { return Page.toPage(pageNum, pageSize, 0L, Collections.emptyList()); } + + public static Page convert(Page page, Function convertFunc) { + Page tgtPage = new Page<>(); + tgtPage.setPageNum(page.getPageNum()); + tgtPage.setPageSize(page.getPageSize()); + tgtPage.setTotalElements(page.getTotalElements()); + tgtPage.setList(page.getList().stream().map(convertFunc).collect(Collectors.toList())); + return tgtPage; + } }