feat(订单管理): 添加订单列表导出功能并扩展查询条件
新增订单列表导出功能,支持将订单数据导出为Excel文件。同时扩展了订单查询条件,增加支付时间和支付方式的筛选。此外,新增了ShopOrderExcelDTO类用于Excel导出时的数据映射。
This commit is contained in:
parent
3803ae0446
commit
d2a25dc9ea
|
@ -1,18 +1,29 @@
|
||||||
package com.agileboot.admin.controller.shop;
|
package com.agileboot.admin.controller.shop;
|
||||||
|
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.agileboot.admin.customize.aop.accessLog.AccessLog;
|
||||||
import com.agileboot.common.core.base.BaseController;
|
import com.agileboot.common.core.base.BaseController;
|
||||||
import com.agileboot.common.core.dto.ResponseDTO;
|
import com.agileboot.common.core.dto.ResponseDTO;
|
||||||
import com.agileboot.common.core.page.PageDTO;
|
import com.agileboot.common.core.page.PageDTO;
|
||||||
|
import com.agileboot.common.enums.common.BusinessTypeEnum;
|
||||||
|
import com.agileboot.common.utils.poi.CustomExcelUtil;
|
||||||
import com.agileboot.domain.shop.order.OrderApplicationService;
|
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.dto.ShopOrderExcelDTO;
|
||||||
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;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/shop/order")
|
@RequestMapping("/shop/order")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@ -25,7 +36,19 @@ public class ShopOrderController extends BaseController {
|
||||||
// @PreAuthorize("@permission.has('shop:goods:list')")
|
// @PreAuthorize("@permission.has('shop:goods:list')")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public ResponseDTO<PageDTO<ShopOrderEntity>> list(SearchShopOrderQuery<ShopOrderEntity> query) {
|
public ResponseDTO<PageDTO<ShopOrderEntity>> list(SearchShopOrderQuery<ShopOrderEntity> query) {
|
||||||
|
log.info("订单列表查询参数:{}", JSONUtil.toJsonStr(query));
|
||||||
PageDTO<ShopOrderEntity> page = orderApplicationService.getOrderList(query);
|
PageDTO<ShopOrderEntity> page = orderApplicationService.getOrderList(query);
|
||||||
return ResponseDTO.ok(page);
|
return ResponseDTO.ok(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "订单列表导出")
|
||||||
|
@AccessLog(title = "订单管理", businessType = BusinessTypeEnum.EXPORT)
|
||||||
|
@GetMapping("/excel")
|
||||||
|
public void exportOrderByExcel(HttpServletResponse response, SearchShopOrderQuery<ShopOrderEntity> query) {
|
||||||
|
query.setPaymentMethod("wechat");
|
||||||
|
query.setPayStatus(2);
|
||||||
|
List<ShopOrderEntity> list = orderApplicationService.list(query);
|
||||||
|
List<ShopOrderExcelDTO> excelDTOList = list.stream().map(ShopOrderExcelDTO::new).collect(Collectors.toList());
|
||||||
|
CustomExcelUtil.writeToResponse(excelDTOList, ShopOrderExcelDTO.class, response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,10 @@ public class OrderApplicationService {
|
||||||
return new PageDTO<>(page.getRecords(), page.getTotal());
|
return new PageDTO<>(page.getRecords(), page.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<ShopOrderEntity> list(SearchShopOrderQuery<ShopOrderEntity> query) {
|
||||||
|
return orderService.list(query.toQueryWrapper());
|
||||||
|
}
|
||||||
|
|
||||||
public void openOrderGoodsCabinet(Long orderId, Long orderGoodsId, AddCabinetCellOperationCommand operationCommand) {
|
public void openOrderGoodsCabinet(Long orderId, Long orderGoodsId, AddCabinetCellOperationCommand operationCommand) {
|
||||||
OrderModel orderModel = orderModelFactory.loadById(orderId);
|
OrderModel orderModel = orderModelFactory.loadById(orderId);
|
||||||
// 验证订单状态
|
// 验证订单状态
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.agileboot.domain.shop.order.dto;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.agileboot.common.annotation.ExcelColumn;
|
||||||
|
import com.agileboot.domain.shop.order.db.ShopOrderEntity;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ShopOrderExcelDTO {
|
||||||
|
public ShopOrderExcelDTO(ShopOrderEntity entity) {
|
||||||
|
if (entity != null) {
|
||||||
|
BeanUtil.copyProperties(entity, this);
|
||||||
|
this.payTimeStr = entity.getPayTime() != null ? DateUtil.format(entity.getPayTime(), "yyyy-MM-dd HH:mm:ss"): "";
|
||||||
|
this.createTimeStr = entity.getCreateTime()!= null? DateUtil.format(entity.getCreateTime(), "yyyy-MM-dd HH:mm:ss"): "";
|
||||||
|
switch (entity.getPayStatus()) {
|
||||||
|
case 1:
|
||||||
|
this.payStatusStr = "未支付";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
this.payStatusStr = "已支付";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
this.payStatusStr = "退款中";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
this.payStatusStr = "已退款";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.payStatusStr = "";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExcelColumn(name = "订单ID")
|
||||||
|
private Long orderId;
|
||||||
|
@ExcelColumn(name = "订单金额(元)")
|
||||||
|
private BigDecimal totalAmount;
|
||||||
|
@ExcelColumn(name = "支付状态")
|
||||||
|
private String payStatusStr;
|
||||||
|
@ExcelColumn(name = "支付时间")
|
||||||
|
private String payTimeStr;
|
||||||
|
@ExcelColumn(name = "创建时间")
|
||||||
|
private String createTimeStr;
|
||||||
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
package com.agileboot.domain.shop.order.query;
|
package com.agileboot.domain.shop.order.query;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.agileboot.common.core.page.AbstractPageQuery;
|
import com.agileboot.common.core.page.AbstractPageQuery;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
@ -16,6 +17,8 @@ public class SearchShopOrderQuery<T> extends AbstractPageQuery<T> {
|
||||||
private Integer payStatus;
|
private Integer payStatus;
|
||||||
private Date startTime;
|
private Date startTime;
|
||||||
private Date endTime;
|
private Date endTime;
|
||||||
|
private Date payTime;
|
||||||
|
private String paymentMethod;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public QueryWrapper<T> addQueryCondition() {
|
public QueryWrapper<T> addQueryCondition() {
|
||||||
|
@ -25,7 +28,11 @@ public class SearchShopOrderQuery<T> extends AbstractPageQuery<T> {
|
||||||
.like(StrUtil.isNotEmpty(orderNumber), "order_number", orderNumber)
|
.like(StrUtil.isNotEmpty(orderNumber), "order_number", orderNumber)
|
||||||
.eq(status != null, "status", status)
|
.eq(status != null, "status", status)
|
||||||
.eq(payStatus != null, "pay_status", payStatus)
|
.eq(payStatus != null, "pay_status", payStatus)
|
||||||
|
.eq(StrUtil.isNotEmpty(paymentMethod), "payment_method", paymentMethod)
|
||||||
.between(startTime != null && endTime != null, "create_time", startTime, endTime)
|
.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)
|
.eq("deleted", 0)
|
||||||
.orderByDesc("create_time");
|
.orderByDesc("create_time");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue