| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.jline.utils.Log; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.web3j.utils.Convert; |
| | |
| | | * 新增一条业绩 |
| | | */ |
| | | MallAchieveRecord mallAchieveRecord = new MallAchieveRecord( |
| | | memberId,amount,amount,DateUtil.date(),orderId,1,mallOrderInfo.getPayTime() |
| | | memberId,donateScore,donateScore,amount,amount,DateUtil.date(),orderId,1,mallOrderInfo.getPayTime() |
| | | ); |
| | | mallAchieveRecordMapper.insert(mallAchieveRecord); |
| | | |
| | |
| | | } |
| | | Long perkMemberId = dappMemberEntity.getId(); |
| | | //获取当前用户所有进行中的业绩释放 |
| | | List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId); |
| | | // List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(perkMemberId); |
| | | List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(perkMemberId); |
| | | |
| | | if(CollUtil.isEmpty(mallAchieveRecords)){ |
| | | continue; |
| | |
| | | } |
| | | for(DappFundFlowEntity dappFundFlowEntity : dappFundFlowEntities){ |
| | | Long memberId = dappFundFlowEntity.getMemberId(); |
| | | if(memberId == 2852L){ |
| | | Log.info("1"); |
| | | } |
| | | //当日预期总收益 |
| | | BigDecimal amount = dappFundFlowEntity.getAmount(); |
| | | if(BigDecimal.ZERO.compareTo(amount) >= 0){ |
| | |
| | | } |
| | | //当日预期总收益 |
| | | BigDecimal amountMagic = amount; |
| | | List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId); |
| | | if(CollUtil.isEmpty(mallAchieveRecords)){ |
| | | // List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(memberId); |
| | | List<MallAchieveRecord> mallAchieveRecordsScore = mallAchieveRecordMapper.selectListByMemberIdAndScore(memberId); |
| | | if(CollUtil.isEmpty(mallAchieveRecordsScore)){ |
| | | |
| | | BigDecimal localTotalAchieve = amount; |
| | | /** |
| | |
| | | DappWalletMineEntity dappWalletMineEntity = dappWalletMineDao.selectByMemberId(memberId); |
| | | BigDecimal totalScore = dappWalletMineEntity.getTotalAmount(); |
| | | BigDecimal availableScore = dappWalletMineEntity.getAvailableAmount(); |
| | | |
| | | if(BigDecimal.ZERO.compareTo(totalScore) >= 0){ |
| | | continue; |
| | | } |
| | | if(localTotalAchieve.compareTo(totalScore) >= 0){ |
| | | localTotalAchieve = totalScore; |
| | | //当实际获取大于用户的赠送积分,将用户更新为未激活 |
| | |
| | | set.add(dappMemberEntity); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | //实际获取总收益 |
| | | BigDecimal localTotalAchieve = BigDecimal.ZERO; |
| | | BigDecimal totalAchieve = mallAchieveRecords.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal totalAchieve = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal totalAchieveCostAmount = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getCostAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal totalScoreAva = mallAchieveRecordsScore.stream().map(MallAchieveRecord::getScore).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | |
| | | //用户每日获取的最大值 |
| | | DataDictionaryCustom maxReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | |
| | | ); |
| | | BigDecimal maxRelease = new BigDecimal(ObjectUtil.isEmpty(maxReleaseDic) ? "1" : maxReleaseDic.getValue()); |
| | | //用户每日获取的最大值 |
| | | BigDecimal maxReleaseMember = totalAchieve.multiply(maxRelease).setScale(2, BigDecimal.ROUND_DOWN); |
| | | BigDecimal maxReleaseMember = totalAchieveCostAmount.multiply(maxRelease).setScale(2, BigDecimal.ROUND_DOWN); |
| | | if(amount.compareTo(maxReleaseMember) > 0){ |
| | | amount = maxReleaseMember; |
| | | } |
| | | //当日获取总收益大于总业绩 |
| | | if(amount.compareTo(totalAchieve) >= 0){ |
| | | for(MallAchieveRecord memberAchieve : mallAchieveRecords){ |
| | | // if(amount.compareTo(totalAchieve) >= 0){ |
| | | if(amount.compareTo(totalScoreAva) >= 0){ |
| | | for(MallAchieveRecord memberAchieve : mallAchieveRecordsScore){ |
| | | memberAchieve.setIsNormal(2); |
| | | memberAchieve.setAmount(BigDecimal.ZERO); |
| | | memberAchieve.setScore(BigDecimal.ZERO); |
| | | mallAchieveRecordMapper.updateById(memberAchieve); |
| | | } |
| | | localTotalAchieve = totalAchieve; |
| | | amount = amount.subtract(totalAchieve); |
| | | // localTotalAchieve = totalAchieve; |
| | | // amount = amount.subtract(totalAchieve); |
| | | localTotalAchieve = totalScoreAva; |
| | | amount = amount.subtract(totalScoreAva); |
| | | }else{ |
| | | /** |
| | | * |
| | |
| | | * amount 0 0 |
| | | * |
| | | */ |
| | | for(MallAchieveRecord memberAchieve : mallAchieveRecords){ |
| | | for(MallAchieveRecord memberAchieve : mallAchieveRecordsScore){ |
| | | BigDecimal achieveAmount = memberAchieve.getAmount(); |
| | | if(BigDecimal.ZERO.compareTo(amount) >= 0){ |
| | | BigDecimal achieveScoreAva = memberAchieve.getScore(); |
| | | if(BigDecimal.ZERO.compareTo(achieveScoreAva) >= 0){ |
| | | break; |
| | | }else if(amount.compareTo(achieveAmount) < 0){ |
| | | memberAchieve.setAmount(achieveAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | }else if(amount.compareTo(achieveScoreAva) < 0){ |
| | | if(BigDecimal.ZERO.compareTo(achieveAmount.subtract(amount)) >= 0){ |
| | | memberAchieve.setAmount(BigDecimal.ZERO); |
| | | }else{ |
| | | memberAchieve.setAmount(achieveAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | memberAchieve.setScore(achieveScoreAva.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | mallAchieveRecordMapper.updateById(memberAchieve); |
| | | localTotalAchieve = localTotalAchieve.add(amount); |
| | | amount = BigDecimal.ZERO; |
| | |
| | | }else{ |
| | | memberAchieve.setIsNormal(2); |
| | | memberAchieve.setAmount(BigDecimal.ZERO); |
| | | memberAchieve.setScore(BigDecimal.ZERO); |
| | | mallAchieveRecordMapper.updateById(memberAchieve); |
| | | localTotalAchieve = localTotalAchieve.add(achieveAmount); |
| | | amount = amount.subtract(achieveAmount); |
| | | localTotalAchieve = localTotalAchieve.add(achieveScoreAva); |
| | | amount = amount.subtract(achieveScoreAva); |
| | | } |
| | | } |
| | | } |
| | |
| | | return; |
| | | } |
| | | for(DappMemberEntity dappMemberEntity : dappMemberEntities){ |
| | | if(dappMemberEntity.getId() == 2852){ |
| | | Log.info("1"); |
| | | } |
| | | /** |
| | | * 每个人的第一次入单之后的业绩不一样 |
| | | */ |
| | | List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId()); |
| | | // List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberId(dappMemberEntity.getId()); |
| | | List<MallAchieveRecord> mallAchieveRecords = mallAchieveRecordMapper.selectListByMemberIdAndScore(dappMemberEntity.getId()); |
| | | if(CollUtil.isEmpty(mallAchieveRecords)){ |
| | | continue; |
| | | } |