REQ-3046: cms的IM跳转

This commit is contained in:
yanglin 2024-10-23 11:43:25 +08:00
parent ebfc00d18e
commit 6a1ff71eed
7 changed files with 31 additions and 30 deletions

View File

@ -25,8 +25,8 @@ 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.PhoneInfo;
import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrl;
import cn.axzo.msg.center.service.pending.response.v3.model.TerminalUrlSelector;
import cn.axzo.msg.center.service.pending.response.v3.model.UrlInfoForRequest;
import cn.axzo.trade.datasecurity.core.util.DataSecurityHelper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -79,7 +79,7 @@ public class ModelV3Parser {
@Override
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
urlParser.parseUrlConfig(urlConfig);
parsedModel.getTemplate().getOrCreateCardUrl().setUrl(parseUrlInfoForRequest(urlConfig));
parsedModel.getTemplate().getOrCreateCardUrl().setUrl(parseSessionUrl(urlConfig));
}
@Override
@ -131,7 +131,7 @@ public class ModelV3Parser {
urlParser.parseUrlConfig(urlConfig);
ParsedGroupDetail parsedDetail = group.getGroupInfo().getOrCreateDetail();
parsedDetail.setName(group.getGroupInfo().getDetail().getName());
parsedDetail.setUrl(parseUrlInfoForRequest(urlConfig));
parsedDetail.setUrl(parseSessionUrl(urlConfig));
}
@Override
@ -142,7 +142,7 @@ public class ModelV3Parser {
@Override
public void visitButtonUrlConfig(ParsedButtonV3 button, UrlConfig urlConfig) {
urlParser.parseUrlConfig(urlConfig);
button.setUrl(parseUrlInfoForRequest(urlConfig));
button.setUrl(parseSessionUrl(urlConfig));
}
@Override
@ -150,43 +150,43 @@ public class ModelV3Parser {
model.removeEmptyKVGroups();
}
private UrlInfoForRequest parseUrlInfoForRequest(UrlConfig urlConfig) {
return ModelV3Parser.this.parseUrlInfoForRequest(urlConfig, terminalProvider);
private SessionUrl parseSessionUrl(UrlConfig urlConfig) {
return ModelV3Parser.this.parseSessionUrl(urlConfig, terminalProvider);
}
});
return parsedModel;
}
public UrlInfoForRequest parseUrlInfoForRequest(UrlConfig urlConfig,
@Nullable TerminalProvider terminalProvider) {
UrlInfoForRequest urlInfo = new UrlInfoForRequest();
urlInfo.setUrlConfig(urlConfig);
public SessionUrl parseSessionUrl(UrlConfig urlConfig,
@Nullable TerminalProvider terminalProvider) {
SessionUrl session = new SessionUrl();
session.setUrlConfig(urlConfig);
UrlConfigWalker.walkDown(urlConfig, new UrlConfigVisitor() {
@Override
public void visitPcCms(WebUrl pcCms) {
urlInfo.setHasCmsUrl(pcCms.hasUrl());
session.setHasCmsUrl(pcCms.hasUrl());
}
@Override
public void visitAppManagerIos(AppUrl ios) {
urlInfo.setHasManagerAppUrl(ios.hasUrl());
session.setHasManagerAppUrl(ios.hasUrl());
}
@Override
public void visitAppManagerAndroid(AppUrl android) {
urlInfo.setHasManagerAppUrl(android.hasUrl());
session.setHasManagerAppUrl(android.hasUrl());
}
});
urlInfo.setAppTerminalType(terminalProvider == null ? null : terminalProvider.getAppTerminalType());
session.setAppTerminalType(terminalProvider == null ? null : terminalProvider.getAppTerminalType());
TerminalUrlSelector urlSelector = new TerminalUrlSelector(terminalProvider);
urlSelector.select(urlConfig).ifPresent(terminalUrl -> {
urlInfo.setUrl(terminalUrl.getUrl().getUrl());
session.setUrl(terminalUrl.getUrl().getUrl());
if (terminalUrl.getUrl() instanceof WebUrl)
urlInfo.setWebOpenStrategy(((WebUrl) terminalUrl.getUrl()).getOpenStrategy());
session.setWebOpenStrategy(((WebUrl) terminalUrl.getUrl()).getOpenStrategy());
});
return urlInfo;
return session;
}
private List<ParsedGroupV3> copyGroups(List<MessageTemplateGroupV3> groups) {

View File

@ -1,6 +1,5 @@
package cn.axzo.msg.center.message.service.todo;
import cn.axzo.maokai.api.util.Ref;
import cn.axzo.basics.common.BeanMapper;
import cn.axzo.msg.center.dal.SampleTodos;
import cn.axzo.msg.center.dal.TodoBusinessDao;
@ -225,7 +224,7 @@ class TodoRespBuilder {
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
super.visitTemplateCardUrlConfig(urlConfig);
ParsedCardUrl cardUrl = new ParsedCardUrl();
cardUrl.setUrl(modelV3Parser.parseUrlInfoForRequest(urlConfig, terminalProvider));
cardUrl.setUrl(modelV3Parser.parseSessionUrl(urlConfig, terminalProvider));
response.setCardUrl(cardUrl);
}
});

