| | |
| | | @Autowired |
| | | private IMallAchieveService mallAchieveService; |
| | | |
| | | @Autowired |
| | | private MallMemberStarBuyMapper mallMemberStarBuyMapper; |
| | | |
| | | @Test |
| | | public void achieveTest() { |
| | | List<MallOrderItem> items = mallOrderItemMapper.selectList(null); |
| | | for (MallOrderItem item : items) { |
| | | mallAchieveService.add(item.getId()); |
| | | List<MallMemberStarBuy> mallMemberStarBuys = mallMemberStarBuyMapper.selectByStatus(1); |
| | | if(CollUtil.isEmpty(mallMemberStarBuys)){ |
| | | return; |
| | | } |
| | | for(MallMemberStarBuy mallMemberStarBuy : mallMemberStarBuys){ |
| | | Long memberId = mallMemberStarBuy.getMemberId(); |
| | | MallMember mallMember = memberMapper.selectById(memberId); |
| | | //用户不存在跳出本次循环 |
| | | if(ObjectUtil.isEmpty(mallMember)){ |
| | | continue; |
| | | } |
| | | //返还总金额 |
| | | BigDecimal amount = mallMemberStarBuy.getAmount(); |
| | | //剩余返还总金额不足,跳出本次循环 |
| | | BigDecimal avaAmount = mallMemberStarBuy.getAvaAmount(); |
| | | if(avaAmount.compareTo(BigDecimal.ZERO) <= 0){ |
| | | continue; |
| | | } |
| | | //每次返还比例 |
| | | DataDictionaryCustom returnPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.RETURN_PERCENT.getType(), |
| | | DataDictionaryEnum.RETURN_PERCENT.getCode() |
| | | ); |
| | | String returnPercentStr = returnPercentDic.getValue(); |
| | | BigDecimal returnPercent = new BigDecimal(returnPercentStr).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN); |
| | | //本次返还金额 |
| | | BigDecimal returnAmount = amount.multiply(returnPercent).setScale(2,BigDecimal.ROUND_DOWN); |
| | | /** |
| | | * 如果本次返还金额大于剩余返还总金额 |
| | | */ |
| | | if(returnAmount.compareTo(avaAmount) >= 0){ |
| | | returnAmount = avaAmount; |
| | | avaAmount = BigDecimal.ZERO; |
| | | }else{ |
| | | avaAmount = avaAmount.subtract(returnAmount).setScale(2,BigDecimal.ROUND_DOWN); |
| | | } |
| | | //增加用户金额 |
| | | memberWalletService.addBalance(returnAmount,mallMember.getId()); |
| | | //生成流水记录 |
| | | Long subsidyAmountFlowId = mallMoneyFlowService.addMoneyFlow( |
| | | mallMember.getId(), |
| | | mallMemberStarBuy.getBuyCode(), |
| | | returnAmount, |
| | | MallMoneyFlowTypeEnum.RETURN_MARKET_STAR.getCode(), |
| | | MallMoneyFlow.STATUS_SUCCESS, |
| | | MallMoneyFlow.IS_RETURN_Y, |
| | | mallMember.getId(), |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | MallMoneyFlowTypeEnum.RETURN_MARKET_STAR.getName() |
| | | ); |
| | | //更新记录 |
| | | mallMemberStarBuyMapper.updateAvaAmountById(avaAmount,mallMemberStarBuy.getId()); |
| | | } |
| | | } |
| | | // |