Browse Source

发送消息 添加事务提交后再发送消息

master
jianjun 4 years ago
parent
commit
8060068710
  1. 2
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java
  2. 19
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java
  3. 34
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/StatsAchievementServiceImpl.java
  4. 21
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  5. 39
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  6. 22
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java

2
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/send/SendMqMsgUtil.java

@ -50,7 +50,7 @@ public class SendMqMsgUtil {
systemMsgFormDTO.setMessageType(SystemMessageType.GROUP_ACHIEVEMENT); systemMsgFormDTO.setMessageType(SystemMessageType.GROUP_ACHIEVEMENT);
systemMsgFormDTO.setContent(msgContent); systemMsgFormDTO.setContent(msgContent);
Result sendMsgResult = null; Result sendMsgResult = null;
int retryTime = 1; int retryTime = 0;
do { do {
sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO); sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO);
} while ((sendMsgResult == null || !sendMsgResult.success()) && retryTime++ < NumConstant.TWO); } while ((sendMsgResult == null || !sendMsgResult.success()) && retryTime++ < NumConstant.TWO);

19
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java

@ -665,11 +665,20 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou
epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList); epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
//发送小组成就消息 //发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient) TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
.sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupDTO.getCustomerId(),resiGroupDTO.getId(),AchievementTypeEnum.MEMBER.getCode())); @Override
if (!flag) { public void afterCommit() {
logger.error("发送(小组成就)系统消息到message服务失败"); try {
} boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient)
.sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupDTO.getCustomerId(), resiGroupDTO.getId(), AchievementTypeEnum.MEMBER.getCode()));
if (!flag) {
logger.error("发送(小组成就)系统消息到message服务失败");
}
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
return new Result(); return new Result();
} }

34
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/StatsAchievementServiceImpl.java

@ -54,24 +54,24 @@ public class StatsAchievementServiceImpl extends AbstractStatsAchievementService
@Override @Override
public Boolean initAllGroupAchievement(String customerId) { public Boolean initAllGroupAchievement(String customerId) {
//计算所有类型的 小组人数、话题数、转议题数、小组内问题解决数 //计算所有类型的 小组人数、话题数、转议题数、小组内问题解决数
QueryWrapper<ResiGroupEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<ResiGroupEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ResiGroupEntity::getDelFlag,'0'); queryWrapper.lambda().eq(ResiGroupEntity::getDelFlag, '0');
if (StringUtils.isNotBlank(customerId)){ if (StringUtils.isNotBlank(customerId)) {
queryWrapper.lambda().eq(ResiGroupEntity::getCustomerId,customerId); queryWrapper.lambda().eq(ResiGroupEntity::getCustomerId, customerId);
} }
List<ResiGroupEntity> groupEntities = resiGroupDao.selectList(queryWrapper); List<ResiGroupEntity> groupEntities = resiGroupDao.selectList(queryWrapper);
groupEntities.forEach(group->{ groupEntities.forEach(group -> {
AchievementTypeEnum[] achievementTypeEnum = AchievementTypeEnum.values(); AchievementTypeEnum[] achievementTypeEnum = AchievementTypeEnum.values();
for (AchievementTypeEnum anEnum : achievementTypeEnum) { for (AchievementTypeEnum anEnum : achievementTypeEnum) {
try { try {
Thread.sleep(2); Thread.sleep(2);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
}
calculateAcm(group.getCustomerId(),group.getId(),anEnum.getCode());
} }
}); calculateAcm(group.getCustomerId(), group.getId(), anEnum.getCode());
}
});
return true; return true;
} }

21
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -86,6 +86,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.text.DateFormat; import java.text.DateFormat;
@ -657,11 +659,20 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>(); List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
msgList.add(wxSubscribeMessageFormDTO); msgList.add(wxSubscribeMessageFormDTO);
epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList); epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
//发送小组成就消息 TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupMemberDTO.getCustomerId(), resiGroupMemberDTO.getResiGroupId(), AchievementTypeEnum.MEMBER.getCode())); @Override
if (!flag) { public void afterCommit() {
logger.error("发送(小组成就)系统消息到message服务失败"); try {
} //发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupMemberDTO.getCustomerId(), resiGroupMemberDTO.getResiGroupId(), AchievementTypeEnum.MEMBER.getCode()));
if (!flag) {
logger.error("发送(小组成就)系统消息到message服务失败");
}
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
} }
/** /**

39
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java

@ -111,6 +111,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -777,10 +779,19 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
log.error("组长解决话题事件发送失败,参数:{}",JSON.toJSONString(closeFormDTO)); log.error("组长解决话题事件发送失败,参数:{}",JSON.toJSONString(closeFormDTO));
} }
//发送小组成就消息 //发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(topic.getCustomerId(), topic.getGroupId(), AchievementTypeEnum.RESOVLE_TOPIC.getCode())); TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
if (!flag) { @Override
log.error("发送(小组成就)系统消息到message服务失败"); public void afterCommit() {
} try {
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(topic.getCustomerId(), topic.getGroupId(), AchievementTypeEnum.RESOVLE_TOPIC.getCode()));
if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败");
}
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
} }
return new Result(); return new Result();
@ -1777,12 +1788,20 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(topicTurnIssueFromDTO)); log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(topicTurnIssueFromDTO));
} }
//发送小组成就消息 //发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(group.getCustomerId(), group.getGroupId(), AchievementTypeEnum.TOISSUE.getCode())); TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
if (!flag) { @Override
log.error("发送(小组成就)系统消息到message服务失败"); public void afterCommit() {
} try {
} boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(group.getCustomerId(), group.getGroupId(), AchievementTypeEnum.TOISSUE.getCode()));
else { if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败");
}
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
} else {
ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class); ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class);
} }

22
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java

@ -90,6 +90,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -981,11 +983,21 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
} }
//发送小组成就消息 //发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient) //发送小组成就消息
.sendGroupAchievementMqMsg(new GroupAchievementMQMsg(customerId,groupId,AchievementTypeEnum.TOPIC.getCode())); TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
if (!flag) { @Override
log.error("发送(小组成就)系统消息到message服务失败"); public void afterCommit() {
} try {
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient)
.sendGroupAchievementMqMsg(new GroupAchievementMQMsg(customerId,groupId,AchievementTypeEnum.TOPIC.getCode()));
if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败");
}
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
} }

Loading…
Cancel
Save