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