REQ-3046: 返回前端解析后的URL
This commit is contained in:
parent
b278bd09df
commit
c7e9b91039
@ -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<TemplateModelV3> 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<String, TemplateModelV3> 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<Long> determineOuIds(Long ouId) {
|
||||
List<Long> ouIds = new ArrayList<>();
|
||||
|
||||
@ -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<Boolean> 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<ParsedGroupV3> copyGroups(List<MessageTemplateGroupV3> groups) {
|
||||
ArrayList<ParsedGroupV3> parsedGroups = new ArrayList<>();
|
||||
for (MessageTemplateGroupV3 group : groups) {
|
||||
|
||||
@ -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);
|
||||
});
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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 {
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
});
|
||||
}
|
||||
|
||||
@ -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) {}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -64,7 +64,7 @@ public class ParsedButtonV3 implements MessageButton {
|
||||
/**
|
||||
* 按钮链接
|
||||
*/
|
||||
private ParsedUrl url;
|
||||
private UrlInfoForRequest url;
|
||||
|
||||
/**
|
||||
* 按钮style配置
|
||||
|
||||
@ -12,5 +12,5 @@ public class ParsedCardUrl {
|
||||
/**
|
||||
* 链接信息
|
||||
*/
|
||||
private ParsedUrl url;
|
||||
private UrlInfoForRequest url;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -38,6 +38,13 @@ public class ParsedGroupInfo {
|
||||
*/
|
||||
private List<ParsedKV> 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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user