diff --git a/inside-notices/pom.xml b/inside-notices/pom.xml index ffedbcab..4e6a3325 100644 --- a/inside-notices/pom.xml +++ b/inside-notices/pom.xml @@ -46,6 +46,7 @@ cn.axzo.trade trade-web-spring-boot-starter + 2.0.1-SNAPSHOT org.mybatis diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/event/outer/PushYouMengMessageHandler.java b/inside-notices/src/main/java/cn/axzo/msg/center/event/outer/PushYouMengMessageHandler.java index 17c6f101..413a0297 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/event/outer/PushYouMengMessageHandler.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/event/outer/PushYouMengMessageHandler.java @@ -1,5 +1,21 @@ package cn.axzo.msg.center.event.outer; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; + import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventHandler; @@ -19,21 +35,7 @@ import cn.axzo.msg.center.nimpush.device.PushDevice; import cn.axzo.msg.center.nimpush.device.PushDeviceService; import cn.axzo.msg.center.push.PushData; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; -import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Function; -import java.util.stream.Collectors; @Slf4j @Component @@ -127,9 +129,8 @@ public class PushYouMengMessageHandler implements EventHandler, InitializingBean log.info("push-handler, 模板code:{},appType不合法, event: {}", card.getTemplateCode(), event); return; } - PushDevice device = pushDeviceService - .createDeviceSnapshots() - .getDevice(Long.parseLong(newMessageHistory.getReceivePersonId())); + long personId = Long.parseLong(newMessageHistory.getReceivePersonId()); + PushDevice device = pushDeviceService.getDevice(personId); if(!device.shouldPush(appType, PushChannel.YOU_MENG)) { log.info("push-handler, 模板code:{}, 友盟push不适用, event: {}", card.getTemplateCode(), event); return; diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/card/CardManager.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/card/CardManager.java index b5ff068b..d00c095c 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/card/CardManager.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/card/CardManager.java @@ -1,5 +1,18 @@ package cn.axzo.msg.center.message.service.card; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.transaction.support.TransactionTemplate; + import cn.axzo.framework.jackson.utility.JSON; import cn.axzo.im.center.api.feign.MessageApi; import cn.axzo.im.center.api.vo.req.SendTemplateMessageParam; @@ -42,18 +55,6 @@ import cn.axzo.msg.center.utils.BatchController; import cn.axzo.msg.center.utils.RecordCursor; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Component; -import org.springframework.transaction.support.TransactionTemplate; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.function.Supplier; /** * @author yanglin @@ -106,7 +107,7 @@ public class CardManager { cardDao.saveBatch(sendModel.getCards()); sendLogger.reloadAndLogCards("send:enqueue"); }); - PushDeviceSnapshots deviceSnapshots = pushDeviceService.createDeviceSnapshots(); + PushDeviceSnapshots deviceSnapshots = pushDeviceService.createDeviceSnapshots(sendModel.receiverPersonIds()); BatchController groupExecutor = new BatchController("sendCard", request, executor); for (CardGroup group : sendModel.getCardGroups()) { groupExecutor.submit(() -> { diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/card/domain/CardSendModel.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/card/domain/CardSendModel.java index aeaff8b0..c50c498e 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/card/domain/CardSendModel.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/card/domain/CardSendModel.java @@ -1,5 +1,14 @@ package cn.axzo.msg.center.message.service.card.domain; +import static java.util.stream.Collectors.toSet; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Set; + import cn.axzo.msg.center.domain.entity.Card; import cn.axzo.msg.center.message.domain.vo.GeneralMessagePushVO; import cn.axzo.msg.center.message.service.card.CardRequestContext; @@ -11,12 +20,6 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; - /** * @author yanglin */ @@ -35,6 +38,10 @@ public class CardSendModel { cards.add(card); } + public Set receiverPersonIds() { + return cards.stream().map(Card::getReceiverPersonId).collect(toSet()); + } + public Collection getCardGroups() { HashMap groups = new HashMap<>(); for (Card card : cards) { diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java index 790f3e36..93489699 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/v3/ModelV3Parser.java @@ -1,5 +1,18 @@ package cn.axzo.msg.center.message.service.impl.v3; +import static cn.axzo.msg.center.common.utils.PlaceholderResolver.getDefaultResolver; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.springframework.stereotype.Component; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + import cn.axzo.msg.center.domain.entity.MessageTemplateButtonV3; import cn.axzo.msg.center.domain.entity.MessageTemplateGroupV3; import cn.axzo.msg.center.message.domain.dto.TemplateModelV3; @@ -20,19 +33,8 @@ 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.trade.datasecurity.core.util.DataSecurityHelper; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; 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.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -import static cn.axzo.msg.center.common.utils.PlaceholderResolver.getDefaultResolver; /** * @author yanglin @@ -154,7 +156,8 @@ public class ModelV3Parser { } }); - + // 提前排序避免并发问题 + parsedModel.sortButtons(); return parsedModel; } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/NewTodoEvent.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/NewTodoEvent.java index 0d88aaa3..4a5dc9ec 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/NewTodoEvent.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/NewTodoEvent.java @@ -1,13 +1,18 @@ package cn.axzo.msg.center.message.service.todo.manage.event; -import cn.axzo.msg.center.domain.entity.Todo; -import cn.axzo.msg.center.message.domain.dto.TemplateModelV3; -import com.alibaba.fastjson.JSON; -import lombok.Getter; -import org.springframework.context.ApplicationEvent; +import static java.util.stream.Collectors.toSet; import java.util.HashMap; import java.util.List; +import java.util.Set; + +import org.springframework.context.ApplicationEvent; + +import com.alibaba.fastjson.JSON; + +import cn.axzo.msg.center.domain.entity.Todo; +import cn.axzo.msg.center.message.domain.dto.TemplateModelV3; +import lombok.Getter; /** * @author yanglin @@ -23,6 +28,10 @@ public class NewTodoEvent extends ApplicationEvent { this.todos = todos; } + public Set executorPersonIds() { + return todos.stream().map(Todo::getExecutorPersonId).collect(toSet()); + } + @Override public String toString() { HashMap fields = new HashMap<>(); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSender.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSender.java index b2fd791d..f8eec2ce 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSender.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSender.java @@ -1,5 +1,19 @@ package cn.axzo.msg.center.message.service.todo.manage.event; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections.CollectionUtils; +import org.jetbrains.annotations.NotNull; +import org.springframework.context.ApplicationListener; +import org.springframework.stereotype.Component; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + import cn.axzo.msg.center.dal.TodoBusinessDao; import cn.axzo.msg.center.dal.TodoBusinesses; import cn.axzo.msg.center.domain.entity.MessageEntity; @@ -23,20 +37,8 @@ import cn.axzo.msg.center.service.domain.CardUrlConfig; import cn.axzo.msg.center.service.domain.UrlConfig; import cn.axzo.msg.center.service.domain.UrlConfigWalker; import cn.axzo.msg.center.service.enums.PushTerminalEnum; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; -import org.jetbrains.annotations.NotNull; -import org.springframework.context.ApplicationListener; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; /** * @author yanglin @@ -64,7 +66,7 @@ class TodoPushSender implements ApplicationListener { if (!pushData.determinePushable(log, event.getTemplateModel().getTemplateCode())) return; List pushTerminals = template.determinePushTerminals(); - PushDeviceSnapshots deviceSnapshots = pushDeviceService.createDeviceSnapshots(); + PushDeviceSnapshots deviceSnapshots = pushDeviceService.createDeviceSnapshots(event.executorPersonIds()); ArrayList pushes = new ArrayList<>(); for (Todo todo : event.getTodos()) { PushDevice pushDevice = deviceSnapshots.getDevice(todo.getExecutorPersonId()); diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSenderNim.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSenderNim.java index 6beddf3a..d352e34c 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSenderNim.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSenderNim.java @@ -72,7 +72,7 @@ public class TodoPushSenderNim implements ApplicationListener { if (pushData != null && !pushData.determinePushable(log, parsedModelV3.getTemplateCode())) { return; } - PushDeviceSnapshots deviceSnapshots = pushDeviceService.createDeviceSnapshots(); + PushDeviceSnapshots deviceSnapshots = pushDeviceService.createDeviceSnapshots(event.executorPersonIds()); for (Todo todo : event.getTodos()) { executor.submit(() -> { for (AppTypeEnum appType : appTypes) { diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDevice.java b/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDevice.java index 86521e5d..4841efea 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDevice.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDevice.java @@ -1,5 +1,7 @@ package cn.axzo.msg.center.nimpush.device; +import java.util.List; + import cn.axzo.epic.client.vo.response.ApkDeviceMaxCodeResp; import cn.axzo.im.center.common.enums.AppTypeEnum; import cn.axzo.msg.center.nimpush.PushChannel; @@ -7,8 +9,6 @@ import cn.axzo.msg.center.service.enums.PushTerminalEnum; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; -import java.util.List; - /** * @author yanglin */ @@ -16,9 +16,7 @@ import java.util.List; public class PushDevice { private final PushDeviceService pushDeviceService; - private final Long personId; - - private volatile List cache; + private final List devices; public boolean shouldPush(AppTypeEnum appType, PushChannel pushChannel) { @@ -30,20 +28,7 @@ public class PushDevice { public boolean shouldPush(PushTerminalEnum pushTerminal, PushChannel pushChannel) { - List devices = getDevices(); return pushDeviceService.shouldPush(pushTerminal, pushChannel, devices); } - private List getDevices() { - List cache = this.cache; - if (cache != null) - return cache; - synchronized (this) { - cache = this.cache; - if (cache == null) - cache = this.cache = pushDeviceService.getPersonDevices(personId); - } - return cache; - } - } \ No newline at end of file diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDeviceService.java b/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDeviceService.java index 48f88d42..34269bd4 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDeviceService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDeviceService.java @@ -1,8 +1,22 @@ package cn.axzo.msg.center.nimpush.device; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.Supplier; + +import org.apache.commons.collections.CollectionUtils; +import org.springframework.stereotype.Component; + +import com.alibaba.fastjson.JSON; + import cn.axzo.epic.client.common.enums.AppTerminalTypeEnum; import cn.axzo.epic.client.feign.AppDeviceApi; -import cn.axzo.epic.client.vo.request.FetchDeviceByPersonIdAndTerminalReq; +import cn.axzo.epic.client.vo.request.BatchFetchDeviceByPersonIdAndTerminalReq; import cn.axzo.epic.client.vo.response.ApkDeviceMaxCodeResp; import cn.axzo.msg.center.common.enums.SystemTypeEnum; import cn.axzo.msg.center.common.utils.BizAssertions; @@ -10,16 +24,8 @@ import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig; import cn.axzo.msg.center.inside.notices.config.push.PushDeviceVersion; import cn.axzo.msg.center.nimpush.PushChannel; import cn.axzo.msg.center.service.enums.PushTerminalEnum; -import com.alibaba.fastjson.JSON; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; -import org.springframework.stereotype.Component; - -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.function.Supplier; /** * @author yanglin @@ -32,18 +38,21 @@ public class PushDeviceService { private final AppDeviceApi appDeviceApi; private final PendingMessageBizConfig cfg; - public PushDeviceSnapshots createDeviceSnapshots() { - return new PushDeviceSnapshots(this); + public PushDevice getDevice(long personId) { + return createDeviceSnapshots(Collections.singletonList(personId)).getDevice(personId); } - List getPersonDevices(Long personId) { - FetchDeviceByPersonIdAndTerminalReq request = - new FetchDeviceByPersonIdAndTerminalReq(); - request.setPersonId(personId); + public PushDeviceSnapshots createDeviceSnapshots(Collection personIds) { + if (CollectionUtils.isNotEmpty(personIds)) + return new PushDeviceSnapshots(this, Collections.emptyList()); + ArrayList uniquePersonIds = new ArrayList<>(new HashSet<>(personIds)); + BatchFetchDeviceByPersonIdAndTerminalReq request = new BatchFetchDeviceByPersonIdAndTerminalReq(); + request.setPersonIds(uniquePersonIds); request.setTerminals(Arrays.asList( AppTerminalTypeEnum.CMP, AppTerminalTypeEnum.CM)); - return BizAssertions.assertResponse( - appDeviceApi.fetchCodeByPersonIdAndTerminal(request)); + List devices = BizAssertions.assertResponse( + appDeviceApi.batchfetchCodeByPersonIdAndTerminal(request)); + return new PushDeviceSnapshots(this, devices); } boolean shouldPush(PushTerminalEnum pushTerminal, @@ -104,5 +113,4 @@ public class PushDeviceService { return SystemTypeEnum.IOS; return null; } - } \ No newline at end of file diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDeviceSnapshots.java b/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDeviceSnapshots.java index 78884743..35ee0eb7 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDeviceSnapshots.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/nimpush/device/PushDeviceSnapshots.java @@ -1,26 +1,39 @@ + package cn.axzo.msg.center.nimpush.device; -import lombok.AccessLevel; -import lombok.RequiredArgsConstructor; +import static java.util.Collections.emptyList; +import static java.util.stream.Collectors.groupingBy; +import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import cn.axzo.epic.client.vo.response.ApkDeviceMaxCodeResp; +import lombok.AccessLevel; +import lombok.RequiredArgsConstructor; + /** * @author yanglin */ @RequiredArgsConstructor(access = AccessLevel.PACKAGE) public class PushDeviceSnapshots { - private final Map cache = new ConcurrentHashMap<>(); - private final PushDeviceService pushDeviceService; + private final Map cache = new ConcurrentHashMap<>(); + private final PushDeviceService pushDeviceService; + private final List devices; - public PushDevice getDevice(Long personId) { - return cache.computeIfAbsent(personId, this::createDevice); - } + private Map> personId2Devices; - private PushDevice createDevice(Long personId) { - return new PushDevice(pushDeviceService, personId); - } + public PushDevice getDevice(Long personId) { + return cache.computeIfAbsent(personId, this::createDevice); + } + + private PushDevice createDevice(Long personId) { + if (personId2Devices == null) + personId2Devices = devices.stream().collect(groupingBy(ApkDeviceMaxCodeResp::getPersonId)); + List personDevices = personId2Devices.getOrDefault(personId, emptyList()); + return new PushDevice(pushDeviceService, personDevices); + } } \ No newline at end of file diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/utils/BatchController.java b/inside-notices/src/main/java/cn/axzo/msg/center/utils/BatchController.java index 8757492e..fe991e92 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/utils/BatchController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/utils/BatchController.java @@ -22,7 +22,7 @@ public class BatchController { public BatchController(String operation, Object request, ExecutorService executor) { - this(operation, request, executor, 4); + this(operation, request, executor, 2); } public BatchController(String operation, Object request, diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModelV3Walker.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModelV3Walker.java index 33582ee4..2c9b7f53 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModelV3Walker.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/ParsedModelV3Walker.java @@ -1,5 +1,9 @@ package cn.axzo.msg.center.service.pending.response.v3; +import java.util.ArrayList; + +import org.apache.commons.collections4.CollectionUtils; + import cn.axzo.msg.center.service.domain.CardUrlConfig; import cn.axzo.msg.center.service.domain.card.AppVersionConfig; import cn.axzo.msg.center.service.domain.card.StateImageConfig; @@ -12,10 +16,6 @@ import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupV3; 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 org.apache.commons.collections4.CollectionUtils; - -import java.util.ArrayList; -import java.util.Comparator; /** * @author yanglin @@ -41,9 +41,7 @@ public class ParsedModelV3Walker { } for (ParsedGroupV3 group : new ArrayList<>(model.determineGroups())) visitGroup(visitor, group); - ArrayList buttons = new ArrayList<>(model.determineButtons()); - buttons.sort(Comparator.comparingInt(ParsedButtonV3::determinePriority)); - for (ParsedButtonV3 button : buttons) + for (ParsedButtonV3 button : new ArrayList<>(model.determineButtons())) visitButton(visitor, button); if (template != null) visitor.exitTemplate(template); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedModelV3.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedModelV3.java index d0d52d90..70b5094a 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedModelV3.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/v3/model/ParsedModelV3.java @@ -1,19 +1,7 @@ package cn.axzo.msg.center.service.pending.response.v3.model; -import cn.axzo.msg.center.push.PushData; -import cn.axzo.msg.center.push.PushMessage; -import cn.axzo.msg.center.service.domain.CardUrlConfig; -import cn.axzo.msg.center.service.domain.UrlConfig; -import cn.axzo.msg.center.service.enums.GroupType; -import cn.axzo.msg.center.service.pending.response.MessageButtonProvider; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.annotation.JSONField; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Getter; -import lombok.Setter; +import static java.util.stream.Collectors.toList; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -21,7 +9,21 @@ import java.util.Comparator; import java.util.List; import java.util.Objects; -import static java.util.stream.Collectors.toList; +import javax.annotation.Nullable; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; + +import cn.axzo.msg.center.push.PushData; +import cn.axzo.msg.center.push.PushMessage; +import cn.axzo.msg.center.service.domain.CardUrlConfig; +import cn.axzo.msg.center.service.domain.UrlConfig; +import cn.axzo.msg.center.service.enums.GroupType; +import cn.axzo.msg.center.service.pending.response.MessageButtonProvider; +import lombok.Getter; +import lombok.Setter; /** * @author yanglin @@ -94,10 +96,14 @@ public class ParsedModelV3 implements MessageButtonProvider, Pus return groups == null ? Collections.emptyList() : groups; } - public List determineButtons() { - List buttons = this.buttons == null ? Collections.emptyList() : this.buttons; + public void sortButtons() { + if (buttons == null) return; + this.buttons = new ArrayList<>(buttons); buttons.sort(Comparator.comparingInt(ParsedButtonV3::determinePriority)); - return buttons; + } + + public List determineButtons() { + return this.buttons == null ? Collections.emptyList() : this.buttons; } public void removeEmptyKVGroups() { diff --git a/msg-notices/msg-notices-integration/src/main/java/cn/axzo/msg/center/notices/integration/client/impl/RegulatoryGaoxinClient.java b/msg-notices/msg-notices-integration/src/main/java/cn/axzo/msg/center/notices/integration/client/impl/RegulatoryGaoxinClient.java index b186aa06..6d5209fd 100644 --- a/msg-notices/msg-notices-integration/src/main/java/cn/axzo/msg/center/notices/integration/client/impl/RegulatoryGaoxinClient.java +++ b/msg-notices/msg-notices-integration/src/main/java/cn/axzo/msg/center/notices/integration/client/impl/RegulatoryGaoxinClient.java @@ -1,20 +1,22 @@ package cn.axzo.msg.center.notices.integration.client.impl; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Maps; + import cn.hutool.core.net.URLEncoder; import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Maps; import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cloud.context.config.annotation.RefreshScope; -import org.springframework.context.annotation.Configuration; - -import java.util.Map; /** * 信息中心短信服务组件 @@ -100,7 +102,7 @@ public class RegulatoryGaoxinClient { param.put("Pwd", pwd); param.put("Mobile", phone); param.put("Content", encodeContent); - return HttpUtil.toParams(param); + return JSON.toJSONString(param); } /** @@ -111,13 +113,13 @@ public class RegulatoryGaoxinClient { private String executeSend(String param) { try { //构建url - String requestUrl = this.createUrl(param); + //String requestUrl = this.createUrl(param); - log.info("发送政务短信请求: {}", requestUrl); + log.info("发送政务短信请求, url={}, body={}", url, param); //执行请求 String result = HttpUtil.post( - requestUrl, StrUtil.EMPTY_JSON + url, param ); //打印发送结果 diff --git a/start/pom.xml b/start/pom.xml index 22b8a5cf..605e0160 100644 --- a/start/pom.xml +++ b/start/pom.xml @@ -37,6 +37,7 @@ cn.axzo.trade trade-web-spring-boot-starter + 2.0.1-SNAPSHOT cn.axzo.msgcenter diff --git a/start/src/test/java/cn/axzo/msg/center/nimpush/device/PushDeviceServiceTest.java b/start/src/test/java/cn/axzo/msg/center/nimpush/device/PushDeviceServiceTest.java deleted file mode 100644 index 09575da7..00000000 --- a/start/src/test/java/cn/axzo/msg/center/nimpush/device/PushDeviceServiceTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.axzo.msg.center.nimpush.device; - -import cn.axzo.epic.client.vo.response.ApkDeviceMaxCodeResp; -import cn.axzo.msg.center.MsgCenterApplication; -import lombok.RequiredArgsConstructor; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; - -import java.util.List; - -import static org.junit.jupiter.api.Assertions.*; - -/** - * @author yanglin - */ -@SpringBootTest(classes = MsgCenterApplication.class) -@RequiredArgsConstructor(onConstructor_ = @Autowired) -class PushDeviceServiceTest { - - private final PushDeviceService pushDeviceService; - - @Test - void exec() { - List devices = pushDeviceService.getPersonDevices(80792L); - System.out.println(); - } - -} \ No newline at end of file diff --git a/wx-notices/pom.xml b/wx-notices/pom.xml index 03fdaaca..64a9817f 100644 --- a/wx-notices/pom.xml +++ b/wx-notices/pom.xml @@ -61,6 +61,7 @@ cn.axzo.trade trade-web-spring-boot-starter + 2.0.1-SNAPSHOT \ No newline at end of file