REQ-3281: 发送卡片消息
This commit is contained in:
parent
743739df35
commit
013cf25adb
@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.service.todo.manage.event;
|
||||
import cn.axzo.msg.center.dal.TodoBusinessDao;
|
||||
import cn.axzo.msg.center.dal.TodoBusinesses;
|
||||
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;
|
||||
@ -14,6 +15,7 @@ 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;
|
||||
import cn.axzo.msg.center.nimpush.PushChannel;
|
||||
import cn.axzo.msg.center.nimpush.PushPriorityController;
|
||||
import cn.axzo.msg.center.nimpush.device.PushDevice;
|
||||
import cn.axzo.msg.center.nimpush.device.PushDeviceService;
|
||||
import cn.axzo.msg.center.nimpush.device.PushDeviceSnapshots;
|
||||
@ -53,11 +55,16 @@ class TodoPushSender implements ApplicationListener<NewTodoEvent> {
|
||||
@Override
|
||||
public void onApplicationEvent(@NotNull NewTodoEvent event) {
|
||||
log.info("Prepare sending todo push. event={}", event);
|
||||
PushData pushData = event.getTemplateModel().getTemplate().parsePushData();
|
||||
MessageTemplateV3 template = event.getTemplateModel().getTemplate();
|
||||
if (!PushPriorityController.create(template).isPushViaTodo()) {
|
||||
log.info("Template is not pushable via todo. template={}", template);
|
||||
return;
|
||||
}
|
||||
|
||||
PushData pushData = template.parsePushData();
|
||||
if (!pushData.determinePushable(log, event.getTemplateModel().getTemplateCode()))
|
||||
return;
|
||||
List<PushTerminalEnum> pushTerminals = event
|
||||
.getTemplateModel().getTemplate().determinePushTerminals();
|
||||
List<PushTerminalEnum> pushTerminals = template.determinePushTerminals();
|
||||
PushDeviceSnapshots deviceSnapshots = pushDeviceService.createDeviceSnapshots();
|
||||
ArrayList<YoumengPush> pushes = new ArrayList<>();
|
||||
for (Todo todo : event.getTodos()) {
|
||||
@ -79,7 +86,7 @@ class TodoPushSender implements ApplicationListener<NewTodoEvent> {
|
||||
pushes.add(push);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(pushes))
|
||||
youmengTemplateClient.asyncSend(event.getTemplateModel().getTemplate().getId(), pushes);
|
||||
youmengTemplateClient.asyncSend(template.getId(), pushes);
|
||||
}
|
||||
|
||||
private List<AppLink> determineNavigations(TemplateModelV3 templateModel, Todo todo) {
|
||||
|
||||
@ -8,6 +8,7 @@ import cn.axzo.im.center.api.vo.resp.MessageCustomResp;
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.msg.center.common.utils.BizAssertions;
|
||||
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.inside.notices.service.impl.v3.msg.TerminalAppMapping;
|
||||
import cn.axzo.msg.center.message.domain.dto.TemplateModelV3;
|
||||
@ -16,6 +17,7 @@ import cn.axzo.msg.center.nimpush.NimPushService;
|
||||
import cn.axzo.msg.center.nimpush.PushChannel;
|
||||
import cn.axzo.msg.center.nimpush.PushExecutorConfig;
|
||||
import cn.axzo.msg.center.nimpush.PushPeer;
|
||||
import cn.axzo.msg.center.nimpush.PushPriorityController;
|
||||
import cn.axzo.msg.center.nimpush.device.PushDevice;
|
||||
import cn.axzo.msg.center.nimpush.device.PushDeviceService;
|
||||
import cn.axzo.msg.center.nimpush.device.PushDeviceSnapshots;
|
||||
@ -53,8 +55,12 @@ public class TodoPushSenderNim implements ApplicationListener<NewTodoEvent> {
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(NewTodoEvent event) {
|
||||
List<PushTerminalEnum> pushTerminals = event
|
||||
.getTemplateModel().getTemplate().determinePushTerminals();
|
||||
MessageTemplateV3 template = event.getTemplateModel().getTemplate();
|
||||
if (!PushPriorityController.create(template).isPushViaTodo()) {
|
||||
log.info("Template is not pushable via todo. template={}", template);
|
||||
return;
|
||||
}
|
||||
List<PushTerminalEnum> pushTerminals = template.determinePushTerminals();
|
||||
List<AppTypeEnum> appTypes = terminalAppMapping.toImTypes(pushTerminals);
|
||||
if (CollectionUtils.isEmpty(appTypes)) return;
|
||||
ParsedModelV3 parsedModelV3 = parseModelForTodoPush(
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
package cn.axzo.msg.center.nimpush;
|
||||
|
||||
import cn.axzo.msg.center.domain.entity.MessageTemplateV3;
|
||||
import cn.axzo.msg.center.service.enums.MessageChannel;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class PushPriorityController {
|
||||
|
||||
private final MessageTemplateV3 template;
|
||||
|
||||
public static PushPriorityController create(MessageTemplateV3 template) {
|
||||
return new PushPriorityController(template);
|
||||
}
|
||||
|
||||
public boolean isPushViaTodo() {
|
||||
List<MessageChannel> channels = template.determineChannels();
|
||||
return channels.size() == 1 && channels.contains(MessageChannel.TODO);
|
||||
}
|
||||
|
||||
public boolean isPushViaIm() {
|
||||
List<MessageChannel> channels = template.determineChannels();
|
||||
return channels.contains(MessageChannel.IM);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user