huliguo
8 小时以前 88adbada822c2e3d18235374c176c1b9201358cb
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -57,12 +57,12 @@
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.*;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -132,6 +132,7 @@
    @Override
    public OrderDetailVO getOrderDetail(Long orderId) {
        OrderDetailVO orderDetailVO = new OrderDetailVO();
        Order order = orderMapper.selectById(orderId);
        if (order == null) {
            throw new ServiceException("订单不存在");
@@ -140,22 +141,33 @@
        if (!R.isSuccess(shopR)) {
            throw new ServiceException("获取门店信息失败");
        }
        AppUser appUserById = appUserClient.getAppUserById(order.getAppUserId());
        if (appUserById != null) {
            orderDetailVO.setUsername(appUserById.getName());
        }
        // 商品
        OrderGood orderGood = orderGoodMapper.selectOne(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId));
        String goodJson = orderGood.getGoodJson();
        Goods goods = JSONObject.parseObject(goodJson, Goods.class);
        GoodsSeckill goodsSeckill = JSON.parseObject(orderGood.getSeckillJson(), GoodsSeckill.class);
        OrderGoodsVO orderGoodsVO = new OrderGoodsVO();
        orderGoodsVO.setGoodsId(goods.getId());
        orderGoodsVO.setGoodsName(goods.getName());
        orderGoodsVO.setGoodsPic(goods.getHomePagePicture());
        orderGoodsVO.setNum(order.getNum());
        orderGoodsVO.setSellingPrice(goods.getSellingPrice());
        orderGoodsVO.setIntegral(goods.getIntegral());
        if (null!=goodsSeckill){
            orderGoodsVO.setSellingPrice(goodsSeckill.getSellingPrice());
            orderGoodsVO.setIntegral(goodsSeckill.getIntegral());
        }else {
            orderGoodsVO.setSellingPrice(goods.getSellingPrice());
            orderGoodsVO.setIntegral(goods.getIntegral());
        }
        orderGoodsVO.setOriginalPrice(goods.getOriginalPrice());
        OrderDetailVO orderDetailVO = new OrderDetailVO();
        orderDetailVO.setOrderGoodsVO(orderGoodsVO);
        Shop shop = shopR.getData();
@@ -180,8 +192,12 @@
            e.printStackTrace();
            throw new ServiceException("生成核销码失败");
        }
        if(3!=order.getOrderStatus()){
            //不属于未使用的,应该有个核销\取消时间
            orderDetailVO.setEndTime(order.getEndTime());
        }
        //该商品是否被用户评论
        Long evaluateId = goodsEvaluateClient.getEvaluateIdByUserIdAndGoodId(goods.getId(), order.getAppUserId()).getData();
        Long evaluateId = goodsEvaluateClient.getEvaluateIdByOrderId(order.getId()).getData();
        orderDetailVO.setEvaluateId(evaluateId);
        return orderDetailVO;
@@ -207,6 +223,9 @@
        }
        if (!order.getShopId().equals(shopId)) {
            throw new ServiceException("该订单与当前扫码门店不一致");
        }
        if (order.getOrderStatus()!=3){
            throw new ServiceException("订单已被核销过");
        }
