REQ-3045: 处理迁移数据问题
This commit is contained in:
parent
fb530c27b8
commit
fbd5a92fb0
@ -1,5 +1,6 @@
|
||||
package cn.axzo.msg.center.message.xxl;
|
||||
|
||||
import cn.axzo.maokai.api.util.Ref;
|
||||
import cn.axzo.maokai.api.vo.response.tree.ValueNode;
|
||||
import cn.axzo.msg.center.dal.MessageBaseTemplateDao;
|
||||
import cn.axzo.msg.center.dal.MessageTemplateButtonV3Dao;
|
||||
@ -37,6 +38,7 @@ 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.RouterButtonSourceEnum;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
|
||||
import cn.axzo.msg.center.service.enums.WebPageOpenStrategy;
|
||||
@ -65,6 +67,7 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Semaphore;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@ -116,6 +119,8 @@ public class MigrateMessageTemplateV3Job {
|
||||
for (int i = 0; i < baseTemplates.size(); i++) {
|
||||
MessageBaseTemplate baseTemplate = baseTemplates.get(i);
|
||||
log.info("migrating template: {}/{}", i + 1, baseTemplates.size());
|
||||
MessageTemplateV3 templateV3 = messageTemplateV3Dao.findByCode(baseTemplate.getCode()).orElse(null);
|
||||
if (templateV3 != null) continue;
|
||||
semaphore.acquire();
|
||||
tasks.runAsync(() -> {
|
||||
try {
|
||||
@ -209,6 +214,7 @@ public class MigrateMessageTemplateV3Job {
|
||||
continue;
|
||||
}
|
||||
MessageTemplateButtonV3 button = new MessageTemplateButtonV3();
|
||||
buttons.add(button);
|
||||
button.setName(routeButton.getName());
|
||||
button.setCode(routeButton.getBtnCode());
|
||||
button.setTemplateCode(baseTemplate.getCode());
|
||||
@ -216,25 +222,30 @@ public class MigrateMessageTemplateV3Job {
|
||||
button.setSource(routeButton.getSource());
|
||||
button.setCategory(routeButton.getCategory());
|
||||
button.setApiUrl(routeButton.getApiUrl());
|
||||
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());
|
||||
button.setPriority(routeButton.getPriority());
|
||||
button.getOrCreateRecordExt().setIsMigrated(true);
|
||||
setOperatorAsSystem(button);
|
||||
buttons.add(button);
|
||||
if (routeButton.getCategory() != RouterCategoryEnum.JUMP)
|
||||
continue;
|
||||
if (baseTemplate.getMsgCategory() == MessageCategoryEnum.APPROVAL_PENDING_MESSAGE
|
||||
&& routeButton.getSource() == RouterButtonSourceEnum.SYSTEM) {
|
||||
Ref<Boolean> urlSet = Ref.create(false);
|
||||
Consumer<TerminalTypeEnum> approvalButtonBuilder = terminalType -> {
|
||||
if (urlSet.get()) return;
|
||||
searchRouter(routeButton.getRouterConfigs(), terminalType).ifPresent(router -> {
|
||||
UrlConfig urlConfig = new UrlConfig();
|
||||
urlConfig.applyUrlAsDefaults(router.getUrl());
|
||||
button.setUrlConfig(urlConfig);
|
||||
urlSet.set(true);
|
||||
});
|
||||
};
|
||||
approvalButtonBuilder.accept(TerminalTypeEnum.WEB_VIEW);
|
||||
} else {
|
||||
button.setUrlConfig(buildUrlConfig(groupRoot, baseTemplate, routeButton.getRouterConfigs()));
|
||||
}
|
||||
}
|
||||
return buttons;
|
||||
}
|
||||
@ -303,6 +314,11 @@ public class MigrateMessageTemplateV3Job {
|
||||
pcCms.setOpenStrategy(WebPageOpenStrategy.NEW_PAGE);
|
||||
pcCms.setUrl(router.getUrl());
|
||||
urlConfig.setPcCms(pcCms);
|
||||
|
||||
WebUrl pcOms = new WebUrl();
|
||||
pcOms.setOpenStrategy(WebPageOpenStrategy.DRAWER);
|
||||
pcOms.setUrl(router.getUrl());
|
||||
urlConfig.setPcOms(pcOms);
|
||||
});
|
||||
List<PushTerminalEnum> terminals = determineTerminalTypes(groupRoot, baseTemplate);
|
||||
searchRouter(routers, TerminalTypeEnum.IOS).ifPresent(router -> {
|
||||
|
||||
@ -17,7 +17,6 @@ import cn.axzo.msg.center.service.pending.response.v3.model.SessionUrlSelector;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
@ -57,34 +56,40 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor {
|
||||
|
||||
@Override
|
||||
public void visitButton(ParsedButtonV3 buttonV3) {
|
||||
Supplier<ButtonRouterDTO> factory = () -> {
|
||||
ButtonRouterDTO buttonV2 = new ButtonRouterDTO();
|
||||
buttonV2.setDesc(buttonV3.getName());
|
||||
buttonV2.setCategory(buttonV3.getCategory());
|
||||
buttonV2.setPresetButtonType(buttonV3.getPresetBtnType());
|
||||
buttonV2.setStyle(buttonV3.parseStyle());
|
||||
buttonV2.setExecutorShow(buttonV3.getExecutorShow());
|
||||
buttonV2.setPendingShow(buttonV3.getPendingShow());
|
||||
buttonV2.setKey(buttonV3.getCode());
|
||||
buttonV2.setSource(buttonV3.getSource());
|
||||
if (response.getButtonRouters() == null)
|
||||
response.setButtonRouters(new ArrayList<>());
|
||||
response.getButtonRouters().add(buttonV2);
|
||||
return buttonV2;
|
||||
};
|
||||
if (buttonV3.getCategory() != RouterCategoryEnum.JUMP) {
|
||||
ButtonRouterDTO buttonV2 = factory.get();
|
||||
if (buttonV3.getCategory() == RouterCategoryEnum.ACTION) {
|
||||
ButtonRouterDTO buttonV2 = addButtonV2(buttonV3);
|
||||
buttonV2.setUrl(buttonV3.getApiUrl());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitButtonUrlConfig(ParsedButtonV3 buttonV3, UrlConfig urlConfig) {
|
||||
if (buttonV3.getCategory() != RouterCategoryEnum.JUMP)
|
||||
return;
|
||||
if (sessionUrlSelector == null) return;
|
||||
sessionUrlSelector.selectFrom(buttonV3.getUrlConfig()).ifPresent(session -> {
|
||||
ButtonRouterDTO buttonV2 = factory.get();
|
||||
ButtonRouterDTO buttonV2 = addButtonV2(buttonV3);
|
||||
sessionUrlSelector.selectFrom(urlConfig).ifPresent(session -> {
|
||||
buttonV2.setUrl(session.getUrl().getUrl());
|
||||
buttonV2.setTerminalType(session.getTerminalType());
|
||||
});
|
||||
}
|
||||
|
||||
private ButtonRouterDTO addButtonV2(ParsedButtonV3 buttonV3) {
|
||||
ButtonRouterDTO buttonV2 = new ButtonRouterDTO();
|
||||
buttonV2.setDesc(buttonV3.getName());
|
||||
buttonV2.setCategory(buttonV3.getCategory());
|
||||
buttonV2.setPresetButtonType(buttonV3.getPresetBtnType());
|
||||
buttonV2.setStyle(buttonV3.parseStyle());
|
||||
buttonV2.setExecutorShow(buttonV3.getExecutorShow());
|
||||
buttonV2.setPendingShow(buttonV3.getPendingShow());
|
||||
buttonV2.setKey(buttonV3.getCode());
|
||||
buttonV2.setSource(buttonV3.getSource());
|
||||
if (response.getButtonRouters() == null)
|
||||
response.setButtonRouters(new ArrayList<>());
|
||||
response.getButtonRouters().add(buttonV2);
|
||||
return buttonV2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
|
||||
if (sessionUrlSelector == null) return;
|
||||
|
||||
@ -37,9 +37,7 @@ public class ParsedModel3Walker {
|
||||
ParsedTemplateV3 template) {
|
||||
if (template == null) return;
|
||||
CardUrlConfig cardUrlConfig = template.getCardUrlConfig();
|
||||
if (cardUrlConfig != null
|
||||
&& cardUrlConfig.getUrlConfig() != null
|
||||
&& cardUrlConfig.getUrlConfig().hasUrl()) {
|
||||
if (cardUrlConfig != null && cardUrlConfig.getUrlConfig() != null) {
|
||||
visitor.visitTemplateCardUrlConfig(cardUrlConfig.getUrlConfig());
|
||||
visitor.exitTemplateCardUrlConfig(cardUrlConfig.getUrlConfig());
|
||||
}
|
||||
@ -94,8 +92,7 @@ public class ParsedModel3Walker {
|
||||
ParsedGroupInfo groupInfo) {
|
||||
if (groupInfo.getDetail() == null) return;
|
||||
visitor.visitGroupDetailConfig(group, groupInfo.getDetail());
|
||||
if (groupInfo.getDetail().getUrlConfig() != null
|
||||
&& groupInfo.getDetail().getUrlConfig().hasUrl()) {
|
||||
if (groupInfo.getDetail().getUrlConfig() != null) {
|
||||
visitor.visitGroupDetailUrlConfig(group, groupInfo.getDetail().getUrlConfig());
|
||||
visitor.exitGroupDetailUrlConfig(group, groupInfo.getDetail().getUrlConfig());
|
||||
}
|
||||
@ -117,8 +114,7 @@ public class ParsedModel3Walker {
|
||||
private static void visitButton(ParsedModel3Visitor visitor,
|
||||
ParsedButtonV3 button) {
|
||||
visitor.visitButton(button);
|
||||
if (button.getUrlConfig() != null
|
||||
&& button.getUrlConfig().hasUrl()) {
|
||||
if (button.getUrlConfig() != null) {
|
||||
visitor.visitButtonUrlConfig(button, button.getUrlConfig());
|
||||
visitor.exitButtonUrlConfig(button, button.getUrlConfig());
|
||||
}
|
||||
|
||||
@ -6,10 +6,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class MessageTemplateV3Dao extends ServiceImpl<MessageTemplateV3Mapper, MessageTemplateV3> {
|
||||
|
||||
public Optional<MessageTemplateV3> findByCode(String code) {
|
||||
return Optional.ofNullable(lambdaQuery().eq(MessageTemplateV3::getCode, code).one());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -6,11 +6,8 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.annotation.Commit;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@ -22,7 +19,7 @@ class MigrateMessageTemplateV3JobTest {
|
||||
|
||||
@Test @Commit @Transactional
|
||||
void exec() throws Exception {
|
||||
//migrateMessageTemplateV3Job.execute("{\"templateCodes\":[\"429e7d99512f4411ad521e69f88f9b71\"]}");
|
||||
//migrateMessageTemplateV3Job.execute("{\"templateCodes\":[\"8ccc605371144ae4be367d59cba086a6\"]}");
|
||||
migrateMessageTemplateV3Job.execute(null);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user