xiaoyong931011
2023-07-20 6edbf12f8d6fc4d8da1161b77ea9703ecb3b0f64
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
@@ -50,6 +51,11 @@
    private final MallMemberMapper memberMapper;
    private final MallMemberWalletMapper mallMemberWalletMapper;
    private final RestTemplate restTemplate;
    private final MallOrderInfoMapper mallOrderInfoMapper;
    private final MallOrderItemMapper mallOrderItemMapper;
    private final MallGoodsMapper mallGoodsMapper;
    private final IApiMallMemberWalletService memberWalletService;
    private final MallRollPerkMapper mallRollPerkMapper;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -328,6 +334,74 @@
        return;
    }
    @Override
    public void orderGetMsg(String str) {
        /**
         * String str : orderId@amount
         */
        String[] split = StrUtil.split(str, "@");
        String orderId = split[0];
        String amount = split[1];
        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
        if(ObjectUtil.isEmpty(mallOrderInfo)){
            return;
        }
        Long memberId = mallOrderInfo.getMemberId();
        MallMember mallMember = memberMapper.selectById(memberId);
        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(mallOrderInfo.getId());
        if(CollUtil.isEmpty(mallOrderItemList)){
            return;
        }
        /**
         * 支付后同意验证
         *  1:是否送券
         *  2:是否送积分
         *  3:是否返利
         */
        //是否返利
        BigDecimal amountBigDecimal = new BigDecimal(StrUtil.isEmpty(amount) ? "0" : amount);
        if(BigDecimal.ZERO.compareTo(amountBigDecimal) < 0){
            if(ObjectUtil.isNotEmpty(mallMember.getReferrerId())){
                String referrerId = mallMember.getReferrerId();
                MallMember mallMemberParent = memberMapper.selectInfoByInviteId(referrerId);
                Long id = mallMemberParent.getId();
                DataDictionaryCustom returnPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                        DataDictionaryEnum.MEMBER_RETURN_PERCENT.getType(),
                        DataDictionaryEnum.MEMBER_RETURN_PERCENT.getCode()
                );
                String returnPercentStr = StrUtil.isNotEmpty(returnPercentDic.getValue()) ? "1" : returnPercentDic.getValue();
                BigDecimal returnPercent = new BigDecimal(returnPercentStr).divide(new BigDecimal(100), 2, BigDecimal.ROUND_DOWN);
                BigDecimal amountActual = amountBigDecimal.multiply(returnPercent).setScale(2, BigDecimal.ROUND_DOWN);
                memberWalletService.add(amountActual, id, "balance");
            }
        }
        for(MallOrderItem mallOrderItem : mallOrderItemList){
            Long goodsId = mallOrderItem.getGoodsId();
            MallGoods mallGoods = mallGoodsMapper.selectById(goodsId);
            if(ObjectUtil.isEmpty(mallGoods)){
                break;
            }
            //是否送券 1:是 2:否
            BigDecimal levelTwoPrice = mallGoods.getLevelTwoPrice();
            if(BigDecimal.ONE.compareTo(levelTwoPrice) == 0){
                MallRollPerk mallRollPerk = new MallRollPerk();
                mallRollPerk.setMemberId(memberId);
                mallRollPerk.setState(1);
                mallRollPerk.setRollId(Long.parseLong(mallGoods.getLevelThreePrice().toString()));
                mallRollPerkMapper.insert(mallRollPerk);
            }
            //赠送积分
            BigDecimal levelOnePrice = mallGoods.getLevelOnePrice();
            if(BigDecimal.ZERO.compareTo(levelOnePrice) <= 0){
                memberWalletService.add(levelOnePrice, memberId, "score");
            }
        }
    }
    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();