抽取交易相关的业务,由业务方进行传入
This commit is contained in:
parent
c31ba635e8
commit
90caa1bfc7
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
/**
|
||||
* 消息\待办数量总数
|
||||
|
||||
@ -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"),
|
||||
;
|
||||
|
||||
@ -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("推送消息超时");
|
||||
}
|
||||
|
||||
@ -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;
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -52,7 +52,7 @@ public class MessageRecord extends BaseEntity<MessageRecord> {
|
||||
*/
|
||||
private String content;
|
||||
/**
|
||||
* 接收者类型:1cm_leader,2cm_worker,3cmp_user,4not_identity
|
||||
* 接收者类型:1cm_leader,2cm_worker,3cmp_user,4not_identity,5 normal
|
||||
*/
|
||||
private InsideReceiveTypeEnum receiveType;
|
||||
/**
|
||||
@ -106,5 +106,9 @@ public class MessageRecord extends BaseEntity<MessageRecord> {
|
||||
*/
|
||||
private String eventSource;
|
||||
|
||||
/**
|
||||
* 租户id,解决多个企业的问题
|
||||
*/
|
||||
private Long tenantId;
|
||||
}
|
||||
|
||||
|
||||
@ -30,6 +30,10 @@ public class MessageRelation extends BaseEntity<MessageRelation> {
|
||||
* 模板联系人
|
||||
*/
|
||||
private String contactUser;
|
||||
/**
|
||||
* 业务方自定义模板code
|
||||
*/
|
||||
private String templateCode;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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"),
|
||||
;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user