@@ -241,27 +260,7 @@
     * @return
     */
    @Override
    public PageInfo<OrderPageListVo> getOrderPageList(OrderPageList orderPageList) {
       /* Long userid = tokenService.getLoginUser().getUserid();
        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
        if (2 == sysUser.getRoleType()) {
            orderPageList.setShopId(sysUser.getObjectId());
        }
        //搜索条件,用户姓名
        if (StringUtils.isNotEmpty(orderPageList.getUserName())) {
            List<AppUser> data = appUserClient.getAppUserByNameNoFilter(orderPageList.getUserName()).getData();
            List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList());
            if (CollectionUtils.isEmpty(collect)) {
                return new PageInfo<>();
            }
            if (null != orderPageList.getAppUserIds()) {
                List<Long> appUserIds = orderPageList.getAppUserIds();
                appUserIds.addAll(collect);
                orderPageList.setAppUserIds(appUserIds);
            } else {
                orderPageList.setAppUserIds(collect);
            }
        }
    public PageInfo<OrderManagePageListVO> getOrderPageList(OrderPageList orderPageList) {
        //搜索条件,用户电话
        if (StringUtils.isNotEmpty(orderPageList.getPhone())) {
            List<AppUser> data = appUserClient.getAppUserByPhoneNoFilter(orderPageList.getPhone()).getData();
@@ -285,33 +284,47 @@
            orderPageList.setAppUserIds(orderPageList.getAppUserIds().stream().distinct().collect(Collectors.toList()));
        }
        //搜索条件 店铺名称
        if (StringUtils.isNotEmpty(orderPageList.getShopName())){
            List<Integer> shopSet = new ArrayList<>(shopClient.getShopIdByName(orderPageList.getShopName()).getData());
            if (CollectionUtils.isEmpty(shopSet)) {
                return new PageInfo<>();
            }
            if (null != orderPageList.getShopIds()) {
                List<Integer> shopIds = orderPageList.getShopIds();
                if (!containsIntegerAny(shopIds, shopSet)) {
                    return new PageInfo<>();
                }
                shopIds.addAll(shopSet);
                orderPageList.setShopIds(shopIds);
            } else {
                orderPageList.setShopIds(shopSet);
            }
        }
        if (null != orderPageList.getShopIds()) {
            orderPageList.setShopIds(orderPageList.getShopIds().stream().distinct().collect(Collectors.toList()));
        }
        PageInfo<OrderPageListVo> pageInfo = new PageInfo<>(orderPageList.getPageCurr(), orderPageList.getPageSize());
        PageInfo<OrderManagePageListVO> pageInfo = new PageInfo<>(orderPageList.getPageCurr(), orderPageList.getPageSize());
        List<OrderPageListVo> list = this.baseMapper.getOrderPageList(pageInfo, orderPageList);
        for (OrderPageListVo orderPageListVo : list) {
        List<OrderManagePageListVO> list = this.baseMapper.getOrderPageList(pageInfo, orderPageList);
        for (OrderManagePageListVO orderPageListVo : list) {
            Long appUserId = orderPageListVo.getAppUserId();
            AppUser appUser = appUserClient.getAppUserById(appUserId);
            if (null != appUser) {
                orderPageListVo.setUserName(appUser.getName());
                orderPageListVo.setPhone(appUser.getPhone());
            }
            String expressJson = orderPageListVo.getExpressJson();
            if (StringUtils.isNotEmpty(expressJson) && !expressJson.equals("NULL")) {
                JSONObject jsonObject = null;
                try {
                    jsonObject = JSONObject.parseObject(expressJson);
                    String companyName = ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com"));
                    orderPageListVo.setExpressCompany(companyName);
                    orderPageListVo.setExpressNum(jsonObject.getString("num"));
                } catch (Exception e) {
                }
           //店铺名称
            Shop shop = shopClient.getShopById(orderPageListVo.getShopId()).getData();
            if (null != shop) {
                orderPageListVo.setShopName(shop.getName());
            }
            orderPageListVo.setIdStr(orderPageListVo.getId().toString());
        }
        return pageInfo.setRecords(list);*/
        return null;
        return pageInfo.setRecords(list);
    }
    /**
@@ -327,6 +340,28 @@
        // 遍历 list2,检查是否有元素存在于 set1 中
        for (Long element : list2) {
            if (set1.contains(element)) {
                return true;
            }
        }
        // 如果没有找到共同元素,返回 false
        return false;
    }
    /**
     * 判断 list1 是否包含 list2 中的至少一个元素
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @return 如果 list1 包含 list2 中的至少一个元素,返回 true;否则返回 false
     */
    private boolean containsIntegerAny(List<Integer> list1, List<Integer> list2) {
        // 将 list1 转换为 HashSet 以提高查询效率
        Set<Integer> set1 = new HashSet<>(list1);
        // 遍历 list2,检查是否有元素存在于 set1 中
        for (Integer element : list2) {
            if (set1.contains(element)) {
                return true;
            }
@@ -376,12 +411,10 @@
    @Override
    public R cancelOrder(Long orderId) {
        Order order = this.getById(orderId);
        if (Arrays.asList(5, 6, 7).contains(order.getOrderStatus())) {
        if (Arrays.asList(4,5,8).contains(order.getOrderStatus())) {
            return R.fail("无效的操作");
        }
        if (null != order.getAfterSaleTime() && LocalDateTime.now().isAfter(order.getAfterSaleTime())) {
            return R.fail("订单取消失败");
        }
        order.setOrderStatus(5);
        R r = refundPayMoney(order);
        if (200 == r.getCode()) {
@@ -396,9 +429,20 @@
     */
    public R refundPayMoney(Order order) {
        //开始退款
        //先回退积分
        BigDecimal paymentAmount = order.getPaymentAmount();
        if (BigDecimal.ZERO.compareTo(order.getPaymentAmount()) < 0) {//支付的金额是否大于0
            //微信退款
            RefundResult refund = PaymentUtil.refund(order.getOrderNumber(), "R" + order.getOrderNumber(), paymentAmount.doubleValue(), "/order/order/refundPayMoneyCallback");
            if (!"100".equals(refund.getRa_Status())) {
                return R.fail(refund.getRc_CodeMsg());//退款失败
            }
        }
        //退款成功再回退积分
        AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
        if (order.getPoint()>0) {
            if(null==appUser.getCancelPoint()){
                appUser.setCancelPoint(0);
            }
            //返回订单抵扣积分
            Integer historicalPoint = appUser.getAvailablePoint();
            Integer availablePoint = appUser.getAvailablePoint() + order.getPoint();//可用积分
@@ -406,6 +450,7 @@
            appUser.setAvailablePoint(availablePoint);
            appUser.setCancelPoint(cancelPoint);
            appUser.setTotalPoint(appUser.getTotalPoint() + order.getPoint());
            appUserClient.editAppUserById(appUser);
            //构建积分流水
            UserPoint userPoint = new UserPoint();
@@ -419,15 +464,6 @@
            userPointClient.saveUserPoint(userPoint);
        }
        BigDecimal paymentAmount = order.getPaymentAmount();
        if (BigDecimal.ZERO.compareTo(order.getPaymentAmount()) < 0) {//支付的金额是否大于0
            //微信退款
            RefundResult refund = PaymentUtil.refund(order.getOrderNumber(), "R" + order.getOrderNumber(), paymentAmount.doubleValue(), "/order/order/refundPayMoneyCallback");
            if (!"100".equals(refund.getRa_Status())) {
                return R.fail(refund.getRc_CodeMsg());//退款失败
            }
        }
        order.setRefundStatus(2);
        order.setRefundTime(LocalDateTime.now());
@@ -436,13 +472,20 @@
        goodsClient.editGoodsNum(orderGood.getGoodsId(), -1);
        //获取商品json
        Goods good = JSON.parseObject(orderGood.getGoodJson(), Goods.class);
        GoodsSeckill goodsSeckill = JSON.parseObject(orderGood.getSeckillJson(), GoodsSeckill.class);
        //门店减少冻结资金 即减少余额, 冻结资金=余额-可用资金
        Shop shop = shopClient.getShopById(order.getShopId()).getData();
        BigDecimal historicalBalance=shop.getBalance();//历史余额
        BigDecimal variableAmount=good.getSellingPrice();//变动金额
        BigDecimal balance=shop.getBalance().subtract(good.getSellingPrice());//变动后余额
        BigDecimal variableAmount=BigDecimal.ZERO;//变动金额
        if (null != goodsSeckill) {
            variableAmount=goodsSeckill.getSellingPrice();
        }else {
            variableAmount=good.getSellingPrice();
        }
        BigDecimal balance=shop.getBalance().subtract(variableAmount);//变动后余额
        shop.setBalance(balance);
        shopClient.updateShop(shop);
@@ -532,6 +575,8 @@
        orderInfo.setOrderNumber(order.getOrderNumber());
        orderInfo.setOrderStatus(order.getOrderStatus());
        orderInfo.setCreateTime(order.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        orderInfo.setPointDeductionAmount(order.getPointDeductionAmount());
        AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
        if (null != appUser) {
            orderInfo.setUserName(appUser.getName());
@@ -548,19 +593,16 @@
        orderInfo.setPaymentAmount(order.getPaymentAmount());
        List<OrderGood> orderGoods = orderGoodMapper.selectList(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0));
        int sum = orderGoods.stream().mapToInt(OrderGood::getNum).sum();
        orderInfo.setGoodsNum(sum);
        List<Object> goodsJson = new ArrayList<>();
        for (OrderGood orderGood : orderGoods) {
            Goods goods = JSON.parseObject(orderGood.getGoodJson(), Goods.class);
            Map<String, Object> map = new HashMap<>();
            map.put("name", goods.getName());
            map.put("imgUrl", goods.getHomePagePicture());
            map.put("number", orderGood.getNum());
            goodsJson.add(map);
        OrderGood orderGood = orderGoodMapper.selectOne(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0));
        orderInfo.setGoodsNum(1);
        orderInfo.setGoodsJson(orderGood.getGoodJson());
        if (null != orderGood.getSeckillJson()&& !"".equals(orderGood.getSeckillJson())) {
            orderInfo.setSeckillJson(orderGood.getSeckillJson());
            orderInfo.setActivityName("秒杀活动");
        }
        orderInfo.setGoodsJson(JSON.toJSONString(goodsJson));
        orderInfo.setPoint(order.getPoint());
        if (null != order.getAfterSaleTime()) {
            orderInfo.setAfterSaleTime(order.getAfterSaleTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -658,21 +700,27 @@
            confirmOrderVo.setCash(goodsSeckill.getSellingPrice());//秒杀活动价格
            confirmOrderVo.setPoint(goodsSeckill.getIntegral());//秒杀活动积分价格
            confirmOrderVo.setPurchaseLimitNum(activityInfo.getMaxNum());//限购数量
            confirmOrderVo.setEndTimeStamp(activityInfo.getEndTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());//结束时间戳
        }
        //判断是否是积分支付
        if (type == 1) {//现金
            confirmOrderVo.setOrderMoney(confirmOrderVo.getCash());
            Integer availablePoint = appUser.getAvailablePoint();//用户可用积分
            BigDecimal maxPointDeductionAmount = getCashByPoint(availablePoint);//最大可抵扣金额
            //计算积分抵扣的金额  将积分转为金额,去掉小数
            BigDecimal deduction=getCashByPoint(confirmOrderVo.getResidualPoint());
            //实际抵扣金额
            BigDecimal deduction= maxPointDeductionAmount.min(confirmOrderVo.getCash());
            confirmOrderVo.setDeduction(deduction);
        }else {//积分
            confirmOrderVo.setOrderPoint(good.getIntegral());
            confirmOrderVo.setOrderPoint(confirmOrderVo.getPoint());
        }
        //限购检查
        //判断当前数量是否已经超出限购数量(需要计算已经购买的数量)
        if(null == good.getPurchaseLimit() || -1 == good.getPurchaseLimit()){
        if(null == confirmOrderVo.getPurchaseLimitNum() || -1 == confirmOrderVo.getPurchaseLimitNum()){
            confirmOrderVo.setIsPurchaseLimit(false);
            confirmOrderVo.setPurchaseLimitNum(-1);
        }else{
@@ -687,7 +735,7 @@
                sum = orderGoodList.stream().mapToInt(OrderGood::getNum).sum();
            }
            confirmOrderVo.setIsPurchaseLimit((1 + sum) > good.getPurchaseLimit());
            confirmOrderVo.setPurchaseLimitNum(good.getPurchaseLimit() - sum);
            confirmOrderVo.setPurchaseLimitNum(confirmOrderVo.getPurchaseLimitNum() - sum);
        }
        return confirmOrderVo;
@@ -703,6 +751,7 @@
        int type=1;//商品类型  1=普通商品,2=秒杀商品
        //商品信息
        Goods goods = goodsClient.getGoodsById(orderPayment.getGoodId()).getData();
        String goodsJson= JSON.toJSONString(goods);
        if (null == goods || 1==goods.getDelFlag()){
            return  R.fail( "商品不存在");
        }
@@ -790,13 +839,18 @@
        order.setPointDeductionAmount(pointDeductionAmount.setScale(2, RoundingMode.HALF_EVEN));
        order.setPaymentAmount(paymentMoney);//实际支付价格
        order.setPoint(orderPoint);//使用积分
        order.setPayMethod(orderPayment.getPaymentType());//支付方式
        if (orderPayment.getPaymentType()==1 && orderPoint>0){//微信支付 但支付的积分也大于0
            order.setPayMethod(4);//组合支付
        }else {
            order.setPayMethod(orderPayment.getPaymentType());//积分或者微信
        }
        order.setPayStatus(1);
        order.setShopId(orderPayment.getShopId());
        order.setDelFlag(0);
        order.setCreateTime(LocalDateTime.now());
        orderMapper.insert(order);
        this.save(order);
        //构建订单明细数据
        OrderGood orderGood = new OrderGood();
@@ -807,7 +861,7 @@
        if (2==type){
            orderGood.setSeckillJson(JSON.toJSONString(goodsSeckill));
        }
        orderGood.setGoodJson(JSON.toJSONString(goods));
        orderGood.setGoodJson(goodsJson);
        orderGood.setDelFlag(0);
        orderGood.setCreateTime(LocalDateTime.now());
        orderGood.setCashPayment(orderPayment.getPaymentType()==1 ? 1 : 0);
@@ -822,6 +876,13 @@
        }
        //判断积分是否为零,积分支付
        if (0 != order.getPoint()){
            if (null==appUser.getAvailablePoint()){
                appUser.setAvailablePoint(0);
            }
            if (null==appUser.getExchangePoint()){
                appUser.setExchangePoint(0);
            }
            //积分支付
            Integer historicalPoint = appUser.getAvailablePoint();//历史积分
            Integer availablePoint = historicalPoint - orderPoint;//可用积分
@@ -829,6 +890,7 @@
            //扣减订单支付积分
            appUser.setAvailablePoint(availablePoint);
            appUser.setExchangePoint(exchangePoint );
            appUser.setTotalPoint(appUser.getTotalPoint() + order.getPoint());//总积分
            //构建积分流水记录
            UserPoint userPoint = new UserPoint();
            userPoint.setType(4);//兑换商品
@@ -853,6 +915,37 @@
            UniPayResult uniPayResult = PaymentUtil.uniPay(order.getOrderNumber(), paymentMoney.doubleValue(),  "购买单品商品",
                    goodsNames, "", "/order/order/orderPaymentCallback", appUser.getWxOpenid(), null);
            if(null == uniPayResult || !"100".equals(uniPayResult.getRa_Code())){
                //支付失败,积分回退 ,删除订单
                //检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除
                if (order.getPoint()>0) {
                    //返回订单抵扣积分
                    AppUser appUser2 = appUserClient.getAppUserById(order.getAppUserId());
                    Integer availablePoint = appUser2.getAvailablePoint();//可用积分
                    Integer variablePoint = order.getPoint();//变动积分
                    Integer balance = appUser2.getAvailablePoint() + order.getPoint();//变动后积分
                    Integer cancelPoint = appUser2.getCancelPoint() + order.getPoint();//取消订单积分
                    appUser2.setAvailablePoint(availablePoint);
                    appUser2.setCancelPoint(cancelPoint);
                    appUser2.setTotalPoint(appUser2.getTotalPoint() + order.getPoint());
                    //构建积分流水记录
                    UserPoint userPoint = new UserPoint();
                    userPoint.setType(16);//取消订单
                    userPoint.setHistoricalPoint(availablePoint);
                    userPoint.setVariablePoint(variablePoint);
                    userPoint.setBalance(balance);
                    userPoint.setCreateTime(LocalDateTime.now());
                    userPoint.setAppUserId(appUser2.getId());
                    userPoint.setObjectId(order.getId());
                    userPointClient.saveUserPoint(userPoint);
                    appUserClient.editAppUserById(appUser2);
                    //删除订单
                    order.setDelFlag(1);
                    orderMapper.updateById(order);
                }
                //返回报错信息
                return R.fail(null == uniPayResult ? "支付失败" : uniPayResult.getRb_CodeMsg());
            }
            String rc_result = uniPayResult.getRc_Result();
@@ -873,6 +966,10 @@
        //门店增加冻结资金 即增加余额, 冻结资金=余额-可用资金
        Shop shop = shopClient.getShopById(order.getShopId()).getData();
        if (null==shop.getBalance()){
            shop.setBalance(BigDecimal.ZERO);
        }
        BigDecimal historicalBalance=shop.getBalance();//历史余额
        BigDecimal variableAmount=goods.getSellingPrice();//变动金额
        BigDecimal balance=shop.getBalance().add(goods.getSellingPrice());//变动后余额
@@ -927,11 +1024,16 @@
        //商品销量增加
        goodsClient.editGoodsNum(orderGood.getGoodsId(), 1);
        Goods goods = JSON.parseObject(orderGood.getGoodJson(), Goods.class);
        GoodsSeckill goodsSeckill = JSON.parseObject(orderGood.getSeckillJson(), GoodsSeckill.class);
        //门店增加冻结资金 即增加金额, 冻结资金=余额-可用资金
        Shop shop = shopClient.getShopById(order.getShopId()).getData();
        BigDecimal historicalBalance=shop.getBalance();//历史余额
        BigDecimal variableAmount=goods.getSellingPrice();//变动余额
        BigDecimal variableAmount=BigDecimal.ZERO;//变动金额
        if (null != goodsSeckill) {
            variableAmount=goodsSeckill.getSellingPrice();
        }else {
            variableAmount=goods.getSellingPrice();
        }
        BigDecimal balance=shop.getBalance().add(variableAmount);//变动后余额
        shop.setBalance(balance);
@@ -979,7 +1081,7 @@
                    log.error("关闭订单失败:{}---->{}", order.getOrderNumber(), JSON.toJSONString(closeOrderResult));
                }
                redisTemplate.opsForZSet().remove("OrderPayment", order.getOrderNumber());
                //关闭订单后,检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除
                //关闭订单后,检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除, 删除订单
                if (order.getPoint()>0) {
                    //返回订单抵扣积分
                    AppUser appUser = appUserClient.getAppUserById(order.getAppUserId());
@@ -989,6 +1091,7 @@
                    Integer cancelPoint = appUser.getCancelPoint() + order.getPoint();//取消订单积分
                    appUser.setAvailablePoint(availablePoint);
                    appUser.setCancelPoint(cancelPoint);
                    appUser.setTotalPoint(appUser.getTotalPoint() + order.getPoint());
                    //构建积分流水记录
                    UserPoint userPoint = new UserPoint();
@@ -1002,6 +1105,10 @@
                    userPointClient.saveUserPoint(userPoint);
                    appUserClient.editAppUserById(appUser);
                    //删除订单
                    order.setDelFlag(1);
                    orderMapper.updateById(order);
                }
            }
        }
@@ -1014,23 +1121,38 @@
        Page<Order> page = new Page<>(pageNum, pageSize);
        // 构建查询条件
        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
        //添加基础条件
        queryWrapper.eq("del_flag", 0);
        queryWrapper.eq("pay_status", 2);
        queryWrapper.orderByDesc("create_time");
        // 添加门店ID条件
        if (shopId != null) {
            queryWrapper.eq("shop_id", shopId);
        }
        // 添加订单状态条件
        if (status != null) {
            queryWrapper.eq("order_status", status);
        if (status != null&&status==4) { //4-已完成 8-已评价
            queryWrapper.in("order_status",Arrays.asList(4,8));
        }
        if (status != null&&status!=4) {//3-待核销 5-已取消
            queryWrapper.eq("order_status",status);
        }
        // 模糊查询条件
        if (StringUtils.isNotBlank(content)) {
            //根据手机号查询用户id
            List<Long> ids= new ArrayList<>();
            List<AppUser> data = appUserClient.getAppUserByPhone(content).getData();
            if (data != null && !data.isEmpty()) {
                ids=data.stream().map(AppUser::getId).collect(Collectors.toList());
            }
            // 构建OR条件组:订单编号/商品名/手机号
            if (null != ids && !ids.isEmpty()) {
                queryWrapper.in("app_user_id",ids);
            }
            queryWrapper.and(wrapper -> wrapper
                    .like("order_number", content)  // 订单编号
                    .or()
                    .like("goods_name", content)  // 商品名
                    .or()
                    .inSql("app_user_id", "select id from t_app_user where phone like '%" + content + "%'")  // 手机号
                    .like("good_name", content)  // 商品名
            );
        }
@@ -1050,6 +1172,7 @@
            return R.fail("订单取消失败");
        }
        order.setOrderStatus(5);
        order.setEndTime(LocalDateTime.now());
        R r = refundPayMoney(order);
        if (200 == r.getCode()) {
            this.updateById(order);
@@ -1057,16 +1180,51 @@
        return r;
    }
    /**
     * 后台-工作台-折线图
     * @param startTime
     * @param endTime
     * @return
     */
    @Override
    public List<OrderStatisticsDetail> getOrderListGroupByDate(LocalDate startTime, LocalDate endTime,Integer shopId) {
        // 查询数据库获取原始数据
        List<OrderStatisticsDetail> rawData = orderMapper.getOrderListGroupByDate(
                startTime.atTime(0,0, 0),
                endTime.atTime(23,59,59),
                shopId
        );
        // 创建完整日期范围的映射
        Map<LocalDate, OrderStatisticsDetail> dateMap = rawData.stream()
                .collect(Collectors.toMap(
                        OrderStatisticsDetail::getDateTime,
                        Function.identity()
                ));
        // 生成完整日期序列并填充缺失数据
        List<OrderStatisticsDetail> completeList = new ArrayList<>();
        for (LocalDate date = startTime; !date.isAfter(endTime); date = date.plusDays(1)) {
            if (dateMap.containsKey(date)) {
                completeList.add(dateMap.get(date));
            } else {
                completeList.add(new OrderStatisticsDetail(date, 0, BigDecimal.ZERO));
            }
        }
        return completeList;
    }
    private OrderPageListVo convertToOrderListVo(Order order) {
        OrderPageListVo vo = new OrderPageListVo();
        // 复制属性
        BeanUtils.copyProperties(order, vo);
        // 查询用户信息
        AppUser user = appUserClient.getAppUserById(order.getAppUserId());
        if (user != null) {
            vo.setPhone(user.getPhone());
        }
        vo.setIdStr(order.getId().toString());
        return vo;
    }