From da865253f69edcad763eadc6dde7442f79e01be3 Mon Sep 17 00:00:00 2001 From: yanglin Date: Mon, 14 Oct 2024 15:39:52 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3046:=20=E5=87=86=E5=A4=87=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Model.java => MessageTemplateModelV3.java} | 2 +- .../impl/PendingMessageNewServiceImpl.java | 2 + .../model/OldTemplateModelPropsPopulator.java | 10 +++ .../service/impl/v3/model/ParseSettings.java | 29 ------- .../v3/model/TemplateModelV3PropsParser.java | 15 ++++ ...rvice.java => TemplateModelV3Service.java} | 26 +++---- .../impl/v3/model/V3ModelPropsParser.java | 15 ---- .../response/PendingMessageResponse.java | 11 +-- .../pending/response/v3/TodoButtonV3.java | 75 +++++++++++++++++++ .../pending/response/v3/TodoGroupV3.java | 41 ++++++++++ .../pending/response/v3/TodoModelV3.java | 36 +++++++++ .../pending/response/v3/WorkerInfo.java | 63 ++++++++++++++++ 12 files changed, 262 insertions(+), 63 deletions(-) rename inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/{MessageTemplateV3Model.java => MessageTemplateModelV3.java} (94%) create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/OldTemplateModelPropsPopulator.java delete mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/ParseSettings.java create mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/TemplateModelV3PropsParser.java rename inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/{MessageTemplateV3ModelService.java => TemplateModelV3Service.java} (77%) delete mode 100644 inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/V3ModelPropsParser.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoButtonV3.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoGroupV3.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoModelV3.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/WorkerInfo.java diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateV3Model.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateModelV3.java similarity index 94% rename from inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateV3Model.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateModelV3.java index 90a3adda..0f0e048e 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateV3Model.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/MessageTemplateModelV3.java @@ -14,7 +14,7 @@ import java.util.List; */ @Setter @Getter -public class MessageTemplateV3Model { +public class MessageTemplateModelV3 { @NotNull private MessageTemplateV3 template; @NotNull private List groups; diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java index e1702209..a7dd9a0f 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java @@ -45,6 +45,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.PendingMessageNewService; +import cn.axzo.msg.center.message.service.impl.v3.model.OldTemplateModelPropsPopulator; import cn.axzo.msg.center.message.service.todo.MigrateUtils; import cn.axzo.msg.center.message.service.todo.manage.TodoExt; import cn.axzo.msg.center.notices.common.enums.IsDeletedEnum; @@ -155,6 +156,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { private final PendingMessageBizConfig pendingMessageBizConfig; private final MessageGroupNodeDao messageGroupNodeDao; private final MessageRouterUtil messageRouterUtil;; + private final OldTemplateModelPropsPopulator oldTemplateModelPropsPopulator; @Value("${msg.center.pending.hide-seconds:60}") private int pendingDefaultHideSeconds; diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/OldTemplateModelPropsPopulator.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/OldTemplateModelPropsPopulator.java new file mode 100644 index 00000000..bb21f1bb --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/OldTemplateModelPropsPopulator.java @@ -0,0 +1,10 @@ +package cn.axzo.msg.center.message.service.impl.v3.model; + +import org.springframework.stereotype.Component; + +/** + * @author yanglin + */ +@Component +public class OldTemplateModelPropsPopulator { +} \ No newline at end of file diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/ParseSettings.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/ParseSettings.java deleted file mode 100644 index 24c8fac1..00000000 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/ParseSettings.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.axzo.msg.center.message.service.impl.v3.model; - -import lombok.AccessLevel; -import lombok.RequiredArgsConstructor; -import lombok.Setter; - -/** - * @author yanglin - */ -@Setter -@RequiredArgsConstructor(access = AccessLevel.PRIVATE) -public class ParseSettings { - - public static ParseSettings none() { - return new ParseSettings(false, false); - } - - public static ParseSettings parseUrl() { - return new ParseSettings(true, false); - } - - public static ParseSettings parseProps() { - return new ParseSettings(true, true); - } - - private final boolean parseUrl; - private final boolean parseKv; - -} \ No newline at end of file diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/TemplateModelV3PropsParser.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/TemplateModelV3PropsParser.java new file mode 100644 index 00000000..4a699b58 --- /dev/null +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/TemplateModelV3PropsParser.java @@ -0,0 +1,15 @@ +package cn.axzo.msg.center.message.service.impl.v3.model; + +import cn.axzo.msg.center.message.domain.dto.MessageTemplateModelV3; +import org.springframework.stereotype.Component; + +/** + * @author yanglin + */ +@Component +class TemplateModelV3PropsParser { + + void parse(MessageTemplateModelV3 model) { + } + +} \ No newline at end of file diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/MessageTemplateV3ModelService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/TemplateModelV3Service.java similarity index 77% rename from inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/MessageTemplateV3ModelService.java rename to inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/TemplateModelV3Service.java index 573921f3..511d4c65 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/MessageTemplateV3ModelService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/TemplateModelV3Service.java @@ -6,7 +6,7 @@ import cn.axzo.msg.center.dal.MessageTemplateV3Dao; 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.message.domain.dto.MessageTemplateV3Model; +import cn.axzo.msg.center.message.domain.dto.MessageTemplateModelV3; import cn.axzo.msg.center.service.enums.StatusEnum; import lombok.RequiredArgsConstructor; import org.apache.commons.collections4.CollectionUtils; @@ -26,14 +26,14 @@ import static java.util.stream.Collectors.toList; */ @Service @RequiredArgsConstructor -public class MessageTemplateV3ModelService { +public class TemplateModelV3Service { private final MessageTemplateV3Dao messageTemplateV3Dao; private final MessageTemplateGroupV3Dao messageTemplateGroupV3Dao; private final MessageTemplateButtonV3Dao messageTemplateButtonV3Dao; - private final V3ModelPropsParser v3ModelPropsParser; + private final TemplateModelV3PropsParser propsParser; - public Optional findEnabledByCode(String templateCode, ParseSettings parseSettings) { + public Optional findEnabledByCode(String templateCode, boolean parseProps) { MessageTemplateV3 template = messageTemplateV3Dao.lambdaQuery() .eq(MessageTemplateV3::getCode, templateCode) .eq(MessageTemplateV3::getIsDelete, 0) @@ -41,18 +41,18 @@ public class MessageTemplateV3ModelService { .one(); if (template == null) return Optional.empty(); - ModelBuilder builder = new ModelBuilder(parseSettings, templateCode); + ModelBuilder builder = new ModelBuilder(parseProps, templateCode); return Optional.of(builder.build(template)); } - public List getByCodes(List templateCodes, ParseSettings parseSettings) { + public List getByCodes(List templateCodes, boolean parseProps) { if (CollectionUtils.isEmpty(templateCodes)) return Collections.emptyList(); List templates = messageTemplateV3Dao.lambdaQuery() .in(MessageTemplateV3::getCode, templateCodes) .eq(MessageTemplateV3::getIsDelete, 0) .list(); - ModelBuilder builder = new ModelBuilder(parseSettings, templateCodes.toArray(new String[0])); + ModelBuilder builder = new ModelBuilder(parseProps, templateCodes.toArray(new String[0])); return templates.stream() .map(builder::build) .collect(toList()); @@ -61,12 +61,12 @@ public class MessageTemplateV3ModelService { @RequiredArgsConstructor private class ModelBuilder { - final ParseSettings parseSettings; + final boolean parseProps; final Map> templateCode2Groups; final Map> templateCode2Buttons; - ModelBuilder(ParseSettings parseSettings, String... templateCodes) { - this.parseSettings = parseSettings; + ModelBuilder(boolean parseProps, String... templateCodes) { + this.parseProps = parseProps; if (templateCodes.length > 0) { templateCode2Groups = messageTemplateGroupV3Dao.lambdaQuery() .in(MessageTemplateGroupV3::getTemplateCode, Arrays.asList(templateCodes)) @@ -82,12 +82,12 @@ public class MessageTemplateV3ModelService { } } - MessageTemplateV3Model build(MessageTemplateV3 template) { - MessageTemplateV3Model model = new MessageTemplateV3Model(); + MessageTemplateModelV3 build(MessageTemplateV3 template) { + MessageTemplateModelV3 model = new MessageTemplateModelV3(); model.setTemplate(template); model.setGroups(templateCode2Groups.getOrDefault(template.getCode(), Collections.emptyList())); model.setButtons(templateCode2Buttons.getOrDefault(template.getCode(), Collections.emptyList())); - v3ModelPropsParser.parse(model, parseSettings); + propsParser.parse(model); return model; } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/V3ModelPropsParser.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/V3ModelPropsParser.java deleted file mode 100644 index f49053d0..00000000 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/model/V3ModelPropsParser.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.axzo.msg.center.message.service.impl.v3.model; - -import cn.axzo.msg.center.message.domain.dto.MessageTemplateV3Model; -import org.springframework.stereotype.Component; - -/** - * @author yanglin - */ -@Component -class V3ModelPropsParser { - - void parse(MessageTemplateV3Model model, ParseSettings parseSettings) { - } - -} \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java index dc0658a5..8b1bf77f 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PendingMessageResponse.java @@ -14,13 +14,9 @@ import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; import cn.axzo.msg.center.service.enums.PendingMessageStateEnum; import cn.axzo.msg.center.service.enums.TodoQueryType; import cn.axzo.msg.center.service.enums.TodoType; +import cn.axzo.msg.center.service.pending.response.v3.TodoModelV3; import cn.axzo.msg.center.service.template.response.MessageDetailStyle; import com.alibaba.fastjson.JSON; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.Builder; @@ -250,6 +246,11 @@ public class PendingMessageResponse implements Serializable, TodoButtonProvider private JSONObject bizExtParamObj; private JSONObject routerExtParamObj; + /** + * 基于分组的待办信息 + */ + private TodoModelV3 modelV3; + public void adjustProposedButtons(boolean forPromoter) { ProposedButtonFilter.adjustProposedButtons(this, forPromoter); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoButtonV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoButtonV3.java new file mode 100644 index 00000000..3809e987 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoButtonV3.java @@ -0,0 +1,75 @@ +package cn.axzo.msg.center.service.pending.response.v3; + +import cn.axzo.msg.center.service.domain.UrlConfig; +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.JSONArray; +import lombok.Getter; +import lombok.Setter; + +/** + * @author yanglin + */ +@Setter +@Getter +public class TodoButtonV3 { + + private Long id; + + /** + * 按钮名称 + */ + private String name; + + /** + * 编码 + */ + private String code; + + /** + * 预设按钮类型 + */ + private PresetButtonType presetBtnType; + + /** + * 按钮来源 + */ + private RouterButtonSourceEnum source; + + /** + * 路由类型 + */ + private RouterCategoryEnum category; + + /** + * API地址,仅当按钮是接口调用类型时有值 + */ + private String apiUrl; + + /** + * 按钮链接配置 + */ + private UrlConfig urlConfig; + + /** + * 按钮style配置 + */ + private JSONArray style; + + /** + * 执行人可见:true 不可见:false + */ + private Boolean executorShow; + + /** + * 待办状态可见可见:true 不可见:false + */ + private Boolean pendingShow; + + /** + * 按钮优先级,数值越大优先级越低 + */ + private Integer priority; + +} \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoGroupV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoGroupV3.java new file mode 100644 index 00000000..80e49406 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoGroupV3.java @@ -0,0 +1,41 @@ +package cn.axzo.msg.center.service.pending.response.v3; + +import cn.axzo.msg.center.service.domain.GroupConfig; +import cn.axzo.msg.center.service.enums.GroupType; +import lombok.Getter; +import lombok.Setter; + +/** + * @author yanglin + */ +@Setter +@Getter +public class TodoGroupV3 { + + private Long id; + + /** + * 分组名称, 公共组件时为空 + */ + private String name; + + /** + * 分组类型. KV_VALUES: 键值信息; COMPONENT_WORKER:工人卡片 + */ + private GroupType groupType; + + // !! 分组内容 + + /** + * 分组信息. groupType=KV_VALUES读这个信息 + */ + private GroupConfig groupInfo; + + /** + * 工人卡片信息. groupType=COMPONENT_WORKER读这个信息 + *

+ * 由yoke填充 + */ + private WorkerInfo workerInfo; + +} \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoModelV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoModelV3.java new file mode 100644 index 00000000..aa1111ea --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/TodoModelV3.java @@ -0,0 +1,36 @@ +package cn.axzo.msg.center.service.pending.response.v3; + +import cn.axzo.msg.center.service.enums.GroupType; +import lombok.Getter; +import lombok.Setter; + +import java.util.Collections; +import java.util.List; + +import static java.util.stream.Collectors.toList; + +/** + * @author yanglin + */ +@Setter +@Getter +public class TodoModelV3 { + + private List groups; + private List buttons; + + public List getGroups(GroupType type) { + return determineGroups().stream() + .filter(group -> group.getGroupType() == type) + .collect(toList()); + } + + public List determineGroups() { + return groups == null ? Collections.emptyList() : groups; + } + + public List determineButtons() { + return buttons == null ? Collections.emptyList() : buttons; + } + +} \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/WorkerInfo.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/WorkerInfo.java new file mode 100644 index 00000000..14d8b989 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/WorkerInfo.java @@ -0,0 +1,63 @@ +package cn.axzo.msg.center.service.pending.response.v3; + +import cn.axzo.trade.datasecurity.sd.extension.annotation.SDCellPhoneField; +import cn.axzo.trade.datasecurity.sd.extension.annotation.SDIdCardField; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +/** + * @author yanglin + */ +@Setter +@Getter +public class WorkerInfo { + + /** + * 员工姓名 + */ + private String name; + /** + * 头像 + */ + private String icon; + /** + * 手机号码 + */ + @SDCellPhoneField + private String phone; + /** + * 手机号码密文 + */ + private String phoneCiphertext; + /** + * 生日 + */ + private Date birthday; + /** + * 名族 + */ + private String nationality; + /** + * 身份证号 + */ + @SDIdCardField + private String idNumber; + /** + * 身份证号密文 + */ + private String idNumberCiphertext; + /** + * 身份信息校验 + */ + private Boolean identityValid; + /** + * 银行卡信息校验 + */ + private Boolean cardValid; + /** + * 工种 + */ + private String professionNames; +}