REQ-3045: 协助原生跳待办新页面

This commit is contained in:
yanglin 2024-10-24 18:23:01 +08:00
parent 18e955c6b9
commit 7cbb50e4f3
3 changed files with 31 additions and 16 deletions

View File

@ -11,9 +11,13 @@ 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.dto.DetailRouterDTO;
import cn.axzo.msg.center.service.enums.BizDetailJumpStrategyEnum;
import cn.axzo.msg.center.service.enums.BizDetailShowStrategyEnum;
import cn.axzo.msg.center.service.enums.GroupType;
import cn.axzo.msg.center.service.enums.KVContentType;
import cn.axzo.msg.center.service.pending.ClientRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
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;
@ -208,6 +212,21 @@ public class ModelV3Parser {
return copy;
}
/**
* 协助原生跳待办新页面
*/
public void maybeSetDetailUrlForNativeApp(PendingMessageResponse response,
ClientRequest clientRequest) {
if (response.getDetailRouter() != null) return;
DetailRouterDTO detail = new DetailRouterDTO();
response.setDetailRouter(detail);
detail.setShowStrategy(BizDetailShowStrategyEnum.JUMP_TO);
detail.setJumpStrategy(BizDetailJumpStrategyEnum.BUSINESS);
detail.setUrl(String.format("%s?identityCode=%s",
cfg.getTodoDetailUrl(), response.getIdentityCode()));
detail.setTerminalType(clientRequest == null ? null : clientRequest.getTerminalType());
}
@RequiredArgsConstructor
private class UrlParser implements UrlConfigVisitor {

View File

@ -1,6 +1,6 @@
package cn.axzo.msg.center.message.service.todo;
import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig;
import cn.axzo.msg.center.message.service.impl.v3.ModelV3Parser;
import cn.axzo.msg.center.service.domain.UrlConfig;
import cn.axzo.msg.center.service.dto.ButtonRouterDTO;
import cn.axzo.msg.center.service.dto.DetailRouterDTO;
@ -26,15 +26,15 @@ import java.util.ArrayList;
*/
public class ModelV2PropsPopulator implements ParsedModel3Visitor {
private final PendingMessageBizConfig pendingMessageBizConfig;
private final ModelV3Parser modelV3Parser;
private final PendingMessageResponse response;
@Nullable private final ClientRequest request;
@Nullable private final SessionUrlSelector sessionUrlSelector;
public ModelV2PropsPopulator(PendingMessageBizConfig pendingMessageBizConfig,
public ModelV2PropsPopulator(ModelV3Parser modelV3Parser,
PendingMessageResponse response,
@Nullable ClientRequest request) {
this.pendingMessageBizConfig = pendingMessageBizConfig;
this.modelV3Parser = modelV3Parser;
this.response = response;
this.request = request;
this.sessionUrlSelector = request == null
@ -111,19 +111,9 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor {
});
}
/**
* 协助原生跳待办新页面
*/
@Override
public void exitTemplate(ParsedTemplateV3 template) {
if (response.getDetailRouter() != null) return;
DetailRouterDTO detail = new DetailRouterDTO();
response.setDetailRouter(detail);
detail.setShowStrategy(BizDetailShowStrategyEnum.JUMP_TO);
detail.setJumpStrategy(BizDetailJumpStrategyEnum.BUSINESS);
detail.setUrl(String.format("%s?identityCode=%s",
pendingMessageBizConfig.getTodoDetailUrl(), response.getIdentityCode()));
detail.setTerminalType(request == null ? null : request.getTerminalType());
modelV3Parser.maybeSetDetailUrlForNativeApp(response, request);
}
}

View File

@ -25,6 +25,7 @@ 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.ParsedTemplateV3;
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
import cn.axzo.msg.center.utils.JSONObjectUtil;
import cn.hutool.core.date.DateUtil;
@ -230,6 +231,11 @@ class TodoRespBuilder {
cardUrl.setUrl(modelV3Parser.parseSessionUrlInfo(urlConfig, request));
response.setCardUrl(cardUrl);
}
@Override
public void exitTemplate(ParsedTemplateV3 template) {
modelV3Parser.maybeSetDetailUrlForNativeApp(response, request);
}
});
};
@ -239,7 +245,7 @@ class TodoRespBuilder {
ModelVersion version = ModelVersion.of(request.getModelVersion());
if (version.is(ModelVersion.V2) || version.is(ModelVersion.ALL))
ParsedModel3Walker.walkDown(parsedModel,
new ModelV2PropsPopulator(pendingMessageBizConfig, response, request));
new ModelV2PropsPopulator(modelV3Parser, response, request));
if (version.is(ModelVersion.V3) || version.is(ModelVersion.ALL))
modelV3Builder.run();
}