修改发送礼物mq逻辑
This commit is contained in:
@@ -64,6 +64,7 @@ public class ActUserTaskConsumer extends AbstractMessageListener<ActUserTaskMqMe
|
||||
Long sendUid = object.getSendUid();
|
||||
Long receiveUid = object.getReceiveUid();
|
||||
Date messTime = new Date(object.getMessTime());
|
||||
Integer giftNum = object.getGiftNum();
|
||||
List<ActActivity> actActivities = actActivityService.list(Wrappers.<ActActivity>lambdaQuery()
|
||||
.eq(ActActivity::getActivityStatus, Constant.Yes1No0.YES)
|
||||
.le(ActActivity::getStartTime, messTime)
|
||||
@@ -86,8 +87,10 @@ public class ActUserTaskConsumer extends AbstractMessageListener<ActUserTaskMqMe
|
||||
//若锁超时,直接执行
|
||||
String lockVal = jedisLockService.lock(redisKey, 2 * 60 * 1000);
|
||||
try {
|
||||
for (ActTask parentTask : parentTasks) {
|
||||
iterate(actActivity, object, parentTask, actTasks);
|
||||
for (int i = 0; i < giftNum; i++) {
|
||||
for (ActTask parentTask : parentTasks) {
|
||||
iterate(actActivity, object, parentTask, actTasks);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
@@ -5,6 +5,7 @@ import com.accompany.business.activity.model.ActActivity;
|
||||
import com.accompany.business.activity.service.ActActivityService;
|
||||
import com.accompany.business.event.GiftMessageEvent;
|
||||
import com.accompany.business.message.GiftMessage;
|
||||
import com.accompany.business.service.redenvelope.RedEnvelopeRainService;
|
||||
import com.accompany.common.constant.Constant;
|
||||
import com.accompany.common.redis.RedisKey;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
@@ -35,6 +36,9 @@ public class ActTaskListener implements ApplicationListener<GiftMessageEvent> {
|
||||
@Autowired
|
||||
private ActActivityService actActivityService;
|
||||
|
||||
@Autowired
|
||||
private RedEnvelopeRainService redEnvelopeRainService;
|
||||
|
||||
@Autowired
|
||||
private JedisService jedisService;
|
||||
|
||||
@@ -94,16 +98,15 @@ public class ActTaskListener implements ApplicationListener<GiftMessageEvent> {
|
||||
jedisService.hincrBy(roomKey, roomUid.toString(), goldNum);
|
||||
jedisService.expire(roomKey, HALF_MONTH);
|
||||
}
|
||||
for (int i = 0; i < giftNum; i++) {
|
||||
ActUserTaskMqMessage message = new ActUserTaskMqMessage();
|
||||
message.setRoomUid(giftMessage.getRoomUid());
|
||||
message.setSendUid(giftMessage.getSendUid());
|
||||
message.setReceiveUid(giftMessage.getRecvUid());
|
||||
message.setGiftId(giftId);
|
||||
message.setGiftValue(giftMessage.getGoldNum());
|
||||
message.setMessTime(now.getTime());
|
||||
mqMessageProducer.send(MqConstant.ACT_USER_TASK_TOPIC, message);
|
||||
}
|
||||
ActUserTaskMqMessage message = new ActUserTaskMqMessage();
|
||||
message.setRoomUid(giftMessage.getRoomUid());
|
||||
message.setSendUid(giftMessage.getSendUid());
|
||||
message.setReceiveUid(giftMessage.getRecvUid());
|
||||
message.setGiftId(giftId);
|
||||
message.setGiftValue(giftMessage.getGoldNum());
|
||||
message.setMessTime(now.getTime());
|
||||
message.setGiftNum(giftNum);
|
||||
mqMessageProducer.send(MqConstant.ACT_USER_TASK_TOPIC, message);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
@@ -1,16 +1,25 @@
|
||||
package com.accompany.business.service.redenvelope.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.accompany.business.activity.model.ActActivity;
|
||||
import com.accompany.business.constant.redenvelope.OuterRedEnvelopeTypeEnum;
|
||||
import com.accompany.business.constant.redenvelope.RedEnvelopStateEnum;
|
||||
import com.accompany.business.model.redenvelope.RedEnvelope;
|
||||
import com.accompany.business.model.redenvelope.RedEnvelopeRain;
|
||||
import com.accompany.business.model.redenvelope.RedEnvelopeRainRecord;
|
||||
import com.accompany.business.mybatismapper.redenvelope.RedEnvelopeRainMapper;
|
||||
import com.accompany.business.service.redenvelope.RedEnvelopeRainRecordService;
|
||||
import com.accompany.business.service.redenvelope.RedEnvelopeRainService;
|
||||
import com.accompany.business.service.redenvelope.RedEnvelopeService;
|
||||
import com.accompany.business.service.redenvelope.strategy.RedEnvelopeContext;
|
||||
import com.accompany.business.vo.redenvelope.OpenRedEnvelopeRequest;
|
||||
import com.accompany.business.vo.redenvelope.SendRedEnvelopeRequest;
|
||||
import com.accompany.common.redis.RedisKey;
|
||||
import com.accompany.core.model.Room;
|
||||
import com.accompany.core.mybatismapper.RoomMapper;
|
||||
import com.accompany.core.service.common.JedisService;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -20,6 +29,8 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author: liaozetao
|
||||
@@ -30,6 +41,8 @@ import java.util.List;
|
||||
@Service
|
||||
public class RedEnvelopeRainServiceImpl extends ServiceImpl<RedEnvelopeRainMapper, RedEnvelopeRain> implements RedEnvelopeRainService {
|
||||
|
||||
@Autowired
|
||||
private RoomMapper roomMapper;
|
||||
|
||||
@Autowired
|
||||
private RedEnvelopeService redEnvelopeService;
|
||||
@@ -107,8 +120,32 @@ public class RedEnvelopeRainServiceImpl extends ServiceImpl<RedEnvelopeRainMappe
|
||||
}
|
||||
|
||||
public boolean isUnderway(Long roomUid) {
|
||||
String redisKey = RedisKey.red_envelope_rain_list.getKey(String.valueOf(roomUid));
|
||||
return jedisService.exits(redisKey) || jedisService.llen(redisKey) != 0;
|
||||
Room room = roomMapper.selectByPrimaryKey(roomUid);
|
||||
if (room == null) {
|
||||
return false;
|
||||
}
|
||||
Byte permitType = room.getIsPermitRoom();
|
||||
List<RedEnvelopeRain> redEnvelopeRains = getRedEnvelopeRainByPermitType(Integer.valueOf(permitType));
|
||||
if (CollectionUtil.isEmpty(redEnvelopeRains)) {
|
||||
return false;
|
||||
}
|
||||
List<Long> redEnvelopeRainIds = redEnvelopeRains.stream().map(RedEnvelopeRain::getId).collect(Collectors.toList());
|
||||
List<RedEnvelopeRainRecord> redEnvelopeRainRecords = redEnvelopeRainRecordService.list(Wrappers.<RedEnvelopeRainRecord>lambdaQuery()
|
||||
.select(RedEnvelopeRainRecord::getRedEnvelopeId)
|
||||
.eq(RedEnvelopeRainRecord::getRoomUid, roomUid)
|
||||
.isNotNull(RedEnvelopeRainRecord::getRedEnvelopeId)
|
||||
.in(RedEnvelopeRainRecord::getRedEnvelopeRainId, redEnvelopeRainIds));
|
||||
if (CollectionUtil.isEmpty(redEnvelopeRainRecords)) {
|
||||
return false;
|
||||
}
|
||||
List<Long> redEnvelopeIds = redEnvelopeRainRecords.stream().map(RedEnvelopeRainRecord::getRedEnvelopeId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
for (Long redEnvelopeId : redEnvelopeIds) {
|
||||
RedEnvelopStateEnum state = redEnvelopeService.stateById(redEnvelopeId);
|
||||
if (RedEnvelopStateEnum.WILL.compareTo(state) == 0 || RedEnvelopStateEnum.ING.compareTo(state) == 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -39,4 +39,9 @@ public class ActUserTaskMqMessage extends BaseMqMessage {
|
||||
* 消息时间
|
||||
*/
|
||||
private Long messTime;
|
||||
|
||||
/**
|
||||
* 礼物数量
|
||||
*/
|
||||
private Integer giftNum;
|
||||
}
|
||||
|
Reference in New Issue
Block a user