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.setContent(msgContent);
Result sendMsgResult = null;
int retryTime = 1;
int retryTime = 0;
do {
sendMsgResult = epmetMessageOpenFeignClient.sendSystemMsgByMQ(systemMsgFormDTO);
} 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);
//发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient)
.sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupDTO.getCustomerId(),resiGroupDTO.getId(),AchievementTypeEnum.MEMBER.getCode()));
if (!flag) {
logger.error("发送(小组成就)系统消息到message服务失败");
}
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
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();
}

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
public Boolean initAllGroupAchievement(String customerId) {
//计算所有类型的 小组人数、话题数、转议题数、小组内问题解决数
QueryWrapper<ResiGroupEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ResiGroupEntity::getDelFlag,'0');
if (StringUtils.isNotBlank(customerId)){
queryWrapper.lambda().eq(ResiGroupEntity::getCustomerId,customerId);
}
List<ResiGroupEntity> groupEntities = resiGroupDao.selectList(queryWrapper);
groupEntities.forEach(group->{
AchievementTypeEnum[] achievementTypeEnum = AchievementTypeEnum.values();
for (AchievementTypeEnum anEnum : achievementTypeEnum) {
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
calculateAcm(group.getCustomerId(),group.getId(),anEnum.getCode());
//计算所有类型的 小组人数、话题数、转议题数、小组内问题解决数
QueryWrapper<ResiGroupEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ResiGroupEntity::getDelFlag, '0');
if (StringUtils.isNotBlank(customerId)) {
queryWrapper.lambda().eq(ResiGroupEntity::getCustomerId, customerId);
}
List<ResiGroupEntity> groupEntities = resiGroupDao.selectList(queryWrapper);
groupEntities.forEach(group -> {
AchievementTypeEnum[] achievementTypeEnum = AchievementTypeEnum.values();
for (AchievementTypeEnum anEnum : achievementTypeEnum) {
try {
Thread.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
calculateAcm(group.getCustomerId(), group.getId(), anEnum.getCode());
}
});
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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils;
import java.text.DateFormat;
@ -657,11 +659,20 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
msgList.add(wxSubscribeMessageFormDTO);
epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
//发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(resiGroupMemberDTO.getCustomerId(), resiGroupMemberDTO.getResiGroupId(), AchievementTypeEnum.MEMBER.getCode()));
if (!flag) {
logger.error("发送(小组成就)系统消息到message服务失败");
}
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.CollectionUtils;
import java.text.SimpleDateFormat;
@ -777,10 +779,19 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
log.error("组长解决话题事件发送失败,参数:{}",JSON.toJSONString(closeFormDTO));
}
//发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(topic.getCustomerId(), topic.getGroupId(), AchievementTypeEnum.RESOVLE_TOPIC.getCode()));
if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败");
}
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
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();
@ -1777,12 +1788,20 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(topicTurnIssueFromDTO));
}
//发送小组成就消息
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(group.getCustomerId(), group.getGroupId(), AchievementTypeEnum.TOISSUE.getCode()));
if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败");
}
}
else {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
try {
boolean flag = SendMqMsgUtil.build().openFeignClient(epmetMessageOpenFeignClient).sendGroupAchievementMqMsg(new GroupAchievementMQMsg(group.getCustomerId(), group.getGroupId(), AchievementTypeEnum.TOISSUE.getCode()));
if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败");
}
}catch (Exception e){
logger.error("afterCommit",e);
}
}
});
} else {
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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import java.text.SimpleDateFormat;
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()));
if (!flag) {
log.error("发送(小组成就)系统消息到message服务失败");
}
//发送小组成就消息
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
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