feat(REQ-1309): 代办详情&完成&撤回等功能的实现

背景:
  https://jira.axzo.cn/browse/REQ-1309?goToView=1

修改:
  代办详情&完成&撤回等功能的实现

影响:
  无
This commit is contained in:
luofu 2023-10-05 20:24:32 +08:00
parent d30031477a
commit 47d369b767
18 changed files with 433 additions and 74 deletions

View File

@ -1,5 +1,9 @@
package cn.axzo.msg.center.message.controller;
import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO;
import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO;
import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam;
import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam;
import cn.axzo.msg.center.message.service.PendingMessageNewService;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.client.PendingMessageClient;
@ -14,6 +18,8 @@ import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @description
@ -30,31 +36,41 @@ public class PendingMessageNewController implements PendingMessageClient {
@Override
public CommonResponse<List<MessageGroupNodeResponse>> groupStatistic(MessageGroupNodeStatisticRequest request) {
return null;
List<MessageGroupNodeDTO> groupNodes = pendingMessageNewService
.groupStatistic(MessageGroupNodeStatisticParam.from(request));
return CommonResponse.success(groupNodes.stream()
.map(MessageGroupNodeDTO::toResponse)
.collect(Collectors.toList())
);
}
@Override
public CommonResponse<Page<PendingMessageResponse>> pageQuery(PendingMessagePageRequest request) {
return null;
return CommonResponse.success(pendingMessageNewService.pageQuery(request));
}
@Override
public CommonResponse<PendingMessageResponse> detail(String msgIdentityCode, TerminalTypeEnum terminalType) {
return null;
PendingMessageDTO pendingMessage = pendingMessageNewService.detail(msgIdentityCode, terminalType)
.orElse(null);
if (Objects.isNull(pendingMessage)) {
return CommonResponse.success();
}
return CommonResponse.success(pendingMessage.toResponse());
}
@Override
public CommonResponse<String> push(PendingMessagePushRequest request) {
return CommonResponse.success(pendingMessageNewService.push(request));
return CommonResponse.success(pendingMessageNewService.push(PendingMessagePushParam.from(request)));
}
@Override
public CommonResponse<Boolean> complete(String msgIdentityCode) {
return null;
return CommonResponse.success(pendingMessageNewService.complete(msgIdentityCode));
}
@Override
public CommonResponse<Boolean> revoke(String msgIdentityCode) {
return null;
return CommonResponse.success(pendingMessageNewService.revoke(msgIdentityCode));
}
}

View File

