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

View File

@ -1,6 +1,5 @@
package cn.axzo.msg.center.message.service.todo; package cn.axzo.msg.center.message.service.todo;
import cn.axzo.maokai.api.util.Ref;
import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.BeanMapper;
import cn.axzo.msg.center.dal.SampleTodos; import cn.axzo.msg.center.dal.SampleTodos;
import cn.axzo.msg.center.dal.TodoBusinessDao; import cn.axzo.msg.center.dal.TodoBusinessDao;
@ -225,7 +224,7 @@ class TodoRespBuilder {
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) { public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
super.visitTemplateCardUrlConfig(urlConfig); super.visitTemplateCardUrlConfig(urlConfig);
ParsedCardUrl cardUrl = new ParsedCardUrl(); ParsedCardUrl cardUrl = new ParsedCardUrl();
cardUrl.setUrl(modelV3Parser.parseUrlInfoForRequest(urlConfig, terminalProvider)); cardUrl.setUrl(modelV3Parser.parseSessionUrl(urlConfig, terminalProvider));
response.setCardUrl(cardUrl); 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.ParsedTemplateV3;
import cn.axzo.msg.center.service.pending.response.v3.model.PersonInfo; 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.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; 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 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) {} default void visitGroup(ParsedGroupV3 group) {}
@ -71,9 +71,9 @@ public interface ParsedModel3Visitor {
default void exitGroupDetail(ParsedGroupV3 group, ParsedGroupDetail detail) {} 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) {} default void visitButton(ParsedButtonV3 button) {}
@ -83,7 +83,7 @@ public interface ParsedModel3Visitor {
default void exitButtonUrlConfig(ParsedButtonV3 button, UrlConfig urlConfig) {} 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配置 * 按钮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 @Setter
@Getter @Getter
public class UrlInfoForRequest { public class SessionUrl {
/** /**
* 链接地址 * 链接地址
@ -40,6 +40,8 @@ public class UrlInfoForRequest {
/** /**
* 原始的url的配置 * 原始的url的配置
* <p/>
* For debug purpose
*/ */
private UrlConfig urlConfig; private UrlConfig urlConfig;