From 5c78b6a3ca3bb71e23fbb9437e585cd98c8b73a4 Mon Sep 17 00:00:00 2001 From: yanglin Date: Fri, 11 Oct 2024 17:56:47 +0800 Subject: [PATCH] =?UTF-8?q?REQ-2752:=20=E5=88=B7=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xxl/MigrateMessageTemplateV3Job.java | 36 ++++++++++++++++--- .../msg/center/service/domain/UrlConfig.java | 11 +++--- .../xxl/MigrateMessageTemplateV3JobTest.java | 4 +-- 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/xxl/MigrateMessageTemplateV3Job.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/xxl/MigrateMessageTemplateV3Job.java index e3dd551a..ded37074 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/xxl/MigrateMessageTemplateV3Job.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/xxl/MigrateMessageTemplateV3Job.java @@ -37,9 +37,11 @@ import cn.axzo.msg.center.service.enums.GroupType; import cn.axzo.msg.center.service.enums.KVContentType; import cn.axzo.msg.center.service.enums.MessageCategoryEnum; import cn.axzo.msg.center.service.enums.PushTerminalEnum; +import cn.axzo.msg.center.service.enums.RouterCategoryEnum; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.enums.WebPageOpenStrategy; import cn.axzo.msg.center.service.enums.YesOrNo; +import cn.axzo.msg.center.utils.AsyncRunTasks; import cn.axzo.msg.center.utils.JSONObjectUtil; import com.alibaba.fastjson.JSON; import com.xxl.job.core.biz.model.ReturnT; @@ -61,6 +63,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.concurrent.Executors; +import java.util.concurrent.Semaphore; import java.util.function.Function; import java.util.function.Supplier; @@ -87,7 +91,7 @@ public class MigrateMessageTemplateV3Job { @SuppressWarnings("unused") @XxlJob("migrateMessageTemplateV3Job") - public ReturnT execute(String jsonStr) { + public ReturnT execute(String jsonStr) throws Exception { try { Param param = StringUtils.isBlank(jsonStr) ? new Param() @@ -99,18 +103,31 @@ public class MigrateMessageTemplateV3Job { } } - private ReturnT executeImpl(Param param) { + private ReturnT executeImpl(Param param) throws Exception { RootNodeWrapper groupRoot = groupTemplateService.getGroupRoot(); List baseTemplates = messageBaseTemplateDao.lambdaQuery() .eq(MessageBaseTemplate::getIsDelete, 0) .in(CollectionUtils.isNotEmpty(param.getTemplateCodes()), MessageBaseTemplate::getCode, param.getTemplateCodes()) .list(); + int nThreads = 10; + AsyncRunTasks tasks = new AsyncRunTasks(Executors.newFixedThreadPool(nThreads)); + Semaphore semaphore = new Semaphore(nThreads); for (int i = 0; i < baseTemplates.size(); i++) { MessageBaseTemplate baseTemplate = baseTemplates.get(i); log.info("migrating template: {}/{}", i + 1, baseTemplates.size()); - transactionTemplate.executeWithoutResult(unused -> migrateTemplate(groupRoot, baseTemplate)); + semaphore.acquire(); + tasks.runAsync(() -> { + try { + transactionTemplate.executeWithoutResult(unused -> migrateTemplate(groupRoot, baseTemplate)); + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + semaphore.release(); + } + }); } + tasks.awaitTermination(); return ReturnT.SUCCESS; } @@ -195,7 +212,18 @@ public class MigrateMessageTemplateV3Job { button.setSource(routeButton.getSource()); button.setCategory(routeButton.getCategory()); button.setApiUrl(routeButton.getApiUrl()); - button.setUrlConfig(buildUrlConfig(groupRoot, baseTemplate, routeButton.getRouterConfigs())); + if (baseTemplate.getMsgCategory() == MessageCategoryEnum.APPROVAL_PENDING_MESSAGE) { + // 不要和上面的if合并, 不然业务上不对了 + if (routeButton.getCategory() == RouterCategoryEnum.JUMP) { + searchRouter(routeButton.getRouterConfigs(), TerminalTypeEnum.WEB_VIEW).ifPresent(router -> { + UrlConfig urlConfig = new UrlConfig(); + urlConfig.applyUrlAsDefaults(router.getUrl()); + button.setUrlConfig(urlConfig); + }); + } + } else { + button.setUrlConfig(buildUrlConfig(groupRoot, baseTemplate, routeButton.getRouterConfigs())); + } button.setStyle(routeButton.getStyle()); button.setExecutorShow(routeButton.getExecutorShow()); button.setPendingShow(routeButton.getPendingShow()); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/UrlConfig.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/UrlConfig.java index 3a8a301c..25ff8fd9 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/UrlConfig.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/domain/UrlConfig.java @@ -9,6 +9,7 @@ import cn.axzo.msg.center.service.enums.WebPageOpenStrategy; import com.alibaba.fastjson.annotation.JSONField; import lombok.Getter; import lombok.Setter; +import net.minidev.json.annotate.JsonIgnore; import java.util.List; @@ -46,35 +47,35 @@ public class UrlConfig { */ private MobileUrlConfig appManager; - @JSONField(serialize = false) + @JsonIgnore @JSONField(serialize = false) public WebUrl getOrCreatePcOms() { if (pcOms == null) pcOms = new WebUrl(); return pcOms; } - @JSONField(serialize = false) + @JsonIgnore @JSONField(serialize = false) public WebUrl getOrCreatePcCms() { if (pcCms == null) pcCms = new WebUrl(); return pcCms; } - @JSONField(serialize = false) + @JsonIgnore @JSONField(serialize = false) public WebUrl getOrCreatePcGaGeneral() { if (pcGaGeneral == null) pcGaGeneral = new WebUrl(); return pcGaGeneral; } - @JSONField(serialize = false) + @JsonIgnore @JSONField(serialize = false) public MobileUrlConfig getOrCreateAppWorker() { if (appWorker == null) appWorker = new MobileUrlConfig(); return appWorker; } - @JSONField(serialize = false) + @JsonIgnore @JSONField(serialize = false) public MobileUrlConfig getOrCreateAppManager() { if (appManager == null) appManager = new MobileUrlConfig(); diff --git a/start/src/test/java/cn/axzo/msg/center/message/xxl/MigrateMessageTemplateV3JobTest.java b/start/src/test/java/cn/axzo/msg/center/message/xxl/MigrateMessageTemplateV3JobTest.java index 0bf28788..a9c66ce9 100644 --- a/start/src/test/java/cn/axzo/msg/center/message/xxl/MigrateMessageTemplateV3JobTest.java +++ b/start/src/test/java/cn/axzo/msg/center/message/xxl/MigrateMessageTemplateV3JobTest.java @@ -21,8 +21,8 @@ class MigrateMessageTemplateV3JobTest { private final MigrateMessageTemplateV3Job migrateMessageTemplateV3Job; @Test @Commit @Transactional - void exec() { - //migrateMessageTemplateV3Job.execute("{\"templateCodes\":[\"1c7effbba987411fbb6719619d2f5f07\"]}"); + void exec() throws Exception { + //migrateMessageTemplateV3Job.execute("{\"templateCodes\":[\"429e7d99512f4411ad521e69f88f9b71\"]}"); migrateMessageTemplateV3Job.execute(null); }