mitao
2024-06-06 3d2b51ea4520533de5e78f88dddf5b5c7dce4247
meiya-rest/src/main/java/com/sinata/rest/modular/mall/service/impl/MallOrderServiceImpl.java
@@ -9,6 +9,8 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sinata.common.enums.EnumMemberGrade;
import com.sinata.common.enums.EnumPayType;
import com.sinata.common.enums.EnumUserBankDetailDoneType;
@@ -147,6 +149,12 @@
    @Override
    public Object createOrder(List<BodyMallOrder> list) {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            log.info("createOrder:{}", objectMapper.writeValueAsString(list));
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
        // 持久化数据组
        List<MallOrder> orderList = new ArrayList<>();
        List<MallOrderDetail> orderDetailList = new ArrayList<>();
@@ -182,6 +190,10 @@
            order.setIdCard(body.getIdCard());
            order.setNumber(body.getNumber());
            order.setState(EnumMallOrderState.WAIT_PAY.index);
            if (Objects.isNull(order.getCityCode())) {
                AreaCity city = areaCityMapper.getCityByMerchantId(body.getMerchantId());
                Optional.ofNullable(city).ifPresent(c ->order.setCityCode(c.getCityCode()));
            }
            // 生成订单编号
            String generateOrderNo = dailyIncrementIdGenerator.generateId();
            order.setOrderNo(generateOrderNo);
@@ -242,8 +254,9 @@
                        if(skuVo.getStock() < boSku.getGoodsNum()) {
                            return ApiUtils.returnNG(null, "商品:" + skuVo.getGoodsName() + ",库存不足");
                        }
                        log.info("商品:{},减去库存:{}",skuVo,boSku.getGoodsNum());
                        // 减去库存
                        goodsSkuService.updateStock(skuVo.getSkuId(), -boSku.getGoodsNum());
                        goodsSkuService.updateStock(skuVo.getId(), -1 * boSku.getGoodsNum());
                        // 商品价格
                        BigDecimal sellCost;
@@ -253,7 +266,7 @@
                                // 美天销售价
                                sellCost = skuVo.getPriceSale();
                            } else {
                                if (user != null && user.getMemberGradeId() != EnumMemberGrade.G_1.index) {
                                if (user != null && user.getMemberGradeId() != EnumMemberGrade.G_1.index && EnumMemberGrade.G_2.index != user.getMemberGradeId()) {
                                    // 会员价
                                    sellCost = skuVo.getPriceMember();
                                } else {
@@ -270,7 +283,6 @@
                                // 销售价
                                sellCost = skuVo.getPriceMerchant();
                            }
                            // 查询套餐规格组ID
                            MallGroupSpec mallGroupSpec = mallGroupSpecService.getById(skuVo.getSpecIds());
                            List<GroupSpecGoodsSkuJsonVo> groupSpecGoodsSkuJsonVoList = JSONUtil.parseArray(mallGroupSpec.getGoodsSkuJson()).toList(GroupSpecGoodsSkuJsonVo.class);
@@ -535,11 +547,13 @@
                    .select(MallOrderDetail::getSkuId, MallOrderDetail::getGoodsNum)
                    .eq(MallOrderDetail::getOrderNo, orderNo);
            List<MallOrderDetail> orderDetails = orderDetailService.list(orderDetailLambdaQueryWrapper);
            log.info("-----------------------开始退回库存--------------------");
            log.info("orderDetails:{}", JSON.toJSONString(orderDetails));
            for (MallOrderDetail od : orderDetails) {
                // 增加库存
                goodsSkuService.updateStock(od.getSkuId(), od.getGoodsNum());
            }
            log.info("-----------------------退回库存结束--------------------");
            if (order.getCouponId() != null && order.getCouponId() != 0) {
                // 退还优惠券
                myCouponService.updateUseCoupon(order.getUserId(), order.getCouponId(), 0);