抽取交易相关的业务,由业务方进行传入

This commit is contained in:
刘才福 2023-06-28 17:56:39 +08:00
parent c31ba635e8
commit 90caa1bfc7
15 changed files with 90 additions and 36 deletions

View File

@ -26,7 +26,7 @@ public interface MessageRecordService {
* @param message
* @return 消息唯一主键
*/
List<MsgReturnParamRes> pushMsg(GeneralMessage message);
List<MsgReturnParamRes> pushMsg(GeneralMessageReq message);
MessageTotalRes statisticsMsg4Total(Long userId, Long personId, UserTypeEnum userTypeEnum);

View File

@ -58,7 +58,7 @@ public class InsideNoticesApiImpl implements InsideNoticesApi {
@Override
@RepeatSubCheck(value = 3000, unique = true, containParams = true)
public CommonResponse<List<MsgReturnParamRes>> pushMsg(@RequestBody GeneralMessage message) {
public CommonResponse<List<MsgReturnParamRes>> pushMsg(@RequestBody GeneralMessageReq message) {
List<MsgReturnParamRes> result = messageRecordService.pushMsg(message);
return CommonResponse.success(result);
}

View File

@ -28,6 +28,7 @@ import cn.azxo.framework.common.utils.LogUtil;
import cn.azxo.framework.common.utils.LogUtil.ErrorLevel;
import cn.azxo.framework.common.utils.LogUtil.ErrorType;
import cn.azxo.framework.common.utils.StringUtils;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -81,7 +82,7 @@ public class MessageRecordServiceImpl implements MessageRecordService {
* @return 消息唯一主键
*/
@Override
public List<MsgReturnParamRes> pushMsg(GeneralMessage message) {
public List<MsgReturnParamRes> pushMsg(GeneralMessageReq message) {
log.info("pushMsg message:{}", JSON.toJSONString(message));
MessageRecord basic = BeanConvertUtils.copyBean(message, MessageRecord.class);
@ -90,8 +91,14 @@ public class MessageRecordServiceImpl implements MessageRecordService {
basic.setRouterParams(Objects.nonNull(message.getRouterParams())
? JSON.toJSONString(message.getRouterParams()) : "{}");
// 消息模板参数替换
MessageRelation relation = messageRelationDao.getById(message.getRelationId());
//如果moduleId和templateCode不为空通过moduleId和templateCode优先查询模板否则使用relationId查询
MessageRelation relation = null;
if(message.getModuleId() != null && org.apache.commons.lang3.StringUtils.isNotEmpty(message.getTemplateCode())){
relation = messageRelationDao.getTemplateByCode(message.getModuleId(),message.getTemplateCode());
}else {
// 消息模板参数替换
relation = messageRelationDao.getById(message.getRelationId());
}
AssertUtil.notNull(relation, "消息模板不存在");
MessageTemplate messageTemplate = messageTemplateDao.getById(relation.getTemplateId());
@ -117,7 +124,8 @@ public class MessageRecordServiceImpl implements MessageRecordService {
List<MessageRecord> pushMessages = new ArrayList<>();
Lists.partition(Lists.newArrayList(message.getToId()), partitionSize).forEach(toIds -> {
pushMessages.addAll(saveBatch(basic, toIds));
List<MessageRecord> messageRecords = saveBatch(basic, toIds, message.getToldIdPersonIdMap());
pushMessages.addAll(messageRecords);
});
if(pushAthena) {
@ -133,44 +141,38 @@ public class MessageRecordServiceImpl implements MessageRecordService {
}
@Async
public void asyncPushAthena(GeneralMessage message, String audioFileName, String moduleName,
List<MessageRecord> pushMessages) {
public void asyncPushAthena(GeneralMessageReq message, String audioFileName, String moduleName,
List<MessageRecord> pushMessages) {
sendMessage(message.getRelationId(), audioFileName,
moduleName, pushMessages, message.getRouterParams());
}
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public List<MessageRecord> saveBatch(MessageRecord basic, List<Long> toIds) {
if(CollectionUtils.isEmpty(toIds)) {
public List<MessageRecord> saveBatch(MessageRecord basic, List<Long> toIds, Map<Long, Long> toldIdPersonIdMap) {
if (CollectionUtils.isEmpty(toIds)) {
return Collections.emptyList();
}
List<MessageRecord> pushMessages = new ArrayList<>();
toIds.forEach(i -> {
MessageRecord messageRecord = BeanConvertUtils.copyBean(basic, MessageRecord.class);
messageRecord.setToId(i);
messageRecord.setPersonId(i);
pushMessages.add(messageRecord);
});
/*if(ReceiveTypeEnum.NOT_IDENTITY.equals(basic.getReceiveType())) {
if (ReceiveTypeEnum.NOT_IDENTITY.getCode().equals(basic.getReceiveType().getCode())) {
toIds.forEach(i -> {
MessageRecord messageRecord = BeanConvertUtils.copyBean(basic, MessageRecord.class);
messageRecord.setToId(0L);
messageRecord.setPersonId(i);
pushMessages.add(messageRecord);
});
}else{
// 根据身份获取自然人信息
Map<Long, IdentityProfileDto> profileMap = identityProfileService.findProfileByIdSetV2(
new HashSet<>(toIds), ConvertIdentity(basic.getReceiveType()));
toIds.forEach(i-> {
} else {
toIds.forEach(i -> {
MessageRecord messageRecord = BeanConvertUtils.copyBean(basic, MessageRecord.class);
IdentityProfileDto dto = profileMap.getOrDefault(i, null);
messageRecord.setToId(i);
messageRecord.setPersonId(Objects.nonNull(dto) && Objects.nonNull(dto.getPersonProfile()) ?
dto.getPersonProfile().getId() : 0L);
if (MapUtil.isEmpty(toldIdPersonIdMap) || toldIdPersonIdMap.get(i) == null) {
messageRecord.setPersonId(0L);
} else {
messageRecord.setPersonId(toldIdPersonIdMap.get(i));
}
pushMessages.add(messageRecord);
});
}*/
}
messageRecordDao.saveBatch(pushMessages);
return pushMessages;
}

View File

@ -30,7 +30,7 @@ public interface InsideNoticesApi {
* @return 消息唯一主键
*/
@RequestMapping(value = "api/message/push", method = RequestMethod.POST)
CommonResponse<List<MsgReturnParamRes>> pushMsg(@RequestBody @Valid GeneralMessage message);
CommonResponse<List<MsgReturnParamRes>> pushMsg(@RequestBody @Valid GeneralMessageReq message);
/**
* 消息\待办数量总数

View File

@ -18,6 +18,11 @@ public enum ReceiveTypeEnum {
CM_LEADER(1, "cm_leader"),
CM_WORKER(2, "cm_worker"),
CMP_USER(3, "cmp"),
/**
* 普通类型消息
*/
NORMAL(5,"normal"),
// 主要用于交易侧无身份的情况
NOT_IDENTITY(9, "not_identity"),
;

View File

@ -27,7 +27,7 @@ public class InsideNoticesApiFallBack implements InsideNoticesApi {
@Override
public CommonResponse<List<MsgReturnParamRes>> pushMsg(GeneralMessage message) {
public CommonResponse<List<MsgReturnParamRes>> pushMsg(GeneralMessageReq message) {
log.info("推送消息超时, message: {}", message);
return CommonResponse.fail("推送消息超时");
}

View File

@ -9,6 +9,7 @@ import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Map;
/**
* 通用消息
@ -20,7 +21,7 @@ import java.io.Serializable;
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ToString
public class GeneralMessage extends AbstractMessage implements Serializable {
public class GeneralMessageReq extends AbstractMessage implements Serializable {
/**
* 接收者角色类型
@ -46,6 +47,22 @@ public class GeneralMessage extends AbstractMessage implements Serializable {
* 消息所属标识名称 有则展示
*/
private String terminalName;
/**
* 租户id解决多个企业的问题
*/
private Long tenantId;
/**
* 业务方模板code
*/
private String templateCode;
/**
* 模块id
*/
private Long moduleId;
/**
* 接收人及发送人的对应关系因为需要去查身份由业务方进行组装后再发送
*/
private Map<Long,Long> toldIdPersonIdMap;
public void setTerminalId(Long terminalId) {
this.terminalId = terminalId < 1 ? 0 : terminalId;

View File

@ -22,5 +22,9 @@ public class MessageRelationDao extends
public void insertSql(SyncRelationDataDTO relation) {
this.baseMapper.nativeSql(relation.getId(), relation.getModuleId(), relation.getTemplateId());
}
public MessageRelation getTemplateByCode(Long moduleId,String templateCode){
return this.baseMapper.getTemplateByCode(moduleId,templateCode);
}
}

View File

@ -3,7 +3,6 @@ package cn.axzo.msg.center.dal.mapper;
import cn.axzo.msg.center.domain.entity.MessageRelation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
/**
* 模块与模板的关系表(MessageRelation)表数据库访问层
@ -17,5 +16,7 @@ public interface MessageRelationMapper extends BaseMapper<MessageRelation>{
@Insert("insert into message_relation (id, type_id, module_id, template_id) values(#{id}, 0, #{moduleId}, #{templateId})")
void nativeSql(Long id, Long moduleId, Long templateId);
MessageRelation getTemplateByCode(Long moduleId,String templateCode);
}

View File

@ -7,11 +7,18 @@
<result column="type_id" jdbcType="INTEGER" property="typeId"/>
<result column="module_id" jdbcType="INTEGER" property="moduleId"/>
<result column="template_id" jdbcType="INTEGER" property="templateId"/>
<result column="template_code" jdbcType="VARCHAR" property="templateCode"/>
<result column="is_delete" jdbcType="INTEGER" property="isDelete"/>
<result column="create_at" jdbcType="TIMESTAMP" property="createAt"/>
<result column="update_at" jdbcType="TIMESTAMP" property="updateAt"/>
</resultMap>
<!--查询模板信息 -->
<select id="getTemplateByCode" resultType="cn.axzo.msg.center.domain.entity.MessageRelation">
SELECT id,type_id,template_id,module_id,template_code,create_at,update_at from message_relation
where is_delete=0 AND template_code=#{templateCode} AND module_id=#{moduleId}
</select>
</mapper>

View File

@ -52,7 +52,7 @@ public class MessageRecord extends BaseEntity<MessageRecord> {
*/
private String content;
/**
* 接收者类型1cm_leader2cm_worker3cmp_user4not_identity
* 接收者类型1cm_leader2cm_worker3cmp_user4not_identity,5 normal
*/
private InsideReceiveTypeEnum receiveType;
/**
@ -106,5 +106,9 @@ public class MessageRecord extends BaseEntity<MessageRecord> {
*/
private String eventSource;
/**
* 租户id解决多个企业的问题
*/
private Long tenantId;
}

View File

@ -30,6 +30,10 @@ public class MessageRelation extends BaseEntity<MessageRelation> {
* 模板联系人
*/
private String contactUser;
/**
* 业务方自定义模板code
*/
private String templateCode;
}

View File

@ -8,7 +8,7 @@ import lombok.Getter;
import java.util.Arrays;
/**
* 1 cm_leader; 2 cm_worker; 3 cmp; 9 not_identity
* 1 cm_leader; 2 cm_worker; 3 cmp; 5 normal 9 not_identity
*
* @author wangli
* @date 2022/3/21 21:01
@ -18,6 +18,10 @@ public enum InsideReceiveTypeEnum {
CM_LEADER(1, "cm_leader"),
CM_WORKER(2, "cm_worker"),
CMP_USER(3, "cmp"),
/**
* 普通类型消息
*/
NORMAl(5,"normal"),
// 主要用于交易侧无身份的情况
NOT_IDENTITY(9, "not_identity"),
;

View File

@ -12,7 +12,13 @@ public enum UserTypeEnum {
TEAM(2, "cm_leader"),
CMP(3, "cmp"),
/**
* 普通类型
*/
NORMAL(5,"normal"),
NOT_IDENTITY(9,"not_identity"),
;
private Integer value;

View File

@ -5,7 +5,7 @@ import cn.axzo.core.web.Result;
import cn.axzo.core.web.Results;
import cn.axzo.framework.auth.annotation.PreBuildContext;
import cn.axzo.msg.center.api.request.CmsMsgQueryReq;
import cn.axzo.msg.center.api.request.GeneralMessage;
import cn.axzo.msg.center.api.request.GeneralMessageReq;
import cn.axzo.msg.center.api.request.MessageNewRes;
import cn.axzo.msg.center.api.request.MsgReturnParamRes;
import cn.axzo.msg.center.api.response.MessageTotalRes;
@ -45,7 +45,7 @@ public class MessageController {
* @return 消息唯一主键
*/
@RequestMapping(value = "api/message/push", method = RequestMethod.POST)
Result<List<MsgReturnParamRes>> pushMsg(@RequestBody GeneralMessage message){
Result<List<MsgReturnParamRes>> pushMsg(@RequestBody GeneralMessageReq message){
return Results.ok(messageRecordService.pushMsg(message));
}