KKSU
2024-03-18 a580b5a79d7d00872455d5d12c4e15b0aaac224c
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -315,6 +315,12 @@
        BigDecimal totalPerk = mallProductBuyMapper.selectTotalPerkByMemberId(mallMember.getId());
        mallMemberVo.setTotalPerk(totalPerk);
        DataDictionaryCustom insideNFTPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getType(),
                DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getCode()
        );
        mallMemberVo.setInsideNFTPercent(insideNFTPercentDic.getValue());
        return new FebsResponse().success().data(mallMemberVo);
    }
@@ -573,9 +579,16 @@
                    MoneyFlowTypeNewEnum.TOKEN_INSIDE_IN.getDescrition());
        }
        if(3 == type){
            DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getType(),
                    DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getCode()
            );
            BigDecimal feePercent = new BigDecimal("0.01").multiply(new BigDecimal(dataDictionaryCustom.getValue()));
            if (amount.compareTo(mallMemberAmountLogin.getTrendsNft()) > 0) {
                throw new FebsException("卡牌不足");
            }
            BigDecimal fee = amount.multiply(feePercent).setScale(2,BigDecimal.ROUND_DOWN);
            BigDecimal amountReal = amount.subtract(fee);
            mallMemberAmountLogin.setTrendsNft(mallMemberAmountLogin.getTrendsNft().subtract(amount));
            mallMemberAmountMapper.updateTrendsNftById(mallMemberAmountLogin);
            String orderNo = MallUtils.getOrderNum("NFT");
@@ -587,11 +600,19 @@
                    mallMember.getId(),
                    FlowTypeNewEnum.NFT.getValue(),
                    MoneyFlowTypeNewEnum.NFT_TRANS_OUT.getDescrition());
            mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(amount));
            mallMoneyFlowService.addMoneyFlow(
                    loginMember.getId(),
                    fee.negate(),
                    MoneyFlowTypeNewEnum.NFT_TRANS_OUT_FEE.getValue(),
                    orderNo,
                    mallMember.getId(),
                    FlowTypeNewEnum.NFT.getValue(),
                    MoneyFlowTypeNewEnum.NFT_TRANS_OUT_FEE.getDescrition());
            mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(amountReal));
            mallMemberAmountMapper.updateTrendsNftById(mallMemberAmount);
            mallMoneyFlowService.addMoneyFlow(
                    mallMember.getId(),
                    amount,
                    amountReal,
                    MoneyFlowTypeNewEnum.NFT_TRANS_IN.getValue(),
                    orderNo,
                    loginMember.getId(),