订单数量 fix bug
This commit is contained in:
parent
cf758fd0d5
commit
1359b6a399
@ -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; //平邮
|
||||
|
||||
@ -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<LibraryProductMapper, Li
|
||||
|
||||
@Value("${project.static_domain}")
|
||||
private String staticDomain;
|
||||
@Autowired
|
||||
private AccountService accountService;
|
||||
|
||||
/**
|
||||
* 匹配商品
|
||||
@ -54,7 +59,14 @@ public class LibraryProductImpl extends BaseServiceImpl<LibraryProductMapper, Li
|
||||
}
|
||||
|
||||
// 使用 Stream 处理图片 URLs
|
||||
list.forEach(product -> 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;
|
||||
|
||||
}
|
||||
|
||||
@ -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<String, Object> 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);
|
||||
}
|
||||
|
||||
|
||||
// 商家版接口 结束
|
||||
|
||||
}
|
||||
|
||||
@ -61,16 +61,37 @@ public interface ShopOrderBaseMapper extends BaseMapper<ShopOrderBase> {
|
||||
*/
|
||||
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<MchOrderInfoDTO> selectMchOrderPageList(@Param("storeId") Integer storeId, @Param("keyword") String keyword, @Param("delivery") Integer delivery, @Param("status") Integer status, @Param("expireSeconds") Long expireSeconds, IPage<MchOrderInfoDTO> page);
|
||||
IPage<MchOrderInfoDTO> 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<MchOrderInfoDTO> 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);
|
||||
|
||||
/**
|
||||
* 获取微信发货订单基本信息
|
||||
|
||||
@ -540,23 +540,45 @@ public interface ShopOrderBaseService extends IBaseService<ShopOrderBase> {
|
||||
* 商家版订单列表(新)
|
||||
*
|
||||
* @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<MchOrderInfoDTO> selectMchOrderPageList(Integer storeId, String keyword, Integer delivery, Integer status, Long expireSeconds, Integer pageNum, Integer pageSize);
|
||||
IPage<MchOrderInfoDTO> 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);
|
||||
|
||||
/**
|
||||
* 获取微信发货订单基本信息
|
||||
|
||||
@ -8531,26 +8531,29 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
}
|
||||
|
||||
/**
|
||||
* 商家版订单列表查询(优化版)
|
||||
* 商家版订单列表(新)
|
||||
*
|
||||
* @param storeId 店铺ID
|
||||
* @param keyword 订单搜索关键字
|
||||
* @param delivery 配送方式:1-同城配送;2-物流配送
|
||||
* @param status 查询状态:1-进行中;2-异常订单;3-退款订单
|
||||
* @param expireSeconds 配送超时秒数
|
||||
* @param pageNum 页码
|
||||
* @param pageSize 页大小
|
||||
* @return 分页订单数据(异常时返回空分页)
|
||||
* @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 pageNum 页码
|
||||
* @param pageSize 页大小
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public IPage<MchOrderInfoDTO> selectMchOrderPageList(Integer storeId, String keyword, Integer delivery, Integer status, Long expireSeconds, Integer pageNum, Integer pageSize) {
|
||||
public IPage<MchOrderInfoDTO> selectMchOrderPageList(Integer storeId, String keyword, Integer delivery, Integer status, Integer logisticsStatus, Long expireSeconds, Long beginTime, Long endTime, Integer pageNum, Integer pageSize) {
|
||||
try {
|
||||
// 初始化分页对象
|
||||
Page<MchOrderInfoDTO> page = new Page<>(pageNum, pageSize);
|
||||
|
||||
// 查询订单基础数据
|
||||
IPage<MchOrderInfoDTO> 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<ShopOrderBaseMappe
|
||||
}
|
||||
|
||||
/**
|
||||
* 商家订单各个分类和状态的订单数量
|
||||
* 商家版根据条件查询订单条数(新)
|
||||
*
|
||||
* @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
|
||||
*/
|
||||
@Override
|
||||
public JSONObject mchOrderCountByStoreId(Integer storeId) {
|
||||
public Long countMchOrderByCondition(Integer storeId, String keyword, Integer delivery, Integer status, Integer logisticsStatus, Long expireSeconds, Long beginTime, Long endTime) {
|
||||
return shopOrderBaseMapper.countMchOrderByCondition(storeId, keyword, delivery, status, logisticsStatus, expireSeconds, beginTime, endTime);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 商家订单各个分类和状态的订单数量
|
||||
*
|
||||
* @param storeId 店铺Id
|
||||
* @param expireSeconds 配送超时的秒数,单位秒
|
||||
* @param beginTime 开始时间戳(13位毫秒级别)
|
||||
* @param endTime 截止时间戳(13位毫秒级别)
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public JSONObject mchOrderCountByStoreId(Integer storeId, Long expireSeconds, Long beginTime, Long endTime) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
|
||||
if (CheckUtil.isEmpty(storeId)) {
|
||||
@ -8621,96 +8646,123 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
|
||||
// 2060-ORDER_STATE_FINISH 已完成/已签收;
|
||||
// 2070-ORDER_STATE_CANCEL已取消/已作废;
|
||||
// 2080-ORDER_STATE_SELF_PICKUP自提
|
||||
|
||||
// 全部订单总数量
|
||||
jsonObject.put("all_order_count", shopOrderInfoService.getOrderCountByStoreId(storeId, null, null, null, null));
|
||||
jsonObject.put("all_order_count", countMchOrderByCondition(storeId, "", 0, 0, 0, 0L, beginTime, endTime));
|
||||
|
||||
// 同城配送订单总数量
|
||||
jsonObject.put("same_city_order_count", shopOrderInfoService.getOrderCountByStoreId(storeId, null, null,
|
||||
Collections.singletonList(StateCode.DELIVERY_TYPE_SAME_CITY),
|
||||
null
|
||||
));
|
||||
|
||||
jsonObject.put("same_city_order_count", countMchOrderByCondition(storeId, "", 1, 0, 0, expireSeconds, beginTime, endTime));
|
||||
// 同城配送进行中订单数量
|
||||
jsonObject.putByPath("same_city_order.progress_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
Arrays.asList(StateCode.ORDER_STATE_WAIT_REVIEW, StateCode.ORDER_STATE_WAIT_FINANCE_REVIEW,
|
||||
StateCode.ORDER_STATE_WAIT_PAID, StateCode.ORDER_STATE_PICKING,
|
||||
StateCode.ORDER_STATE_WAIT_SHIPPING, StateCode.ORDER_STATE_SHIPPED),
|
||||
Collections.singletonList(0),
|
||||
Collections.singletonList(StateCode.DELIVERY_TYPE_SAME_CITY),
|
||||
null
|
||||
));
|
||||
|
||||
jsonObject.putByPath("same_city_order.progress_count", countMchOrderByCondition(storeId, "", 1, 1, 0, expireSeconds, beginTime, endTime));
|
||||
// 同城配送超时订单数量
|
||||
jsonObject.putByPath("same_city_order.overtime_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
Arrays.asList(StateCode.ORDER_STATE_WAIT_REVIEW,
|
||||
StateCode.ORDER_STATE_WAIT_FINANCE_REVIEW,
|
||||
StateCode.ORDER_STATE_WAIT_PAID,
|
||||
StateCode.ORDER_STATE_PICKING,
|
||||
StateCode.ORDER_STATE_WAIT_SHIPPING,
|
||||
StateCode.ORDER_STATE_SHIPPED),
|
||||
|
||||
Collections.singletonList(0),
|
||||
Collections.singletonList(StateCode.DELIVERY_TYPE_SAME_CITY),
|
||||
120L
|
||||
));
|
||||
|
||||
jsonObject.putByPath("same_city_order.overtime_count", countMchOrderByCondition(storeId, "", 1, 2, 0, expireSeconds, beginTime, endTime));
|
||||
// 同城配送退款订单数量
|
||||
jsonObject.putByPath("same_city_order.refund_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
null,
|
||||
Arrays.asList(1, 2),
|
||||
Collections.singletonList(StateCode.DELIVERY_TYPE_SAME_CITY),
|
||||
null
|
||||
));
|
||||
jsonObject.putByPath("same_city_order.refund_count", countMchOrderByCondition(storeId, "", 1, 3, 0, 0L, beginTime, endTime));
|
||||
// 同城配送退款订单数量
|
||||
jsonObject.putByPath("same_city_order.finish_count", countMchOrderByCondition(storeId, "", 1, 9, 0, 0L, beginTime, endTime));
|
||||
|
||||
|
||||
// 普通物流订单总数量
|
||||
jsonObject.put("logistics_order_count", shopOrderInfoService.getOrderCountByStoreId(storeId, null, null,
|
||||
Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
null
|
||||
));
|
||||
|
||||
jsonObject.put("logistics_order_count", countMchOrderByCondition(storeId, "", 2, 0, 0, 0L, beginTime, endTime));
|
||||
// 普通物流待支付订单数量
|
||||
jsonObject.putByPath("logistics_order.wait_pay_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
Collections.singletonList(StateCode.ORDER_STATE_WAIT_PAY),
|
||||
|
||||
Collections.singletonList(0),
|
||||
|
||||
Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
null
|
||||
));
|
||||
|
||||
jsonObject.putByPath("logistics_order.wait_pay_count", countMchOrderByCondition(storeId, "", 2, 0, 1, 0L, beginTime, endTime));
|
||||
// 普通物流待发货订单数量
|
||||
jsonObject.putByPath("logistics_order.wait_shipping_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
Arrays.asList(StateCode.ORDER_STATE_WAIT_REVIEW,
|
||||
StateCode.ORDER_STATE_WAIT_FINANCE_REVIEW,
|
||||
StateCode.ORDER_STATE_WAIT_PAID,
|
||||
StateCode.ORDER_STATE_PICKING,
|
||||
StateCode.ORDER_STATE_WAIT_SHIPPING),
|
||||
|
||||
Collections.singletonList(0),
|
||||
|
||||
Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
null
|
||||
));
|
||||
|
||||
jsonObject.putByPath("logistics_order.wait_shipping_count", countMchOrderByCondition(storeId, "", 2, 0, 2, 0L, beginTime, endTime));
|
||||
// 普通物流待收货订单数量
|
||||
jsonObject.putByPath("logistics_order.receiving_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
Collections.singletonList(StateCode.ORDER_STATE_SHIPPED),
|
||||
|
||||
Collections.singletonList(0),
|
||||
|
||||
Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
null
|
||||
));
|
||||
|
||||
jsonObject.putByPath("logistics_order.receiving_count", countMchOrderByCondition(storeId, "", 2, 0, 3, 0L, beginTime, endTime));
|
||||
// 普通物流已完成订单数量
|
||||
jsonObject.putByPath("logistics_order.finished_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
Arrays.asList(StateCode.ORDER_STATE_RECEIVED, StateCode.ORDER_STATE_FINISH),
|
||||
jsonObject.putByPath("logistics_order.finished_count", countMchOrderByCondition(storeId, "", 2, 0, 9, 0L, beginTime, endTime));
|
||||
|
||||
Collections.singletonList(0),
|
||||
Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
null
|
||||
));
|
||||
// 全部订单总数量
|
||||
// jsonObject.put("all_order_count", shopOrderInfoService.getOrderCountByStoreId(storeId, null, null, null, null));
|
||||
//
|
||||
// // 同城配送订单总数量
|
||||
// jsonObject.put("same_city_order_count", shopOrderInfoService.getOrderCountByStoreId(storeId, null, null,
|
||||
// Collections.singletonList(StateCode.DELIVERY_TYPE_SAME_CITY),
|
||||
// null
|
||||
// ));
|
||||
//
|
||||
// // 同城配送进行中订单数量
|
||||
// jsonObject.putByPath("same_city_order.progress_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
// Arrays.asList(StateCode.ORDER_STATE_WAIT_REVIEW, StateCode.ORDER_STATE_WAIT_FINANCE_REVIEW,
|
||||
// StateCode.ORDER_STATE_WAIT_PAID, StateCode.ORDER_STATE_PICKING,
|
||||
// StateCode.ORDER_STATE_WAIT_SHIPPING, StateCode.ORDER_STATE_SHIPPED),
|
||||
// Collections.singletonList(0),
|
||||
// Collections.singletonList(StateCode.DELIVERY_TYPE_SAME_CITY),
|
||||
// null
|
||||
// ));
|
||||
//
|
||||
// // 同城配送超时订单数量
|
||||
// jsonObject.putByPath("same_city_order.overtime_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
// Arrays.asList(StateCode.ORDER_STATE_WAIT_REVIEW,
|
||||
// StateCode.ORDER_STATE_WAIT_FINANCE_REVIEW,
|
||||
// StateCode.ORDER_STATE_WAIT_PAID,
|
||||
// StateCode.ORDER_STATE_PICKING,
|
||||
// StateCode.ORDER_STATE_WAIT_SHIPPING,
|
||||
// StateCode.ORDER_STATE_SHIPPED),
|
||||
//
|
||||
// Collections.singletonList(0),
|
||||
// Collections.singletonList(StateCode.DELIVERY_TYPE_SAME_CITY),
|
||||
// 120L
|
||||
// ));
|
||||
//
|
||||
// // 同城配送退款订单数量
|
||||
// jsonObject.putByPath("same_city_order.refund_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
// null,
|
||||
// Arrays.asList(1, 2),
|
||||
// Collections.singletonList(StateCode.DELIVERY_TYPE_SAME_CITY),
|
||||
// null
|
||||
// ));
|
||||
//
|
||||
//
|
||||
// // 普通物流订单总数量
|
||||
// jsonObject.put("logistics_order_count", shopOrderInfoService.getOrderCountByStoreId(storeId, null, null,
|
||||
// Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
// null
|
||||
// ));
|
||||
//
|
||||
// // 普通物流待支付订单数量
|
||||
// jsonObject.putByPath("logistics_order.wait_pay_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
// Collections.singletonList(StateCode.ORDER_STATE_WAIT_PAY),
|
||||
//
|
||||
// Collections.singletonList(0),
|
||||
//
|
||||
// Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
// null
|
||||
// ));
|
||||
//
|
||||
// // 普通物流待发货订单数量
|
||||
// jsonObject.putByPath("logistics_order.wait_shipping_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
// Arrays.asList(StateCode.ORDER_STATE_WAIT_REVIEW,
|
||||
// StateCode.ORDER_STATE_WAIT_FINANCE_REVIEW,
|
||||
// StateCode.ORDER_STATE_WAIT_PAID,
|
||||
// StateCode.ORDER_STATE_PICKING,
|
||||
// StateCode.ORDER_STATE_WAIT_SHIPPING),
|
||||
//
|
||||
// Collections.singletonList(0),
|
||||
//
|
||||
// Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
// null
|
||||
// ));
|
||||
//
|
||||
// // 普通物流待收货订单数量
|
||||
// jsonObject.putByPath("logistics_order.receiving_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
// Collections.singletonList(StateCode.ORDER_STATE_SHIPPED),
|
||||
//
|
||||
// Collections.singletonList(0),
|
||||
//
|
||||
// Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
// null
|
||||
// ));
|
||||
//
|
||||
// // 普通物流已完成订单数量
|
||||
// jsonObject.putByPath("logistics_order.finished_count", shopOrderInfoService.getOrderCountByStoreId(storeId,
|
||||
// Arrays.asList(StateCode.ORDER_STATE_RECEIVED, StateCode.ORDER_STATE_FINISH),
|
||||
//
|
||||
// Collections.singletonList(0),
|
||||
// Arrays.asList(StateCode.DELIVERY_TYPE_EXPRESS, StateCode.DELIVERY_TYPE_EXP),
|
||||
// null
|
||||
// ));
|
||||
|
||||
// todo 预订单数量相关数
|
||||
|
||||
|
||||
@ -636,9 +636,107 @@
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<!--// refundstatus 退款状态:0-是无退款;1-是部分退款;2-是全部退款
|
||||
// orderstatus 订单状态:2010-待付款;2011-待订单审核;2012-待发货;2013-待财务审核;2014-待配货/待出库审核;2020-待发货;
|
||||
2030-待发货/待收货确认;2040-已发货/待收货确认;2050-已签收;2060-已完成/已签收;2070-已取消/已作废;2080-自提-->
|
||||
|
||||
<!--refundstatus 退款状态:0-是无退款;1-是部分退款;2-是全部退款
|
||||
orderstatus 订单状态:2010-待付款;2011-待订单审核;2012-待发货;2013-待财务审核;2014-待配货/待出库审核;2020-待发货;
|
||||
2030-待发货/待收货确认;2040-已发货/待收货确认;2050-已签收;2060-已完成/已签收;2070-已取消/已作废;2080-自提-->
|
||||
<!-- 公共的where条件片段 -->
|
||||
<sql id="mchOrderWhereCondition">
|
||||
<where>
|
||||
<!-- 店铺ID筛选:0表示不筛选 -->
|
||||
<if test="storeId != null and storeId > 0">
|
||||
AND ob.store_id = #{storeId}
|
||||
</if>
|
||||
|
||||
<!-- 关键词搜索:支持多字段模糊匹配 -->
|
||||
<if test="keyword != null and keyword != ''">
|
||||
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}, '%')
|
||||
)
|
||||
</if>
|
||||
|
||||
<!-- === 配送类型筛选 === -->
|
||||
<!-- 1-同城配送 -->
|
||||
<if test="delivery != null and delivery == 1">
|
||||
AND oi.delivery_type_id = 16
|
||||
|
||||
<!-- 订单状态筛选 -->
|
||||
<choose>
|
||||
<!-- 1-进行中订单 -->
|
||||
<when test="status != null and status == 1 and expireSeconds != null and expireSeconds > 0">
|
||||
AND ob.order_state_id IN (2011,2012,2013, 2014, 2020, 2030, 2040)
|
||||
AND (oi.order_time + #{expireSeconds}*1000) <![CDATA[>=]]> UNIX_TIMESTAMP() * 1000
|
||||
</when>
|
||||
<!-- 2-异常(超时)订单 -->
|
||||
<when test="status != null and status == 2 and expireSeconds != null and expireSeconds > 0">
|
||||
AND ob.order_state_id IN (2011,2012,2013, 2014, 2020, 2030, 2040)
|
||||
AND (oi.order_time + #{expireSeconds}*1000) <![CDATA[<]]> UNIX_TIMESTAMP() * 1000
|
||||
</when>
|
||||
<!-- 3-退款订单 -->
|
||||
<when test="status != null and status == 3">
|
||||
AND od.order_refund_status IN (1, 2)
|
||||
</when>
|
||||
<!-- 9-已完成订单 -->
|
||||
<when test="status != null and status == 9">
|
||||
AND ob.order_state_id IN (2050, 2060)
|
||||
</when>
|
||||
<!-- 0-全部订单或无状态 -->
|
||||
<otherwise>
|
||||
AND ob.order_state_id IN (2011, 2012, 2013, 2014, 2020, 2030, 2040, 2050, 2060, 2070, 2080)
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
|
||||
<!-- 2-物流配送 -->
|
||||
<if test="delivery != null and delivery == 2">
|
||||
AND oi.delivery_type_id NOT IN (1,2,3,4,10)
|
||||
|
||||
<!-- 订单状态筛选 -->
|
||||
<choose>
|
||||
<!-- 1-待支付订单 -->
|
||||
<when test="logisticsStatus != null and logisticsStatus == 1">
|
||||
AND ob.order_state_id=2010
|
||||
</when>
|
||||
<!-- 2-待发货订单 -->
|
||||
<when test="logisticsStatus != null and logisticsStatus == 2">
|
||||
AND ob.order_state_id IN (2011, 2012, 2013, 2014, 2020)
|
||||
</when>
|
||||
<!-- 3-待接收单 -->
|
||||
<when test="logisticsStatus != null and logisticsStatus == 3">
|
||||
AND ob.order_state_id IN (2030, 2040)
|
||||
</when>
|
||||
<!-- 9-已完成订单 -->
|
||||
<when test="logisticsStatus != null and logisticsStatus == 9">
|
||||
AND ob.order_state_id IN (2050, 2060)
|
||||
</when>
|
||||
<!-- 0-全部订单或无状态 -->
|
||||
<otherwise>
|
||||
AND ob.order_state_id IN (2011,2012, 2013, 2014, 2020, 2030, 2040, 2050, 2060, 2070, 2080)
|
||||
</otherwise>
|
||||
</choose>
|
||||
</if>
|
||||
|
||||
<!-- 无配送类型或0-全部 -->
|
||||
<if test="delivery == null or delivery == 0">
|
||||
AND ob.order_state_id IN (2011, 2012, 2013, 2014, 2020, 2030, 2040, 2050, 2060)
|
||||
</if>
|
||||
|
||||
<if test="beginTime != null and beginTime > 0">
|
||||
AND oi.order_time <![CDATA[>=]]> #{begin_time}
|
||||
</if>
|
||||
|
||||
<if test="endTime != null and endTime > 0">
|
||||
AND oi.order_time <![CDATA[<=]]> #{end_time}
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
|
||||
<select id="selectMchOrderPageList" resultMap="MchOrderResult">
|
||||
SELECT
|
||||
ob.order_id,
|
||||
@ -660,7 +758,8 @@
|
||||
oi.delivery_type_id,
|
||||
oi.buyer_user_id,
|
||||
oi.order_picked_time,
|
||||
IF((SELECT count(*) FROM shop_order_base WHERE buyer_user_id = oi.buyer_user_id AND order_state_id IN (2011,
|
||||
IF((SELECT count(*) FROM shop_order_base WHERE buyer_user_id = oi.buyer_user_id AND order_state_id IN
|
||||
(2011,2012,
|
||||
2013, 2014, 2020, 2030, 2040))>1,2,1)
|
||||
AS is_new_buyer,
|
||||
oi.payment_time,
|
||||
@ -715,49 +814,24 @@
|
||||
left join shop_store_sf_order osf on ob.order_id=osf.shop_order_id
|
||||
left join shop_product_item spi on oit.product_id=spi.product_id
|
||||
left join shop_base_store_grade sbsg on sb.store_grade_id=sbsg.store_grade_id
|
||||
<where>
|
||||
<if test="storeId!=null and storeId > 0">
|
||||
and ob.store_id=#{storeId}
|
||||
</if>
|
||||
<if test="keyword!=null and keyword != ''">
|
||||
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}, '%'))
|
||||
</if>
|
||||
|
||||
<!--配送方式:1-同城配送;2-物流配送-->
|
||||
<if test="delivery!=null and delivery==1">
|
||||
and ob.order_state_id IN (2011, 2013, 2014, 2020, 2030, 2040)
|
||||
and oi.delivery_type_id = 16
|
||||
<include refid="mchOrderWhereCondition"/>
|
||||
|
||||
<!--进行中-->
|
||||
<if test="status!=null and status==1 and expireSeconds!=null and expireSeconds>0">
|
||||
and (oi.order_time + #{expireSeconds}*1000) <![CDATA[>=]]> UNIX_TIMESTAMP() * 1000
|
||||
</if>
|
||||
|
||||
<!--超时异常-->
|
||||
<if test="status!=null and status==2 and expireSeconds!=null and expireSeconds>0">
|
||||
and (oi.order_time + #{expireSeconds}*1000) <![CDATA[<]]> UNIX_TIMESTAMP() * 1000
|
||||
</if>
|
||||
|
||||
<!--退款订单-->
|
||||
<if test="status!=null and status==3">
|
||||
and od.order_refund_status IN (1, 2)
|
||||
</if>
|
||||
</if>
|
||||
|
||||
<if test="delivery!=null and delivery==2">
|
||||
and ob.order_state_id IN (2011, 2013, 2014, 2020, 2030, 2040)
|
||||
and oi.delivery_type_id NOT IN (1,2,3,4,10)
|
||||
</if>
|
||||
</where>
|
||||
order by ob.order_time desc
|
||||
ORDER BY ob.order_id DESC
|
||||
</select>
|
||||
|
||||
<select id="countMchOrderByCondition" resultType="java.lang.Long">
|
||||
SELECT COUNT(DISTINCT ob.order_id)
|
||||
FROM shop_order_base ob
|
||||
JOIN shop_order_info oi ON ob.order_id = oi.order_id
|
||||
JOIN shop_order_data od ON ob.order_id = od.order_id
|
||||
JOIN shop_store_base sb ON ob.store_id = sb.store_id
|
||||
JOIN shop_order_delivery_address oda ON ob.order_id = oda.order_id
|
||||
|
||||
<include refid="mchOrderWhereCondition"/>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getWxOrderBaseInfo" resultMap="WxOrderBaseInfoResult">
|
||||
SELECT a.store_id,
|
||||
a.order_id as out_trade_no,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user