diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/Lucky24GiftSendService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/Lucky24GiftSendService.java index 2110c4c62..8c13242aa 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/Lucky24GiftSendService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/gift/Lucky24GiftSendService.java @@ -114,7 +114,9 @@ public class Lucky24GiftSendService { return draw(config, partitionConfig, senderUid, partitionId, gift, everyGiftNum, everyoneGoldNum, receiverList, room, sendGiftTime); } - Lucky24Record extraRecord = extraService.randomExtraRecord(config, extraPoolConfig, senderUid, partitionId, extraLuckerUid, gift, everyGiftNum, everyoneGoldNum, room, sendGiftTime); + int extraDrawMultiple = extraService.drawMultiple(extraPoolConfig, senderUid, partitionId); + Lucky24Result extraResult = new Lucky24Result(Lucky24PoolTypeEnum.EXTRA_POOL.getType(), null, everyoneGoldNum, extraDrawMultiple, false); + Lucky24Record extraRecord = updateMeta(config, partitionConfig, senderUid, partitionId, gift, everyGiftNum, extraLuckerUid, everyoneGoldNum, room, sendGiftTime, null, extraResult); List receiverUidList = new ArrayList<>(receiverList); receiverUidList.remove(extraLuckerUid); diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/lucky/Lucky24ExtraService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/lucky/Lucky24ExtraService.java index 2de7c4d19..121072e26 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/lucky/Lucky24ExtraService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/lucky/Lucky24ExtraService.java @@ -1,17 +1,13 @@ package com.accompany.business.service.lucky; -import com.accompany.business.constant.Lucky24PoolTypeEnum; import com.accompany.business.dto.lucky.Lucky24GiftConfig; -import com.accompany.business.model.Gift; import com.accompany.common.utils.DateTimeUtil; import com.accompany.core.enumeration.PartitionEnum; -import com.accompany.core.model.Room; -import com.accompany.sharding.model.Lucky24Record; -import com.accompany.sharding.vo.Lucky24StockResultVo; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; @@ -28,12 +24,6 @@ public class Lucky24ExtraService { private Lucky24ExtraStockService stockService; @Autowired private Lucky24UserMetaService userMetaService; - @Autowired - private Lucky24RobotMsgService robotMsgService; - @Autowired - private Lucky24SettlementService settlementService; - @Autowired - private Lucky24RecordService recordService; public BigDecimal addStock(Integer partitionId, BigDecimal addScore) { return stockService.addStock(partitionId, addScore); } @@ -115,35 +105,6 @@ public class Lucky24ExtraService { return luckyer; } - public Lucky24Record randomExtraRecord(Lucky24GiftConfig config, Lucky24GiftConfig.Lucky24ExtraPoolConfig extraPoolConfig, long senderUid, Integer partitionId, Long receiverUid, - Gift gift, int giftNum, long everyoneGoldNum, Room room, Date sendGiftTime) { - - int drawMultiple = drawMultiple(extraPoolConfig, senderUid, partitionId); - - long afterMultiple = drawMultiple; - - // 平台库存 - BigDecimal preWinGoldNum = BigDecimal.valueOf(afterMultiple * everyoneGoldNum); - Lucky24StockResultVo stockResultVo = judgeStock(partitionId, preWinGoldNum, senderUid, receiverUid, gift, giftNum, everyoneGoldNum, room, sendGiftTime); - if (!stockResultVo.isSuccess()) { - afterMultiple = 0L; - } - long winGoldNum = afterMultiple * everyoneGoldNum; - - if (winGoldNum > 0L) { - settlementService.sendReward(config, senderUid, room, gift, winGoldNum, afterMultiple); - } - - userMetaService.updateExtraUserMeta(senderUid, partitionId, everyoneGoldNum, winGoldNum); - - log.info("[lucky24] extra uid {} partitionId {} receiverUid {} drawMultiple {} preWinGoldNum {} afterMultiple {} winGoldNum {}", - senderUid, partitionId, receiverUid, drawMultiple, preWinGoldNum, afterMultiple, winGoldNum); - - return recordService.buildRecord(senderUid, partitionId, gift, giftNum, null != room ? room.getUid() : null, - receiverUid, Lucky24PoolTypeEnum.EXTRA_POOL.getType(), null, - Boolean.FALSE, drawMultiple, afterMultiple, !stockResultVo.isSuccess() ? stockResultVo : null, sendGiftTime); - } - public int drawMultiple(Lucky24GiftConfig.Lucky24ExtraPoolConfig extraPoolConfig, long senderUid, Integer partitionId) { Map userMetaMapSnapshot = userMetaService.getUserMeta(senderUid).readAllMap(); @@ -170,7 +131,7 @@ public class Lucky24ExtraService { return 0; } TreeMap> inputJudgeMap = inputJudgeEntry.getValue(); - if (null == inputJudgeMap){ + if (CollectionUtils.isEmpty(inputJudgeMap)){ return 0; } @@ -190,7 +151,7 @@ public class Lucky24ExtraService { return 0; } TreeMap threeDayAgoInputMap = threeDayAgoInputEntry.getValue(); - if (null == threeDayAgoInputMap){ + if (CollectionUtils.isEmpty(threeDayAgoInputMap)){ return 0; } @@ -217,22 +178,4 @@ public class Lucky24ExtraService { return drawMultiple; } - private Lucky24StockResultVo judgeStock(Integer partitionId, BigDecimal winGoldNum, Long senderUid, Long receiverUid, - Gift gift, int giftNum, long everyoneGoldNum, - Room room, Date sendGiftTime){ - BigDecimal afterStock = stockService.subStock(partitionId, winGoldNum); - BigDecimal beforeStock = afterStock.add(winGoldNum); - boolean enough = afterStock.compareTo(BigDecimal.ZERO) >= 0; - if (!enough){ - log.info("[lucky24] extraStock sender {} receiver {} 产出大于库存 winGoldNum {} afterStock {}", - senderUid, receiverUid, winGoldNum, afterStock); - afterStock = stockService.addStock(partitionId, winGoldNum); - robotMsgService.pushExtraStockNotEnough(partitionId, afterStock, senderUid, receiverUid, gift, giftNum, everyoneGoldNum, winGoldNum, room, sendGiftTime); - } - Lucky24StockResultVo resultVo = new Lucky24StockResultVo(); - resultVo.setSuccess(enough); - resultVo.setExtraStock(beforeStock); - resultVo.setPreWinGoldNum(winGoldNum); - return resultVo; - } }