| | |
| | | private final MallProductBuyMapper mallProductBuyMapper; |
| | | private final MallProductSellMapper mallProductSellMapper; |
| | | private final MallProductSellRecordMapper mallProductSellRecordMapper; |
| | | private final MallMemberAmountMapper mallMemberAmountMapper; |
| | | private final IMallMoneyFlowService iMallMoneyFlowService; |
| | | private final MallProductNftMapper mallProductNftMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | |
| | | @Override |
| | | public void fcmNFTExchangeMsg(String cnt) { |
| | | /** |
| | | * 销毁数量 按照比例销毁或者返利给节点 |
| | | */ |
| | | BigDecimal destoryCntTotal = new BigDecimal(cnt); |
| | | |
| | | DataDictionaryCustom totalPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_DESTORY_TOTAL_PERCENT.getType(), |
| | | DataDictionaryEnum.FCM_DESTORY_TOTAL_PERCENT.getCode() |
| | | ); |
| | | BigDecimal totalPercent = new BigDecimal(totalPercentDic.getValue()).multiply(AppContants.BASIC_PERCENT); |
| | | //销毁数量 |
| | | BigDecimal destoryCnt = new BigDecimal(cnt); |
| | | BigDecimal destoryCnt = destoryCntTotal.multiply(totalPercent).setScale(2,BigDecimal.ROUND_DOWN); |
| | | |
| | | DataDictionaryCustom pointPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_DESTORY_POINT_PERCENT.getType(), |
| | | DataDictionaryEnum.FCM_DESTORY_POINT_PERCENT.getCode() |
| | | ); |
| | | BigDecimal pointPercent = new BigDecimal(pointPercentDic.getValue()).multiply(AppContants.BASIC_PERCENT); |
| | | |
| | | //节点评分总数量 |
| | | BigDecimal pointCnt = destoryCntTotal.multiply(pointPercent).setScale(2,BigDecimal.ROUND_DOWN); |
| | | //给每个节点平分pointCnt。 |
| | | QueryWrapper<MallMember> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("partner",1); |
| | | List<MallMember> mallMembers = mallMemberMapper.selectList(queryWrapper); |
| | | if(CollUtil.isNotEmpty(mallMembers)){ |
| | | BigDecimal dividePointCnt = pointCnt.divide(new BigDecimal(mallMembers.size()), 2, BigDecimal.ROUND_DOWN); |
| | | for(MallMember mallMember : mallMembers){ |
| | | Long memberId = mallMember.getId(); |
| | | MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); |
| | | mallMemberAmount.setFcmCntAva(mallMemberAmount.getFcmCntAva().add(dividePointCnt)); |
| | | mallMemberAmountMapper.updateFcmCntAvaById(mallMemberAmount); |
| | | String orderNo = MallUtils.getOrderNum("JD"); |
| | | iMallMoneyFlowService.addMoneyFlow( |
| | | memberId, |
| | | dividePointCnt, |
| | | MoneyFlowTypeNewEnum.PERK_POINT.getValue(), |
| | | orderNo, |
| | | mallMember.getId(), |
| | | FlowTypeNewEnum.FCM_COIN.getValue(), |
| | | MoneyFlowTypeNewEnum.PERK_POINT.getDescrition()); |
| | | } |
| | | } |
| | | |
| | | //更新总销毁数量 |
| | | DataDictionaryCustom fcmDestoryTotalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_DESTORY_TOTAL.getType(), |
| | |
| | | BigDecimal nftCntTotalBuy = mallProductBuyRecords.stream().map(MallProductBuyRecord::getPickNftCnt).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | MallProductBuy mallProductBuy = mallProductBuyMapper.selectById(buyId); |
| | | if(nftCntTotalBuy.compareTo(mallProductBuy.getNftTotal()) >= 0){ |
| | | |
| | | Long productNftId = mallProductBuy.getProductNftId(); |
| | | MallProductNft mallProductNft = mallProductNftMapper.selectById(productNftId); |
| | | BigDecimal perkTime = mallProductNft.getPerkTime(); |
| | | BigDecimal totalPerk = perkTime.multiply(mallProductBuy.getNftTotal()).setScale(2, BigDecimal.ROUND_DOWN); |
| | | |
| | | mallProductBuy.setTotalPerk(totalPerk); |
| | | mallProductBuy.setState(ProductEnum.PRODUCT_BUY_SUCCESS.getValue()); |
| | | mallProductBuy.setPayTime(DateUtil.date()); |
| | | mallProductBuyMapper.updateById(mallProductBuy); |
| | | |
| | | } |
| | | } |
| | | } |