From 1359b6a39921d50b7953c210bef9cf04c2e64268 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Mon, 21 Jul 2025 22:23:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=95=B0=E9=87=8F=20fix=20bu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../suisung/mall/common/api/StateCode.java | 1 + .../service/impl/LibraryProductImpl.java | 14 +- .../admin/ShopOrderBaseController.java | 32 ++- .../order/mapper/ShopOrderBaseMapper.java | 29 ++- .../order/service/ShopOrderBaseService.java | 40 ++- .../impl/ShopOrderBaseServiceImpl.java | 230 +++++++++++------- .../mapper/order/ShopOrderBaseMapper.xml | 160 ++++++++---- 7 files changed, 352 insertions(+), 154 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java b/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java index 4e7d9202..860cc397 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java +++ b/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java @@ -8,6 +8,7 @@ import java.util.Map; public class StateCode { + public static final int DELIVERY_TYPE_EXPRESS = 1; //快递配送(运费 10 元) public static final int DELIVERY_TYPE_EMS = 2; //EMS(邮政) public static final int DELIVERY_TYPE_MAIL = 3; //平邮 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java index b070392d..bf5fbe75 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java @@ -10,12 +10,15 @@ package com.suisung.mall.shop.library.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.suisung.mall.common.feignService.AccountService; import com.suisung.mall.common.modules.library.LibraryProduct; import com.suisung.mall.common.pojo.dto.LibraryProductDTO; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.library.mapper.LibraryProductMapper; import com.suisung.mall.shop.library.service.LibraryProductService; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -31,6 +34,8 @@ public class LibraryProductImpl extends BaseServiceImpl product.processImageUrls(staticDomain)); + String tengxunEndpoint = ""; + if (StrUtil.isBlank(tengxunEndpoint)) { + tengxunEndpoint = staticDomain; + } else { + tengxunEndpoint = "https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com"; + } + String finalTengxunEndpoint = tengxunEndpoint; + list.forEach(product -> product.processImageUrls(finalTengxunEndpoint)); return list; } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java index a27587b6..7224b886 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/controller/admin/ShopOrderBaseController.java @@ -295,37 +295,53 @@ public class ShopOrderBaseController extends BaseControllerImpl { // 商家版接口 开始 + @ApiOperation(value = "查询移动商家端订单数据(新)", notes = "查询移动商家端订单数据(新)") @RequestMapping(value = "/mch/order/list", method = RequestMethod.POST) public CommonResult selectMchOrderPageList(@RequestBody JSONObject params) { + // === 用户验证 === UserDto userDto = getCurrentUser(); if (userDto == null) { return CommonResult.failed(ResultCode.NEED_LOGIN); } - // 如果 storeId 有值,判断当前登录账号是否有权查看该店铺的订单(以后账号有多个店铺,需要更改判断方法) + // === 店铺权限验证 === Integer storeId = params.getInt("storeId"); - if (storeId != null && storeId > 0 && !storeId.equals(userDto.getStore_id())) { + // 如果传入storeId,验证是否与当前用户所属店铺一致 + if (storeId != null && storeId > 0 && !storeId.toString().equals(userDto.getStore_id())) { return CommonResult.failed(ResultCode.FORBIDDEN); } else { + // 未传入storeId时使用用户默认店铺 storeId = Convert.toInt(userDto.getStore_id()); } - if (storeId == null || storeId <= 0) { return CommonResult.failed(ResultCode.FORBIDDEN); } + // === 构建响应数据 === Map respMap = new HashMap<>(); - // 订单分页数据 - Long expireSeconds = 1500L; // 60秒*25分钟 = 1500秒 - - respMap.put("order_page_list", shopOrderBaseService.selectMchOrderPageList(storeId, params.getStr("keyword"), params.getInt("delivery"), params.getInt("status"), expireSeconds, params.getInt("pageNum"), params.getInt("pageSize"))); + // 订单列表数据(缓存时间25分钟) + long expireSeconds = 1500L;// 60秒*25分钟 = 1500秒 + respMap.put("order_page_list", shopOrderBaseService.selectMchOrderPageList( + storeId, + params.getStr("keyword"), + params.getInt("delivery"), + params.getInt("status"), + params.getInt("logistics_status"), + expireSeconds, + params.getLong("begin_time"), + params.getLong("end_time"), + params.getInt("pageNum"), + params.getInt("pageSize") + )); // 订单数量统计 - respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(storeId)); + respMap.put("order_count", shopOrderBaseService.mchOrderCountByStoreId(storeId, expireSeconds, params.getLong("begin_time"), params.getLong("end_time"))); + return CommonResult.success(respMap); } + // 商家版接口 结束 } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderBaseMapper.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderBaseMapper.java index 9e81e92e..020a8278 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderBaseMapper.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/mapper/ShopOrderBaseMapper.java @@ -61,16 +61,37 @@ public interface ShopOrderBaseMapper extends BaseMapper { */ Map getOrderPrintInfo(@Param("orderId") String orderId, Integer payState); + /** * 商家版订单列表(新) * - * @param storeId 店铺Id - * @param keyword 关键字 - * @param status 订单状态 + * @param storeId + * @param keyword 订单搜索关键字 + * @param delivery 配送方式:1-同城配送;2-物流配送 + * @param status 同城配送订单状态(delivery=1时才生效):无值 or 0-全部订单;1-进行中订单;2-异常(超时)订单;3-退款订单;9-已完成订单 + * @param logisticsStatus 普通快递订单状态(delivery=2时才生效):无值 or 0-全部订单;1-待支付订单;2-待发货订单;3-待接收订单;9-已完成订单 + * @param expireSeconds 配送超时的秒数,单位秒 + * @param beginTime 开始时间戳(13位毫秒级别) + * @param endTime 截止时间戳(13位毫秒级别) + * @param page 分页参数 * @return */ - IPage selectMchOrderPageList(@Param("storeId") Integer storeId, @Param("keyword") String keyword, @Param("delivery") Integer delivery, @Param("status") Integer status, @Param("expireSeconds") Long expireSeconds, IPage page); + IPage selectMchOrderPageList(@Param("storeId") Integer storeId, @Param("keyword") String keyword, @Param("delivery") Integer delivery, @Param("status") Integer status, @Param("logisticsStatus") Integer logisticsStatus, @Param("expireSeconds") Long expireSeconds, @Param("beginTime") Long beginTime, @Param("endTime") Long endTime, IPage page); + /** + * 商家版根据条件查询订单条数(新) + * + * @param storeId + * @param keyword 订单搜索关键字 + * @param delivery 配送方式:1-同城配送;2-物流配送 + * @param status 同城配送订单状态(delivery=1时才生效):无值 or 0-全部订单;1-进行中订单;2-异常(超时)订单;3-退款订单;9-已完成订单 + * @param logisticsStatus 普通快递订单状态(delivery=2时才生效):无值 or 0-全部订单;1-待支付订单;2-待发货订单;3-待接收订单;9-已完成订单 + * @param expireSeconds 配送超时的秒数,单位秒 + * @param beginTime 开始时间戳(13位毫秒级别) + * @param endTime 截止时间戳(13位毫秒级别) + * @return + */ + Long countMchOrderByCondition(@Param("storeId") Integer storeId, @Param("keyword") String keyword, @Param("delivery") Integer delivery, @Param("status") Integer status, @Param("logisticsStatus") Integer logisticsStatus, @Param("expireSeconds") Long expireSeconds, @Param("beginTime") Long beginTime, @Param("endTime") Long endTime); /** * 获取微信发货订单基本信息 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java index 88828d64..f56adde2 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java @@ -540,23 +540,45 @@ public interface ShopOrderBaseService extends IBaseService { * 商家版订单列表(新) * * @param storeId - * @param keyword 订单搜索关键字 - * @param delivery 配送方式:1-同城配送;2-物流配送 - * @param status 查询状态:1-进行中(时效内);2-异常订单(已超时的);3-退款订单 - * @param expireSeconds 配送超时的秒数,单位秒 - * @param pageNum 页码 - * @param pageSize 页大小 + * @param keyword 订单搜索关键字 + * @param delivery 配送方式:1-同城配送;2-物流配送 + * @param status 同城配送订单状态(delivery=1时才生效):无值 or 0-全部订单;1-进行中订单;2-异常(超时)订单;3-退款订单;9-已完成订单 + * @param logisticsStatus 普通快递订单状态(delivery=2时才生效):无值 or 0-全部订单;1-待支付订单;2-待发货订单;3-待接收订单;9-已完成订单 + * @param expireSeconds 配送超时的秒数,单位秒 + * @param beginTime 开始时间戳(13位毫秒级别) + * @param endTime 截止时间戳(13位毫秒级别) + * @param pageNum 页码 + * @param pageSize 页大小 * @return */ - IPage selectMchOrderPageList(Integer storeId, String keyword, Integer delivery, Integer status, Long expireSeconds, Integer pageNum, Integer pageSize); + IPage selectMchOrderPageList(Integer storeId, String keyword, Integer delivery, Integer status, Integer logisticsStatus, Long expireSeconds, Long beginTime, Long endTime, Integer pageNum, Integer pageSize); + + /** + * 商家版根据条件查询订单条数(新) + * + * @param storeId 店铺Id + * @param keyword 订单搜索关键字 + * @param delivery 配送方式:1-同城配送;2-物流配送 + * @param status 同城配送订单状态(delivery=1时才生效):无值 or 0-全部订单;1-进行中订单;2-异常(超时)订单;3-退款订单;9-已完成订单 + * @param logisticsStatus 普通快递订单状态(delivery=2时才生效):无值 or 0-全部订单;1-待支付订单;2-待发货订单;3-待接收订单;9-已完成订单 + * @param expireSeconds 配送超时的秒数,单位秒 + * @param beginTime 开始时间戳(13位毫秒级别) + * @param endTime 截止时间戳(13位毫秒级别) + * @return + */ + Long countMchOrderByCondition(Integer storeId, String keyword, Integer delivery, Integer status, Integer logisticsStatus, Long expireSeconds, Long beginTime, Long endTime); + /** * 商家订单各个分类和状态的订单数量 * - * @param storeId + * @param storeId 店铺Id + * @param expireSeconds 配送超时的秒数,单位秒 + * @param beginTime 开始时间戳(13位毫秒级别) + * @param endTime 截止时间戳(13位毫秒级别) * @return */ - JSONObject mchOrderCountByStoreId(Integer storeId); + JSONObject mchOrderCountByStoreId(Integer storeId, Long expireSeconds, Long beginTime, Long endTime); /** * 获取微信发货订单基本信息 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java index 71f6b6fd..b0a637b1 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java @@ -8531,26 +8531,29 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl selectMchOrderPageList(Integer storeId, String keyword, Integer delivery, Integer status, Long expireSeconds, Integer pageNum, Integer pageSize) { + public IPage selectMchOrderPageList(Integer storeId, String keyword, Integer delivery, Integer status, Integer logisticsStatus, Long expireSeconds, Long beginTime, Long endTime, Integer pageNum, Integer pageSize) { try { // 初始化分页对象 Page page = new Page<>(pageNum, pageSize); // 查询订单基础数据 IPage pageList = shopOrderBaseMapper.selectMchOrderPageList( - storeId, keyword, delivery, status, expireSeconds, page); + storeId, keyword, delivery, status, logisticsStatus, expireSeconds, beginTime, endTime, page); if (CollUtil.isEmpty(pageList.getRecords())) { return pageList; @@ -8581,13 +8584,35 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl - + + + + + + + + AND ob.store_id = #{storeId} + + + + + AND ( + ob.order_id LIKE CONCAT('%', #{keyword}, '%') + OR oi.order_title LIKE CONCAT('%', #{keyword}, '%') + OR oda.da_name LIKE CONCAT('%', #{keyword}, '%') + OR oda.da_address LIKE CONCAT('%', #{keyword}, '%') + OR sb.store_address LIKE CONCAT('%', #{keyword}, '%') + OR spi.item_barcode LIKE CONCAT('%', #{keyword}, '%') + ) + + + + + + AND oi.delivery_type_id = 16 + + + + + + AND ob.order_state_id IN (2011,2012,2013, 2014, 2020, 2030, 2040) + AND (oi.order_time + #{expireSeconds}*1000) =]]> UNIX_TIMESTAMP() * 1000 + + + + AND ob.order_state_id IN (2011,2012,2013, 2014, 2020, 2030, 2040) + AND (oi.order_time + #{expireSeconds}*1000) UNIX_TIMESTAMP() * 1000 + + + + AND od.order_refund_status IN (1, 2) + + + + AND ob.order_state_id IN (2050, 2060) + + + + AND ob.order_state_id IN (2011, 2012, 2013, 2014, 2020, 2030, 2040, 2050, 2060, 2070, 2080) + + + + + + + AND oi.delivery_type_id NOT IN (1,2,3,4,10) + + + + + + AND ob.order_state_id=2010 + + + + AND ob.order_state_id IN (2011, 2012, 2013, 2014, 2020) + + + + AND ob.order_state_id IN (2030, 2040) + + + + AND ob.order_state_id IN (2050, 2060) + + + + AND ob.order_state_id IN (2011,2012, 2013, 2014, 2020, 2030, 2040, 2050, 2060, 2070, 2080) + + + + + + + AND ob.order_state_id IN (2011, 2012, 2013, 2014, 2020, 2030, 2040, 2050, 2060) + + + + AND oi.order_time =]]> #{begin_time} + + + + AND oi.order_time #{end_time} + + + + + + + +