feat:(REQ-3201) 代办-发送卡片#优化卡片样式详情

This commit is contained in:
xudawei 2024-12-12 17:37:27 +08:00
parent b27928f8e2
commit b164d147b3
5 changed files with 94 additions and 9 deletions

View File

@ -169,6 +169,9 @@ public class MessageTemplateV3SaveOrUpdateParam implements Serializable {
*/
private String updatePersonName;
/**
* 校验
*/
public void checkCreate() {
//1 流程待办暂不能使用IM通道
switch (this.getMsgCategory()) {

View File

@ -0,0 +1,74 @@
package cn.axzo.msg.center.message.service.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.TodoRequestContext;
import cn.axzo.msg.center.service.dto.PeerPerson;
import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.pending.request.CardSendRequest;
import cn.axzo.msg.center.service.pending.request.CardStateInfo;
import com.alibaba.excel.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author xudawei@axzo.cn
* @date 2024/12/12
* @desc 待办与卡片关联包装
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class TodoWithCardWrapper {
private final CardManager cardManager;
public void send(TodoRequestContext ctx, PendingMessagePushParam req) {
//1 构建对象
CardSendRequest cardSendRequest = this.buildCardSendRequest(ctx, req);
//2 发送
cardManager.send(cardSendRequest);
}
/**
* 构建对象
*/
private CardSendRequest buildCardSendRequest(TodoRequestContext ctx, PendingMessagePushParam req) {
CardSendRequest sendRequest = new CardSendRequest();
sendRequest.setAppCode("");//TODO
sendRequest.setTemplateCode(req.getTemplateCode());
sendRequest.setBizCode(req.getBizCode());
sendRequest.setSubBizCode(req.getSubBizCode());
sendRequest.setSender(PeerPerson.newPeerPerson(req.getPromoter().getId()
, req.getPromoterOuId()
, req.getPromoterWorkspaceId()));
sendRequest.setReceivers(this.buildReceivers(req.getExecutor(), req.getOuId(), req.getWorkspaceId()));
if (StringUtils.isNotBlank(req.getBizExtParams())) {
sendRequest.setBizParam(JSON.parseObject(req.getBizExtParams()));
}
if (StringUtils.isNotBlank(req.getRouterParams())) {
sendRequest.setRouterParam(JSON.parseObject(req.getRouterParams()));
}
sendRequest.setSubtitle("");//TODO
CardStateInfo cardStateInfo = new CardStateInfo();
sendRequest.setStateInfo(cardStateInfo);//TODO
return sendRequest;
}
private Set<PeerPerson> buildReceivers(List<PersonDTO> personDTOS, Long ouId, Long workspaceId) {
if (CollectionUtils.isNotEmpty(personDTOS)) {
return Sets.newHashSet();
}
return personDTOS.stream().map(item -> PeerPerson.newPeerPerson(item.getId(), ouId, workspaceId)).collect(Collectors.toSet());
}
}

View File

@ -18,6 +18,7 @@ import cn.axzo.msg.center.inside.notices.config.PendingMessageBizConfig;
import cn.axzo.msg.center.message.domain.dto.TemplateModelV3;
import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam;
import cn.axzo.msg.center.message.service.impl.v3.ModelV3Service;
import cn.axzo.msg.center.message.service.todo.TodoWithCardWrapper;
import cn.axzo.msg.center.message.service.todo.manage.broadcast.TodoBroadcaster;
import cn.axzo.msg.center.message.service.todo.manage.broadcast.TodoMqBroadcaster;
import cn.axzo.msg.center.message.service.todo.manage.event.HandoverEvent;
@ -99,6 +100,7 @@ public class TodoManager {
private final ApplicationContext applicationContext;
private final TodoBroadcaster todoBroadcaster;
private final TransactionTemplate transactionTemplate;
private final TodoWithCardWrapper todoWithCardWrapper;
public List<PushPendingMessageDTO> send(PendingMessagePushParam request) {
TodoRequestContext ctx = TodoRequestContext.create("send", request.normalize());
@ -184,6 +186,9 @@ public class TodoManager {
todoLogger.logBusinessUpdated(ctx, business);
todoLogger.logTodosUpdated(ctx, todos);
applicationContext.publishEvent(new NewTodoEvent(this, templateModel, todos));
// todoWithCardWrapper.send(ctx, request);
return todos.stream()
.map(todo -> new PushPendingMessageDTO(
todo.getId(), todo.getIdentityCode(),

View File

@ -27,6 +27,14 @@ public class PeerPerson {
return person;
}
public static PeerPerson newPeerPerson(Long personId, Long ouId, Long workspaceId) {
PeerPerson person = new PeerPerson();
person.setPersonId(personId);
person.setOuId(ouId);
person.setWorkspaceId(workspaceId);
return person;
}
/**
* 自然人id
*/

View File

@ -6,17 +6,12 @@ import cn.axzo.msg.center.service.card.request.CardStylePageRequest;
import cn.axzo.msg.center.service.card.request.CardStyleUpdateRequest;
import cn.axzo.msg.center.service.card.response.CardStyleDetailResponse;
import cn.axzo.msg.center.service.card.response.CardStylePageResponse;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3CreateRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3DeleteRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3PageRequest;
import cn.axzo.msg.center.service.template.request.MessageTemplateV3UpdateRequest;
import cn.axzo.msg.center.service.template.response.MessageTemplateV3DetailResponse;
import cn.axzo.msg.center.service.template.response.MessageTemplateV3PageResponse;
import cn.azxo.framework.common.model.CommonResponse;
import cn.azxo.framework.common.model.Page;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@ -52,7 +47,7 @@ public interface CardStyleClient {
* 删除卡片样式
*/
@PostMapping(value = "/card/style/delete", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<Void> delete(CardStyleDeleteRequest request);
CommonResponse<Void> delete(@RequestBody @Valid CardStyleDeleteRequest request);
/**
* 消息模板详情
@ -60,7 +55,7 @@ public interface CardStyleClient {
* @param templateCode 消息模板编码
* @return 消息模板详情
*/
@PostMapping(value = "/card/style/detail", produces = {MediaType.APPLICATION_JSON_VALUE})
@GetMapping(value = "/card/style/detail", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<CardStyleDetailResponse> detail(@RequestParam("templateCode") String templateCode);
/**
@ -70,7 +65,7 @@ public interface CardStyleClient {
* @return 模板列表
*/
@PostMapping(value = "/card/style/page", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<Page<CardStylePageResponse>> page(CardStylePageRequest request);
CommonResponse<Page<CardStylePageResponse>> page(@RequestBody @Valid CardStylePageRequest request);
}