REQ-3201: move elements to precise location
This commit is contained in:
parent
eff05ecb6f
commit
67057bb340
@ -1,18 +1,11 @@
|
||||
package cn.axzo.msg.center.message.service.impl.v3;
|
||||
|
||||
import cn.axzo.msg.center.domain.entity.MessageEntity;
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateButtonV3;
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateGroupV3;
|
||||
import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig;
|
||||
import cn.axzo.msg.center.message.domain.dto.TemplateModelV3;
|
||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
||||
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.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.card.domain.CardElementConfig;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Visitor;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModelV3Walker;
|
||||
@ -26,8 +19,6 @@ 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.SessionUrlInfo;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrlSelector;
|
||||
import cn.axzo.trade.datasecurity.core.util.DataSecurityHelper;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@ -36,7 +27,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -54,44 +44,6 @@ public class ModelV3Parser {
|
||||
|
||||
private static final String CUSTOMER_PERSON_ID = "customerPersonId";
|
||||
|
||||
private final PendingMessageBizConfig cfg;
|
||||
|
||||
public ParsedModelV3 parseModelForTodo(TemplateModelV3 templateModel,
|
||||
MessageEntity entity,
|
||||
JSONObject bizParam,
|
||||
JSONObject routerParam,
|
||||
JSONObject appendRouterParam,
|
||||
ClientRequest request) {
|
||||
UrlParser urlParser = new TodoUrlParser(cfg, entity, routerParam, appendRouterParam);
|
||||
ParsedModelV3 parsedModel = parseModel(templateModel, bizParam, urlParser);
|
||||
ParsedModelV3Walker.walkDown(parsedModel, new ParsedModel3Visitor() {
|
||||
|
||||
@Override
|
||||
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
|
||||
if (!urlConfig.hasUrl()) return;
|
||||
parsedModel.getTemplate().getOrCreateCardUrl().setUrl(parseSessionUrlInfo(urlConfig));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitGroupDetailUrlConfig(ParsedGroupV3 group, UrlConfig urlConfig) {
|
||||
if (!urlConfig.hasUrl()) return;
|
||||
ParsedGroupDetail parsedDetail = group.getGroupInfo().getParsedDetail();
|
||||
if (parsedDetail != null)
|
||||
parsedDetail.setUrl(parseSessionUrlInfo(urlConfig));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitButtonUrlConfig(ParsedButtonV3 button, UrlConfig urlConfig) {
|
||||
button.setUrl(parseSessionUrlInfo(urlConfig));
|
||||
}
|
||||
|
||||
private SessionUrlInfo parseSessionUrlInfo(UrlConfig urlConfig) {
|
||||
return ModelV3Parser.this.parseSessionUrlInfo(urlConfig, request);
|
||||
}
|
||||
});
|
||||
return parsedModel;
|
||||
}
|
||||
|
||||
public ParsedModelV3 parseModel(TemplateModelV3 templateModel,
|
||||
JSONObject bizParam,
|
||||
UrlParser urlParser) {
|
||||
@ -238,33 +190,4 @@ public class ModelV3Parser {
|
||||
return parsedGroups;
|
||||
}
|
||||
|
||||
public SessionUrlInfo parseSessionUrlInfo(UrlConfig urlConfig,
|
||||
@Nullable ClientRequest request) {
|
||||
SessionUrlInfo url = new SessionUrlInfo();
|
||||
UrlConfigWalker.walkDown(urlConfig, new UrlConfigVisitor() {
|
||||
@Override
|
||||
public void visitPcCms(WebUrl pcCms) {
|
||||
url.setHasCmsUrl(pcCms.hasUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAppManagerIos(AppUrl ios) {
|
||||
url.setHasManagerAppUrl(ios.hasUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAppManagerAndroid(AppUrl android) {
|
||||
url.setHasManagerAppUrl(android.hasUrl());
|
||||
}
|
||||
|
||||
});
|
||||
url.setAppTerminalType(request == null ? null : request.getAppTerminalType());
|
||||
new SessionUrlSelector(request).selectFrom(urlConfig).ifPresent(session -> {
|
||||
url.setUrl(session.getUrl().getUrl());
|
||||
if (session.getUrl() instanceof WebUrl)
|
||||
url.setWebOpenStrategy(((WebUrl) session.getUrl()).getOpenStrategy());
|
||||
});
|
||||
return url;
|
||||
}
|
||||
|
||||
}
|
||||
@ -5,6 +5,7 @@ import cn.axzo.msg.center.dal.SampleTodos;
|
||||
import cn.axzo.msg.center.dal.TodoBusinessDao;
|
||||
import cn.axzo.msg.center.dal.TodoBusinesses;
|
||||
import cn.axzo.msg.center.dal.TodoDao;
|
||||
import cn.axzo.msg.center.domain.entity.MessageEntity;
|
||||
import cn.axzo.msg.center.domain.entity.PendingRecordAdapter;
|
||||
import cn.axzo.msg.center.domain.entity.Todo;
|
||||
import cn.axzo.msg.center.domain.entity.TodoBusiness;
|
||||
@ -12,8 +13,14 @@ import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig;
|
||||
import cn.axzo.msg.center.message.domain.dto.TemplateModelV3;
|
||||
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.impl.v3.TodoUrlParser;
|
||||
import cn.axzo.msg.center.message.service.impl.v3.UrlParser;
|
||||
import cn.axzo.msg.center.message.service.todo.manage.TodoExt;
|
||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
||||
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.IdentityDTO;
|
||||
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
|
||||
@ -23,8 +30,13 @@ import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
|
||||
import cn.axzo.msg.center.service.pending.response.PendingMessageSimpleDTO;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Visitor;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModelV3Walker;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedButtonV3;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedCardUrl;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupDetail;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupV3;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrlInfo;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrlSelector;
|
||||
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
|
||||
import cn.axzo.msg.center.utils.JSONObjectUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
@ -245,7 +257,7 @@ class TodoRespBuilder {
|
||||
response.setDeadlineTimestamp(adapter.getDeadline() == null ? null : adapter.getDeadline().getTime());
|
||||
|
||||
if (templateModel != null) {
|
||||
ParsedModelV3 parsedModel = modelV3Parser.parseModelForTodo(templateModel, adapter,
|
||||
ParsedModelV3 parsedModel = parseModel(templateModel, adapter,
|
||||
adapter.getBizExtParamObj(), authParam, routerParam, request);
|
||||
|
||||
Runnable modelV3Builder = () -> {
|
||||
@ -256,7 +268,7 @@ class TodoRespBuilder {
|
||||
@Override
|
||||
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
|
||||
ParsedCardUrl cardUrl = new ParsedCardUrl();
|
||||
cardUrl.setUrl(modelV3Parser.parseSessionUrlInfo(urlConfig, request));
|
||||
cardUrl.setUrl(parseSessionUrlInfo(urlConfig, request));
|
||||
response.setCardUrl(cardUrl);
|
||||
}
|
||||
});
|
||||
@ -277,4 +289,68 @@ class TodoRespBuilder {
|
||||
return response;
|
||||
}
|
||||
|
||||
public ParsedModelV3 parseModel(TemplateModelV3 templateModel,
|
||||
MessageEntity entity,
|
||||
JSONObject bizParam,
|
||||
JSONObject routerParam,
|
||||
JSONObject appendRouterParam,
|
||||
ClientRequest request) {
|
||||
UrlParser urlParser = new TodoUrlParser(cfg, entity, routerParam, appendRouterParam);
|
||||
ParsedModelV3 parsedModel = modelV3Parser.parseModel(templateModel, bizParam, urlParser);
|
||||
ParsedModelV3Walker.walkDown(parsedModel, new ParsedModel3Visitor() {
|
||||
|
||||
@Override
|
||||
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
|
||||
if (!urlConfig.hasUrl()) return;
|
||||
parsedModel.getTemplate().getOrCreateCardUrl().setUrl(parseSessionUrlInfo(urlConfig));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitGroupDetailUrlConfig(ParsedGroupV3 group, UrlConfig urlConfig) {
|
||||
if (!urlConfig.hasUrl()) return;
|
||||
ParsedGroupDetail parsedDetail = group.getGroupInfo().getParsedDetail();
|
||||
if (parsedDetail != null)
|
||||
parsedDetail.setUrl(parseSessionUrlInfo(urlConfig));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitButtonUrlConfig(ParsedButtonV3 button, UrlConfig urlConfig) {
|
||||
button.setUrl(parseSessionUrlInfo(urlConfig));
|
||||
}
|
||||
|
||||
private SessionUrlInfo parseSessionUrlInfo(UrlConfig urlConfig) {
|
||||
return TodoRespBuilder.this.parseSessionUrlInfo(urlConfig, request);
|
||||
}
|
||||
});
|
||||
return parsedModel;
|
||||
}
|
||||
|
||||
public SessionUrlInfo parseSessionUrlInfo(UrlConfig urlConfig,
|
||||
@Nullable ClientRequest request) {
|
||||
SessionUrlInfo url = new SessionUrlInfo();
|
||||
UrlConfigWalker.walkDown(urlConfig, new UrlConfigVisitor() {
|
||||
@Override
|
||||
public void visitPcCms(WebUrl pcCms) {
|
||||
url.setHasCmsUrl(pcCms.hasUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAppManagerIos(AppUrl ios) {
|
||||
url.setHasManagerAppUrl(ios.hasUrl());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitAppManagerAndroid(AppUrl android) {
|
||||
url.setHasManagerAppUrl(android.hasUrl());
|
||||
}
|
||||
|
||||
});
|
||||
url.setAppTerminalType(request == null ? null : request.getAppTerminalType());
|
||||
new SessionUrlSelector(request).selectFrom(urlConfig).ifPresent(session -> {
|
||||
url.setUrl(session.getUrl().getUrl());
|
||||
if (session.getUrl() instanceof WebUrl)
|
||||
url.setWebOpenStrategy(((WebUrl) session.getUrl()).getOpenStrategy());
|
||||
});
|
||||
return url;
|
||||
}
|
||||
}
|
||||
@ -10,8 +10,8 @@ import cn.axzo.msg.center.domain.entity.MessageEntity;
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateV3;
|
||||
import cn.axzo.msg.center.domain.entity.Todo;
|
||||
import cn.axzo.msg.center.inside.notices.service.impl.v3.msg.TerminalAppMapping;
|
||||
import cn.axzo.msg.center.message.domain.dto.TemplateModelV3;
|
||||
import cn.axzo.msg.center.message.service.impl.v3.ModelV3Parser;
|
||||
import cn.axzo.msg.center.message.service.impl.v3.UrlParser;
|
||||
import cn.axzo.msg.center.nimpush.NimPushService;
|
||||
import cn.axzo.msg.center.nimpush.PushChannel;
|
||||
import cn.axzo.msg.center.nimpush.PushExecutorConfig;
|
||||
@ -61,8 +61,9 @@ public class TodoPushSenderNim implements ApplicationListener<NewTodoEvent> {
|
||||
List<PushTerminalEnum> pushTerminals = template.determinePushTerminals();
|
||||
List<AppTypeEnum> appTypes = terminalAppMapping.toImTypes(pushTerminals);
|
||||
if (CollectionUtils.isEmpty(appTypes)) return;
|
||||
ParsedModelV3 parsedModelV3 = parseModelForTodoPush(
|
||||
event.getTemplateModel(), event.getTodos().get(0));
|
||||
MessageEntity entity = event.getTodos().get(0);
|
||||
ParsedModelV3 parsedModelV3 = modelV3Parser.parseModel(
|
||||
event.getTemplateModel(), entity.bizParam(), new UrlParser(entity.routerParam()));
|
||||
PushData pushData = parsedModelV3.getPushData();
|
||||
if (pushData != null && !pushData.determinePushable(log, parsedModelV3.getTemplateCode())) {
|
||||
return;
|
||||
@ -101,10 +102,4 @@ public class TodoPushSenderNim implements ApplicationListener<NewTodoEvent> {
|
||||
}
|
||||
}
|
||||
|
||||
public ParsedModelV3 parseModelForTodoPush(
|
||||
TemplateModelV3 templateModel, MessageEntity entity) {
|
||||
return modelV3Parser.parseModelForTodo(templateModel, entity,
|
||||
entity.bizParam(), entity.routerParam(),
|
||||
null, null);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user