Merge branch 'feature/REQ-3045' into dev

This commit is contained in:
yanglin 2024-10-22 16:46:54 +08:00
commit fdd64aabe2
2 changed files with 23 additions and 19 deletions

View File

@ -15,20 +15,15 @@ import cn.axzo.msg.center.message.service.impl.v3.ModelV3Parser;
import cn.axzo.msg.center.message.service.impl.v3.ModelV3Service;
import cn.axzo.msg.center.message.service.todo.manage.TodoExt;
import cn.axzo.msg.center.service.domain.UrlConfig;
import cn.axzo.msg.center.service.dto.DetailRouterDTO;
import cn.axzo.msg.center.service.dto.IdentityDTO;
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.BizDetailJumpStrategyEnum;
import cn.axzo.msg.center.service.enums.BizDetailShowStrategyEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.service.pending.response.v3.ModelV2PropsPopulator;
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.ParsedCardUrl;
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3;
import cn.axzo.msg.center.service.pending.response.v3.model.TerminalUrlSelector;
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
import cn.axzo.msg.center.utils.JSONObjectUtil;
import cn.hutool.core.date.DateUtil;
@ -223,26 +218,15 @@ class TodoRespBuilder {
ParsedModelV3 parsedModel = modelV3Parser.parseModel(templateModel, adapter,
adapter.getBizExtParamObj(), authParam, routerParam, terminalProvider);
response.setModelV3(parsedModel);
ParsedModel3Walker.walkDown(parsedModel, new ModelV2PropsPopulator(response, terminalProvider));
response.setDisplayOnCardKeyValues(parsedModel.determineDisplayOnCardKeyValues());
response.setCardUrlOpenStrategy(templateModel.getTemplate().getCardUrlOpenStrategy());
ParsedModel3Walker.walkDown(parsedModel, new ParsedModel3Visitor() {
ParsedModel3Walker.walkDown(parsedModel, new ModelV2PropsPopulator(response, terminalProvider) {
@Override
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
super.visitTemplateCardUrlConfig(urlConfig);
ParsedCardUrl cardUrl = new ParsedCardUrl();
cardUrl.setUrl(modelV3Parser.parseUrlInfoForRequest(urlConfig, terminalProvider));
response.setCardUrl(cardUrl);
// 兼容老逻辑
new TerminalUrlSelector(terminalProvider)
.select(urlConfig)
.ifPresent(terminalUrl -> {
DetailRouterDTO detail = new DetailRouterDTO();
response.setDetailRouter(detail);
detail.setShowStrategy(BizDetailShowStrategyEnum.JUMP_TO);
detail.setJumpStrategy(BizDetailJumpStrategyEnum.BUSINESS);
detail.setUrl(terminalUrl.getUrl().getUrl());
detail.setTerminalType(terminalUrl.getTerminalType());
});
}
});
}

View File

@ -1,7 +1,11 @@
package cn.axzo.msg.center.service.pending.response.v3;
import cn.axzo.msg.center.service.domain.UrlConfig;
import cn.axzo.msg.center.service.dto.ButtonRouterDTO;
import cn.axzo.msg.center.service.dto.DetailRouterDTO;
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
import cn.axzo.msg.center.service.enums.BizDetailJumpStrategyEnum;
import cn.axzo.msg.center.service.enums.BizDetailShowStrategyEnum;
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
@ -20,11 +24,13 @@ import java.util.function.Supplier;
public class ModelV2PropsPopulator implements ParsedModel3Visitor {
private final PendingMessageResponse response;
private final TerminalProvider terminalProvider;
@Nullable private final TerminalUrlSelector terminalUrlSelector;
public ModelV2PropsPopulator(PendingMessageResponse response,
TerminalProvider terminalProvider) {
this.response = response;
this.terminalProvider = terminalProvider;
this.terminalUrlSelector = terminalProvider == null
? null
: new TerminalUrlSelector(terminalProvider);
@ -72,4 +78,18 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor {
});
}
}
@Override
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
new TerminalUrlSelector(terminalProvider)
.select(urlConfig)
.ifPresent(terminalUrl -> {
DetailRouterDTO detail = new DetailRouterDTO();
response.setDetailRouter(detail);
detail.setShowStrategy(BizDetailShowStrategyEnum.JUMP_TO);
detail.setJumpStrategy(BizDetailJumpStrategyEnum.BUSINESS);
detail.setUrl(terminalUrl.getUrl().getUrl());
detail.setTerminalType(terminalUrl.getTerminalType());
});
}
}