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;
|
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.MessageTemplateButtonV3;
|
||||||
import cn.axzo.msg.center.domain.entity.MessageTemplateGroupV3;
|
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.message.domain.dto.TemplateModelV3;
|
||||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
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.GroupType;
|
||||||
import cn.axzo.msg.center.service.enums.KVContentType;
|
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.card.domain.CardElementConfig;
|
||||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Visitor;
|
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.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.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.SessionUrlInfo;
|
|
||||||
import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrlSelector;
|
|
||||||
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;
|
||||||
@ -36,7 +27,6 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang3.math.NumberUtils;
|
import org.apache.commons.lang3.math.NumberUtils;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -54,44 +44,6 @@ public class ModelV3Parser {
|
|||||||
|
|
||||||
private static final String CUSTOMER_PERSON_ID = "customerPersonId";
|
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,
|
public ParsedModelV3 parseModel(TemplateModelV3 templateModel,
|
||||||
JSONObject bizParam,
|
JSONObject bizParam,
|
||||||
UrlParser urlParser) {
|
UrlParser urlParser) {
|
||||||
@ -238,33 +190,4 @@ public class ModelV3Parser {
|
|||||||
return parsedGroups;
|
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.TodoBusinessDao;
|
||||||
import cn.axzo.msg.center.dal.TodoBusinesses;
|
import cn.axzo.msg.center.dal.TodoBusinesses;
|
||||||
import cn.axzo.msg.center.dal.TodoDao;
|
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.PendingRecordAdapter;
|
||||||
import cn.axzo.msg.center.domain.entity.Todo;
|
import cn.axzo.msg.center.domain.entity.Todo;
|
||||||
import cn.axzo.msg.center.domain.entity.TodoBusiness;
|
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.domain.dto.TemplateModelV3;
|
||||||
import cn.axzo.msg.center.message.service.impl.v3.ModelV3Parser;
|
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.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.message.service.todo.manage.TodoExt;
|
||||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
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.dto.IdentityDTO;
|
||||||
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
|
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
|
||||||
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
|
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.PendingMessageSimpleDTO;
|
||||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Visitor;
|
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.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.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.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.service.template.response.MessageDetailStyle;
|
||||||
import cn.axzo.msg.center.utils.JSONObjectUtil;
|
import cn.axzo.msg.center.utils.JSONObjectUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
@ -245,7 +257,7 @@ class TodoRespBuilder {
|
|||||||
response.setDeadlineTimestamp(adapter.getDeadline() == null ? null : adapter.getDeadline().getTime());
|
response.setDeadlineTimestamp(adapter.getDeadline() == null ? null : adapter.getDeadline().getTime());
|
||||||
|
|
||||||
if (templateModel != null) {
|
if (templateModel != null) {
|
||||||
ParsedModelV3 parsedModel = modelV3Parser.parseModelForTodo(templateModel, adapter,
|
ParsedModelV3 parsedModel = parseModel(templateModel, adapter,
|
||||||
adapter.getBizExtParamObj(), authParam, routerParam, request);
|
adapter.getBizExtParamObj(), authParam, routerParam, request);
|
||||||
|
|
||||||
Runnable modelV3Builder = () -> {
|
Runnable modelV3Builder = () -> {
|
||||||
@ -256,7 +268,7 @@ class TodoRespBuilder {
|
|||||||
@Override
|
@Override
|
||||||
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
|
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
|
||||||
ParsedCardUrl cardUrl = new ParsedCardUrl();
|
ParsedCardUrl cardUrl = new ParsedCardUrl();
|
||||||
cardUrl.setUrl(modelV3Parser.parseSessionUrlInfo(urlConfig, request));
|
cardUrl.setUrl(parseSessionUrlInfo(urlConfig, request));
|
||||||
response.setCardUrl(cardUrl);
|
response.setCardUrl(cardUrl);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -277,4 +289,68 @@ class TodoRespBuilder {
|
|||||||
return response;
|
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.MessageTemplateV3;
|
||||||
import cn.axzo.msg.center.domain.entity.Todo;
|
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.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.ModelV3Parser;
|
||||||
|
import cn.axzo.msg.center.message.service.impl.v3.UrlParser;
|
||||||
import cn.axzo.msg.center.nimpush.NimPushService;
|
import cn.axzo.msg.center.nimpush.NimPushService;
|
||||||
import cn.axzo.msg.center.nimpush.PushChannel;
|
import cn.axzo.msg.center.nimpush.PushChannel;
|
||||||
import cn.axzo.msg.center.nimpush.PushExecutorConfig;
|
import cn.axzo.msg.center.nimpush.PushExecutorConfig;
|
||||||
@ -61,8 +61,9 @@ public class TodoPushSenderNim implements ApplicationListener<NewTodoEvent> {
|
|||||||
List<PushTerminalEnum> pushTerminals = template.determinePushTerminals();
|
List<PushTerminalEnum> pushTerminals = template.determinePushTerminals();
|
||||||
List<AppTypeEnum> appTypes = terminalAppMapping.toImTypes(pushTerminals);
|
List<AppTypeEnum> appTypes = terminalAppMapping.toImTypes(pushTerminals);
|
||||||
if (CollectionUtils.isEmpty(appTypes)) return;
|
if (CollectionUtils.isEmpty(appTypes)) return;
|
||||||
ParsedModelV3 parsedModelV3 = parseModelForTodoPush(
|
MessageEntity entity = event.getTodos().get(0);
|
||||||
event.getTemplateModel(), event.getTodos().get(0));
|
ParsedModelV3 parsedModelV3 = modelV3Parser.parseModel(
|
||||||
|
event.getTemplateModel(), entity.bizParam(), new UrlParser(entity.routerParam()));
|
||||||
PushData pushData = parsedModelV3.getPushData();
|
PushData pushData = parsedModelV3.getPushData();
|
||||||
if (pushData != null && !pushData.determinePushable(log, parsedModelV3.getTemplateCode())) {
|
if (pushData != null && !pushData.determinePushable(log, parsedModelV3.getTemplateCode())) {
|
||||||
return;
|
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