KKSU
2024-02-19 9b27517fe8051d1766bae57eb3c5adbbc40dbbd6
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -64,6 +64,8 @@
    private final MallProductBuyMapper mallProductBuyMapper;
    private final MallProductSellMapper mallProductSellMapper;
    private final MallProductSellRecordMapper mallProductSellRecordMapper;
    private final MallMemberAmountMapper mallMemberAmountMapper;
    private final IMallMoneyFlowService iMallMoneyFlowService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -1113,8 +1115,50 @@
    @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(),