REQ-3444: move elements to precise location

This commit is contained in:
yanglin 2024-12-17 17:35:37 +08:00
parent c79ea6945d
commit 1ed793da24
3 changed files with 17 additions and 8 deletions

View File

@ -68,7 +68,7 @@ import static java.util.stream.Collectors.toMap;
@Slf4j
@Component
@RequiredArgsConstructor
class TodoRespBuilder {
public class TodoRespBuilder {
private final TodoBusinessDao todoBusinessDao;
private final TodoDao todoDao;
@ -295,7 +295,7 @@ class TodoRespBuilder {
JSONObject routerParam,
JSONObject appendRouterParam,
ClientRequest request) {
UrlParser urlParser = new TodoUrlParser(cfg, entity, routerParam, appendRouterParam);
UrlParser urlParser = createTodoUrlParser(entity, routerParam, appendRouterParam);
ParsedModelV3 parsedModel = modelV3Parser.parseModel(templateModel, bizParam, urlParser);
ParsedModelV3Walker.walkDown(parsedModel, new ParsedModel3Visitor() {
@ -325,6 +325,12 @@ class TodoRespBuilder {
return parsedModel;
}
public TodoUrlParser createTodoUrlParser(MessageEntity entity,
JSONObject routerParam,
JSONObject appendRouterParam) {
return new TodoUrlParser(cfg, entity, routerParam, appendRouterParam);
}
public SessionUrlInfo parseSessionUrlInfo(UrlConfig urlConfig,
@Nullable ClientRequest request) {
SessionUrlInfo url = new SessionUrlInfo();

View File

@ -6,11 +6,10 @@ 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.domain.entity.TodoBusiness;
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.AppLink;
import cn.axzo.msg.center.message.service.impl.v3.NativeAppLinkUrlConfigVisitor;
import cn.axzo.msg.center.message.service.impl.v3.TodoUrlParser;
import cn.axzo.msg.center.message.service.todo.TodoRespBuilder;
import cn.axzo.msg.center.message.service.todo.manage.TodoExt;
import cn.axzo.msg.center.message.service.youmeng.YoumengPush;
import cn.axzo.msg.center.message.service.youmeng.YoumengTemplateClient;
@ -50,7 +49,7 @@ class TodoPushSender implements ApplicationListener<NewTodoEvent> {
private final YoumengTemplateClient youmengTemplateClient;
private final TodoBusinessDao todoBusinessDao;
private final PushDeviceService pushDeviceService;
private final PendingMessageBizConfig cfg;
private final TodoRespBuilder todoRespBuilder;
@Override
public void onApplicationEvent(@NotNull NewTodoEvent event) {
@ -116,7 +115,7 @@ class TodoPushSender implements ApplicationListener<NewTodoEvent> {
JSONObject routerParam) {
String json = JSON.toJSONString(urlConfig);
UrlConfig copy = JSON.parseObject(json, UrlConfig.class);
new TodoUrlParser(cfg, entity, routerParam, routerParam).parseUrlConfig(copy);
todoRespBuilder.createTodoUrlParser(entity, routerParam, routerParam).parseUrlConfig(copy);
return copy;
}
}

View File

@ -11,7 +11,8 @@ 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.service.impl.v3.ModelV3Parser;
import cn.axzo.msg.center.message.service.impl.v3.UrlParser;
import cn.axzo.msg.center.message.service.impl.v3.TodoUrlParser;
import cn.axzo.msg.center.message.service.todo.TodoRespBuilder;
import cn.axzo.msg.center.nimpush.NimPushService;
import cn.axzo.msg.center.nimpush.PushChannel;
import cn.axzo.msg.center.nimpush.PushExecutorConfig;
@ -48,6 +49,7 @@ public class TodoPushSenderNim implements ApplicationListener<NewTodoEvent> {
private final ModelV3Parser modelV3Parser;
private final TerminalAppMapping terminalAppMapping;
private final PushDeviceService pushDeviceService;
private final TodoRespBuilder todoRespBuilder;
@Qualifier(PushExecutorConfig.PUSH_EXECUTOR)
private final ExecutorService executor;
@ -62,8 +64,10 @@ public class TodoPushSenderNim implements ApplicationListener<NewTodoEvent> {
List<AppTypeEnum> appTypes = terminalAppMapping.toImTypes(pushTerminals);
if (CollectionUtils.isEmpty(appTypes)) return;
MessageEntity entity = event.getTodos().get(0);
TodoUrlParser urlParser = todoRespBuilder.createTodoUrlParser(
entity, entity.routerParam(), entity.routerParam());
ParsedModelV3 parsedModelV3 = modelV3Parser.parseModel(
event.getTemplateModel(), entity.bizParam(), new UrlParser(entity.routerParam()));
event.getTemplateModel(), entity.bizParam(), urlParser);
PushData pushData = parsedModelV3.getPushData();
if (pushData != null && !pushData.determinePushable(log, parsedModelV3.getTemplateCode())) {
return;