fix
Hentua
2024-01-29 959bd76c3dd17ff7cb0b492c7568b8b54c09dee2
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -23,6 +23,8 @@
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.WeixinServiceUtil;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService;
import cc.mrbird.febs.vip.service.IMallVipConfigService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
@@ -32,6 +34,7 @@
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -85,6 +88,9 @@
    private final MallElectronicFenceMapper mallElectronicFenceMapper;
    private final MallMemberCouponMapper mallMemberCouponMapper;
    private final MallGoodsCouponMapper mallGoodsCouponMapper;
    private final CouponGoodsMapper couponGoodsMapper;
    private final IMallVipConfigService mallVipConfigService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -144,6 +150,12 @@
                    orderItem.setSkuImage(mallGoods.getThumb());
                    orderItem.setState(1);
                    if (addOrderDto.getType() == 1) {
                        LambdaQueryWrapper<MallShoppingCart> delQuery = new LambdaQueryWrapper<>();
                        delQuery.eq(MallShoppingCart::getGoodsId, item.getSkuId())
                                .eq(MallShoppingCart::getMemberId, member.getId());
                        mallShoppingCartMapper.delete(delQuery);
                    }
                    total = total.add(amount);
                } else {
                    MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
@@ -197,10 +209,9 @@
                        if(1 != state){
                            throw new FebsException(mallMemberCoupon.getCouponName()+"无法使用");
                        }
                        Long goodsId = mallMemberCoupon.getGoodsId();
                        if(goodsId != sku.getGoodsId()){
                            throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName());
                        }
                        //卷是否和商品绑定
                        Long skuGoodsId = sku.getGoodsId();
                        Long couponId = mallMemberCoupon.getCouponId();
                        MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(mallMemberCoupon.getCouponId());
                        if(ObjectUtil.isEmpty(mallGoodsCoupon)){
                            throw new FebsException(mallGoodsCoupon.getName()+"无法使用");
@@ -209,11 +220,29 @@
                        if(2 != stateCoupon){
                            throw new FebsException(mallGoodsCoupon.getName()+"无法使用");
                        }
                        List<CouponGoods> couponGoods = couponGoodsMapper.selectByGoodIdAndCouponId(skuGoodsId, couponId);
                        if(ObjectUtil.isEmpty(couponGoods)){
                            throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName());
                        }
//                        Long goodsId = mallMemberCoupon.getGoodsId();
//                        if(goodsId != sku.getGoodsId()){
//                            throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName());
//                        }
                        BigDecimal costAmount = mallGoodsCoupon.getCostAmount();
                        BigDecimal realAmount = mallGoodsCoupon.getRealAmount();
                        if(amount.compareTo(costAmount) >= 0){
                            amount = amount.subtract(realAmount);
                            Integer type = mallGoodsCoupon.getType();
                            if(MallGoodsCoupon.TYPE_TWO == type){
                                BigDecimal divideTime = amount.divide(costAmount, 0, BigDecimal.ROUND_DOWN);//累计减免次数
                                BigDecimal multiply = divideTime.multiply(realAmount);//实际减免金额
                                amount = (amount.subtract(multiply).compareTo(BigDecimal.ZERO) > 0 ? amount.subtract(multiply) : BigDecimal.ZERO);
                            }
                            if(MallGoodsCoupon.TYPE_ONE == type){
                                amount = (amount.subtract(realAmount).compareTo(BigDecimal.ZERO) > 0 ? amount.subtract(realAmount) : BigDecimal.ZERO);
                            }
                            orderItem.setMemberCouponId(memberCouponId);
                            mallMemberCoupon.setState(2);
                            mallMemberCouponMapper.updateById(mallMemberCoupon);
                        }
                    }
                    orderItem.setAmount(amount);
@@ -224,6 +253,13 @@
                    orderItem.setGoodsName(sku.getGoodsName());
                    orderItem.setSkuId(sku.getId());
                    orderItem.setState(1);
                    if(ObjectUtil.isNotEmpty(member.getReferrerId())){
                        orderItem.setMemberInviteId(member.getReferrerId());
                    }
                    if(ObjectUtil.isNotEmpty(addOrderDto.getMemberInviteId())){
                        orderItem.setMemberInviteId(addOrderDto.getMemberInviteId());
                    }
                    orderItem.setStyleName(sku.getStyleName());
                    orderItem.setSkuName(sku.getSkuName());
                    orderItem.setSkuImage(sku.getSkuImage());
@@ -265,6 +301,12 @@
        return orderInfo.getId();
    }
    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal(980);
        BigDecimal divide = bigDecimal.divide(new BigDecimal(100), 0, BigDecimal.ROUND_DOWN);
        System.out.println(divide);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -283,7 +325,11 @@
        orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF);
        this.baseMapper.updateById(orderInfo);
        if (orderInfo.getOrderType() == 2) {
//            mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), orderInfo.getOrderNo(),  FlowTypeEnum.PRIZE_SCORE.getValue());
//            memberWalletService.add(orderInfo.getAmount(), member.getId(), "prizeScore");
            return;
        }
        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId());
        if(CollUtil.isNotEmpty(mallOrderItemList)){
@@ -306,6 +352,12 @@
                Integer skuResult = mallGoodsSkuMapper.updateStockAndVolumeBySkuId(sku.getId(),mallOrderItem.getCnt());
                if(1 != skuResult){
                    throw new FebsException(sku.getSkuName() + "库存不足");
                }
                Long memberCouponId = mallOrderItem.getMemberCouponId();
                MallMemberCoupon mallMemberCoupon = mallMemberCouponMapper.selectById(memberCouponId);
                if(ObjectUtil.isNotEmpty(mallMemberCoupon)){
                    mallMemberCoupon.setState(1);
                    mallMemberCouponMapper.updateById(mallMemberCoupon);
                }
            }
        }
@@ -414,7 +466,7 @@
                orderInfo.setPayTime(new Date());
                orderInfo.setPayResult("1");
                mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(),  FlowTypeEnum.PRIZE_SCORE.getValue());
                mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), ScoreFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(),  FlowTypeEnum.PRIZE_SCORE.getValue(), null, 2);
                break;
            default:
@@ -530,6 +582,7 @@
        orderInfo.setReceivingTime(new Date());
        this.baseMapper.updateById(orderInfo);
        agentProducer.sendGetScoreMsg(orderInfo.getId());
        //生成一条团长提成记录
//        Long orderInfoId = orderInfo.getId();
//        List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId);
@@ -899,10 +952,6 @@
        }
        return new FebsResponse().success();
    }
    public static void main(String[] args) {
        System.out.print(AgentLevelEnum.ZERO_LEVEL.name());
    }
}