View File

@ -11,7 +11,7 @@ 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.PersonInfo;
import cn.axzo.msg.center.service.pending.response.v3.model.PhoneInfo;
import cn.axzo.msg.center.service.pending.response.v3.model.UrlInfoForRequest;
import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrl;
import cn.axzo.msg.center.service.pending.response.v3.model.WorkerInfo;
/**
@ -31,9 +31,9 @@ public interface ParsedModel3Visitor {
default void exitTemplateCardUrlConfig(UrlConfig urlConfig) {}
default void visitTemplateCardUrl(UrlInfoForRequest url) {}
default void visitTemplateCardUrl(SessionUrl url) {}
default void exitTemplateCardUrl(UrlInfoForRequest url) {}
default void exitTemplateCardUrl(SessionUrl url) {}
default void visitGroup(ParsedGroupV3 group) {}
@ -71,9 +71,9 @@ public interface ParsedModel3Visitor {
default void exitGroupDetail(ParsedGroupV3 group, ParsedGroupDetail detail) {}
default void visitGroupDetailUrl(ParsedGroupV3 group, UrlInfoForRequest url) {}
default void visitGroupDetailUrl(ParsedGroupV3 group, SessionUrl url) {}
default void exitGroupDetailUrl(ParsedGroupV3 group, UrlInfoForRequest url) {}
default void exitGroupDetailUrl(ParsedGroupV3 group, SessionUrl url) {}
default void visitButton(ParsedButtonV3 button) {}
@ -83,7 +83,7 @@ public interface ParsedModel3Visitor {
default void exitButtonUrlConfig(ParsedButtonV3 button, UrlConfig urlConfig) {}
default void visitButtonUrl(ParsedButtonV3 button, UrlInfoForRequest url) {}
default void visitButtonUrl(ParsedButtonV3 button, SessionUrl url) {}
default void exitButtonUrl(ParsedButtonV3 button, UrlInfoForRequest url) {}
default void exitButtonUrl(ParsedButtonV3 button, SessionUrl url) {}
}

View File

@ -63,7 +63,7 @@ public class ParsedButtonV3 implements MessageButton {
/**
* 按钮链接
*/
private UrlInfoForRequest url;
private SessionUrl url;
/**
* 按钮style配置

View File

@ -12,5 +12,5 @@ public class ParsedCardUrl {
/**
* 链接信息
*/
private UrlInfoForRequest url;
private SessionUrl url;
}

View File

@ -18,6 +18,6 @@ public class ParsedGroupDetail {
/**
* 链接
*/
private UrlInfoForRequest url;
private SessionUrl url;
}

View File

@ -11,7 +11,7 @@ import lombok.Setter;
*/
@Setter
@Getter
public class UrlInfoForRequest {
public class SessionUrl {
/**
* 链接地址
@ -40,6 +40,8 @@ public class UrlInfoForRequest {
/**
* 原始的url的配置
* <p/>
* For debug purpose
*/
private UrlConfig urlConfig;