REQ-3046: cms的IM跳转

This commit is contained in:
yanglin 2024-10-23 11:50:21 +08:00
parent 6a1ff71eed
commit f98b14c5e5
4 changed files with 22 additions and 28 deletions

View File

@ -9,9 +9,9 @@ import cn.axzo.msg.center.message.domain.vo.GeneralMessagePushVO.CardExtensionIt
import cn.axzo.msg.center.message.domain.vo.GeneralMessagePushVO.Subtitle;
import cn.axzo.msg.center.message.domain.vo.ParsedCardUrlForCms;
import cn.axzo.msg.center.message.service.impl.v3.AppLink;
import cn.axzo.msg.center.message.service.impl.v3.AppLinkUrlConfigVisitor;
import cn.axzo.msg.center.message.service.impl.v3.ModelV3ExtPopulator;
import cn.axzo.msg.center.message.service.impl.v3.ModelV3Parser;
import cn.axzo.msg.center.message.service.impl.v3.NativeAppLinkUrlConfigVisitor;
import cn.axzo.msg.center.service.domain.MobileUrlConfig;
import cn.axzo.msg.center.service.domain.UrlConfig;
import cn.axzo.msg.center.service.domain.UrlConfigVisitor;
@ -75,7 +75,7 @@ public class MessageTemplateParserV3 {
cardDetailButton.setTitle("详情");
cardDetailButton.setAction(RouterCategoryEnum.JUMP.name());
cardDetailButton.setIsHighlight(false);
cardDetailButton.setActionPaths(getAppLinks(urlConfig));
cardDetailButton.setActionPaths(getNativeAppLinks(urlConfig));
im.setCardDetailButton(cardDetailButton);
parseCardUrlForCms(im, urlConfig);
@ -118,7 +118,7 @@ public class MessageTemplateParserV3 {
AppLink appLink = new AppLink(TerminalTypeEnum.WEB_VIEW.name(), button.getApiUrl());
imButton.setActionPaths(Collections.singletonList(appLink));
} else {
imButton.setActionPaths(getAppLinks(button.getUrlConfig()));
imButton.setActionPaths(getNativeAppLinks(button.getUrlConfig()));
}
}
@ -148,9 +148,9 @@ public class MessageTemplateParserV3 {
im.getCardUrlForCms().setHasManagerAppUrl(true);
}
private List<AppLink> getAppLinks(UrlConfig urlConfig) {
private List<AppLink> getNativeAppLinks(UrlConfig urlConfig) {
if (urlConfig == null) return Collections.emptyList();
AppLinkUrlConfigVisitor visitor = new AppLinkUrlConfigVisitor();
NativeAppLinkUrlConfigVisitor visitor = new NativeAppLinkUrlConfigVisitor();
UrlConfigWalker.walkDown(urlConfig, visitor);
return visitor.getLinks();
}

View File

@ -12,7 +12,7 @@ import java.util.List;
* @author yanglin
*/
@Getter
public class AppLinkUrlConfigVisitor implements UrlConfigVisitor {
public class NativeAppLinkUrlConfigVisitor implements UrlConfigVisitor {
private final List<AppLink> links = new ArrayList<>();

View File

@ -6,7 +6,7 @@ import cn.axzo.msg.center.domain.entity.Todo;
import cn.axzo.msg.center.domain.entity.TodoBusiness;
import cn.axzo.msg.center.message.domain.dto.TemplateModelV3;
import cn.axzo.msg.center.message.service.impl.v3.AppLink;
import cn.axzo.msg.center.message.service.impl.v3.AppLinkUrlConfigVisitor;
import cn.axzo.msg.center.message.service.impl.v3.NativeAppLinkUrlConfigVisitor;
import cn.axzo.msg.center.message.service.impl.v3.ModelV3Parser;
import cn.axzo.msg.center.message.service.todo.manage.TodoExt;
import cn.axzo.msg.center.message.service.youmeng.YoumengPush;
@ -27,7 +27,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author yanglin
@ -78,7 +77,7 @@ class TodoPushSender implements ApplicationListener<NewTodoEvent> {
routerParam.put(TodoExt.CTX, ctx);
UrlConfig parsedUrlConfig = modelV3Parser.parseUrlConfig(urlConfig, todo, routerParam);
AppLinkUrlConfigVisitor visitor = new AppLinkUrlConfigVisitor();
NativeAppLinkUrlConfigVisitor visitor = new NativeAppLinkUrlConfigVisitor();
UrlConfigWalker.walkDown(parsedUrlConfig, visitor);
return visitor.getLinks();
}

View File

@ -24,13 +24,11 @@ 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);
@ -69,27 +67,24 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor {
return;
}
if (terminalUrlSelector == null) return;
terminalUrlSelector
.select(buttonV3.getUrlConfig())
.ifPresent(terminalUrl -> {
ButtonRouterDTO buttonV2 = factory.get();
buttonV2.setUrl(terminalUrl.getUrl().getUrl());
buttonV2.setTerminalType(terminalUrl.getTerminalType());
});
terminalUrlSelector.select(buttonV3.getUrlConfig()).ifPresent(terminalUrl -> {
ButtonRouterDTO buttonV2 = factory.get();
buttonV2.setUrl(terminalUrl.getUrl().getUrl());
buttonV2.setTerminalType(terminalUrl.getTerminalType());
});
}
@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());
});
if (terminalUrlSelector == null) return;
terminalUrlSelector.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());
});
}
}