mitao
2024-04-30 ab4ea7b8f10c9b66aed9c2ea161a08b25c3851a7
meiya-rest/src/main/java/com/sinata/rest/modular/mall/controller/MallOrderController.java
@@ -1,11 +1,10 @@
package com.sinata.rest.modular.mall.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sinata.common.enums.EnumCityRole;
import com.sinata.common.enums.EnumIsDelete;
import com.sinata.common.enums.mall.EnumMallOrderState;
import com.sinata.common.util.QRCodeUtils;
@@ -17,8 +16,17 @@
import com.sinata.rest.modular.mall.controller.vo.VoGoodsSku;
import com.sinata.rest.modular.mall.controller.vo.VoMallOrder;
import com.sinata.rest.modular.mall.controller.vo.VoMallOrderDetail;
import com.sinata.rest.modular.mall.model.*;
import com.sinata.rest.modular.mall.service.*;
import com.sinata.rest.modular.mall.controller.vo.VoMallOrderDetailGroupSpecGoods;
import com.sinata.rest.modular.mall.model.MallOrder;
import com.sinata.rest.modular.mall.model.MallOrderDetail;
import com.sinata.rest.modular.mall.model.MallOrderMain;
import com.sinata.rest.modular.mall.service.IMallGoodsService;
import com.sinata.rest.modular.mall.service.IMallGoodsSkuService;
import com.sinata.rest.modular.mall.service.IMallGroupSpecService;
import com.sinata.rest.modular.mall.service.IMallOrderDetailGroupSpecService;
import com.sinata.rest.modular.mall.service.IMallOrderDetailService;
import com.sinata.rest.modular.mall.service.IMallOrderMainService;
import com.sinata.rest.modular.mall.service.IMallOrderService;
import com.sinata.rest.modular.member.model.MemUser;
import com.sinata.rest.modular.member.model.MyCoupon;
import com.sinata.rest.modular.member.service.IMyCouponService;
@@ -27,16 +35,30 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 订单接口
@@ -76,6 +98,9 @@
    @Autowired
    private IMallGroupSpecService mallGroupSpecService;
    @Autowired
    private IMallOrderDetailGroupSpecService mallOrderDetailGroupSpecService;
    @GetMapping(value = "/list")
    @ApiOperation(value = "获取订单列表", notes = "获取订单列表")
    @ApiImplicitParams({
@@ -114,52 +139,63 @@
            @ApiImplicitParam(name = "orderNo", value = "订单编号", defaultValue = "1", dataType = "String", paramType = "query", required = true),
    })
    public ApiUtils<VoMallOrder> detail(String orderNo) {
        VoMallOrder order = orderService.getOrderByOrderNo(orderNo);
        if (order == null) {
        VoMallOrder o = orderService.getOrderByOrderNo(orderNo);
        if (o == null) {
            return ApiUtils.returnNG(null, "订单信息不存在");
        }
        wrapperVoMallOrder(orderNo, o);
        return ApiUtils.returnOK(o);
    }
    public VoMallOrder wrapperVoMallOrder(String orderNo, VoMallOrder voMallOrder) {
        try {
            order.setOrderCode(QRCodeUtils.crateQRCode(orderNo, 200, 200));
            voMallOrder.setOrderCode(QRCodeUtils.crateQRCode(orderNo, 200, 200));
        } catch (Exception e) {
            e.printStackTrace();
        }
        List<VoMallOrderDetail> detailList = orderService.getOrderDetailByOrderNoList(orderNo);
        for (VoMallOrderDetail od : detailList) {
            List<Integer> groupSpecGoodsIdList = new ArrayList<>();
            MallGoodsSku goodsSku = mallGoodsSkuService.getOne(
                    Wrappers.<MallGoodsSku>query().lambda()
                            .eq(MallGoodsSku::getGoodsId, od.getGoodsId())
                            .eq(MallGoodsSku::getMerchantId, 0)
                            .last("LIMIT 1")
            );
            if (goodsSku != null && StrUtil.isNotBlank(goodsSku.getSpecIds())) {
                String[] specIdArray = goodsSku.getSpecIds().split(",");
                List<MallGroupSpec> groupSpecList = mallGroupSpecService.list(
                        Wrappers.<MallGroupSpec>query().lambda()
                                .in(MallGroupSpec::getId, specIdArray)
                );
                for (MallGroupSpec mallGroupSpec : groupSpecList) {
                    groupSpecGoodsIdList.addAll(
                            Arrays.stream(mallGroupSpec.getGoodsIds().split(",")).map(Integer::parseInt).collect(Collectors.toList())
                    );
                }
            }
            if (groupSpecGoodsIdList != null && groupSpecGoodsIdList.size() > 0) {
                List<MallGoods> groupSpecGoodsList = mallGoodsService.list(
                        Wrappers.<MallGoods>query().lambda()
                                .in(MallGoods::getId, groupSpecGoodsIdList)
                );
                od.setGroupSpecGoodsList(groupSpecGoodsList);
            }
            List<VoMallOrderDetailGroupSpecGoods> voMallOrderDetailGroupSpecGoodsList = mallOrderDetailGroupSpecService.getListByOrderNo(null, od.getOrderDetailNo());
            od.setGroupSpecGoodsList(voMallOrderDetailGroupSpecGoodsList);
//            List<Integer> groupSpecGoodsIdList = new ArrayList<>();
//            MallGoodsSku goodsSku = mallGoodsSkuService.getById(od.getSkuId());
//            if (goodsSku != null && StrUtil.isNotBlank(goodsSku.getSpecIds())) {
//                String[] specIdArray = goodsSku.getSpecIds().split(",");
//                List<MallGroupSpec> groupSpecList = mallGroupSpecService.list(
//                        Wrappers.<MallGroupSpec>query().lambda()
//                                .in(MallGroupSpec::getId, specIdArray)
//                );
//                for (MallGroupSpec mallGroupSpec : groupSpecList) {
//                    groupSpecGoodsIdList.addAll(
//                            Arrays.stream(mallGroupSpec.getGoodsIds().split(",")).map(Integer::parseInt).collect(Collectors.toList())
//                    );
//                }
//            }
//            if (groupSpecGoodsIdList != null && groupSpecGoodsIdList.size() > 0) {
//                List<MallGoods> groupSpecGoodsList = mallGoodsService.list(
//                        Wrappers.<MallGoods>query().lambda()
//                                .in(MallGoods::getId, groupSpecGoodsIdList)
//                );
//                od.setGroupSpecGoodsList(groupSpecGoodsList);
//            }
        }
        order.setDetailList(detailList);
        return ApiUtils.returnOK(order);
        voMallOrder.setDetailList(detailList);
        return voMallOrder;
    }
    @GetMapping(value = "/getOrderDetailGroupSpecGoods")
    @ApiOperation(value = "获取订单套餐规格组商品列表", notes = "获取订单套餐规格组商品列表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "orderNo", value = "订单编号", dataType = "String", paramType = "query", required = true),
    })
    public ApiUtils<List<VoMallOrderDetailGroupSpecGoods>> getOrderDetailGroupSpecGoods(String orderNo) {
        return ApiUtils.returnOK(mallOrderDetailGroupSpecService.getListByOrderNo(orderNo, null));
    }
    @GetMapping(value = "/getSkuByMerchant")
    @ApiOperation(value = "获取门店sku信息", notes = "获取门店sku信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "skuIds", value = "商品Sku串(逗号分隔)", defaultValue = "1", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "skuIds", value = "商品Sku串(逗号分隔)", dataType = "String", paramType = "query", required = true),
            @ApiImplicitParam(name = "merchantId", value = "门店ID", defaultValue = "1", dataType = "String", paramType = "query", required = true),
    })
    public List<VoGoodsSku> getSkuByMerchant(String skuIds, Integer merchantId) {