Browse Source

优化订单分页

bai 1 month ago
parent
commit
2fb042fab9

+ 106 - 5
blade-service/blade-factory/src/main/java/org/springblade/factory/api/controller/SalesOrderController.java

@@ -9,10 +9,13 @@ import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.factory.api.service.ZcrmU9cWebapiSoService;
 import org.springblade.factory.entity.*;
 import org.springblade.factory.service.*;
+import org.springblade.factory.vo.PcBladeOrderVO;
+import org.springblade.factory.wrapper.PcBladeOrderWrapper;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
@@ -197,18 +200,116 @@ public class SalesOrderController {
 
 	/**
 	 * 获取访问人自己的订单列表
-	 * @param pcBladeOrder
+	 * @param orderParams
+	 * @param query
+	 * @param bladeUser
 	 * @return
 	 */
 	@GetMapping("/getOrderList")
-	public R<List<PcBladeOrder>> getOrderList(PcBladeOrder pcBladeOrder) {
+	public R<IPage<PcBladeOrderVO>> getOrderList(
+		@ApiIgnore @RequestParam Map<String, Object> orderParams,
+		Query query,
+		BladeUser bladeUser) {
+		// 1. 构建基础查询条件
+		QueryWrapper<PcBladeOrder> queryWrapper = Condition.getQueryWrapper(orderParams, PcBladeOrder.class);
+
+		// 2. 增加当前用户的订单过滤条件(根据实体类,使用customerId关联用户)
+		// 假设BladeUser的id对应PcBladeOrder的customerId
 		Long userId = AuthUtil.getUserId();
-		pcBladeOrder.setCustomerId(userId);
-		List<PcBladeOrder> pcBladeOrderList = orderService.selectPcBladeOrderListPro(pcBladeOrder);
-		return R.data(pcBladeOrderList);
+		queryWrapper.eq("CUSTOMER_ID", userId);
+
+		// 3. 处理查询参数,与selectPcBladeOrderListPro方法逻辑保持一致
+		// 订单编号模糊查询
+		if (orderParams.containsKey("orderCode") && StringUtils.isNotBlank(orderParams.get("orderCode").toString())) {
+			queryWrapper.like("order_code", orderParams.get("orderCode"));
+		}
+
+		// 收货人姓名模糊查询
+		if (orderParams.containsKey("receiverName") && StringUtils.isNotBlank(orderParams.get("receiverName").toString())) {
+			queryWrapper.like("receiver_name", orderParams.get("receiverName"));
+		}
+
+		// 收货人手机号模糊查询
+		if (orderParams.containsKey("receiverPhone") && StringUtils.isNotBlank(orderParams.get("receiverPhone").toString())) {
+			queryWrapper.like("receiver_phone", orderParams.get("receiverPhone"));
+		}
+
+		// 收货人地址模糊查询
+		if (orderParams.containsKey("receiverAddress") && StringUtils.isNotBlank(orderParams.get("receiverAddress").toString())) {
+			queryWrapper.like("receiver_address", orderParams.get("receiverAddress"));
+		}
+
+		// 省市区查询
+		if (orderParams.containsKey("receiverRegion") && StringUtils.isNotBlank(orderParams.get("receiverRegion").toString())) {
+			queryWrapper.like("receiver_region", orderParams.get("receiverRegion"));
+		}
+
+		// 订单类型查询
+		if (orderParams.containsKey("orderType") && StringUtils.isNotBlank(orderParams.get("orderType").toString())) {
+			try {
+				Integer orderType = Integer.parseInt(orderParams.get("orderType").toString());
+				queryWrapper.eq("order_type", orderType);
+			} catch (NumberFormatException e) {
+				// 处理参数格式错误
+			}
+		}
+
+		// 精确查询状态(0草稿 1已提交 2已确认 3部分发货 4已完成 5已取消)
+		if (orderParams.containsKey("status") && StringUtils.isNotBlank(orderParams.get("status").toString())) {
+			try {
+				Integer status = Integer.parseInt(orderParams.get("status").toString());
+				queryWrapper.eq("status", status);
+			} catch (NumberFormatException e) {
+				// 处理状态参数不是数字的情况
+			}
+		}
+
+		// 时间范围查询 - 创建时间
+		if (orderParams.containsKey("createTimeStart") && StringUtils.isNotBlank(orderParams.get("createTimeStart").toString())) {
+			queryWrapper.ge("create_time", orderParams.get("createTimeStart"));
+		}
+		if (orderParams.containsKey("createTimeEnd") && StringUtils.isNotBlank(orderParams.get("createTimeEnd").toString())) {
+			queryWrapper.le("create_time", orderParams.get("createTimeEnd"));
+		}
+
+		// 时间范围查询 - 提交时间
+		if (orderParams.containsKey("submitTimeStart") && StringUtils.isNotBlank(orderParams.get("submitTimeStart").toString())) {
+			queryWrapper.ge("submit_time", orderParams.get("submitTimeStart"));
+		}
+		if (orderParams.containsKey("submitTimeEnd") && StringUtils.isNotBlank(orderParams.get("submitTimeEnd").toString())) {
+			queryWrapper.le("submit_time", orderParams.get("submitTimeEnd"));
+		}
+
+		// 时间范围查询 - 确认时间
+		if (orderParams.containsKey("confirmTimeStart") && StringUtils.isNotBlank(orderParams.get("confirmTimeStart").toString())) {
+			queryWrapper.ge("confirm_time", orderParams.get("confirmTimeStart"));
+		}
+		if (orderParams.containsKey("confirmTimeEnd") && StringUtils.isNotBlank(orderParams.get("confirmTimeEnd").toString())) {
+			queryWrapper.le("confirm_time", orderParams.get("confirmTimeEnd"));
+		}
+
+		// 排序 - 按创建时间降序
+		queryWrapper.orderByDesc("create_time");
+
+		// 4. 执行分页查询
+		IPage<PcBladeOrder> pages = orderService.page(Condition.getPage(query), queryWrapper);
+
+		// 5. 关联查询订单详情
+		pages.getRecords().forEach(item -> {
+			PcBladeOrderItem pcBladeOrderItem = new PcBladeOrderItem();
+			pcBladeOrderItem.setOrderId(item.getId());
+			List<PcBladeOrderItem> pcBladeOrderItemList = orderItemService.selectPcBladeOrderItemList(pcBladeOrderItem);
+			item.setPcBladeOrderItemList(pcBladeOrderItemList);
+		});
+
+		// 6. 转换VO并返回
+		return R.data(PcBladeOrderWrapper.build().pageVO(pages));
 	}
 
 
+
+
+
 	/**
 	 * 根据订单编号查询订单及明细
 	 */