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 71487748..b10961a1 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 @@ -7,26 +7,10 @@ import cn.axzo.msg.center.common.enums.TableIsDeleteEnum; import cn.axzo.msg.center.common.utils.BizAssertions; import cn.axzo.msg.center.dal.MessageGroupNodeDao; import cn.axzo.msg.center.domain.entity.MessageGroupNode; -import cn.axzo.msg.center.domain.entity.PendingMessageRecord; -import cn.axzo.msg.center.domain.entity.PendingRecordAdapter; import cn.axzo.msg.center.domain.persistence.BaseEntityExt; import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig; -import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; -import cn.axzo.msg.center.message.domain.dto.TemplateModelV3; import cn.axzo.msg.center.message.service.impl.v3.ModelV3Parser; -import cn.axzo.msg.center.message.service.todo.MigrateUtils; -import cn.axzo.msg.center.message.service.todo.manage.TodoExt; -import cn.axzo.msg.center.service.domain.UrlConfig; import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum; -import cn.axzo.msg.center.service.enums.BizCategoryEnum; -import cn.axzo.msg.center.service.enums.OrganizationTypeEnum; -import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Visitor; -import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Walker; -import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3; -import cn.axzo.msg.center.service.template.response.MessageDetailStyle; -import cn.axzo.msg.center.utils.JSONObjectUtil; -import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.ImmutableMap; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -92,82 +76,6 @@ public class PendingMessageNewServiceImpl { return result; } - public PendingMessageDTO convertV3(PendingRecordAdapter adapter, List templateModels) { - PendingMessageDTO pendingMessage; - if (adapter instanceof PendingMessageRecord) { - pendingMessage = PendingMessageDTO.from((PendingMessageRecord) adapter); - } else { - pendingMessage = PendingMessageDTO.from(MigrateUtils.convertAdapterToPending(adapter)); - } - // 发起人单位、项目信息 - pendingMessage.setPromoterOuId(adapter.getPromoterOuId()); - pendingMessage.setPromoterWorkspaceId(adapter.getPromoterOrgId()); - pendingMessage.setPromoterWorkspaceName(adapter.getPromoterOrgName()); - pendingMessage.setPromoterWorkspaceType(adapter.getPromoterOrgType()); - // 接收者单位、项目信息 - pendingMessage.setExecutorOuId(adapter.getOuId()); - pendingMessage.setExecutorWorkspaceId(adapter.getOrgId()); - pendingMessage.setExecutorWorkspaceName(adapter.getOrgName()); - pendingMessage.setExecutorWorkspaceType(adapter.getExecutorOrgType()); - // 兼容页面老逻辑 - pendingMessage.setOuId(adapter.getOuId()); - pendingMessage.setWorkspaceId(adapter.getPromoterOrgId()); - // 只有项目才设置发起人项目部名称, 单位的话不返回, 因为会导致待办详情中显示重复的单位信息 - if (adapter.getPromoterOrgType() == OrganizationTypeEnum.PROJECT) - pendingMessage.setWorkspaceName(adapter.getPromoterOrgName()); - else - pendingMessage.setWorkspaceName(""); - // 其它信息 - pendingMessage.setTodoType(adapter.getTodoType()); - pendingMessage.setIsRead(adapter.isRead()); - pendingMessage.setProposedButtons(adapter.getCustomButtons()); - pendingMessage.setBizExtParamObj(adapter.getBizExtParamObj()); - pendingMessage.setRouterExtParamObj(adapter.getRouterParamObj()); - - Map templateCode2Template = templateModels.stream() - .collect(toMap(TemplateModelV3::getTemplateCode, identity())); - TemplateModelV3 templateModel = templateCode2Template.get(adapter.getTemplateCode()); - if (templateModel != null) { - pendingMessage.setTemplateCategory(templateModel.getTemplate().getMsgCategory()); - } - if (templateModel != null && templateModel.getTemplate().getDetailStyleCode() != null) { - MessageDetailStyle detailStyle = pendingMessageBizConfig - .findMessageDetailType(templateModel.getTemplate().getDetailStyleCode()) - .orElse(null); - pendingMessage.setDetailStyle(detailStyle); - } - // 解析并替换掉路由地址中的动态参数变量 - JSONObject routerParam = JSONObjectUtil.parseObject(adapter.getRouterParams()); - routerParam.put(TodoExt.CTX, ImmutableMap.of( - "business", adapter.getTodoBusiness(), - "todo", adapter.getTodo())); - JSONObject authParam = new JSONObject(); - if (!routerParam.containsKey("ouId")) { - authParam.put("ouId", adapter.getOuId()); - } - if (!routerParam.containsKey("workspaceId")) { - authParam.put("workspaceId", adapter.getOrgId()); - } - authParam.putAll(routerParam); - // 流程待办 - url无身份ID,手动拼接 - if (adapter.getBizCategory() == BizCategoryEnum.FLOW && (!authParam.containsKey("identityCode") || null == authParam.get("identityCode"))) { - authParam.put("identityCode", adapter.getIdentityCode()); - } - if (templateModel != null) { - ParsedModelV3 parsedModel = modelV3Parser.parseModel(templateModel, adapter, - adapter.getBizExtParamObj(), authParam, routerParam); - pendingMessage.setModelV3(parsedModel); - pendingMessage.setCardUrlOpenStrategy(templateModel.getTemplate().getCardUrlOpenStrategy()); - ParsedModel3Walker.walkDown(parsedModel, new ParsedModel3Visitor() { - @Override - public void visitTemplateCardUrlConfig(UrlConfig urlConfig) { - pendingMessage.setCardUrl(urlConfig); - } - }); - } - return pendingMessage; - } - @NotEmpty public List determineOuIds(Long ouId) { List ouIds = new ArrayList<>(); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java index 434ed59c..819fe5f4 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java @@ -2,18 +2,22 @@ package cn.axzo.msg.center.message.service.impl.v3; import cn.axzo.basics.common.BeanMapper; import cn.axzo.framework.jackson.utility.JSON; +import cn.axzo.maokai.api.util.Ref; import cn.axzo.msg.center.domain.entity.MessageEntity; import cn.axzo.msg.center.domain.entity.MessageTemplateGroupV3; import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig; import cn.axzo.msg.center.message.domain.dto.TemplateModelV3; import cn.axzo.msg.center.message.service.todo.manage.TodoExt; +import cn.axzo.msg.center.service.domain.MobileUrlConfig; import cn.axzo.msg.center.service.domain.UrlConfig; import cn.axzo.msg.center.service.domain.UrlConfigVisitor; import cn.axzo.msg.center.service.domain.UrlConfigWalker; import cn.axzo.msg.center.service.domain.url.AppUrl; import cn.axzo.msg.center.service.domain.url.WebUrl; +import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum; import cn.axzo.msg.center.service.enums.GroupType; import cn.axzo.msg.center.service.enums.KVContentType; +import cn.axzo.msg.center.service.pending.TerminalProvider; import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Visitor; import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Walker; import cn.axzo.msg.center.service.pending.response.v3.model.ComponentWorkerGroup; @@ -23,6 +27,8 @@ import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupV3; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedKV; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedTemplateV3; +import cn.axzo.msg.center.service.pending.response.v3.model.TerminalUrlSelector; +import cn.axzo.msg.center.service.pending.response.v3.model.UrlInfoForRequest; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -54,29 +60,33 @@ public class ModelV3Parser { MessageEntity entity, JSONObject bizParam, JSONObject routerParam) { - return parseModel(templateModel, entity, bizParam, routerParam, routerParam); + return parseModel(templateModel, entity, bizParam, routerParam, routerParam, null); } public ParsedModelV3 parseModel(TemplateModelV3 templateModel, MessageEntity entity, JSONObject bizParam, JSONObject routerParam, - JSONObject appendRouterParam) { + JSONObject appendRouterParam, + TerminalProvider terminalProvider) { ParsedModelV3 parsedModel = new ParsedModelV3(); parsedModel.setTemplate(BeanMapper.copyBean(templateModel, ParsedTemplateV3.class)); parsedModel.setGroups(copyGroups(templateModel.getGroups())); parsedModel.setButtons(BeanMapper.copyList(templateModel.getButtons(), ParsedButtonV3.class)); UrlParser urlParser = new UrlParser(entity, routerParam, appendRouterParam); + TerminalUrlSelector urlSelector = new TerminalUrlSelector(terminalProvider); ParsedModel3Walker.walkDown(parsedModel, new ParsedModel3Visitor() { @Override public void visitTemplateCardUrlConfig(UrlConfig urlConfig) { urlParser.parseUrlConfig(urlConfig); + parsedModel.getTemplate().getOrCreateCardUrl().setUrl(parseUrlInfoForRequest(urlConfig)); } @Override public void visitGroup(ParsedGroupV3 group) { if (group.getGroupType() == GroupType.COMPONENT_WORKER) { + group.setName("工人信息"); Long personId = bizParam.getLong(CUSTOMER_PERSON_ID); if (personId != null && personId > 0) parsedModel.addComponentWorkerGroup(new ComponentWorkerGroup(group, personId)); @@ -101,8 +111,9 @@ public class ModelV3Parser { } @Override - public void visitGroupDetailUrl(ParsedGroupV3 group, UrlConfig urlConfig) { + public void visitGroupDetailUrlConfig(ParsedGroupV3 group, UrlConfig urlConfig) { urlParser.parseUrlConfig(urlConfig); + group.getGroupInfo().getOrCrateDetail().setUrl(parseUrlInfoForRequest(urlConfig)); } @Override @@ -113,17 +124,67 @@ public class ModelV3Parser { @Override public void visitButtonUrlConfig(ParsedButtonV3 button, UrlConfig urlConfig) { urlParser.parseUrlConfig(urlConfig); + button.setUrl(parseUrlInfoForRequest(urlConfig)); } @Override public void exitModel(ParsedModelV3 model) { model.removeEmptyKVGroups(); } + + private UrlInfoForRequest parseUrlInfoForRequest(UrlConfig urlConfig) { + UrlInfoForRequest urlInfo = new UrlInfoForRequest(); + urlInfo.setHasAppUrl(hasAppUrl(urlConfig)); + urlInfo.setCurrentTerminalCms( + terminalProvider.getAppTerminalType() == AppTerminalTypeEnum.CMS_WEB_PC); + urlSelector.select(urlConfig).ifPresent(terminalUrl -> { + urlInfo.setUrl(terminalUrl.getUrl().getUrl()); + if (terminalUrl.getUrl() instanceof WebUrl) + urlInfo.setWebOpenStrategy(((WebUrl) terminalUrl.getUrl()).getOpenStrategy()); + }); + return urlInfo; + } }); return parsedModel; } + private boolean hasAppUrl(UrlConfig urlConfig) { + Ref ref = Ref.create(false); + UrlConfigWalker.walkDown(urlConfig, new UrlConfigVisitor() { + @Override + public void visitAppWorker(MobileUrlConfig appWorker) { + ref.set(true); + } + + @Override + public void visitAppWorkerIos(AppUrl ios) { + ref.set(true); + } + + @Override + public void visitAppWorkerAndroid(AppUrl android) { + ref.set(true); + } + + @Override + public void visitAppManager(MobileUrlConfig appWorker) { + ref.set(true); + } + + @Override + public void visitAppManagerIos(AppUrl ios) { + ref.set(true); + } + + @Override + public void visitAppManagerAndroid(AppUrl android) { + ref.set(true); + } + }); + return ref.get(); + } + private List copyGroups(List groups) { ArrayList parsedGroups = new ArrayList<>(); for (MessageTemplateGroupV3 group : groups) { diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRespBuilder.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRespBuilder.java index b0bb63fa..54377697 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRespBuilder.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/TodoRespBuilder.java @@ -210,7 +210,7 @@ class TodoRespBuilder { } if (templateModel != null) { ParsedModelV3 parsedModel = modelV3Parser.parseModel(templateModel, adapter, - adapter.getBizExtParamObj(), authParam, routerParam); + adapter.getBizExtParamObj(), authParam, routerParam, terminalProvider); response.setModelV3(parsedModel); ParsedModel3Walker.walkDown(parsedModel, new ModelV2PropsPopulator(response, terminalProvider)); response.setDisplayOnCardKeyValues(parsedModel.determineDisplayOnCardKeyValues()); @@ -228,7 +228,7 @@ class TodoRespBuilder { new TerminalUrlSelector(terminalProvider) .select(urlConfig) .ifPresent(terminalUrl -> { - detail.setUrl(terminalUrl.getUrl()); + detail.setUrl(terminalUrl.getUrl().getUrl()); detail.setTerminalType(terminalUrl.getTerminalType()); detailSet.set(true); }); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/parse/TerminalUrl.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/parse/TerminalUrl.java index 905806e2..0d461b8e 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/parse/TerminalUrl.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/parse/TerminalUrl.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.service.domain.parse; +import cn.axzo.msg.center.service.domain.url.UrlConfig; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import lombok.Getter; import lombok.NoArgsConstructor; @@ -13,7 +14,7 @@ import lombok.Setter; @NoArgsConstructor public class TerminalUrl { - public TerminalUrl(TerminalTypeEnum terminalType, String url) { + public TerminalUrl(TerminalTypeEnum terminalType, UrlConfig url) { this.terminalType = terminalType; this.url = url; } @@ -31,6 +32,6 @@ public class TerminalUrl { /** * 路由地址 */ - private String url; + private UrlConfig url; } \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/AppUrl.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/AppUrl.java index 4dc60af2..c84e2b6c 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/AppUrl.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/AppUrl.java @@ -2,21 +2,11 @@ package cn.axzo.msg.center.service.domain.url; import lombok.Getter; import lombok.Setter; -import org.apache.commons.lang3.StringUtils; /** * @author yanglin */ @Setter @Getter -public class AppUrl { - - /** - * url地址 - */ - private String url; - - public boolean hasUrl() { - return StringUtils.isNotBlank(url); - } +public class AppUrl extends UrlConfig { } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/UrlConfig.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/UrlConfig.java new file mode 100644 index 00000000..39668637 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/UrlConfig.java @@ -0,0 +1,22 @@ +package cn.axzo.msg.center.service.domain.url; + +import lombok.Getter; +import lombok.Setter; +import org.apache.commons.lang3.StringUtils; + +/** + * @author yanglin + */ +@Setter +@Getter +public class UrlConfig { + + /** + * url地址 + */ + private String url; + + public boolean hasUrl() { + return StringUtils.isNotBlank(url); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/WebUrl.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/WebUrl.java index 71b9c436..ef35a32c 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/WebUrl.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/url/WebUrl.java @@ -1,30 +1,19 @@ package cn.axzo.msg.center.service.domain.url; import cn.axzo.msg.center.service.enums.WebPageOpenStrategy; -import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.Setter; -import org.apache.commons.lang3.StringUtils; /** * @author yanglin */ @Setter @Getter -public class WebUrl { +public class WebUrl extends UrlConfig { /** * 网页打开方式. NEW_PAGE: 新页面打开, CURRENT_PAGE: 当前页面打开, DRAWER: 抽屉 */ private WebPageOpenStrategy openStrategy; - /** - * url地址 - */ - private String url; - - public boolean hasUrl() { - return StringUtils.isNotBlank(url); - } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ModelV2PropsPopulator.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ModelV2PropsPopulator.java index 99058786..47ebfba9 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ModelV2PropsPopulator.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ModelV2PropsPopulator.java @@ -67,7 +67,7 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor { .select(buttonV3.getUrlConfig()) .ifPresent(terminalUrl -> { ButtonRouterDTO buttonV2 = factory.get(); - buttonV2.setUrl(terminalUrl.getUrl()); + buttonV2.setUrl(terminalUrl.getUrl().getUrl()); buttonV2.setTerminalType(terminalUrl.getTerminalType()); }); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModel3Visitor.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModel3Visitor.java index bf9084c3..e8f3e738 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModel3Visitor.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModel3Visitor.java @@ -3,11 +3,13 @@ package cn.axzo.msg.center.service.pending.response.v3; import cn.axzo.msg.center.service.domain.DetailConfig; import cn.axzo.msg.center.service.domain.UrlConfig; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedButtonV3; +import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupDetail; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupInfo; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupV3; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedKV; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedTemplateV3; +import cn.axzo.msg.center.service.pending.response.v3.model.UrlInfoForRequest; /** * @author yanglin @@ -26,6 +28,10 @@ public interface ParsedModel3Visitor { default void exitTemplateCardUrlConfig(UrlConfig urlConfig) {} + default void visitTemplateCardUrl(UrlInfoForRequest url) {} + + default void exitTemplateCardUrl(UrlInfoForRequest url) {} + default void visitGroup(ParsedGroupV3 group) {} default void exitGroup(ParsedGroupV3 group) {} @@ -38,13 +44,21 @@ public interface ParsedModel3Visitor { default void exitGroupKeyValue(ParsedGroupV3 group, ParsedKV kv) {} - default void visitGroupDetail(ParsedGroupV3 group, DetailConfig detailConfig) {} + default void visitGroupDetailConfig(ParsedGroupV3 group, DetailConfig detailConfig) {} - default void exitGroupDetail(ParsedGroupV3 group, DetailConfig detailConfig) {} + default void exitGroupDetailConfig(ParsedGroupV3 group, DetailConfig detailConfig) {} - default void visitGroupDetailUrl(ParsedGroupV3 group, UrlConfig urlConfig) {} + default void visitGroupDetailUrlConfig(ParsedGroupV3 group, UrlConfig urlConfig) {} - default void exitGroupDetailUrl(ParsedGroupV3 group, UrlConfig urlConfig) {} + default void exitGroupDetailUrlConfig(ParsedGroupV3 group, UrlConfig urlConfig) {} + + default void visitGroupDetail(ParsedGroupV3 group, ParsedGroupDetail detail) {} + + default void exitGroupDetail(ParsedGroupV3 group, ParsedGroupDetail detail) {} + + default void visitGroupDetailUrl(ParsedGroupV3 group, UrlInfoForRequest url) {} + + default void exitGroupDetailUrl(ParsedGroupV3 group, UrlInfoForRequest url) {} default void visitButton(ParsedButtonV3 button) {} @@ -54,4 +68,7 @@ public interface ParsedModel3Visitor { default void exitButtonUrlConfig(ParsedButtonV3 button, UrlConfig urlConfig) {} + default void visitButtonUrl(ParsedButtonV3 button, UrlInfoForRequest url) {} + + default void exitButtonUrl(ParsedButtonV3 button, UrlInfoForRequest url) {} } \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModel3Walker.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModel3Walker.java index 3dc53eb2..d25f2c20 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModel3Walker.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModel3Walker.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.service.pending.response.v3; import cn.axzo.msg.center.service.domain.CardUrlConfig; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedButtonV3; +import cn.axzo.msg.center.service.pending.response.v3.model.ParsedCardUrl; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupInfo; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupV3; import cn.axzo.msg.center.service.pending.response.v3.model.ParsedKV; @@ -34,6 +35,11 @@ public class ParsedModel3Walker { visitor.visitTemplateCardUrlConfig(cardUrlConfig.getUrlConfig()); visitor.exitTemplateCardUrlConfig(cardUrlConfig.getUrlConfig()); } + ParsedCardUrl cardUrl = template.getCardUrl(); + if (cardUrl != null && cardUrl.getUrl() != null) { + visitor.visitTemplateCardUrl(cardUrl.getUrl()); + visitor.exitTemplateCardUrl(cardUrl.getUrl()); + } } private static void visitGroup(ParsedModel3Visitor visitor, ParsedGroupV3 group) { @@ -42,6 +48,7 @@ public class ParsedModel3Walker { if (groupInfo != null) { visitor.visitGroupInfo(group, groupInfo); visitGroupKeyValues(visitor, group, groupInfo); + visitGroupDetailConfig(visitor, group, groupInfo); visitGroupDetail(visitor, group, groupInfo); visitor.exitGroupInfo(group, groupInfo); } @@ -58,16 +65,28 @@ public class ParsedModel3Walker { } } + private static void visitGroupDetailConfig(ParsedModel3Visitor visitor, + ParsedGroupV3 group, + ParsedGroupInfo groupInfo) { + if (groupInfo.getDetailConfig() == null) return; + visitor.visitGroupDetailConfig(group, groupInfo.getDetailConfig()); + if (groupInfo.getDetailConfig().getUrlConfig() != null) { + visitor.visitGroupDetailUrlConfig(group, groupInfo.getDetailConfig().getUrlConfig()); + visitor.exitGroupDetailUrlConfig(group, groupInfo.getDetailConfig().getUrlConfig()); + } + visitor.exitGroupDetailConfig(group, groupInfo.getDetailConfig()); + } + private static void visitGroupDetail(ParsedModel3Visitor visitor, ParsedGroupV3 group, ParsedGroupInfo groupInfo) { - if (groupInfo.getDetailConfig() == null) return; - visitor.visitGroupDetail(group, groupInfo.getDetailConfig()); - if (groupInfo.getDetailConfig().getUrlConfig() != null) { - visitor.visitGroupDetailUrl(group, groupInfo.getDetailConfig().getUrlConfig()); - visitor.exitGroupDetailUrl(group, groupInfo.getDetailConfig().getUrlConfig()); + if (groupInfo.getDetail() == null) return; + visitor.visitGroupDetail(group, groupInfo.getDetail()); + if (groupInfo.getDetail().getUrl() != null) { + visitor.visitGroupDetailUrl(group, groupInfo.getDetail().getUrl()); + visitor.exitGroupDetailUrl(group, groupInfo.getDetail().getUrl()); } - visitor.exitGroupDetail(group, groupInfo.getDetailConfig()); + visitor.exitGroupDetail(group, groupInfo.getDetail()); } private static void visitButton(ParsedModel3Visitor visitor, @@ -77,6 +96,10 @@ public class ParsedModel3Walker { visitor.visitButtonUrlConfig(button, button.getUrlConfig()); visitor.exitButtonUrlConfig(button, button.getUrlConfig()); } + if (button.getUrl() != null) { + visitor.visitButtonUrl(button, button.getUrl()); + visitor.exitButtonUrl(button, button.getUrl()); + } visitor.exitButton(button); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedButtonV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedButtonV3.java index 223a004e..81d082eb 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedButtonV3.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedButtonV3.java @@ -64,7 +64,7 @@ public class ParsedButtonV3 implements MessageButton { /** * 按钮链接 */ - private ParsedUrl url; + private UrlInfoForRequest url; /** * 按钮style配置 diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedCardUrl.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedCardUrl.java index 089ddab0..f8cad71f 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedCardUrl.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedCardUrl.java @@ -12,5 +12,5 @@ public class ParsedCardUrl { /** * 链接信息 */ - private ParsedUrl url; + private UrlInfoForRequest url; } \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedGroupDetail.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedGroupDetail.java index faa18fab..f6cc5561 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedGroupDetail.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedGroupDetail.java @@ -1,8 +1,5 @@ package cn.axzo.msg.center.service.pending.response.v3.model; -import cn.axzo.msg.center.service.domain.UrlConfig; -import com.alibaba.fastjson.annotation.JSONField; -import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; @@ -18,15 +15,9 @@ public class ParsedGroupDetail { */ private String name; - /** - * 链接配置 - */ - @JsonIgnore @JSONField(serialize = false) - private UrlConfig urlConfig; - /** * 链接 */ - private ParsedUrl url; + private UrlInfoForRequest url; } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedGroupInfo.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedGroupInfo.java index 42baa392..e4e77b26 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedGroupInfo.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedGroupInfo.java @@ -38,6 +38,13 @@ public class ParsedGroupInfo { */ private List keyValuesForDebug = new ArrayList<>(); + @JsonIgnore @JSONField(serialize = false) + public ParsedGroupDetail getOrCrateDetail() { + if (detail == null) + detail = new ParsedGroupDetail(); + return detail; + } + public void removeEmptyValues() { if (keyValues == null) return; keyValues.removeIf(ParsedKV::isValueEmpty); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedTemplateV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedTemplateV3.java index 2b420dea..d3caf867 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedTemplateV3.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedTemplateV3.java @@ -99,6 +99,13 @@ public class ParsedTemplateV3 { */ private YesOrNo displayOnList; + @JsonIgnore @JSONField(serialize = false) + public ParsedCardUrl getOrCreateCardUrl() { + if (cardUrl == null) + cardUrl = new ParsedCardUrl(); + return cardUrl; + } + @Override public String toString() { return JSON.toJSONString(this); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/TerminalUrlSelector.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/TerminalUrlSelector.java index 61b4c347..b77d3dba 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/TerminalUrlSelector.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/TerminalUrlSelector.java @@ -55,7 +55,7 @@ public class TerminalUrlSelector { return null; if (webUrl == null) return null; - return new TerminalUrl(TerminalTypeEnum.WEB, webUrl.getUrl()); + return new TerminalUrl(TerminalTypeEnum.WEB, webUrl); } private TerminalUrl selectApp( @@ -68,9 +68,9 @@ public class TerminalUrlSelector { return null; TerminalTypeEnum terminalType = terminalProvider.getTerminalType(); if (mobileUrl.getIos() != null && terminalType == TerminalTypeEnum.IOS) - return new TerminalUrl(TerminalTypeEnum.IOS, mobileUrl.getIos().getUrl()); + return new TerminalUrl(TerminalTypeEnum.IOS, mobileUrl.getIos()); if (mobileUrl.getAndroid() != null && terminalType == TerminalTypeEnum.ANDROID) - return new TerminalUrl(TerminalTypeEnum.ANDROID, mobileUrl.getAndroid().getUrl()); + return new TerminalUrl(TerminalTypeEnum.ANDROID, mobileUrl.getAndroid()); return null; } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedUrl.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/UrlInfoForRequest.java similarity index 61% rename from msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedUrl.java rename to msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/UrlInfoForRequest.java index 185d04a5..480a32a4 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedUrl.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/UrlInfoForRequest.java @@ -9,21 +9,23 @@ import lombok.Setter; */ @Setter @Getter -public class ParsedUrl { +public class UrlInfoForRequest { + /** * 链接地址 */ private String url; /** - * web打开策略 + * 网页打开方式. NEW_PAGE: 新页面打开, CURRENT_PAGE: 当前页面打开, DRAWER: 抽屉 */ private WebPageOpenStrategy webOpenStrategy; + /** + * 当前端是否为web终端 + */ + private boolean isCurrentTerminalCms; /** * 是否有安卓链接 */ - private boolean hasAndroidUrl; - /** - * 是否有ios链接 - */ - private boolean hasIosUrl; + private boolean hasAppUrl; + } \ No newline at end of file