@ -0,0 +1,81 @@
package cn.axzo.msg.center.message.domain.dto;
import cn.axzo.msg.center.domain.entity.MessageBaseTemplate;
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
/**
* @description
*
* @author cold_blade
* @date 2023/10/5
* @version 1.0
*/
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MessageTemplateDTO implements Serializable {
private static final long serialVersionUID = -2658385672181452557L;
/**
* 模板名称
*/
private String name;
/**
* 系统自动生成的模板code
*/
private String code;
/**
* 模板标题
*/
private String title;
/**
* 模板类容
*/
private String content;
/**
* 卡片信息,json字串
*/
private String cardContent;
/**
* 所属消息类型
*/
private MessageCategoryEnum msgCategory;
/**
* 模板icon
*/
private String icon;
/**
* 模板路由信息
*/
private List<RawMessageRouterDTO> routers;
public static MessageTemplateDTO from(MessageBaseTemplate baseTemplate, List<RawMessageRouterDTO> routers) {
return MessageTemplateDTO.builder()
.name(baseTemplate.getName())
.code(baseTemplate.getCode())
.title(baseTemplate.getTitle())
.content(baseTemplate.getContent())
.cardContent(baseTemplate.getCardContent())
.msgCategory(baseTemplate.getMsgCategory())
.icon(baseTemplate.getIcon())
.routers(routers)
.build();
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}

View File

@ -4,9 +4,8 @@ import cn.axzo.msg.center.domain.entity.PendingMessageRecord;
import cn.axzo.msg.center.service.dto.IdentityDTO;
import cn.axzo.msg.center.service.dto.MessageRouterDTO;
import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.utils.DateFormatUtil;
import cn.axzo.msg.center.utils.UUIDUtil;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
@ -16,6 +15,7 @@ import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Optional;
/**
* @description
@ -78,22 +78,6 @@ public class PendingMessageDTO implements Serializable {
*/
private MessageRouterDTO router;
public static PendingMessageDTO from(PendingMessagePushRequest request) {
// TODO: [cold_blade]
return PendingMessageDTO.builder()
.identityCode(UUIDUtil.uuidString())
.title("权限点发布申请")
.content("${creator}提交了${businessTypeName},请尽快处理。")
.promoter(request.getPromoter())
.executor(request.getExecutor())
.bizCode(request.getBizCode())
.subBizCode(request.getSubBizCode())
.bizDesc(request.getBizDesc())
.createTime(LocalDateTime.now())
.updateTime(LocalDateTime.now())
.build();
}
public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) {
// 代办发起者信息
PersonDTO promoter = PersonDTO.builder()
@ -125,6 +109,22 @@ public class PendingMessageDTO implements Serializable {
.build();
}
public PendingMessageResponse toResponse() {
return PendingMessageResponse.builder()
.identityCode(this.identityCode)
.title(this.title)
.content(this.content)
.promoter(Optional.ofNullable(this.promoter).map(PersonDTO::getIdentity).orElse(null))
.executor(Optional.ofNullable(this.executor).map(PersonDTO::getIdentity).orElse(null))
.bizCode(this.bizCode)
.subBizCode(this.subBizCode)
.bizDesc(this.bizDesc)
.createTimestamp(DateFormatUtil.toTimestamp(this.createTime))
.updateTimestamp(DateFormatUtil.toTimestamp(this.updateTime))
.router(this.router)
.build();
}
@Override
public String toString() {
return JSON.toJSONString(this);

View File

@ -12,7 +12,6 @@ import lombok.Setter;
import java.io.Serializable;
import java.util.Collection;
import java.util.Optional;
/**
* @description
@ -62,21 +61,18 @@ public class MessageGroupNodeStatisticParam implements Serializable {
*/
private String title;
public static Optional<MessageGroupNodeStatisticParam> from(MessageGroupNodeStatisticRequest request) {
return Optional.ofNullable(request)
.map(v -> {
MessageGroupNodeStatisticParam param = BeanConverter.convert(v, MessageGroupNodeStatisticParam.class);
IdentityDTO identity = IdentityDTO.builder()
.id(request.getIdentityId())
.type(request.getIdentityType())
.build();
PersonDTO person = PersonDTO.builder()
.id(request.getPersonId())
.identity(identity)
.build();
param.setOperator(person);
return param;
});
public static MessageGroupNodeStatisticParam from(MessageGroupNodeStatisticRequest request) {
MessageGroupNodeStatisticParam param = BeanConverter.convert(request, MessageGroupNodeStatisticParam.class);
IdentityDTO identity = IdentityDTO.builder()
.id(request.getIdentityId())
.type(request.getIdentityType())
.build();
PersonDTO person = PersonDTO.builder()
.id(request.getPersonId())
.identity(identity)
.build();
param.setOperator(person);
return param;
}
@Override

View File

@ -0,0 +1,85 @@
package cn.axzo.msg.center.message.domain.param;
import cn.axzo.core.utils.converter.BeanConverter;
import cn.axzo.msg.center.service.dto.PersonDTO;
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
/**
* @description
* @author cold_blade
* @date 2023/10/5
* @version 1.0
*/
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PendingMessagePushParam implements Serializable {
private static final long serialVersionUID = 6308469943450138452L;
/**
* 发起者
*/
private PersonDTO promoter;
/**
* 执行者
*/
private PersonDTO executor;
/**
* 模板编码
*/
private String templateCode;
/**
* 消息所属组织类型
*/
private OrganizationTypeEnum orgType;
/**
* 消息所属组织Id
*/
private Long orgId;
/**
* 消息所属组织名称
*/
private String orgName;
/**
* 业务类型
*/
private BizCategoryEnum bizCategory;
/**
* 关联业务主键
*/
private String bizCode;
/**
* 流程类代办的流程结点编码
*/
private String subBizCode;
/**
* 业务描述eg:流程结点描述
*/
private String bizDesc;
/**
* 路由参数json string
*/
private String routerParams;
public static PendingMessagePushParam from(PendingMessagePushRequest request) {
return BeanConverter.convert(request, PendingMessagePushParam.class);
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}

View File

@ -0,0 +1,21 @@
package cn.axzo.msg.center.message.service;
import java.util.List;
/**
* 消息模板分类管理
*
* @author cold_blade
* @date 2023/10/5
* @version 1.0
*/
public interface MessageTemplateGroupService {
/**
* 通过分组结点编码查询关联的模板编码列表
*
* @param groupNodeCode 分组结点编码
* @return 模板编码列表
*/
List<String> listMessageTemplateCodes(String groupNodeCode);
}

View File

@ -1,7 +1,10 @@
package cn.axzo.msg.center.message.service;
import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO;
import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam;
import java.util.Optional;
/**
* @description
* 消息模板管理
@ -17,4 +20,12 @@ public interface MessageTemplateNewService {
* @param param 模板内容参数
*/
void createTemplate(MessageTemplateCreateParam param);
/**
* 通过模板编码查询模板信息
*
* @param msgTemplateCode 模板编码
* @return 模板信息
*/
Optional<MessageTemplateDTO> queryByTemplateCode(String msgTemplateCode);
}

View File

@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.service;
import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO;
import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO;
import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam;
import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest;
@ -43,10 +44,10 @@ public interface PendingMessageNewService {
/**
* 发送代办
*
* @param request 代办核心参数
* @param param 代办核心参数
* @return 代办唯一标识
*/
String push(PendingMessagePushRequest request);
String push(PendingMessagePushParam param);
/**
* 完成代办

View File

@ -0,0 +1,40 @@
package cn.axzo.msg.center.message.service.impl;
import cn.axzo.msg.center.dal.MessageTemplateGroupDao;
import cn.axzo.msg.center.domain.entity.MessageTemplateGroup;
import cn.axzo.msg.center.message.service.MessageTemplateGroupService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author cold_blade
* @date 2023/10/5
* @version 1.0
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class MessageTemplateGroupServiceImpl implements MessageTemplateGroupService {
private final MessageTemplateGroupDao messageTemplateGroupDao;
@Override
public List<String> listMessageTemplateCodes(String groupNodeCode) {
if (StringUtils.isBlank(groupNodeCode)) {
log.info("groupNodeCode is blank.");
return Collections.emptyList();
}
return messageTemplateGroupDao.lambdaQuery()
.like(MessageTemplateGroup::getPath, groupNodeCode)
.eq(MessageTemplateGroup::getIsDelete, 0)
.list().stream()
.map(MessageTemplateGroup::getTemplateCode)
.collect(Collectors.toList());
}
}

View File

@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.service.impl;
import cn.axzo.core.utils.converter.BeanConverter;
import cn.axzo.msg.center.dal.MessageBaseTemplateDao;
import cn.axzo.msg.center.domain.entity.MessageBaseTemplate;
import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO;
import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO;
import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam;
import cn.axzo.msg.center.message.service.MessageTemplateNewService;
@ -10,10 +11,13 @@ import cn.axzo.msg.center.message.service.MessageTemplateRouterService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/**
@ -33,7 +37,7 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
@Override
public void createTemplate(MessageTemplateCreateParam param) {
// TODO: [cold_blade] 模板与分类的关系
// TODO: [cold_blade] [P2] 模板与分类的关系
messageBaseTemplateDao.save(convert(param));
if (CollectionUtils.isNotEmpty(param.getRouters())) {
List<RawMessageRouterDTO> routers = param.getRouters().stream()
@ -43,6 +47,24 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService
}
}
@Override
public Optional<MessageTemplateDTO> queryByTemplateCode(String msgTemplateCode) {
if (StringUtils.isBlank(msgTemplateCode)) {
log.info("msgTemplateCode is blank.");
return Optional.empty();
}
MessageBaseTemplate msgBaseTemplate = messageBaseTemplateDao.lambdaQuery()
.eq(MessageBaseTemplate::getCode, msgTemplateCode)
.eq(MessageBaseTemplate::getIsDelete, 0)
.one();
if (Objects.isNull(msgBaseTemplate)) {
log.info("not find the [{}] template.", msgTemplateCode);
return Optional.empty();
}
List<RawMessageRouterDTO> routers = messageTemplateRouterService.queryByTemplateCode(msgTemplateCode);
return Optional.of(MessageTemplateDTO.from(msgBaseTemplate, routers));
}
private MessageBaseTemplate convert(MessageTemplateCreateParam param) {
MessageBaseTemplate template = BeanConverter.convert(param, MessageBaseTemplate.class);
template.setName(param.getTemplateName());

View File

@ -26,7 +26,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterService {
private final MessageTemplateRouterDao messageTemplateRouterDAO;
private final MessageTemplateRouterDao messageTemplateRouterDao;
@Override
public List<RawMessageRouterDTO> queryByTemplateCode(String templateCode) {
@ -34,7 +34,7 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
log.warn("the template code is blank.");
return Collections.emptyList();
}
return messageTemplateRouterDAO.listByTemplateCode(templateCode).stream()
return messageTemplateRouterDao.listByTemplateCode(templateCode).stream()
.map(RawMessageRouterDTO::from)
.collect(Collectors.toList());
}
@ -47,6 +47,6 @@ public class MessageTemplateRouterServiceImpl implements MessageTemplateRouterSe
List<MessageTemplateRouter> messageTemplateRouters = routers.stream()
.map(RawMessageRouterDTO::toMessageTemplateRouter)
.collect(Collectors.toList());
messageTemplateRouterDAO.saveBatch(messageTemplateRouters);
messageTemplateRouterDao.saveBatch(messageTemplateRouters);
}
}

View File

@ -2,25 +2,34 @@ package cn.axzo.msg.center.message.service.impl;
import cn.axzo.core.utils.converter.BeanConverter;
import cn.axzo.msg.center.common.enums.TableIsDeleteEnum;
import cn.axzo.msg.center.common.exception.ServiceException;
import cn.axzo.msg.center.dal.MessageTemplateRouterDao;
import cn.axzo.msg.center.dal.PendingMessageRecordDao;
import cn.axzo.msg.center.domain.entity.PendingMessageRecord;
import cn.axzo.msg.center.message.domain.dto.MessageGroupNodeDTO;
import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO;
import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO;
import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO;
import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam;
import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam;
import cn.axzo.msg.center.message.service.MessageTemplateGroupService;
import cn.axzo.msg.center.message.service.MessageTemplateNewService;
import cn.axzo.msg.center.message.service.PendingMessageNewService;
import cn.axzo.msg.center.service.dto.MessageRouterDTO;
import cn.axzo.msg.center.service.dto.QueryOrderByDTO;
import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest;
import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.utils.MessageRouterUtil;
import cn.axzo.msg.center.utils.UUIDUtil;
import cn.azxo.framework.common.model.Page;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@ -44,6 +53,8 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
private final PendingMessageRecordDao pendingMessageRecordDao;
private final MessageTemplateRouterDao messageTemplateRouterDao;
private final MessageTemplateNewService messageTemplateNewService;
private final MessageTemplateGroupService messageTemplateGroupService;
@Override
public List<MessageGroupNodeDTO> groupStatistic(MessageGroupNodeStatisticParam param) {
@ -53,8 +64,47 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
@Override
public Page<PendingMessageResponse> pageQuery(PendingMessagePageRequest request) {
// TODO: [cold_blade] 消息分页查询
return null;
LambdaQueryChainWrapper<PendingMessageRecord> query = pendingMessageRecordDao.lambdaQuery();
if (Objects.equals(request.getRoleCategory(), PendingMessageRoleCategoryEnum.PROMOTER)) {
// 客户端指定查询代办发起者的代办消息
query.eq(PendingMessageRecord::getPromoterPersonId, request.getPersonId());
if (Objects.equals(request.getWithIdentify(), true)) {
// 客户端查询消息时需要隔离身份
query.eq(Objects.nonNull(request.getIdentityId()), PendingMessageRecord::getPromoterId,
request.getIdentityId());
query.eq(Objects.nonNull(request.getIdentityType()), PendingMessageRecord::getPromoterType,
request.getIdentityType());
}
} else {
// 客户端未指定代办角色默认查询代办执行者的代办消息
query.eq(PendingMessageRecord::getExecutorPersonId, request.getPersonId());
if (Objects.equals(request.getWithIdentify(), true)) {
// 客户端查询消息时需要隔离身份
query.eq(Objects.nonNull(request.getIdentityId()), PendingMessageRecord::getExecutorId,
request.getIdentityId());
query.eq(Objects.nonNull(request.getIdentityType()), PendingMessageRecord::getExecutorType,
request.getIdentityType());
}
}
query.eq(Objects.nonNull(request.getMsgState()), PendingMessageRecord::getState, request.getMsgState());
// 模板的分类对代办进行分组过滤
if (StringUtils.isNotBlank(request.getGroupNodeCode())) {
List<String> templateCodes = messageTemplateGroupService
.listMessageTemplateCodes(request.getGroupNodeCode());
query.in(CollectionUtils.isNotEmpty(templateCodes), PendingMessageRecord::getTemplateCode, templateCodes);
}
query.like(StringUtils.isNotBlank(request.getTitle()), PendingMessageRecord::getTitle, request.getTitle());
if (CollectionUtils.isNotEmpty(request.getOrderFields())) {
for (QueryOrderByDTO orderBy : request.getOrderFields()) {
// TODO:[cold_blade] [P2] 排序优化
}
}
IPage<PendingMessageRecord> page = request.toPage();
IPage<PendingMessageRecord> result = pendingMessageRecordDao.page(page, query);
List<PendingMessageResponse> responseRecords = result.getRecords().stream()
.map(e -> convert(e, request.getTerminalType()).toResponse())
.collect(Collectors.toList());
return Page.toPage(request.getPage(), request.getPageSize(), result.getTotal(), responseRecords);
}
@Override
@ -67,9 +117,11 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
}
@Override
public String push(PendingMessagePushRequest request) {
// TODO: [cold_blade] 消息推送
PendingMessageRecord record = convert(request);
public String push(PendingMessagePushParam param) {
MessageTemplateDTO msgTemplate = messageTemplateNewService
.queryByTemplateCode(param.getTemplateCode())
.orElseThrow(() -> new ServiceException("not found message template."));
PendingMessageRecord record = convert(param, msgTemplate);
pendingMessageRecordDao.save(record);
return record.getIdentityCode();
}
@ -118,30 +170,32 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
MessageRouterUtil.parseRouteUrl(router, pendingMessageRecord.getRouterParams());
pendingMessage.setRouter(router);
}
// TODO: [cold_blade] [P1] 卡片信息的补充
return pendingMessage;
}
private PendingMessageRecord convert(PendingMessagePushRequest request) {
private PendingMessageRecord convert(PendingMessagePushParam param, MessageTemplateDTO msgTemplate) {
// TODO: [cold_blade] [P2] 待优化
PendingMessageRecord record = new PendingMessageRecord();
record.setIdentityCode(UUIDUtil.uuidString());
record.setPromoterId(request.getPromoter().getIdentity().getId());
record.setPromoterType(request.getPromoter().getIdentity().getType());
record.setPromoterPersonId(request.getPromoter().getId());
record.setExecutorId(request.getExecutor().getIdentity().getId());
record.setExecutorType(request.getExecutor().getIdentity().getType());
record.setExecutorPersonId(request.getExecutor().getId());
record.setTemplateCode(request.getTemplateCode());
record.setTitle("权限点发布申请");
record.setContent("${creator}提交了${businessTypeName},请尽快处理。");
record.setOrgType(request.getOrgType());
record.setOrgId(request.getOrgId());
record.setOrgName(request.getOrgName());
record.setPromoterId(param.getPromoter().getIdentity().getId());
record.setPromoterType(param.getPromoter().getIdentity().getType());
record.setPromoterPersonId(param.getPromoter().getId());
record.setExecutorId(param.getExecutor().getIdentity().getId());
record.setExecutorType(param.getExecutor().getIdentity().getType());
record.setExecutorPersonId(param.getExecutor().getId());
record.setTemplateCode(param.getTemplateCode());
record.setTitle(msgTemplate.getTitle());
record.setContent(msgTemplate.getContent());
record.setOrgType(param.getOrgType());
record.setOrgId(param.getOrgId());
record.setOrgName(param.getOrgName());
record.setState(PendingMessageStateEnum.HAS_BEEN_SENT);
record.setBizCategory(request.getBizCategory());
record.setBizCode(request.getBizCode());
record.setSubBizCode(request.getSubBizCode());
record.setBizDesc(request.getBizDesc());
record.setRouterParams(request.getRouterParams());
record.setBizCategory(param.getBizCategory());
record.setBizCode(param.getBizCode());
record.setSubBizCode(param.getSubBizCode());
record.setBizDesc(param.getBizDesc());
record.setRouterParams(param.getRouterParams());
Date now = new Date();
record.setCreateAt(now);
record.setUpdateAt(now);

View File

@ -5,7 +5,9 @@ import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.Date;
import java.util.Optional;
/**
* @description
@ -22,4 +24,10 @@ public final class DateFormatUtil {
ZoneId zoneId = ZoneId.systemDefault();
return date.toInstant().atZone(zoneId).toLocalDateTime();
}
public static long toTimestamp(LocalDateTime dateTime) {
return Optional.ofNullable(dateTime)
.map(v -> v.atZone(ZoneOffset.systemDefault()).toInstant().toEpochMilli())
.orElse(0L);
}
}

View File

@ -15,7 +15,7 @@ import lombok.Getter;
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public enum PendingMessageRoleCategoryEnum {
PROMOTER("发起者"), CREATOR("创建者"), EXECUTOR("执行者"),
PROMOTER("发起者"), EXECUTOR("执行者"),
;
private final String desc;

View File

@ -59,7 +59,6 @@ public class PendingMessagePageRequest extends PageRequest implements Serializab
/**
* 代办角色
* PROMOTER: 发起者
* CREATOR: 创建者
* EXECUTOR: 执行者
*/
private PendingMessageRoleCategoryEnum roleCategory;
@ -85,6 +84,8 @@ public class PendingMessagePageRequest extends PageRequest implements Serializab
*/
private Collection<QueryOrderByDTO> orderFields;
@Override
public String toString() {
return JSON.toJSONString(this);

View File

@ -3,7 +3,10 @@ package cn.axzo.msg.center.service.pending.response;
import cn.axzo.msg.center.service.dto.IdentityDTO;
import cn.axzo.msg.center.service.dto.MessageRouterDTO;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
@ -17,6 +20,9 @@ import java.io.Serializable;
*/
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PendingMessageResponse implements Serializable {
private static final long serialVersionUID = -4133864010679470398L;

View File

@ -0,0 +1,17 @@
package cn.axzo.msg.center.dal;
import cn.axzo.msg.center.dal.mapper.MessageTemplateGroupMapper;
import cn.axzo.msg.center.domain.entity.MessageTemplateGroup;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author cold_blade
* @date 2023/10/5
* @version 1.0
*/
@Slf4j
@Component
public class MessageTemplateGroupDao extends ServiceImpl<MessageTemplateGroupMapper, MessageTemplateGroup> {
}

View File

@ -28,9 +28,9 @@ public class MessageTemplateGroup extends BaseEntity<MessageTemplateGroup> imple
*/
private String templateCode;
/**
* 组code
* 类路径
*/
private String groupCode;
private String path;
@Override
public String toString() {