refactor(订单查询): 将订单导出功能中的查询参数分离为独立类

为了提升代码的可维护性和可读性,将订单导出功能中的查询参数从通用查询类中分离出来,创建了新的`SearchShopOrderExcelQuery`类。这样可以使查询逻辑更加清晰,并且便于后续扩展和修改。
This commit is contained in:
dzq 2025-04-27 10:49:04 +08:00
parent 3994d99321
commit 8c542c0594
3 changed files with 48 additions and 2 deletions

View File

@ -11,6 +11,7 @@ import com.agileboot.domain.shop.order.OrderApplicationService;
import com.agileboot.domain.shop.order.db.ShopOrderEntity; import com.agileboot.domain.shop.order.db.ShopOrderEntity;
import com.agileboot.domain.shop.order.db.dto.OrderWithGoodsDTO; import com.agileboot.domain.shop.order.db.dto.OrderWithGoodsDTO;
import com.agileboot.domain.shop.order.dto.ShopOrderExcelDTO; import com.agileboot.domain.shop.order.dto.ShopOrderExcelDTO;
import com.agileboot.domain.shop.order.query.SearchShopOrderExcelQuery;
import com.agileboot.domain.shop.order.query.SearchShopOrderQuery; import com.agileboot.domain.shop.order.query.SearchShopOrderQuery;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -45,7 +46,7 @@ public class ShopOrderController extends BaseController {
@Operation(summary = "订单列表导出") @Operation(summary = "订单列表导出")
@AccessLog(title = "订单管理", businessType = BusinessTypeEnum.EXPORT) @AccessLog(title = "订单管理", businessType = BusinessTypeEnum.EXPORT)
@GetMapping("/excel") @GetMapping("/excel")
public void exportOrderByExcel(HttpServletResponse response, SearchShopOrderQuery<ShopOrderEntity> query) { public void exportOrderByExcel(HttpServletResponse response, SearchShopOrderExcelQuery<ShopOrderEntity> query) {
query.setPaymentMethod("wechat"); query.setPaymentMethod("wechat");
query.setPayStatus(2); query.setPayStatus(2);
List<ShopOrderEntity> list = orderApplicationService.list(query); List<ShopOrderEntity> list = orderApplicationService.list(query);

View File

@ -33,6 +33,7 @@ import com.agileboot.domain.shop.order.model.OrderModel;
import com.agileboot.domain.shop.order.model.OrderModelFactory; import com.agileboot.domain.shop.order.model.OrderModelFactory;
import com.agileboot.domain.shop.order.model.OrderGoodsModel; import com.agileboot.domain.shop.order.model.OrderGoodsModel;
import com.agileboot.domain.shop.order.model.OrderGoodsModelFactory; import com.agileboot.domain.shop.order.model.OrderGoodsModelFactory;
import com.agileboot.domain.shop.order.query.SearchShopOrderExcelQuery;
import com.agileboot.domain.shop.order.query.SearchShopOrderQuery; import com.agileboot.domain.shop.order.query.SearchShopOrderQuery;
import com.agileboot.domain.shop.payment.PaymentApplicationService; import com.agileboot.domain.shop.payment.PaymentApplicationService;
import com.agileboot.domain.shop.payment.dto.WxJsApiPreCreateRequest; import com.agileboot.domain.shop.payment.dto.WxJsApiPreCreateRequest;
@ -80,7 +81,7 @@ public class OrderApplicationService {
return new PageDTO<>(page.getRecords(), page.getTotal()); return new PageDTO<>(page.getRecords(), page.getTotal());
} }
public List<ShopOrderEntity> list(SearchShopOrderQuery<ShopOrderEntity> query) { public List<ShopOrderEntity> list(SearchShopOrderExcelQuery<ShopOrderEntity> query) {
return orderService.list(query.toQueryWrapper()); return orderService.list(query.toQueryWrapper());
} }

View File

@ -0,0 +1,44 @@
package com.agileboot.domain.shop.order.query;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.agileboot.common.core.page.AbstractPageQuery;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.poi.ss.formula.functions.T;
import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@Data
public class SearchShopOrderExcelQuery<T> extends AbstractPageQuery<T> {
private Long orderId;
private Long cellId;
private Integer status;
private Integer payStatus;
private Date startTime;
private Date endTime;
private Date payTime;
private String paymentMethod;
@Override
public QueryWrapper<T> addQueryCondition() {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
queryWrapper
.eq(orderId != null, "order_id", orderId)
.eq(status != null, "status", status)
.eq(payStatus != null, "pay_status", payStatus)
.eq(StrUtil.isNotEmpty(paymentMethod), "payment_method", paymentMethod)
.between(startTime != null && endTime != null, "create_time", startTime, endTime)
.between(payTime != null, "pay_time",
payTime == null ? null : DateUtil.beginOfDay(payTime).toJdkDate(),
payTime == null ? null : DateUtil.endOfDay(payTime).toJdkDate())
.eq("deleted", 0)
.groupBy("order_id")
.orderByDesc("create_time");
return queryWrapper;
}
}