Pu Zhibing
2025-03-26 cbf2486983b77a27af9968bbb362cb8d43789115
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -5,10 +5,14 @@
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.feignClient.UserAddressClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.UserAddress;
import com.ruoyi.common.core.constant.ExpressCompanyMap;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.core.web.page.TableDataInfo;
@@ -24,17 +28,17 @@
import com.ruoyi.order.util.vo.MapTrackKD100Vo;
import com.ruoyi.order.vo.*;
import com.ruoyi.other.api.domain.BaseSetting;
import com.ruoyi.other.api.domain.Goods;
import com.ruoyi.other.api.feignClient.BaseSettingClient;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.feignClient.SysUserClient;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
@@ -47,7 +51,7 @@
/**
 * <p>
 *  前端控制器
 * 前端控制器
 * </p>
 *
 * @author luodangjia
@@ -73,6 +77,8 @@
    private SysUserClient sysUserClient;
    @Resource
    private RefundPassService refundPassService;
    @Resource
    private AppUserClient appUserClient;
    /**
@@ -83,7 +89,7 @@
            @ApiImplicitParam(value = "订单状态", name = "status", required = true, dataType = "int"),
    })
    @GetMapping("/getMyOrderList")
    public TableDataInfo<OrderVO> getMyOrderList(@ApiParam("订单状态") Integer status){
    public TableDataInfo<OrderVO> getMyOrderList(@ApiParam("订单状态") Integer status) {
        startPage();
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        return getDataTable(orderService.selectOrderListByUserId(status, loginUserApplet.getUserid()));
@@ -93,7 +99,7 @@
     * 通过订单ids获取订单列表
     */
    @PostMapping("/getOrderListByIds")
    public R<List<Order>> getOrderListByIds(@RequestBody List<Long> ids){
    public R<List<Order>> getOrderListByIds(@RequestBody List<Long> ids) {
        return R.ok(orderService.listByIds(ids));
    }
@@ -105,7 +111,7 @@
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
    })
    @GetMapping("/detail/{orderId}")
    public R<OrderDetailVO> detail(@PathVariable("orderId") Long orderId){
    public R<OrderDetailVO> detail(@PathVariable("orderId") Long orderId) {
        return R.ok(orderService.getOrderDetail(orderId));
    }
@@ -114,10 +120,10 @@
     */
    @ApiOperation(value = "扫码校验", tags = {"小程序-个人中心-门店管理"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "分享id", name = "shareId", required = true, dataType = "int", paramType="query"),
            @ApiImplicitParam(value = "分享id", name = "shareId", required = true, dataType = "int", paramType = "query"),
    })
    @GetMapping("/check/{orderNumber}/{shopId}")
    public R<Boolean> check(@PathVariable("orderNumber") String orderNumber, @PathVariable("shopId") Integer shopId){
    public R<Boolean> check(@PathVariable("orderNumber") String orderNumber, @PathVariable("shopId") Integer shopId) {
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        Order order = orderService.getOne(new LambdaQueryWrapper<Order>()
                .eq(Order::getOrderNumber, orderNumber));
@@ -132,7 +138,7 @@
            @ApiImplicitParam(value = "订单id", name = "id", required = true, dataType = "String"),
    })
    @GetMapping("/writeOff")
    public R<Void> writeOff(String code, Integer shopId, String technicianId){
    public R<Void> writeOff(String code, Integer shopId, String technicianId) {
        orderService.writeOff(code, shopId, technicianId);
        return R.ok();
    }
@@ -145,7 +151,7 @@
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
    })
    @GetMapping("/cancel/{orderId}")
    public R cancel(@PathVariable("orderId") Long orderId){
    public R cancel(@PathVariable("orderId") Long orderId) {
        return orderService.cancel(orderId);
    }
@@ -157,7 +163,7 @@
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
    })
    @GetMapping("/confirm/{orderId}")
    public R<Void> confirm(@PathVariable("orderId") Long orderId){
    public R<Void> confirm(@PathVariable("orderId") Long orderId) {
        R<BaseSetting> baseSettingR = baseSettingClient.getBaseSetting(5);
        if (R.isError(baseSettingR)) {
            return R.fail("售后设置获取失败");
@@ -171,7 +177,6 @@
        Long days = jsonObject.getLong("days");
        Order order = orderService.getById(orderId);
        order.setAfterSaleTime(LocalDateTime.now().plusDays(days));
        order.setIsCommission(0);
        order.setOrderStatus(OrderStatus.COMPLETED.getCode());
        orderService.updateById(order);
        return R.ok();
@@ -185,9 +190,9 @@
            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
    })
    @GetMapping("/changeAddress")
    public R<Void> changeAddress(@RequestParam("orderId") Long orderId, @RequestParam("addressId") Long addressId){
    public R<Void> changeAddress(@RequestParam("orderId") Long orderId, @RequestParam("addressId") Long addressId) {
        R<UserAddress> userAddressR = addressClient.getUserAddressById(addressId);
        if(R.isError(userAddressR)){
        if (R.isError(userAddressR)) {
            return R.fail("收货地址不存在");
        }
        UserAddress userAddress = userAddressR.getData();
@@ -206,7 +211,7 @@
            @ApiImplicitParam(value = "订单对象", name = "order", required = true, dataType = "Order"),
    })
    @PostMapping("/updateOrderStatus")
    public R<Void> updateOrderStatus(@RequestBody Order order){
    public R<Void> updateOrderStatus(@RequestBody Order order) {
        Order order1 = orderService.getById(order.getId());
        order1.setOrderStatus(order.getOrderStatus());
        order1.setOldOrderStatus(order.getOldOrderStatus());
@@ -219,7 +224,7 @@
     * 预约技师
     */
    @PostMapping("/subscribe")
    public R<Void> subscribe(@RequestParam(value = "id", required = false) Long id ,@RequestParam(value = "technicianId", required = false) Integer technicianId){
    public R<Void> subscribe(@RequestParam(value = "id", required = false) Long id, @RequestParam(value = "technicianId", required = false) Integer technicianId) {
        Order order = orderService.getById(id);
        order.setTechnicianId(technicianId);
        orderService.updateById(order);
@@ -227,62 +232,78 @@
    }
    @PostMapping("/getLastOrder")
    public R<Order> getLastOrder(@RequestParam("appUserId") Long appUserId){
    public R<Order> getLastOrder(@RequestParam("appUserId") Long appUserId) {
        Order one = orderService.lambdaQuery().eq(Order::getAppUserId, appUserId).orderByDesc(Order::getCreateTime).last("limit 1").one();
        return R.ok(one);
    }
    @PostMapping("/byUserId")
    public R<List<Order>> byUserId(@RequestParam("appUserId") Long appUserId){
        return R.ok(orderService.lambdaQuery().eq(Order::getAppUserId, appUserId).list());
    }
    @PostMapping("/byShopId")
    public R<List<Order>> byShopId(@RequestParam("shopId") Integer shopId){
        return R.ok(orderService.lambdaQuery().isNotNull(Order::getEndTime).eq(Order::getShopId, shopId).in(Order::getOrderStatus,4,7,8).list());
    public R<List<Order>> byUserId(@RequestParam("appUserId") Long appUserId, @RequestParam("shopId") Integer shopId) {
        List<Order> list = orderService.lambdaQuery()
                .eq(Order::getAppUserId, appUserId)
                .eq(null != shopId && -1 != shopId, Order::getShopId, shopId)
                .eq(Order::getPayStatus, 2)
                .isNull(Order::getRefundStatus)
                .eq(Order::getDelFlag, 0)
                .notIn(Order::getOrderStatus, 5, 6).list();
        return R.ok(list);
    }
    @PostMapping("/byShopId")
    public R<List<Order>> byShopId(@RequestParam("shopId") Integer shopId) {
        return R.ok(orderService.lambdaQuery().isNotNull(Order::getEndTime).eq(Order::getShopId, shopId).list());
    }
    @PostMapping("/byShopIdAndUserId")
    public R<List<Order>> byShopIdAndUserId(@RequestParam("appUserId") Long appUserId, @RequestParam("shopId") Integer shopId) {
        List<Order> list = orderService.lambdaQuery().isNotNull(Order::getEndTime)
                .eq(null != shopId && -1 != shopId, Order::getShopId, shopId)
                .eq(Order::getAppUserId, appUserId)
                .eq(Order::getPayStatus, 2)
                .isNull(Order::getRefundStatus)
                .eq(Order::getDelFlag, 0)
                .notIn(Order::getOrderStatus, 5, 6).list();
        return R.ok(list);
    }
    @PostMapping("/confirmDelivery")
    @ApiOperation(value = "已发货操作", tags = {"管理后台-订单管理"})
    public R confirmDelivery(@RequestBody ConfirmDelivery confirmDelivery){
    public R confirmDelivery(@RequestBody ConfirmDelivery confirmDelivery) {
        return orderService.confirmDelivery(confirmDelivery);
    }
    @PutMapping("/cancelOrder/{orderId}")
    @ApiOperation(value = "取消订单操作", tags = {"管理后台-订单管理"})
    public R cancelOrder(@PathVariable("orderId") Long orderId){
    public R cancelOrder(@PathVariable("orderId") Long orderId) {
        return orderService.cancelOrder(orderId);
    }
    @PutMapping("/receivingOperation/{orderId}")
    @ApiOperation(value = "收货操作", tags = {"管理后台-订单管理"})
    public R receivingOperation(@PathVariable("orderId") Long orderId){
    public R receivingOperation(@PathVariable("orderId") Long orderId) {
        return orderService.receivingOperation(orderId);
    }
    @GetMapping("/getOrderInfo/{orderId}")
    @ApiOperation(value = "查询订单详情", tags = {"管理后台-订单管理"})
    public R<OrderInfoVo> getOrderInfo(@PathVariable("orderId") Long orderId){
    public R<OrderInfoVo> getOrderInfo(@PathVariable("orderId") Long orderId) {
        OrderInfoVo orderInfo = orderService.getOrderInfo(orderId);
        RefundPass one = refundPassService.getOne(new LambdaQueryWrapper<RefundPass>().eq(RefundPass::getOrderId, orderId)
                .eq(RefundPass::getDelFlag, 0).last(" order by create_time desc limit 0,1"));
        if (one!=null){
        if (one != null) {
            orderInfo.setRefundPassId(one.getId().toString());
        }
        return R.ok(orderInfo);
    }
    @GetMapping("/getOrderPageList")
//    @ApiOperation(value = "获取订单列表", tags = {"管理后台-订单管理", "门店后台-订单管理"})
    public R<PageInfo<OrderPageListVo>> getOrderPageList(OrderPageList orderPageList){
    public R<PageInfo<OrderPageListVo>> getOrderPageList(OrderPageList orderPageList) {
        return R.ok(orderService.getOrderPageList(orderPageList));
    }
@@ -292,16 +313,21 @@
    @GetMapping("/getOrderStatistics")
    @ApiOperation(value = "订单统计", tags = {"管理后台-首页统计"})
    public R<OrderStatistics> getOrderStatistics(@RequestParam("startTime") String startTime,
                                                 @RequestParam("endTime") String endTime){
                                                 @RequestParam("endTime") String endTime) {
        Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
        List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>()
                .eq(sysUser.getRoleType() == 2, Order::getShopId, sysUser.getObjectId())
        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<Order>()
                .in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 7, 8))
                .eq(Order::getPayStatus, 2)
                .eq(Order::getDelFlag, 0)
                .between(Order::getCreateTime, LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
                .orderByAsc(Order::getCreateTime));
                .orderByAsc(Order::getCreateTime);
        if(sysUser.getRoleType() == 2){
            //门店只拥有服务订单和自提商品订单
            wrapper.eq(Order::getShopId, sysUser.getObjectId()).eq(Order::getOrderType, 1).or().eq(Order::getOrderType, 2).eq(Order::getDistributionMode, 1);
        }
        List<Order> orderList = orderService.list(wrapper);
        Map<String, List<Order>> map = orderList.stream()
                .collect(Collectors.groupingBy(
                        item -> item.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),
@@ -321,14 +347,14 @@
            for (Order order : value) {
                if (order.getOrderType().equals(1)) {
                    serviceTotal++;
                    serviceTotalMoney = serviceTotalMoney.add(order.getPaymentAmount());
                    serviceTotalMoney = serviceTotalMoney.add(order.getTotalAmount());
                    total++;
                    totalMoney = totalMoney.add(order.getPaymentAmount());
                }else if (order.getOrderType().equals(2) && 1 == order.getDistributionMode()){
                    totalMoney = totalMoney.add(order.getTotalAmount());
                } else if (order.getOrderType().equals(2)) {
                    singleTotal++;
                    singleTotalMoney = singleTotalMoney.add(order.getPaymentAmount());
                    singleTotalMoney = singleTotalMoney.add(order.getTotalAmount());
                    total++;
                    totalMoney = totalMoney.add(order.getPaymentAmount());
                    totalMoney = totalMoney.add(order.getTotalAmount());
                }
            }
            orderStatisticsDetail.setDate(key);
@@ -342,11 +368,11 @@
            orderStatisticsDetails.add(orderStatisticsDetail);
        });
        Integer shopId = null;
        if(sysUser.getRoleType() == 2){
        if (sysUser.getRoleType() == 2) {
            shopId = sysUser.getObjectId();
        }
        OrderStatistics orderStatistics = orderMapper.getOrderStatistics(startTime, endTime, shopId);
        if(null != orderStatistics){
        if (null != orderStatistics) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            List<OrderStatisticsDetail> sortedDetails = orderStatisticsDetails.stream()
                    .sorted(Comparator.comparing((OrderStatisticsDetail detail) -> {
@@ -355,7 +381,7 @@
                        } catch (ParseException e) {
                            throw new RuntimeException(e);
                        }
                    }).reversed())
                    }))
                    .collect(Collectors.toList());
            orderStatistics.setOrderStatisticsDetailList(sortedDetails);
        }
@@ -365,15 +391,16 @@
    /**
     * 订单取消支付回退
     *
     * @param refundCallbackResult
     * @param response
     * @return
     */
    @ResponseBody
    @GetMapping("/refundPayMoneyCallback")
    public void refundPayMoneyCallback(RefundCallbackResult refundCallbackResult, HttpServletResponse response){
    public void refundPayMoneyCallback(RefundCallbackResult refundCallbackResult, HttpServletResponse response) {
        R callback = orderService.refundPayMoneyCallback(refundCallbackResult);
        if(callback.getCode() == 200){
        if (callback.getCode() == 200) {
            response.setStatus(200);
            PrintWriter out = null;
            try {
@@ -390,14 +417,15 @@
    /**
     * 取消订单快递费回退
     *
     * @param refundCallbackResult
     * @param response
     */
    @ResponseBody
    @GetMapping("/refundExpressPayMoneyCallback")
    public void refundExpressPayMoneyCallback(RefundCallbackResult refundCallbackResult, HttpServletResponse response){
    public void refundExpressPayMoneyCallback(RefundCallbackResult refundCallbackResult, HttpServletResponse response) {
        R callback = orderService.refundExpressPayMoneyCallback(refundCallbackResult);
        if(callback.getCode() == 200){
        if (callback.getCode() == 200) {
            response.setStatus(200);
            PrintWriter out = null;
            try {
@@ -414,55 +442,74 @@
    /**
     * 获取商品销售数量
     *
     * @param goodsId
     * @return
     */
    @PostMapping("/getGoodsSaleNum")
    public R<Integer> getGoodsSaleNum(@RequestParam("goodsId") Integer goodsId, @RequestParam("type") Integer type){
    public R<Integer> getGoodsSaleNum(@RequestParam("goodsId") Integer goodsId, @RequestParam("type") Integer type) {
        Integer goodsSaleNum = orderService.getGoodsSaleNum(goodsId, type, null);
        return R.ok(goodsSaleNum);
    }
    /**
     * 获取门店销售订单数量
     * @param shopId    门店id
     * @param type      1:服务订单,2:单品订单
     *
     * @param shopId 门店id
     * @param type   1:服务订单,2:单品订单
     * @return
     */
    @PostMapping("/getShopSaleNum")
    public R<Integer> getShopSaleNum(@RequestParam("shopId") Integer shopId, @RequestParam("type") Integer type){
    public R<Integer> getShopSaleNum(@RequestParam("shopId") Integer shopId, @RequestParam("type") Integer type) {
        Integer shopSaleNum = orderService.getShopSaleNum(shopId, type);
        return R.ok(shopSaleNum);
    }
    @PostMapping("/getShopSaleNumByShopIds")
    public R<Integer> getShopSaleNumByShopIds(@RequestBody OrderSaleNum orderSaleNum) {
        Integer shopSaleNum = orderService.getShopSaleNumByShopIds(orderSaleNum.getShopIds(), orderSaleNum.getType());
        return R.ok(shopSaleNum);
    }
    /**
     * 获取所有在指定门店消费的用户id
     *
     * @param shopId
     * @return
     */
    @PostMapping("/getAppUserByShoppingShop")
    public R<Set<Long>> getAppUserByShoppingShop(@RequestParam("shopId") Integer shopId){
    public R<Set<Long>> getAppUserByShoppingShop(@RequestParam("shopId") Integer shopId) {
        List<Order> list = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getShopId, shopId).eq(Order::getDelFlag, 0)
                .eq(Order::getPayStatus, 2).in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 7, 8)));
        Set<Long> collect = list.stream().map(Order::getAppUserId).collect(Collectors.toSet());
        return R.ok(collect);
    }
    /**
     * 获取指定门店的核销订单
     */
    @GetMapping("/getRedeemedOrdersByShop")
    public R<List<Order>> getRedeemedOrdersByShop(@RequestParam("shopId") Integer shopId) {
        return R.ok(orderService.list(new LambdaQueryWrapper<Order>()
                .isNotNull(Order::getEndTime)
                .eq(Order::getShopId, shopId)));
    }
    /**
     * 获取订单快递明细
     *
     * @param id
     * @return
     */
    @GetMapping("/getOrderExpress/{id}")
    @ApiOperation(value = "获取订单快递明细", tags = {"小程序-订单管理"})
    public R<MapTrackKD100Vo> getOrderExpress(@PathVariable("id") Long id){
    public R<MapTrackKD100Vo> getOrderExpress(@PathVariable("id") Long id) {
        Order order = orderService.getById(id);
        String expressResult = order.getExpressResult();
        if(StringUtils.isNotEmpty(expressResult)){
        if (StringUtils.isNotEmpty(expressResult)) {
            MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(expressResult, MapTrackKD100Vo.class);
            return R.ok(mapTrackKD100Vo);
        }
@@ -472,11 +519,12 @@
    /**
     * 根据id获取订单详情
     *
     * @param id
     * @return
     */
    @PostMapping("/getOrderById")
    public R<Order> getOrderById(@RequestParam("id") Long id){
    public R<Order> getOrderById(@RequestParam("id") Long id) {
        Order order = orderService.getById(id);
        return R.ok(order);
    }
@@ -484,13 +532,170 @@
    /**
     * 修改订单
     *
     * @param order
     * @return
     */
    @PostMapping("/editOrder")
    public R editOrder(@RequestBody Order order){
    public R editOrder(@RequestBody Order order) {
        orderService.updateById(order);
        return R.ok();
    }
    /**
     * 导入物流信息
     */
    @PostMapping("/importExpress")
    public R importExpress(@RequestBody String url) {
        JSONObject jsonObject = JSONObject.parseObject(url);
        String url2 = jsonObject.getString("url");
        orderService.importExpress(url2);
        return R.ok();
    }
    /**
     * 导出订单信息
     */
    @GetMapping("/exportExpress")
    public void exportExpress(HttpServletResponse response, OrderPageList orderPage) {
        //搜索条件,用户姓名
        if (StringUtils.isNotEmpty(orderPage.getUserName())) {
            List<AppUser> data = appUserClient.getAppUserByNameNoFilter(orderPage.getUserName()).getData();
            List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList());
            if (CollectionUtils.isEmpty(collect)) {
                return;
            }
            if (null != orderPage.getAppUserIds()) {
                List<Long> appUserIds = orderPage.getAppUserIds();
                appUserIds.addAll(collect);
                orderPage.setAppUserIds(appUserIds);
            } else {
                orderPage.setAppUserIds(collect);
            }
        }
        //搜索条件,用户电话
        if (StringUtils.isNotEmpty(orderPage.getPhone())) {
            List<AppUser> data = appUserClient.getAppUserByPhoneNoFilter(orderPage.getPhone()).getData();
            List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList());
            if (CollectionUtils.isEmpty(collect)) {
                return;
            }
            if (null != orderPage.getAppUserIds()) {
                List<Long> appUserIds = orderPage.getAppUserIds();
                if (!containsAny(appUserIds, collect)) {
                    return;
                }
                appUserIds.addAll(collect);
                orderPage.setAppUserIds(appUserIds);
            } else {
                orderPage.setAppUserIds(collect);
            }
        }
        if (null != orderPage.getAppUserIds()) {
            orderPage.setAppUserIds(orderPage.getAppUserIds().stream().distinct().collect(Collectors.toList()));
        }
//        UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class);
//        orderInfo.setRecipient(userAddress.getRecieveName() + "-" + userAddress.getRecievePhone());
//        userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress());
//        orderInfo.setAddress(userAddress.getRecieveAddress());
        List<OrderExport> orderExportList = orderMapper.getOrderExportList(orderPage);
        orderExportList.forEach(orderExport -> {
            Long appUserId = orderExport.getAppUserId();
            AppUser appUserById = appUserClient.getAppUserById(appUserId);
            if (null != appUserById) {
                orderExport.setUserName(appUserById.getName());
                orderExport.setPhone(appUserById.getPhone());
            }
            String goodJson = orderExport.getGoodJson();
            if (StringUtils.isNotEmpty(goodJson) && !"NULL".equals(goodJson)) {
                Goods goods = JSONObject.parseObject(goodJson, Goods.class);
                orderExport.setGoodsName(goods.getName());
                orderExport.setCompanyCostPrice(goods.getOperatingCost());
                orderExport.setSupplierCostPrice(goods.getShopCost());
            }
            String expressJson = orderExport.getExpressJson();
            if (StringUtils.isNotEmpty(expressJson) && !expressJson.equals("NULL")) {
                JSONObject jsonObject = JSONObject.parseObject(expressJson);
                orderExport.setExpressNum(jsonObject.getString("num"));
                orderExport.setExpressName(ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com")));
            }
            String addressJson = orderExport.getAddressJson();
            if (StringUtils.isNotEmpty(addressJson)) {
                UserAddress userAddress = JSON.parseObject(addressJson, UserAddress.class);
                orderExport.setAddress(
                                userAddress.getProvince() +
                                userAddress.getCity() +
                                userAddress.getDistrict() +
                                userAddress.getRecieveAddress()
                );
            }
        });
        ExcelUtil<OrderExport> util = new ExcelUtil<OrderExport>(OrderExport.class);
        util.exportExcel(response, orderExportList, "订单数据");
    }
    /**
     * 判断 list1 是否包含 list2 中的至少一个元素
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @return 如果 list1 包含 list2 中的至少一个元素,返回 true;否则返回 false
     */
    private boolean containsAny(List<Long> list1, List<Long> list2) {
        // 将 list1 转换为 HashSet 以提高查询效率
        Set<Long> set1 = new HashSet<>(list1);
        // 遍历 list2,检查是否有元素存在于 set1 中
        for (Long element : list2) {
            if (set1.contains(element)) {
                return true;
            }
        }
        // 如果没有找到共同元素,返回 false
        return false;
    }
    /**
     * 获取用户订单数量
     *
     * @param appUserId
     * @return
     */
    @PostMapping("/getOrderCountByAppUserId")
    public R<Long> getOrderCountByAppUserId(@RequestParam("id") Long appUserId) {
        long count = orderService.count(new LambdaQueryWrapper<Order>().eq(Order::getDelFlag, 0)
                .eq(Order::getAppUserId, appUserId).in(Order::getOrderStatus, Arrays.asList(1, 2, 3, 4, 7, 8))
                .eq(Order::getPayStatus, 2));
        return R.ok(count);
    }
    /**
     * 查询给定用户在给定门店核销的订单
     * @param shopId
     * @param appUserId
     * @return
     */
    @PostMapping("/getOrderByAppUserIdsAndWriteOffShop")
    public R<List<Order>> getOrderByAppUserIdsAndWriteOffShop(@RequestParam("shopId") Integer shopId, @RequestParam("appUserId") Set<Long> appUserId){
        List<Order> list = orderService.getOrderByAppUserIdsAndWriteOffShop(shopId, appUserId);
        return R.ok(list);
    }
}