diff --git a/accompany-business/accompany-business-festival-activity/fastival-activity-mq/src/main/java/com/accompany/mq/consumer/ActUserTaskConsumer.java b/accompany-business/accompany-business-festival-activity/fastival-activity-mq/src/main/java/com/accompany/mq/consumer/ActUserTaskConsumer.java index 71dabe1a8..86726bd7e 100644 --- a/accompany-business/accompany-business-festival-activity/fastival-activity-mq/src/main/java/com/accompany/mq/consumer/ActUserTaskConsumer.java +++ b/accompany-business/accompany-business-festival-activity/fastival-activity-mq/src/main/java/com/accompany/mq/consumer/ActUserTaskConsumer.java @@ -64,6 +64,7 @@ public class ActUserTaskConsumer extends AbstractMessageListener actActivities = actActivityService.list(Wrappers.lambdaQuery() .eq(ActActivity::getActivityStatus, Constant.Yes1No0.YES) .le(ActActivity::getStartTime, messTime) @@ -86,8 +87,10 @@ public class ActUserTaskConsumer extends AbstractMessageListener { @Autowired private ActActivityService actActivityService; + @Autowired + private RedEnvelopeRainService redEnvelopeRainService; + @Autowired private JedisService jedisService; @@ -94,16 +98,15 @@ public class ActTaskListener implements ApplicationListener { 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); diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/redenvelope/impl/RedEnvelopeRainServiceImpl.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/redenvelope/impl/RedEnvelopeRainServiceImpl.java index 9f8273498..fcd2bf375 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/redenvelope/impl/RedEnvelopeRainServiceImpl.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/redenvelope/impl/RedEnvelopeRainServiceImpl.java @@ -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 implements RedEnvelopeRainService { + @Autowired + private RoomMapper roomMapper; @Autowired private RedEnvelopeService redEnvelopeService; @@ -107,8 +120,32 @@ public class RedEnvelopeRainServiceImpl extends ServiceImpl redEnvelopeRains = getRedEnvelopeRainByPermitType(Integer.valueOf(permitType)); + if (CollectionUtil.isEmpty(redEnvelopeRains)) { + return false; + } + List redEnvelopeRainIds = redEnvelopeRains.stream().map(RedEnvelopeRain::getId).collect(Collectors.toList()); + List redEnvelopeRainRecords = redEnvelopeRainRecordService.list(Wrappers.lambdaQuery() + .select(RedEnvelopeRainRecord::getRedEnvelopeId) + .eq(RedEnvelopeRainRecord::getRoomUid, roomUid) + .isNotNull(RedEnvelopeRainRecord::getRedEnvelopeId) + .in(RedEnvelopeRainRecord::getRedEnvelopeRainId, redEnvelopeRainIds)); + if (CollectionUtil.isEmpty(redEnvelopeRainRecords)) { + return false; + } + List 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; } } diff --git a/accompany-mq/accompany-mq-sdk/src/main/java/com/accompany/mq/model/ActUserTaskMqMessage.java b/accompany-mq/accompany-mq-sdk/src/main/java/com/accompany/mq/model/ActUserTaskMqMessage.java index df6d6a649..4a2333077 100644 --- a/accompany-mq/accompany-mq-sdk/src/main/java/com/accompany/mq/model/ActUserTaskMqMessage.java +++ b/accompany-mq/accompany-mq-sdk/src/main/java/com/accompany/mq/model/ActUserTaskMqMessage.java @@ -39,4 +39,9 @@ public class ActUserTaskMqMessage extends BaseMqMessage { * 消息时间 */ private Long messTime; + + /** + * 礼物数量 + */ + private Integer giftNum; }