feat:(REQ-3201) 定时任务更新模版中的appVersionChannel/监控卡片预设MQ
This commit is contained in:
parent
cda7854843
commit
cb2d40170f
@ -0,0 +1,79 @@
|
||||
package cn.axzo.msg.center.event.card;
|
||||
|
||||
import cn.axzo.framework.rocketmq.Event;
|
||||
import cn.axzo.framework.rocketmq.EventConsumer;
|
||||
import cn.axzo.framework.rocketmq.EventHandler;
|
||||
import cn.axzo.msg.center.api.mq.CardPresetButtonPressedMessage;
|
||||
import cn.axzo.msg.center.message.service.todo.TodoWithCardWrapper;
|
||||
import cn.axzo.msg.center.notices.common.constans.CommonConstants;
|
||||
import cn.axzo.msg.center.service.enums.MqMessageType;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author xudawei@axzo.cn
|
||||
* @date 2024/11/07
|
||||
* @desc 群聊创建MQ消费
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class CardChangeStateSyncTodoEventHandler implements EventHandler, InitializingBean {
|
||||
|
||||
@Autowired
|
||||
private EventConsumer eventConsumer;
|
||||
|
||||
@Autowired
|
||||
private TodoWithCardWrapper todoWithCardWrapper;
|
||||
|
||||
|
||||
@Override
|
||||
public void onEvent(Event event, EventConsumer.Context context) {
|
||||
if (!MqMessageType.CARD_PRESET_BUTTON_PRESSED.getEventName().equalsIgnoreCase(event.getEventCode().getName())) {
|
||||
return;
|
||||
}
|
||||
|
||||
log.info("CardChangeStateSyncTodoEventHandler-start - handle mq event, event={}", JSON.toJSONString(event));
|
||||
try {
|
||||
long start = System.currentTimeMillis();
|
||||
handleMqMessage(event);
|
||||
long end = System.currentTimeMillis();
|
||||
log.warn("CardChangeStateSyncTodoEventHandler-handle mq event, used={}ms, event={}", end - start, JSON.toJSONString(event));
|
||||
} catch (Exception e) {
|
||||
log.warn("CardChangeStateSyncTodoEventHandler-error - handle mq event, event={}", JSON.toJSONString(event), e);
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 业务逻辑
|
||||
*/
|
||||
private void handleMqMessage(Event event) {
|
||||
//解析数据
|
||||
CardPresetButtonPressedMessage payload = event.normalizedData(CardPresetButtonPressedMessage.class);
|
||||
if (Objects.isNull(payload)) {
|
||||
return;
|
||||
}
|
||||
if (Objects.isNull(payload.getCardInfo())) {
|
||||
return;
|
||||
}
|
||||
if (!CommonConstants.TODO_SYSN_CARD_APP_CODE.equalsIgnoreCase(payload.getCardInfo().getAppCode())) {
|
||||
return;
|
||||
}
|
||||
Long operatorId = StringUtils.hasText(event.getOperatorId()) ? Long.valueOf(event.getOperatorId()) : 0L;
|
||||
todoWithCardWrapper.fireTodoWhenPresetButtonPressedByCard(payload.getPresetButtonType(), payload.getCardInfo(), operatorId);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
Event.EventCode eventCode = new Event.EventCode(MqMessageType.CARD_PRESET_BUTTON_PRESSED.getEventModel(), MqMessageType.CARD_PRESET_BUTTON_PRESSED.getEventName());
|
||||
eventConsumer.registerHandler(eventCode, this);
|
||||
}
|
||||
}
|
||||
@ -7,6 +7,7 @@ import cn.axzo.msg.center.message.service.MessageTemplateNewService;
|
||||
import cn.axzo.msg.center.message.service.MessageTemplateV3Service;
|
||||
import cn.axzo.msg.center.message.service.RelationTemplateMapService;
|
||||
import cn.axzo.msg.center.message.service.impl.MessageTemplateV3SyncService;
|
||||
import cn.axzo.msg.center.message.xxl.UpdateTemplateV3ChannelStyleVersionJob;
|
||||
import cn.axzo.msg.center.service.template.client.MessageTemplateV3Client;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateSyncQueryRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3CreateRequest;
|
||||
@ -16,6 +17,7 @@ import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncResponse;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateStatusRequest;
|
||||
import cn.axzo.msg.center.service.template.request.TemplateV3UpdateChannelStyleJobRequest;
|
||||
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateV3ConfigStateResponse;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateV3DetailResponse;
|
||||
@ -51,6 +53,7 @@ public class MessageTemplateV3Controller implements MessageTemplateV3Client {
|
||||
private final RelationTemplateMapService relationTemplateMapService;
|
||||
private final MessageTemplateV3SyncService messageTemplateV3SyncService;
|
||||
private final MessageTemplateV3Service messageTemplateV3Service;
|
||||
private final UpdateTemplateV3ChannelStyleVersionJob updateTemplateV3ChannelStyleVersionJob;
|
||||
|
||||
@Override
|
||||
public CommonResponse<String> save(MessageTemplateV3CreateRequest request) {
|
||||
@ -130,4 +133,13 @@ public class MessageTemplateV3Controller implements MessageTemplateV3Client {
|
||||
public CommonResponse<List<MessageTemplateV3ConfigStateResponse>> configState() {
|
||||
return CommonResponse.success(MessageTemplateV3ConfigStateResponse.cardStateToResp());
|
||||
}
|
||||
|
||||
/**
|
||||
* 定时更新模版V3信息
|
||||
*/
|
||||
@Override
|
||||
public CommonResponse<Void> updateChannelStyleVersionJob(@RequestBody @Valid TemplateV3UpdateChannelStyleJobRequest request) throws Exception {
|
||||
updateTemplateV3ChannelStyleVersionJob.execute(request.getParams());
|
||||
return CommonResponse.success();
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
@ -308,15 +309,15 @@ public class MessageTemplateV3SaveOrUpdateParam implements Serializable {
|
||||
.groups(request.getGroups())
|
||||
.pushData(request.getPushData())
|
||||
//推送终端/最低版本
|
||||
.appVersionConfigs(request.getAppVersionConfigs())
|
||||
.appVersionConfigs(CollectionUtils.isNotEmpty(request.getAppVersionConfigs()) ? request.getAppVersionConfigs() : Lists.newArrayList())
|
||||
//消息通道,IM/代办
|
||||
.channels(request.getChannels())
|
||||
.channels(CollectionUtils.isNotEmpty(request.getChannels()) ? request.getChannels() : Lists.newArrayList())
|
||||
//卡片样式编码
|
||||
.cardStyleCode(request.getCardStyleCode())
|
||||
//卡片样式扩展字段
|
||||
.cardExtFields(request.getCardExtFields())
|
||||
.cardExtFields(CollectionUtils.isNotEmpty(request.getCardExtFields()) ? request.getCardExtFields() : Lists.newArrayList())
|
||||
//配置状态戳
|
||||
.stateImageConfigs(request.getStateImageConfigs())
|
||||
.stateImageConfigs(CollectionUtils.isNotEmpty(request.getStateImageConfigs()) ? request.getStateImageConfigs() : Lists.newArrayList())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@ -403,15 +403,15 @@ public class MessageTemplateV3ServiceImpl implements MessageTemplateV3Service {
|
||||
.set(Objects.nonNull(pushData), MessageTemplateV3::getPushData,
|
||||
pushData == null ? null : pushData.toJSONString())
|
||||
//推送终端/最低版本
|
||||
.set(CollectionUtils.isNotEmpty(param.getAppVersionConfigs()), MessageTemplateV3::getAppVersionConfigs, JSON.toJSONString(param.getAppVersionConfigs()))
|
||||
.set(MessageTemplateV3::getAppVersionConfigs, JSON.toJSONString(param.getAppVersionConfigs()))
|
||||
//消息通道:IM/待办
|
||||
.set(CollectionUtils.isNotEmpty(param.getChannels()), MessageTemplateV3::getChannels, JSON.toJSONString(param.getChannels()))
|
||||
.set( MessageTemplateV3::getChannels, JSON.toJSONString(param.getChannels()))
|
||||
//卡片样式编码
|
||||
.set(StringUtils.isNotBlank(param.getCardStyleCode()), MessageTemplateV3::getCardStyleCode, param.getCardStyleCode())
|
||||
//卡片样式扩展字段
|
||||
.set(CollectionUtils.isNotEmpty(param.getCardExtFields()), MessageTemplateV3::getCardExtFields, JSON.toJSONString(param.getCardExtFields()))
|
||||
.set( MessageTemplateV3::getCardExtFields, JSON.toJSONString(param.getCardExtFields()))
|
||||
//配置状态戳
|
||||
.set(CollectionUtils.isNotEmpty(param.getStateImageConfigs()), MessageTemplateV3::getStateImageConfigs, JSON.toJSONString(param.getStateImageConfigs()))
|
||||
.set( MessageTemplateV3::getStateImageConfigs, JSON.toJSONString(param.getStateImageConfigs()))
|
||||
.update();
|
||||
BizAssertions.assertTrue(updated, "模版不存在:", param.getTemplateCode());
|
||||
}
|
||||
|
||||
@ -1,12 +1,20 @@
|
||||
package cn.axzo.msg.center.message.service.todo;
|
||||
|
||||
import cn.axzo.msg.center.api.mq.CardInfo;
|
||||
import cn.axzo.msg.center.dal.TodoDao;
|
||||
import cn.axzo.msg.center.domain.entity.Todo;
|
||||
import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam;
|
||||
import cn.axzo.msg.center.message.service.card.CardManager;
|
||||
import cn.axzo.msg.center.message.service.todo.manage.TodoLogger;
|
||||
import cn.axzo.msg.center.message.service.todo.manage.TodoManager;
|
||||
import cn.axzo.msg.center.message.service.todo.manage.TodoRequestContext;
|
||||
import cn.axzo.msg.center.notices.common.constans.CommonConstants;
|
||||
import cn.axzo.msg.center.notices.common.constans.CommonConstants;
|
||||
import cn.axzo.msg.center.service.dto.PeerPerson;
|
||||
import cn.axzo.msg.center.service.dto.PersonDTO;
|
||||
import cn.axzo.msg.center.service.enums.CardBizState;
|
||||
import cn.axzo.msg.center.service.enums.CardState;
|
||||
import cn.axzo.msg.center.service.enums.PresetButtonType;
|
||||
import cn.axzo.msg.center.service.pending.request.CardSendRequest;
|
||||
import cn.axzo.msg.center.service.pending.request.CardStateInfo;
|
||||
import cn.axzo.msg.center.service.pending.request.CardUpdatePresetButtonRequest;
|
||||
@ -19,10 +27,10 @@ import com.google.common.collect.Sets;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -38,10 +46,60 @@ public class TodoWithCardWrapper {
|
||||
|
||||
private final CardManager cardManager;
|
||||
|
||||
private static final String APP_CODE = "msg-center";
|
||||
private final TodoManager todoManager;
|
||||
|
||||
private final TodoLogger todoLogger;
|
||||
|
||||
private final TodoDao todoDao;
|
||||
|
||||
/**
|
||||
* 卡片预设按钮,同步待办
|
||||
* 注:卡片预设同步待办状态
|
||||
* @param presetButtonType 预设类型
|
||||
* @param cardInfo 卡片
|
||||
*/
|
||||
public void fireTodoWhenPresetButtonPressedByCard(PresetButtonType presetButtonType, CardInfo cardInfo, Long operatorId) {
|
||||
if (Objects.isNull(presetButtonType) || Objects.isNull(cardInfo)) {
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isBlank(cardInfo.getTemplateCode()) || StringUtils.isBlank(cardInfo.getBizCode())) {
|
||||
return;
|
||||
}
|
||||
log.info("TodoWithCardWrapper#fireTodoWhenPresetButtonPressedByCard start,presetButtonType:{},cardInfo:{}", presetButtonType, JSON.toJSONString(cardInfo));
|
||||
try {
|
||||
//1 查询待办(Todo对象),根据templateCode/bizCode/subBizCode/receiverPresonId/receiverOuId/receiverWorkspaceId 理论上只能查询一条[待办]记录
|
||||
List<Todo> todoList = todoDao.findByCondition(cardInfo.getTemplateCode(), cardInfo.getBizCode(), cardInfo.getSubBizCode(), cardInfo.getReceiverPersonId(), cardInfo.getReceiverOuId(), cardInfo.getReceiverWorkspaceId());
|
||||
if (CollectionUtils.isEmpty(todoList)) {
|
||||
return;
|
||||
}
|
||||
//2 同步待办预设状态,
|
||||
for (Todo todo : todoList) {
|
||||
PresetButtonPressedRequest presetButtonPressedRequest = this.buildPresetButtonPressedRequest(todo.getIdentityCode(), presetButtonType, operatorId);
|
||||
this.todoManager.firePresetButtonPressed( presetButtonPressedRequest, false);
|
||||
}
|
||||
TodoRequestContext ctx = TodoRequestContext.create("cardPresetTodo", cardInfo);
|
||||
ctx.addLogContent("presetButtonType", presetButtonType);
|
||||
ctx.addLogContent("operatorId", operatorId);
|
||||
todoLogger.logTodosUpdated(ctx, todoList);
|
||||
} catch (Exception e) {
|
||||
log.warn("TodoWithCardWrapper#fireTodoWhenPresetButtonPressedByCard exception,presetButtonType:{},cardInfo:{}", presetButtonType, JSON.toJSONString(cardInfo),e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建预设按钮对象
|
||||
*/
|
||||
private PresetButtonPressedRequest buildPresetButtonPressedRequest(String identityCode, PresetButtonType presetButtonType, Long operatorId) {
|
||||
return PresetButtonPressedRequest.builder()
|
||||
.identityCode(identityCode)
|
||||
.presetButtonType(presetButtonType)
|
||||
.operatorId(operatorId)
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击预设按钮-同步卡片
|
||||
* 注:待办预设同步卡片状态
|
||||
*/
|
||||
public void fireCardWhenPresetButtonPressedByTodo(PresetButtonPressedRequest request, Todo todo, boolean isSyncCard) {
|
||||
//是否同步卡片信息,true:同步;false:不同步
|
||||
@ -64,7 +122,7 @@ public class TodoWithCardWrapper {
|
||||
*/
|
||||
private CardUpdatePresetButtonRequest buildCardUpdatePresetButtonRequest(PresetButtonPressedRequest request, Todo todo) {
|
||||
CardUpdatePresetButtonRequest cardRequest = new CardUpdatePresetButtonRequest();
|
||||
cardRequest.setAppCode(APP_CODE);
|
||||
cardRequest.setAppCode(CommonConstants.TODO_SYSN_CARD_APP_CODE);
|
||||
cardRequest.setTemplateCode(todo.getTemplateCode());
|
||||
cardRequest.setBizCode(todo.getBizCode());
|
||||
cardRequest.setSubBizCode(todo.getSubBizCode());
|
||||
@ -81,13 +139,15 @@ public class TodoWithCardWrapper {
|
||||
/**
|
||||
* 发送卡片信息
|
||||
*/
|
||||
public void send(PendingMessagePushParam param) {
|
||||
public void send(PendingMessagePushParam param,List<Todo> todos) {
|
||||
log.info("TodoWithCardWrapper#send start,param:{}", JSON.toJSONString(param));
|
||||
try {
|
||||
//1 构建对象
|
||||
CardSendRequest cardSendRequest = this.buildCardSendRequest(param);
|
||||
//2 发送
|
||||
cardManager.send(cardSendRequest);
|
||||
TodoRequestContext ctx = TodoRequestContext.create("todoSyncCardSend", param);
|
||||
todoLogger.logTodosUpdated(ctx, todos);
|
||||
} catch (Exception e) {
|
||||
log.warn("TodoWithCardWrapper#send,param:{}", JSON.toJSONString(param), e);
|
||||
}
|
||||
@ -127,42 +187,41 @@ public class TodoWithCardWrapper {
|
||||
*/
|
||||
private void cardUpdateStateByTodoList(List<Todo> todoList, CardBizState bizState, CardState cardState) {
|
||||
log.info("TodoWithCardWrapper#cardUpdateStateByTodoList start,todoList:{},bizState:{},cardState:{}", JSON.toJSONString(todoList), bizState, cardState);
|
||||
if (CollectionUtils.isEmpty(todoList)) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
//1 构建对象
|
||||
List<CardUpdateStateRequest> list = this.buildCardStateByTodoList(todoList,bizState, cardState);
|
||||
for (CardUpdateStateRequest request : list) {
|
||||
for (Todo todo : todoList) {
|
||||
//1 构建对象
|
||||
CardUpdateStateRequest updateStateRequest = this.buildCardUpdateStateRequest(todo, bizState, cardState);
|
||||
//2 更新状态
|
||||
cardManager.updateState(request);
|
||||
cardManager.updateState(updateStateRequest);
|
||||
}
|
||||
TodoRequestContext ctx = TodoRequestContext.create("todoSyncCardState", todoList);
|
||||
ctx.addLogContent("bizState", bizState);
|
||||
ctx.addLogContent("cardState", cardState);
|
||||
todoLogger.logTodosUpdated(ctx, todoList);
|
||||
} catch (Exception e) {
|
||||
log.warn("TodoWithCardWrapper#cardCompleteState,todoList:{}", JSON.toJSONString(todoList), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建卡片完成状态
|
||||
* 构建卡片状态更新对象
|
||||
*/
|
||||
private List<CardUpdateStateRequest> buildCardStateByTodoList(List<Todo> todoList, CardBizState bizState, CardState cardState) {
|
||||
if (CollectionUtils.isNotEmpty(todoList)) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
List<CardUpdateStateRequest> list = Lists.newArrayList();
|
||||
for (Todo todo : todoList) {
|
||||
CardUpdateStateRequest updateStateRequest = new CardUpdateStateRequest();
|
||||
private CardUpdateStateRequest buildCardUpdateStateRequest(Todo todo, CardBizState bizState, CardState cardState) {
|
||||
CardUpdateStateRequest updateStateRequest = new CardUpdateStateRequest();
|
||||
|
||||
CardStateInfo cardStateInfo
|
||||
= CardStateInfo.create(cardState, bizState);
|
||||
updateStateRequest.setStateInfo(cardStateInfo);
|
||||
CardStateInfo cardStateInfo
|
||||
= CardStateInfo.create(bizState, cardState);
|
||||
updateStateRequest.setStateInfo(cardStateInfo);
|
||||
|
||||
updateStateRequest.setAppCode(APP_CODE);
|
||||
updateStateRequest.setTemplateCode(todo.getTemplateCode());
|
||||
updateStateRequest.setBizCode(todo.getBizCode());
|
||||
updateStateRequest.setSubBizCode(todo.getSubBizCode());
|
||||
updateStateRequest.setReceivers(Sets.newHashSet(PeerPerson.newPeerPerson(todo.getExecutorPersonId(), todo.getOuId(), todo.getReceiverWorkspaceId())));//TODO
|
||||
|
||||
list.add(updateStateRequest);
|
||||
}
|
||||
return list;
|
||||
updateStateRequest.setAppCode(CommonConstants.TODO_SYSN_CARD_APP_CODE);
|
||||
updateStateRequest.setTemplateCode(todo.getTemplateCode());
|
||||
updateStateRequest.setBizCode(todo.getBizCode());
|
||||
updateStateRequest.setSubBizCode(todo.getSubBizCode());
|
||||
updateStateRequest.setReceivers(Sets.newHashSet(PeerPerson.newPeerPerson(todo.getExecutorPersonId(), todo.getOuId(), todo.getReceiverWorkspaceId())));//TODO
|
||||
return updateStateRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -170,7 +229,7 @@ public class TodoWithCardWrapper {
|
||||
*/
|
||||
private CardSendRequest buildCardSendRequest(PendingMessagePushParam param) {
|
||||
CardSendRequest sendRequest = new CardSendRequest();
|
||||
sendRequest.setAppCode(APP_CODE);
|
||||
sendRequest.setAppCode(CommonConstants.TODO_SYSN_CARD_APP_CODE);
|
||||
sendRequest.setTemplateCode(param.getTemplateCode());
|
||||
sendRequest.setBizCode(param.getBizCode());
|
||||
sendRequest.setSubBizCode(param.getSubBizCode());
|
||||
|
||||
@ -23,7 +23,7 @@ import java.util.List;
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
class TodoLogger {
|
||||
public class TodoLogger {
|
||||
|
||||
private final TodoLogDao todoLogDao;
|
||||
private final TodoBusinessDao todoBusinessDao;
|
||||
@ -59,7 +59,7 @@ class TodoLogger {
|
||||
logTodosUpdated(ctx, Collections.singletonList(todo));
|
||||
}
|
||||
|
||||
void logTodosUpdated(TodoRequestContext ctx, List<Todo> todos) {
|
||||
public void logTodosUpdated(TodoRequestContext ctx, List<Todo> todos) {
|
||||
if (CollectionUtils.isEmpty(todos))
|
||||
return;
|
||||
TodoBusinesses businesses = todoBusinessDao.getBusinesses(todos);
|
||||
|
||||
@ -186,7 +186,7 @@ public class TodoManager {
|
||||
todoLogger.logBusinessUpdated(ctx, business);
|
||||
todoLogger.logTodosUpdated(ctx, todos);
|
||||
applicationContext.publishEvent(new NewTodoEvent(this, templateModel, todos));
|
||||
todoWithCardWrapper.send(request);
|
||||
todoWithCardWrapper.send(request, todos);
|
||||
|
||||
return todos.stream()
|
||||
.map(todo -> new PushPendingMessageDTO(
|
||||
|
||||
@ -39,15 +39,15 @@ public class UpdateTemplateV3ChannelStyleVersionJob extends IJobHandler {
|
||||
/**
|
||||
* 卡片样式编码
|
||||
*/
|
||||
private final static String cardStyleCode = "";//TODO 待产品提供
|
||||
private final static String cardStyleCode = "cardStyleCodeTest-1216-1";//TODO 待产品提供
|
||||
/**
|
||||
* 卡片样式扩展字段
|
||||
*/
|
||||
private final static List<CardElementConfig> cardExtFields = JSON.parseArray("[{\"type\":\"\",\"name\":\"\",\"code\":\"\",\"value\":\"\"}]", CardElementConfig.class);
|
||||
private final static List<CardElementConfig> cardExtFields = JSON.parseArray("[{\"type\":\"ICON\",\"name\":\"name1216-1\",\"code\":\"code1216-1\",\"value\":\"value1216-1\"}]", CardElementConfig.class);
|
||||
/**
|
||||
* app最低版本控制
|
||||
*/
|
||||
private final static List<AppVersionConfig> appVersionConfigs = JSON.parseArray("[{\"appType\":\"\",\"minVersion\":\"\"}]", AppVersionConfig.class);
|
||||
private final static List<AppVersionConfig> appVersionConfigs = JSON.parseArray("[{\"appType\":\"CMP\",\"minVersion\":\"6.6.0\"}]", AppVersionConfig.class);
|
||||
|
||||
@XxlJob("updateTemplateV3ChannelStyleVersionJob")
|
||||
@Override
|
||||
@ -75,11 +75,12 @@ public class UpdateTemplateV3ChannelStyleVersionJob extends IJobHandler {
|
||||
Supplier<List<MessageTemplateV3>> cursor = templateV3sCursor();
|
||||
int count = 0;
|
||||
for (List<MessageTemplateV3> templateV3List = cursor.get(); !templateV3List.isEmpty(); templateV3List = cursor.get()) {
|
||||
XxlJobLogger.log("update MessageTemplateV3 info, count: {}", count += templateV3List.size());
|
||||
XxlJobLogger.log("update MessageTemplateV3 info, count: {},v3List:{}", count += templateV3List.size(), JSON.toJSONString(templateV3List));
|
||||
|
||||
//更新逻辑
|
||||
this.updateTemplateV3ChannelStyleVersion(templateV3List, channels, cardStyleCode, cardExtFields, appVersionConfigs);
|
||||
}
|
||||
XxlJobLogger.log("doUpdateAll end");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -106,18 +107,23 @@ public class UpdateTemplateV3ChannelStyleVersionJob extends IJobHandler {
|
||||
}
|
||||
for (MessageTemplateV3 templateV3 : templateV3List) {
|
||||
|
||||
//
|
||||
List<MessageChannel> updateChannels = !CollectionUtils.isEmpty(templateV3.getChannels()) ? templateV3.getChannels() : channels;
|
||||
String updateCardStyleCode = StringUtils.hasText(templateV3.getCardStyleCode()) ? templateV3.getCardStyleCode() : cardStyleCode;
|
||||
List<CardElementConfig> updateCardExtFields = !CollectionUtils.isEmpty(templateV3.getCardExtFields()) ? templateV3.getCardExtFields() : cardExtFields;
|
||||
List<AppVersionConfig> updateAppVersionConfigs = !CollectionUtils.isEmpty(templateV3.getAppVersionConfigs()) ? templateV3.getAppVersionConfigs() : appVersionConfigs;
|
||||
//DB中有值,则以DB中的值为准
|
||||
// List<MessageChannel> updateChannels = !CollectionUtils.isEmpty(templateV3.getChannels()) ? templateV3.getChannels() : channels;
|
||||
// String updateCardStyleCode = StringUtils.hasText(templateV3.getCardStyleCode()) ? templateV3.getCardStyleCode() : cardStyleCode;
|
||||
// List<CardElementConfig> updateCardExtFields = !CollectionUtils.isEmpty(templateV3.getCardExtFields()) ? templateV3.getCardExtFields() : cardExtFields;
|
||||
// List<AppVersionConfig> updateAppVersionConfigs = !CollectionUtils.isEmpty(templateV3.getAppVersionConfigs()) ? templateV3.getAppVersionConfigs() : appVersionConfigs;
|
||||
|
||||
//无论DB中是否有值,则直接更新
|
||||
List<MessageChannel> updateChannels = channels;
|
||||
String updateCardStyleCode = cardStyleCode;
|
||||
List<CardElementConfig> updateCardExtFields = cardExtFields;
|
||||
List<AppVersionConfig> updateAppVersionConfigs = appVersionConfigs;
|
||||
|
||||
messageTemplateV3Dao.lambdaUpdate().eq(MessageTemplateV3::getId, templateV3.getId())
|
||||
.set(!CollectionUtils.isEmpty(updateChannels), MessageTemplateV3::getChannels, updateChannels)
|
||||
.set(!CollectionUtils.isEmpty(updateChannels), MessageTemplateV3::getChannels, JSON.toJSONString(updateChannels))
|
||||
.set(StringUtils.hasText(updateCardStyleCode), MessageTemplateV3::getCardStyleCode, updateCardStyleCode)
|
||||
.set(!CollectionUtils.isEmpty(updateCardExtFields), MessageTemplateV3::getCardExtFields, updateCardExtFields)
|
||||
.set(!CollectionUtils.isEmpty(updateAppVersionConfigs), MessageTemplateV3::getAppVersionConfigs, updateAppVersionConfigs).update();
|
||||
.set(!CollectionUtils.isEmpty(updateCardExtFields), MessageTemplateV3::getCardExtFields, JSON.toJSONString(updateCardExtFields))
|
||||
.set(!CollectionUtils.isEmpty(updateAppVersionConfigs), MessageTemplateV3::getAppVersionConfigs, JSON.toJSONString(updateAppVersionConfigs)).update();
|
||||
}
|
||||
}
|
||||
|
||||
@ -129,7 +135,7 @@ public class UpdateTemplateV3ChannelStyleVersionJob extends IJobHandler {
|
||||
.eq(MessageTemplateV3::getIsDelete, TableIsDeleteEnum.NORMAL.value)
|
||||
.gt(MessageTemplateV3::getId, maxId.get())
|
||||
.orderByAsc(MessageTemplateV3::getId)
|
||||
.last("LIMIT 200")
|
||||
.last("LIMIT 20")
|
||||
.list();
|
||||
if (!accounts.isEmpty()) {
|
||||
maxId.set(accounts.get(accounts.size() - 1).getId());
|
||||
|
||||
@ -11,6 +11,7 @@ import cn.axzo.framework.rocketmq.RocketMQEventProducer.RocketMQMessageMeta;
|
||||
import cn.axzo.framework.rocketmq.utils.TraceUtils;
|
||||
import cn.axzo.msg.center.api.mq.MqMessage;
|
||||
import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -139,4 +140,26 @@ public class RocketMQConfig {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 卡片变更,同步状态至待办TODO
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RocketMQMessageListener(topic = "topic_msg_center_${spring.profiles.active}",
|
||||
consumerGroup = "GID_topic_card_change_state_sync_todo_${spring.application.name}_${spring.profiles.active}",
|
||||
consumeMode = ConsumeMode.ORDERLY,
|
||||
nameServer = "${rocketmq.name-server}"
|
||||
)
|
||||
public static class CardChangeStateSyncTodoListener extends BaseListener implements RocketMQListener<MessageExt> {
|
||||
|
||||
@Autowired
|
||||
private EventConsumer eventConsumer;
|
||||
|
||||
@Override
|
||||
public void onMessage(MessageExt message) {
|
||||
log.info("CardChangeStateSyncTodoListener onMessage,message:{}", JSON.toJSONString(message));
|
||||
super.onEvent(message, eventConsumer);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -8,6 +8,7 @@ import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3SyncResponse;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateRequest;
|
||||
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateStatusRequest;
|
||||
import cn.axzo.msg.center.service.template.request.TemplateV3UpdateChannelStyleJobRequest;
|
||||
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateV3ConfigStateResponse;
|
||||
import cn.axzo.msg.center.service.template.response.MessageTemplateV3DetailResponse;
|
||||
@ -118,4 +119,10 @@ public interface MessageTemplateV3Client {
|
||||
@PostMapping(value = "/message/template/config/state", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<List<MessageTemplateV3ConfigStateResponse>> configState();
|
||||
|
||||
/**
|
||||
* 定时更新模版V3信息
|
||||
*/
|
||||
@PostMapping(value = "/message/template/v3/update/channel-style-version-job", produces = {MediaType.APPLICATION_JSON_VALUE})
|
||||
CommonResponse<Void> updateChannelStyleVersionJob(@RequestBody @Valid TemplateV3UpdateChannelStyleJobRequest request) throws Exception;
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
package cn.axzo.msg.center.service.template.request;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author xudawei@axzo.cn
|
||||
* @date 2024/12/16
|
||||
* @description 消息模版创建
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class TemplateV3UpdateChannelStyleJobRequest implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -2894419272913799317L;
|
||||
|
||||
private String params;
|
||||
|
||||
}
|
||||
@ -19,6 +19,7 @@ import javax.annotation.Nullable;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
@ -165,4 +166,15 @@ public class TodoDao extends ServiceImpl<TodoMapper, Todo> {
|
||||
.set(Todo::getHideUntil, expireTime)
|
||||
.update();
|
||||
}
|
||||
|
||||
public List<Todo> findByCondition(String templateCode, String bizCode, String subBizCode, Long executorPersonId, Long ouId, Long workspaceId) {
|
||||
return lambdaQuery()
|
||||
.eq(StringUtils.isNotBlank(templateCode), Todo::getTemplateCode, templateCode)
|
||||
.eq(StringUtils.isNotBlank(bizCode), Todo::getBizCode, bizCode)
|
||||
.eq(StringUtils.isNotBlank(subBizCode), Todo::getSubBizCode, subBizCode)
|
||||
.eq(Objects.nonNull(executorPersonId), Todo::getExecutorPersonId, executorPersonId)
|
||||
.eq(Objects.nonNull(ouId), Todo::getOuId, ouId)
|
||||
.eq(Objects.nonNull(workspaceId), Todo::getReceiverWorkspaceId, workspaceId)
|
||||
.list();
|
||||
}
|
||||
}
|
||||
@ -38,6 +38,11 @@ public abstract class CommonConstants {
|
||||
/** 指定渠道 */
|
||||
public static final String ASSIGN_CHANNEL = "assign_channel";
|
||||
|
||||
/**
|
||||
* 待办同步卡片的APP_CODE
|
||||
*/
|
||||
public static final String TODO_SYSN_CARD_APP_CODE = "msg-center-todo";
|
||||
|
||||
/**
|
||||
* 消息模板变量表达式
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user