From 5324a804f6dcb622f4ab3f554608e58c728e287e Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 19 May 2022 18:15:58 +0800 Subject: [PATCH] 20220518 --- src/test/java/cc/mrbird/febs/AgentTest.java | 465 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 458 insertions(+), 7 deletions(-) diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java index 6f86be6..a2f3a42 100644 --- a/src/test/java/cc/mrbird/febs/AgentTest.java +++ b/src/test/java/cc/mrbird/febs/AgentTest.java @@ -1,15 +1,19 @@ package cc.mrbird.febs; import cc.mrbird.febs.common.enumerates.AgentLevelEnum; +import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.dto.AgentLevelUpdateDto; -import cc.mrbird.febs.mall.entity.AgentInfo; -import cc.mrbird.febs.mall.entity.DataDictionaryCustom; -import cc.mrbird.febs.mall.entity.MallGoodsStyle; -import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; -import cc.mrbird.febs.mall.mapper.MallGoodsStyleMapper; +import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.quartz.ProfitJob; import cc.mrbird.febs.mall.service.IAgentService; +import cc.mrbird.febs.mall.vo.ApiMallAwardDetailsVo; import cc.mrbird.febs.rabbit.producter.AgentProducer; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.aspectj.weaver.loadtime.Agent; @@ -19,6 +23,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; import java.util.List; /** @@ -41,10 +46,456 @@ @Autowired private MallGoodsStyleMapper mallGoodsStyleMapper; + @Autowired + private MallActAwardSetMapper mallActAwardSetMapper; + @Autowired + private MallMemberMapper mallMemberMapper; + @Autowired + private MallActWinRecordMapper mallActWinRecordMapper; + @Autowired + private MallActLuckdrawRecordMapper mallActLuckdrawRecordMapper; + @Autowired + private MallMemberWalletMapper mallMemberWalletMapper; + @Autowired + private MallActSetMapper mallActSetMapper; @Test public void skusTest() { - List<MallGoodsStyle> mallGoodsStyles = mallGoodsStyleMapper.selectByGoodsId(1L); - System.out.println(mallGoodsStyles); + ApiMallAwardDetailsVo apiMallAwardDetailsVo = new ApiMallAwardDetailsVo(); + Long memberId = 4L; + Long actId = 1L; + MallMember mallMember = mallMemberMapper.selectById(memberId); + if(ObjectUtil.isEmpty(mallMember)){ + throw new FebsException("用户不存在"); + } + + MallActSet mallActSet = mallActSetMapper.selectById(actId); + if(ObjectUtil.isEmpty(mallActSet)){ + throw new FebsException("活动不存在"); + } + Integer actStatus = mallActSet.getActStatus(); + if(MallActSet.ACT_STATUS_DISABLED == actStatus){ + throw new FebsException("活动还没开始"); + } + /** + * 获取用户积分数,判断能不能抽奖 + * 减少对应的积分数量 + * 较少奖品的已抽奖 + * 生成一条抽奖记录 + */ + + MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + if(ObjectUtil.isEmpty(wallet)){ + throw new FebsException("账户不存在"); + } + BigDecimal commission = wallet.getCommission(); + BigDecimal prizeScore = wallet.getPrizeScore(); + Integer actScoreCnt = mallActSet.getActScoreCnt(); + if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){ + throw new FebsException("竞猜积分不足"); + } + /** + * 中奖概率 20% + * 每次抽奖产生一个随机数要大于8,则中奖 + * 历史10条抽奖记录有中奖过,中奖记录少于两条,则中奖 + */ + //获取中奖概率 + DataDictionaryCustom scoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.WIN_SCORE.getType(), + DataDictionaryEnum.WIN_SCORE.getCode()); + DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.WIN_CASH.getType(), + DataDictionaryEnum.WIN_CASH.getCode()); + String scoreDicValue = scoreDic.getValue(); + String cashDicValue = cashDic.getValue(); + BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue)); + //获取那个更大一点的几率 + BigDecimal maxProbability = BigDecimal.ZERO; + BigDecimal minProbability = BigDecimal.ZERO; + Integer maxAwardType = 0; + Integer minAwardType = 0; + if(new BigDecimal(scoreDicValue).compareTo(new BigDecimal(cashDicValue)) < 0){ + maxProbability = new BigDecimal(cashDicValue); + minProbability = new BigDecimal(scoreDicValue); + maxAwardType = MallActAwardSet.AWARD_TYPE_YJ; + minAwardType = MallActAwardSet.AWARD_TYPE_JF; + }else{ + maxProbability = new BigDecimal(scoreDicValue); + minProbability = new BigDecimal(cashDicValue); + maxAwardType = MallActAwardSet.AWARD_TYPE_JF; + minAwardType = MallActAwardSet.AWARD_TYPE_YJ; + } + + BigDecimal multiply = totalProbability.multiply(new BigDecimal(100)); + BigDecimal failureScope = new BigDecimal(100).subtract(multiply); + int randomInt = RandomUtil.randomInt(1, 100); + //小于failureScope这个数字,则没中奖 + if(new BigDecimal(randomInt).compareTo(failureScope) <= 0){ + //抽奖记录 + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); + if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ + apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); + apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); + }else{ + apiMallAwardDetailsVo.setAwardName("未中奖"); + } + }else if(new BigDecimal(randomInt).compareTo(failureScope) > 0 + && new BigDecimal(randomInt).compareTo(failureScope.add(maxProbability.multiply(new BigDecimal(100)))) <= 0){ + //大于failureScope.add(maxProbability.multiply(new BigDecimal(100)))这个数字,则中奖 + //获取最新的十条抽奖记录 + List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId); + if(CollUtil.isNotEmpty(records)){ + //中奖次数 + Integer count = 0; + for(MallActLuckdrawRecord mallActLuckdrawRecord : records){ + Integer status = mallActLuckdrawRecord.getStatus(); + if(MallActLuckdrawRecord.STATUS_ENABLE == status){ + count = count + 1; + } + } + if(new BigDecimal(count).compareTo(maxProbability.multiply(new BigDecimal(10))) < 0){ + //获取活动下该类别的奖品 + List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType); + if(CollUtil.isEmpty(mallActAwardSets)){ + //抽奖记录 + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); + if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ + apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); + apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); + }else{ + apiMallAwardDetailsVo.setAwardName("未中奖"); + } + }else{ + List<MallActAwardSet> idList = new ArrayList(); + for(MallActAwardSet mallActAwardSet : mallActAwardSets){ + Integer awardTotal = mallActAwardSet.getAwardTotal(); + Integer awardCnt = mallActAwardSet.getAwardCnt(); + if(awardCnt < awardTotal){ + idList.add(mallActAwardSet); + } + } + MallActAwardSet mallActAwardSet = new MallActAwardSet(); + if(idList.size() <= 1){ + mallActAwardSet = idList.get(0); + }else{ + int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1); + mallActAwardSet = idList.get(randomIdIndex); + } + mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1); + mallActAwardSetMapper.updateById(mallActAwardSet); + + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + MallActWinRecord mallActWinRecord = new MallActWinRecord(); + mallActWinRecord.setMemberId(memberId); + mallActWinRecord.setActId(actId); + mallActWinRecord.setActName(mallActSet.getActName()); + mallActWinRecord.setAwardId(mallActAwardSet.getId()); + mallActWinRecord.setAwardName(mallActAwardSet.getAwardName()); + mallActWinRecord.setAwardType(mallActAwardSet.getAwardType()); + mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue()); + mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId()); + mallActWinRecordMapper.insert(mallActWinRecord); + + apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName()); + apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType()); + apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue()); + apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage()); + + if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){ + prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue())); + }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){ + commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue())); + } + } + }else{ + //抽奖记录 + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); + if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ + apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); + apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); + }else{ + apiMallAwardDetailsVo.setAwardName("未中奖"); + } + } + }else{ + //获取活动下该类别的奖品 + List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType); + if(CollUtil.isEmpty(mallActAwardSets)){ + //抽奖记录 + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); + if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ + apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); + apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); + }else{ + apiMallAwardDetailsVo.setAwardName("未中奖"); + } + }else{ + List<MallActAwardSet> idList = new ArrayList(); + for(MallActAwardSet mallActAwardSet : mallActAwardSets){ + Integer awardTotal = mallActAwardSet.getAwardTotal(); + Integer awardCnt = mallActAwardSet.getAwardCnt(); + if(awardCnt < awardTotal){ + idList.add(mallActAwardSet); + } + } + MallActAwardSet mallActAwardSet = new MallActAwardSet(); + if(idList.size() <= 1){ + mallActAwardSet = idList.get(0); + }else{ + int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1); + mallActAwardSet = idList.get(randomIdIndex); + } + mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1); + mallActAwardSetMapper.updateById(mallActAwardSet); + + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + MallActWinRecord mallActWinRecord = new MallActWinRecord(); + mallActWinRecord.setMemberId(memberId); + mallActWinRecord.setActId(actId); + mallActWinRecord.setActName(mallActSet.getActName()); + mallActWinRecord.setAwardId(mallActAwardSet.getId()); + mallActWinRecord.setAwardName(mallActAwardSet.getAwardName()); + mallActWinRecord.setAwardType(mallActAwardSet.getAwardType()); + mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue()); + mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId()); + mallActWinRecordMapper.insert(mallActWinRecord); + + apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName()); + apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType()); + apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue()); + apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage()); + + if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){ + prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue())); + }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){ + commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue())); + } + } + } + }else{ + //中奖 + //获取最新的十条抽奖记录 + List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId); + if(CollUtil.isNotEmpty(records)){ + //中奖次数 + Integer count = 0; + for(MallActLuckdrawRecord mallActLuckdrawRecord : records){ + Integer status = mallActLuckdrawRecord.getStatus(); + if(MallActLuckdrawRecord.STATUS_ENABLE == status){ + count = count + 1; + } + } + if(new BigDecimal(count).compareTo(minProbability.multiply(new BigDecimal(10))) < 0){ + //获取活动下该类别的奖品 + List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType); + if(CollUtil.isEmpty(mallActAwardSets)){ + //抽奖记录 + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); + if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ + apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); + apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); + }else{ + apiMallAwardDetailsVo.setAwardName("未中奖"); + } + }else{ + List<MallActAwardSet> idList = new ArrayList(); + for(MallActAwardSet mallActAwardSet : mallActAwardSets){ + Integer awardTotal = mallActAwardSet.getAwardTotal(); + Integer awardCnt = mallActAwardSet.getAwardCnt(); + if(awardCnt < awardTotal){ + idList.add(mallActAwardSet); + } + } + MallActAwardSet mallActAwardSet = new MallActAwardSet(); + if(idList.size() <= 1){ + mallActAwardSet = idList.get(0); + }else{ + int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1); + mallActAwardSet = idList.get(randomIdIndex); + } + mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1); + mallActAwardSetMapper.updateById(mallActAwardSet); + + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + MallActWinRecord mallActWinRecord = new MallActWinRecord(); + mallActWinRecord.setMemberId(memberId); + mallActWinRecord.setActId(actId); + mallActWinRecord.setActName(mallActSet.getActName()); + mallActWinRecord.setAwardId(mallActAwardSet.getId()); + mallActWinRecord.setAwardName(mallActAwardSet.getAwardName()); + mallActWinRecord.setAwardType(mallActAwardSet.getAwardType()); + mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue()); + mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId()); + mallActWinRecordMapper.insert(mallActWinRecord); + + apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName()); + apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType()); + apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue()); + apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage()); + + if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){ + prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue())); + }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){ + commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue())); + } + } + }else{ + //抽奖记录 + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); + if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ + apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); + apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); + }else{ + apiMallAwardDetailsVo.setAwardName("未中奖"); + } + } + }else{ + //获取活动下该类别的奖品 + List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType); + if(CollUtil.isEmpty(mallActAwardSets)){ + //抽奖记录 + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); + if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ + apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); + apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); + }else{ + apiMallAwardDetailsVo.setAwardName("未中奖"); + } + }else{ + List<MallActAwardSet> idList = new ArrayList(); + for(MallActAwardSet mallActAwardSet : mallActAwardSets){ + Integer awardTotal = mallActAwardSet.getAwardTotal(); + Integer awardCnt = mallActAwardSet.getAwardCnt(); + if(awardCnt < awardTotal){ + idList.add(mallActAwardSet); + } + } + MallActAwardSet mallActAwardSet = new MallActAwardSet(); + if(idList.size() <= 1){ + mallActAwardSet = idList.get(0); + }else{ + int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1); + mallActAwardSet = idList.get(randomIdIndex); + } + mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1); + mallActAwardSetMapper.updateById(mallActAwardSet); + + MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); + mallActLuckdrawRecord.setActId(actId); + mallActLuckdrawRecord.setActName(mallActSet.getActName()); + mallActLuckdrawRecord.setMemberId(memberId); + mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); + mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE); + mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); + + MallActWinRecord mallActWinRecord = new MallActWinRecord(); + mallActWinRecord.setMemberId(memberId); + mallActWinRecord.setActId(actId); + mallActWinRecord.setActName(mallActSet.getActName()); + mallActWinRecord.setAwardId(mallActAwardSet.getId()); + mallActWinRecord.setAwardName(mallActAwardSet.getAwardName()); + mallActWinRecord.setAwardType(mallActAwardSet.getAwardType()); + mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue()); + mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId()); + mallActWinRecordMapper.insert(mallActWinRecord); + + apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName()); + apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType()); + apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue()); + apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage()); + + if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){ + prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue())); + }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){ + commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue())); + } + } + } + } + + //扣竞猜积分 + prizeScore = prizeScore.subtract(new BigDecimal(actScoreCnt)); + wallet.setPrizeScore(prizeScore); + wallet.setCommission(commission); + mallMemberWalletMapper.updateAmountWithVersion(wallet); + + System.out.println(apiMallAwardDetailsVo); } @Test -- Gitblit v1.9.1