瀏覽代碼

配送员管理优化

admin 1 月之前
父節點
當前提交
60fee5c9a7

+ 49 - 49
client-app/src/main/java/com/sapit/client/app/third/controller/order/ThirdOrderManageController.java

@@ -49,24 +49,24 @@ public class ThirdOrderManageController {
 	 * 作	 者:Yangyk
 	 * 日	 期:2023-05-23
 	 */
-	@PostMapping(value = "/orderPage")
-	@AuthToken(type = "third")
-	public ResultBean orderPage(int pageSize, int currentPage, BuOrderSearchBean searchBean) {
-		// 定义返回值
-		ResultBean bean = new ResultBean();
-		PageControlData pageControlData = new PageControlData();
-		pageControlData.setPageSize(pageSize);
-		pageControlData.setCurrentPage(currentPage);
-
-		// 获取商品信息List
-		List<BuOrderV> orderList = orderManageService.page(pageControlData, searchBean);
-		OrderNumBean numBean = orderManageService.getReceivedAndRefundOrderNum(searchBean);
-
-		bean.setList(orderList);
-		bean.setObj(numBean);
-		bean.setPage(pageControlData);
-		return bean;
-	}
+//	@PostMapping(value = "/orderPage")
+//	@AuthToken(type = "third")
+//	public ResultBean orderPage(int pageSize, int currentPage, BuOrderSearchBean searchBean) {
+//		// 定义返回值
+//		ResultBean bean = new ResultBean();
+//		PageControlData pageControlData = new PageControlData();
+//		pageControlData.setPageSize(pageSize);
+//		pageControlData.setCurrentPage(currentPage);
+//
+//		// 获取商品信息List
+//		List<BuOrderV> orderList = orderManageService.page(pageControlData, searchBean);
+//		OrderNumBean numBean = orderManageService.getReceivedAndRefundOrderNum(searchBean);
+//
+//		bean.setList(orderList);
+//		bean.setObj(numBean);
+//		bean.setPage(pageControlData);
+//		return bean;
+//	}
 
 	/**
 	 * 方法名称:根据订单id获取订单详情
@@ -75,23 +75,23 @@ public class ThirdOrderManageController {
 	 * 作	 者:Yangyk
 	 * 日	 期:2023-05-23
 	 */
-	@PostMapping(value = "getOrderDetails")
-	@AuthToken(type = "third")
-	public ResultBean getOrderDetails(Long orderId) {
-		// 定义返回值
-		ResultBean bean = new ResultBean();
-		
-		if (null == orderId) {
-			bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
-			bean.getRtnBean().setRtnMsg("参数错误!");
-		}
-		
-		// 获取订单详情
-		List<BuOrderDetail> list = orderManageService.detailListByOrderId(orderId);
-		
-		bean.setList(list);
-		return bean;
-	}
+//	@PostMapping(value = "getOrderDetails")
+//	@AuthToken(type = "third")
+//	public ResultBean getOrderDetails(Long orderId) {
+//		// 定义返回值
+//		ResultBean bean = new ResultBean();
+//
+//		if (null == orderId) {
+//			bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
+//			bean.getRtnBean().setRtnMsg("参数错误!");
+//		}
+//
+//		// 获取订单详情
+//		List<BuOrderDetail> list = orderManageService.detailListByOrderId(orderId);
+//
+//		bean.setList(list);
+//		return bean;
+//	}
 	
 	/**
 	 * 方法名称:重新发起打印订单
@@ -237,20 +237,20 @@ public class ThirdOrderManageController {
 	 * 作    者:Yangyk
 	 * 日    期:2023-08-12
 	 */
-	@PostMapping(value = "/getOrderPayedInfo")
-	@AuthToken(type = "third")
-	public ResultBean getOrderPayedInfo(String orderCode) {
-		ResultBean bean = new ResultBean();
-		
-		// 参数基本验证
-		if (orderCode == null) {
-			bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
-			bean.getRtnBean().setRtnMsg(ReturnCode.getName(ReturnCode.PARAM_WRONG));
-			return bean;
-		}
-		bean.setObj(orderManageService.getOrderPayedInfo(orderCode));
-		return bean;
-	}
+//	@PostMapping(value = "/getOrderPayedInfo")
+//	@AuthToken(type = "third")
+//	public ResultBean getOrderPayedInfo(String orderCode) {
+//		ResultBean bean = new ResultBean();
+//
+//		// 参数基本验证
+//		if (orderCode == null) {
+//			bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
+//			bean.getRtnBean().setRtnMsg(ReturnCode.getName(ReturnCode.PARAM_WRONG));
+//			return bean;
+//		}
+//		bean.setObj(orderManageService.getOrderPayedInfo(orderCode));
+//		return bean;
+//	}
 	
 	/**
 	 * 方法名称:获取订单退款情况

+ 132 - 0
client-app/src/main/java/com/sapit/client/app/third/controller/order/ThirdOrderManageController1.java

@@ -0,0 +1,132 @@
+package com.sapit.client.app.third.controller.order;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.sapit.client.app.third.service.order.ThirdOrderManageService1;
+import com.sapit.common.bean.order.OrderNumBean;
+import com.sapit.common.constant.ReturnCode;
+import com.sapit.common.framwork.AuthToken;
+import com.sapit.common.framwork.PageControlData;
+import com.sapit.common.framwork.ResultBean;
+import com.sapit.common.entity.order.BuOrderDetail;
+import com.sapit.common.search.order.BuOrderSearchBean;
+import com.sapit.common.view.order.BuOrderV;
+
+@RestController
+@RequestMapping(value = "thirdOrderManage")
+public class ThirdOrderManageController1 {
+
+	@Autowired
+	private ThirdOrderManageService1 thirdOrderManageService1;
+
+	/**
+	 * 获取订单列表
+	 * @param pageSize
+	 * @param currentPage
+	 * @param searchBean
+	 * @return
+	 */
+	@AuthToken(type = "third")
+	@PostMapping(value = "/orderPage")
+	public ResultBean getorderList(int pageSize, int currentPage, BuOrderSearchBean searchBean) {
+		ResultBean bean = new ResultBean();
+		PageControlData pageControlData = new PageControlData();
+		pageControlData.setPageSize(pageSize);
+		pageControlData.setCurrentPage(currentPage);
+		List<BuOrderV> orderList = thirdOrderManageService1.page(pageControlData, searchBean);
+		OrderNumBean numBean = thirdOrderManageService1.getReceivedAndRefundOrderNum(searchBean);
+		bean.setList(orderList);
+		bean.setObj(numBean);
+		bean.setPage(pageControlData);
+		return bean;
+	}
+
+	/**
+	 * 获取订单详情
+	 * @param orderId
+	 * @return
+	 */
+	@AuthToken(type = "third")
+	@PostMapping(value = "/getOrderDetails")
+	public ResultBean getOrderDetails(Long orderId) {
+		ResultBean bean = new ResultBean();
+		if (orderId == null) {
+			bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
+			bean.getRtnBean().setRtnMsg("参数错误!");
+			return bean;
+		}
+		List<BuOrderDetail> list = thirdOrderManageService1.detailListByOrderId(orderId);
+		bean.setList(list);
+		return bean;
+	}
+
+	/**
+	 * 查询订单支付情况
+	 * @param orderCode
+	 * @return
+	 */
+	@AuthToken(type = "third")
+	@PostMapping(value = "/getOrderPayedInfo")
+	public ResultBean getOrderPayedInfo(String orderCode) {
+		ResultBean bean = new ResultBean();
+		if (orderCode == null) {
+			bean.getRtnBean().setRtnCode(ReturnCode.PARAM_WRONG);
+			bean.getRtnBean().setRtnMsg(ReturnCode.getName(ReturnCode.PARAM_WRONG));
+			return bean;
+		}
+		bean.setObj(thirdOrderManageService1.getOrderPayedInfo(orderCode));
+		return bean;
+	}
+
+	/**
+	 * 打印订单
+	 * @param orderId
+	 * @return
+	 */
+	@AuthToken(type = "third")
+	@PostMapping(value = "/printOrder")
+	public ResultBean printOrder(Long orderId) {
+		// 定义返回值
+		ResultBean bean = new ResultBean();
+
+		if (null == orderId) {
+			bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
+			bean.getRtnBean().setRtnMsg("参数错误!");
+			return bean;
+		}
+
+		thirdOrderManageService1.printOrder(orderId);
+
+		bean.getRtnBean().setRtnCode(ReturnCode.SUCCESS);
+		bean.getRtnBean().setRtnMsg("操作成功!");
+		return bean;
+	}
+
+	/**
+	 * 接单
+	 * @param orderId
+	 * @return
+	 */
+	@PostMapping(value = "/acceptOrder")
+	@AuthToken(type = "third")
+	public ResultBean acceptOrder(Long orderId) {
+		ResultBean bean = new ResultBean();
+
+		if (null == orderId) {
+			bean.getRtnBean().setRtnCode(ReturnCode.FAILED);
+			bean.getRtnBean().setRtnMsg("参数错误!");
+			return bean;
+		}
+
+		thirdOrderManageService1.acceptOrder(orderId);
+
+		bean.getRtnBean().setRtnCode(ReturnCode.SUCCESS);
+		bean.getRtnBean().setRtnMsg("操作成功!");
+		return bean;
+	}
+}

+ 105 - 0
client-app/src/main/java/com/sapit/client/app/third/service/order/ThirdOrderManageService1.java

@@ -0,0 +1,105 @@
+package com.sapit.client.app.third.service.order;
+
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.sapit.client.app.user.service.system.CommonApiService;
+import com.sapit.common.bean.order.OrderNumBean;
+import com.sapit.common.bean.order.OrderWxPayedInfoBean;
+import com.sapit.common.constant.OrderProcessStatus;
+import com.sapit.common.constant.OrderStatus;
+import com.sapit.common.entity.order.BuOrderDetail;
+import com.sapit.common.entity.order.BuOrderProgress;
+import com.sapit.common.framwork.PageControlData;
+import com.sapit.common.mq.OrderPrintMQBean;
+import com.sapit.common.search.order.BuOrderSearchBean;
+import com.sapit.common.util.DateUtil;
+import com.sapit.common.util.PayChannelProperties;
+import com.sapit.common.util.PayChannelProperties.Channel;
+import com.sapit.common.util.RabbitTool;
+import com.sapit.common.util.WeixinBsUtil;
+import com.sapit.common.view.order.BuOrderV;
+
+@Service
+public class ThirdOrderManageService1 {
+
+	@Autowired
+	private ThirdOrderManageService1impl thirdOrderManageService1impl;
+
+	@Autowired
+	private PayChannelProperties payChannelProperties;
+
+	@Autowired
+	private RabbitTool rabbitTool;
+
+	@Autowired
+	private CommonApiService commonApiService;
+
+	public void acceptOrder(Long orderId) {
+		int successNum = thirdOrderManageService1impl.updateOrderStatusToReceiveOrder(orderId, OrderStatus.RECEIVED);
+		if (successNum == 1) {
+			BuOrderV orderV = thirdOrderManageService1impl.getOrderV(orderId);
+			if (orderV == null) {
+				return;
+			}
+			BuOrderProgress orderProgress = new BuOrderProgress();
+			orderProgress.setOrderId(orderId);
+			orderProgress.setPayDate(orderV.getPayDate());
+			orderProgress.setStatus(OrderProcessStatus.RECEIVED);
+			orderProgress.setReceiveOrderDate(DateUtil.getSqlToday());
+			thirdOrderManageService1impl.saveOrderProgress(orderProgress);
+
+			Long sysAreaId = commonApiService.getSysAreaId();
+			OrderPrintMQBean bean = new OrderPrintMQBean();
+			bean.setOrderId(orderV.getOrderId().toString());
+			bean.setTakeupCode(orderV.getTakeupCode());
+			rabbitTool.putQueue("a" + sysAreaId + "orderprint1", bean);
+		}
+	}
+
+	public void printOrder(Long orderId) {
+		Long sysAreaId = commonApiService.getSysAreaId();
+		OrderPrintMQBean bean = new OrderPrintMQBean();
+		bean.setOrderId(orderId.toString());
+		rabbitTool.putQueue("a" + sysAreaId + "orderprint1", bean);
+	}
+
+	public List<BuOrderV> page(PageControlData pageControlData, BuOrderSearchBean searchBean) {
+		return thirdOrderManageService1impl.page(pageControlData, searchBean);
+	}
+
+	public OrderNumBean getReceivedAndRefundOrderNum(BuOrderSearchBean searchBean) {
+		return thirdOrderManageService1impl.getReceivedAndRefundOrderNum(searchBean);
+	}
+
+	public List<BuOrderDetail> detailListByOrderId(Long orderId) {
+		return thirdOrderManageService1impl.listByOrderId(orderId);
+	}
+
+	public OrderWxPayedInfoBean getOrderPayedInfo(String orderCode) {
+		BuOrderV order = thirdOrderManageService1impl.getOrderByOrderCode(orderCode);
+		if (order == null || order.getPayChannel() == null || order.getOrderCode() == null) {
+			return null;
+		}
+
+		List<Channel> channels = payChannelProperties.getChannels();
+		Channel channel = null;
+		if (CollectionUtils.isNotEmpty(channels)) {
+			for (Channel c : channels) {
+				if (order.getPayChannel().equals(c.getId())) {
+					channel = c;
+					break;
+				}
+			}
+		}
+
+		if (channel != null) {
+			return WeixinBsUtil.getOrderPayedInfo(order.getOrderCode(), channel);
+		}
+
+		return null;
+	}
+}

+ 112 - 0
client-app/src/main/java/com/sapit/client/app/third/service/order/ThirdOrderManageService1impl.java

@@ -0,0 +1,112 @@
+package com.sapit.client.app.third.service.order;
+
+import java.util.List;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Repository;
+
+import com.sapit.common.bean.order.OrderNumBean;
+import com.sapit.common.constant.OrderStatus;
+import com.sapit.common.constant.OrderType;
+import com.sapit.common.entity.order.BuOrderDetail;
+import com.sapit.common.entity.order.BuOrderProgress;
+import com.sapit.common.framwork.BaseDao;
+import com.sapit.common.framwork.PageControlData;
+import com.sapit.common.search.order.BuOrderSearchBean;
+import com.sapit.common.view.order.BuOrderV;
+
+@Repository
+@SuppressWarnings("rawtypes")
+public class ThirdOrderManageService1impl extends BaseDao {
+
+	public ThirdOrderManageService1impl() {
+		super.setEntity("BuOrderV");
+	}
+
+	public List<BuOrderV> page(PageControlData pageControlData, BuOrderSearchBean searchBean) {
+		StringBuilder hql = new StringBuilder();
+		hql.append("FROM BuOrderV where 1=1");
+		if (searchBean.getStoreId() != null) {
+			hql.append(" AND STORE_ID = " + searchBean.getStoreId());
+		}
+		if (StringUtils.isNotBlank(searchBean.getBeginDate())) {
+			hql.append(" AND date_format(CREATE_DATE,'%Y/%m/%d') >= '" + searchBean.getBeginDate() + "'");
+		}
+		if (StringUtils.isNotBlank(searchBean.getEndDate())) {
+			hql.append(" AND date_format(CREATE_DATE,'%Y/%m/%d') <= '" + searchBean.getEndDate() + "'");
+		}
+		if (StringUtils.isNotBlank(searchBean.getOrderCode())) {
+			hql.append(" AND ORDER_CODE = '" + searchBean.getOrderCode() + "'");
+		}
+		if (StringUtils.isNotBlank(searchBean.getOrderName())) {
+			hql.append(" AND ORDER_NAME LIKE '%" + searchBean.getOrderName() + "%'");
+		}
+		if (StringUtils.isNotBlank(searchBean.getOrderTel())) {
+			hql.append(" AND ORDER_TEL LIKE '%" + searchBean.getOrderTel() + "%'");
+		}
+		if (searchBean.getStatus() != null && searchBean.getStatus().equals(OrderStatus.SELF_TAKING)) {
+			hql.append(" AND ORDER_TYPE != " + OrderType.UP);
+		}
+		if (searchBean.getStatus() != null) {
+			if (searchBean.getStatus().equals(OrderStatus.REFUND)) {
+				hql.append(" AND STATUS IN (-20, -50)");
+			} else {
+				hql.append(" AND STATUS = " + searchBean.getStatus());
+			}
+		}
+		hql.append(" ORDER BY CREATE_DATE desc");
+		return this.searchByHql(pageControlData, hql.toString());
+	}
+
+	public OrderNumBean getReceivedAndRefundOrderNum(BuOrderSearchBean searchBean) {
+		OrderNumBean bean = new OrderNumBean();
+		searchBean.setStatus(null);
+		StringBuilder sql = new StringBuilder();
+		sql.append("SELECT status, COUNT( ORDER_ID ) FROM bu_order WHERE (STATUS = 20 OR STATUS = -20 OR STATUS = -50)")
+			.append(searchBean.getSerchCondition())
+			.append(" GROUP BY STATUS");
+
+		List<Object> orderList = this.searchBySql(sql.toString());
+		Long refundNum = 0L;
+		for (Object obj : orderList) {
+			Object[] order = (Object[]) obj;
+			Long status = order[0] == null ? null : Long.valueOf(order[0].toString());
+			if (OrderStatus.RECEIVED.equals(status)) {
+				bean.setReceivedNum(order[1] == null ? 0L : Long.valueOf(order[1].toString()));
+			}
+			if (OrderStatus.REFUND.equals(status) || OrderStatus.DELIVERING_REFUND.equals(status)) {
+				refundNum += (order[1] == null ? 0L : Long.valueOf(order[1].toString()));
+			}
+		}
+		bean.setRefundNum(refundNum);
+		return bean;
+	}
+
+	public List<BuOrderDetail> listByOrderId(Long orderId) {
+		return this.searchByHql("from BuOrderDetail where ORDER_ID = " + orderId);
+	}
+
+	public BuOrderV getOrderByOrderCode(String orderCode) {
+		List<BuOrderV> list = this.searchByHql("from BuOrderV where ORDER_CODE = '" + orderCode + "'");
+		if (list != null && !list.isEmpty()) {
+			return list.get(0);
+		}
+		return null;
+	}
+
+	public BuOrderV getOrderV(Long orderId) {
+		List<BuOrderV> list = this.searchByHql("from BuOrderV where ORDER_ID = " + orderId);
+		if (list != null && !list.isEmpty()) {
+			return list.get(0);
+		}
+		return null;
+	}
+
+	public int updateOrderStatusToReceiveOrder(Long orderId, Long status) {
+		return this.executeSql("UPDATE bu_order SET STATUS = " + status + " WHERE ORDER_ID = " + orderId + " AND (STATUS = 5 OR STATUS = 8 OR STATUS = 10)");
+	}
+
+	public void saveOrderProgress(BuOrderProgress orderProgress) {
+		this.save(orderProgress);
+	}
+}

+ 166 - 0
docs/order-test-data.sql

@@ -0,0 +1,166 @@
+-- ============================================================
+-- 订单处理模块测试数据
+-- 在数据库 `eduepos` 中执行此脚本
+-- ============================================================
+
+-- 使用变量存储从现有表中获取的ID
+SET @store_id = (SELECT STORE_ID FROM bu_store LIMIT 1);
+SET @member_id = (SELECT MEMBER_ID FROM bu_member LIMIT 1);
+SET @address_id = (SELECT ADDRESS_ID FROM bu_address LIMIT 1);
+SET @goods_id = (SELECT GOODS_ID FROM bu_goods LIMIT 1);
+SET @rider_id = (SELECT RIDER_ID FROM bu_rider LIMIT 1);
+
+-- 如果上面获取不到,使用默认值
+SET @store_id = IFNULL(@store_id, 1);
+SET @member_id = IFNULL(@member_id, 1);
+SET @address_id = IFNULL(@address_id, 1);
+SET @goods_id = IFNULL(@goods_id, 1);
+SET @rider_id = IFNULL(@rider_id, 1);
+
+-- ============================================================
+-- 1. 插入订单数据 (bu_order)
+-- 状态说明: 0-待支付 10-待接单 20-已接单 30-待配送 40-配送中 50-待自取 60-已完成
+--          -10-订单取消 -20-完成退款 -30-超时未接单 -40-拒绝接单
+-- 订单类型: 1-楼下自提 2-直达宿舍 3-自提带走 4-自提堂食
+-- ============================================================
+
+-- 订单1: 待接单状态 (status=10)
+INSERT INTO bu_order (ORDER_CODE, TAKEUP_CODE, MEMBER_ID, PROVINCE, CITY, COUNTY, ADDRESS_ID, ROOM_NUMBER, ORDER_NAME, ORDER_TEL, ORDER_ADDRESS, GOODS_COST_FEE, GOODS_FEE, BUY_COUNT, NEWCUS_DISCOUNTS, FULL_DISCOUNTS, PACKING_FEE, SORTING_FEE, DELIVERY_FEE, CLIMBING_FEE, ORDER_FEE, CUSTOMER_MES, PREPAY_ID, ORDER_TIME_LIMIT, STORE_ID, ORDER_TYPE, PAY_TYPE, PAY_CHANNEL, PAY_STATUS, STATUS, CREATE_DATE, PAY_DATE, SOURCE_TYPE, COMMISSION_RATE, DELIVERY_DISCOUNTS_FLAG, REQUIRE_DATE, FINISH_DATE, RMK, REFUND_FEE, PRINT_TIMES, WX_POINT)
+VALUES ('20260101000001', '1234', @member_id, 1, 1, 1, @address_id, '301', '张三', '13800138001', '测试地址1号', 2500, 2500, 2, 0, 0, 100, 0, 300, 0, 2900, '请快点送达', 'prepay_001', '2026-01-01 12:30:00', @store_id, 1, 1, 1, 1, 10, '2026-01-01 10:00:00', '2026-01-01 10:05:00', 1, 100, 0, '2026-01-01', NULL, '测试订单1', 0, 0, 10);
+
+-- 订单2: 已接单状态 (status=20)
+INSERT INTO bu_order (ORDER_CODE, TAKEUP_CODE, MEMBER_ID, PROVINCE, CITY, COUNTY, ADDRESS_ID, ROOM_NUMBER, ORDER_NAME, ORDER_TEL, ORDER_ADDRESS, GOODS_COST_FEE, GOODS_FEE, BUY_COUNT, NEWCUS_DISCOUNTS, FULL_DISCOUNTS, PACKING_FEE, SORTING_FEE, DELIVERY_FEE, CLIMBING_FEE, ORDER_FEE, CUSTOMER_MES, PREPAY_ID, ORDER_TIME_LIMIT, STORE_ID, ORDER_TYPE, PAY_TYPE, PAY_CHANNEL, PAY_STATUS, STATUS, CREATE_DATE, PAY_DATE, SOURCE_TYPE, COMMISSION_RATE, DELIVERY_DISCOUNTS_FLAG, REQUIRE_DATE, FINISH_DATE, RMK, REFUND_FEE, PRINT_TIMES, WX_POINT)
+VALUES ('20260101000002', '5678', @member_id, 1, 1, 1, @address_id, '502', '李四', '13800138002', '测试地址2号', 1800, 1800, 1, 0, 200, 100, 0, 200, 0, 1900, '', 'prepay_002', '2026-01-01 13:00:00', @store_id, 2, 1, 1, 1, 20, '2026-01-01 10:30:00', '2026-01-01 10:35:00', 1, 100, 0, '2026-01-01', NULL, '测试订单2 - 直达宿舍', 0, 0, 10);
+
+-- 订单3: 待配送状态 (status=30)
+INSERT INTO bu_order (ORDER_CODE, TAKEUP_CODE, MEMBER_ID, PROVINCE, CITY, COUNTY, ADDRESS_ID, ROOM_NUMBER, ORDER_NAME, ORDER_TEL, ORDER_ADDRESS, GOODS_COST_FEE, GOODS_FEE, BUY_COUNT, NEWCUS_DISCOUNTS, FULL_DISCOUNTS, PACKING_FEE, SORTING_FEE, DELIVERY_FEE, CLIMBING_FEE, ORDER_FEE, CUSTOMER_MES, PREPAY_ID, ORDER_TIME_LIMIT, STORE_ID, ORDER_TYPE, PAY_TYPE, PAY_CHANNEL, PAY_STATUS, STATUS, CREATE_DATE, PAY_DATE, SOURCE_TYPE, COMMISSION_RATE, DELIVERY_DISCOUNTS_FLAG, REQUIRE_DATE, FINISH_DATE, RMK, REFUND_FEE, PRINT_TIMES, WX_POINT)
+VALUES ('20260101000003', '9012', @member_id, 1, 1, 1, @address_id, '201', '王五', '13800138003', '测试地址3号', 3500, 3500, 3, 0, 0, 200, 0, 300, 0, 4000, '多加辣', 'prepay_003', '2026-01-01 14:00:00', @store_id, 1, 1, 1, 1, 30, '2026-01-01 11:00:00', '2026-01-01 11:05:00', 1, 100, 0, '2026-01-01', NULL, '测试订单3', 0, 0, 10);
+
+-- 订单4: 配送中状态 (status=40)
+INSERT INTO bu_order (ORDER_CODE, TAKEUP_CODE, MEMBER_ID, PROVINCE, CITY, COUNTY, ADDRESS_ID, ROOM_NUMBER, ORDER_NAME, ORDER_TEL, ORDER_ADDRESS, GOODS_COST_FEE, GOODS_FEE, BUY_COUNT, NEWCUS_DISCOUNTS, FULL_DISCOUNTS, PACKING_FEE, SORTING_FEE, DELIVERY_FEE, CLIMBING_FEE, ORDER_FEE, CUSTOMER_MES, PREPAY_ID, ORDER_TIME_LIMIT, STORE_ID, ORDER_TYPE, PAY_TYPE, PAY_CHANNEL, PAY_STATUS, STATUS, CREATE_DATE, PAY_DATE, SOURCE_TYPE, COMMISSION_RATE, DELIVERY_DISCOUNTS_FLAG, REQUIRE_DATE, FINISH_DATE, RMK, REFUND_FEE, PRINT_TIMES, WX_POINT)
+VALUES ('20260101000004', '3456', @member_id, 1, 1, 1, @address_id, '608', '赵六', '13800138004', '测试地址4号', 1500, 1500, 1, 500, 0, 100, 0, 200, 0, 1300, '', 'prepay_004', '2026-01-01 15:00:00', @store_id, 1, 1, 1, 1, 40, '2026-01-01 12:00:00', '2026-01-01 12:05:00', 1, 100, 0, '2026-01-01', NULL, '测试订单4', 0, 0, 10);
+
+-- 订单5: 待自取状态 (status=50)
+INSERT INTO bu_order (ORDER_CODE, TAKEUP_CODE, MEMBER_ID, PROVINCE, CITY, COUNTY, ADDRESS_ID, ROOM_NUMBER, ORDER_NAME, ORDER_TEL, ORDER_ADDRESS, GOODS_COST_FEE, GOODS_FEE, BUY_COUNT, NEWCUS_DISCOUNTS, FULL_DISCOUNTS, PACKING_FEE, SORTING_FEE, DELIVERY_FEE, CLIMBING_FEE, ORDER_FEE, CUSTOMER_MES, PREPAY_ID, ORDER_TIME_LIMIT, STORE_ID, ORDER_TYPE, PAY_TYPE, PAY_CHANNEL, PAY_STATUS, STATUS, CREATE_DATE, PAY_DATE, SOURCE_TYPE, COMMISSION_RATE, DELIVERY_DISCOUNTS_FLAG, REQUIRE_DATE, FINISH_DATE, RMK, REFUND_FEE, PRINT_TIMES, WX_POINT)
+VALUES ('20260101000005', '7890', @member_id, 1, 1, 1, @address_id, '101', '孙七', '13800138005', '测试地址5号', 2200, 2200, 2, 0, 0, 100, 0, 0, 0, 2300, '自取', 'prepay_005', '2026-01-01 16:00:00', @store_id, 3, 1, 1, 1, 50, '2026-01-01 13:00:00', '2026-01-01 13:05:00', 1, 100, 0, '2026-01-01', NULL, '测试订单5 - 自提', 0, 0, 10);
+
+-- 订单6: 已完成状态 (status=60)
+INSERT INTO bu_order (ORDER_CODE, TAKEUP_CODE, MEMBER_ID, PROVINCE, CITY, COUNTY, ADDRESS_ID, ROOM_NUMBER, ORDER_NAME, ORDER_TEL, ORDER_ADDRESS, GOODS_COST_FEE, GOODS_FEE, BUY_COUNT, NEWCUS_DISCOUNTS, FULL_DISCOUNTS, PACKING_FEE, SORTING_FEE, DELIVERY_FEE, CLIMBING_FEE, ORDER_FEE, CUSTOMER_MES, PREPAY_ID, ORDER_TIME_LIMIT, STORE_ID, ORDER_TYPE, PAY_TYPE, PAY_CHANNEL, PAY_STATUS, STATUS, CREATE_DATE, PAY_DATE, SOURCE_TYPE, COMMISSION_RATE, DELIVERY_DISCOUNTS_FLAG, REQUIRE_DATE, FINISH_DATE, RMK, REFUND_FEE, PRINT_TIMES, WX_POINT)
+VALUES ('20260101000006', '1122', @member_id, 1, 1, 1, @address_id, '405', '周八', '13800138006', '测试地址6号', 5000, 5000, 4, 0, 500, 200, 0, 300, 0, 5000, '已完成订单', 'prepay_006', '2026-01-01 17:00:00', @store_id, 1, 1, 1, 1, 60, '2026-01-01 14:00:00', '2026-01-01 14:05:00', 1, 100, 0, '2026-01-01', '2026-01-01 15:00:00', '测试订单6 - 已完成', 0, 1, 10);
+
+-- 订单7: 待支付状态 (status=0)
+INSERT INTO bu_order (ORDER_CODE, TAKEUP_CODE, MEMBER_ID, PROVINCE, CITY, COUNTY, ADDRESS_ID, ROOM_NUMBER, ORDER_NAME, ORDER_TEL, ORDER_ADDRESS, GOODS_COST_FEE, GOODS_FEE, BUY_COUNT, NEWCUS_DISCOUNTS, FULL_DISCOUNTS, PACKING_FEE, SORTING_FEE, DELIVERY_FEE, CLIMBING_FEE, ORDER_FEE, CUSTOMER_MES, PREPAY_ID, ORDER_TIME_LIMIT, STORE_ID, ORDER_TYPE, PAY_TYPE, PAY_CHANNEL, PAY_STATUS, STATUS, CREATE_DATE, PAY_DATE, SOURCE_TYPE, COMMISSION_RATE, DELIVERY_DISCOUNTS_FLAG, REQUIRE_DATE, FINISH_DATE, RMK, REFUND_FEE, PRINT_TIMES, WX_POINT)
+VALUES ('20260810000001', '3344', @member_id, 1, 1, 1, @address_id, '302', '新用户', '13800138007', '测试地址7号', 3000, 3000, 2, 0, 0, 100, 0, 300, 0, 3400, '今天的新订单', 'prepay_007', '2026-08-10 20:00:00', @store_id, 1, 1, 1, 0, 0, '2026-08-10 18:00:00', NULL, 1, 100, 0, '2026-08-10', NULL, '测试订单7 - 待支付', 0, 0, 10);
+
+-- 订单8: 已退款状态 (status=-20)
+INSERT INTO bu_order (ORDER_CODE, TAKEUP_CODE, MEMBER_ID, PROVINCE, CITY, COUNTY, ADDRESS_ID, ROOM_NUMBER, ORDER_NAME, ORDER_TEL, ORDER_ADDRESS, GOODS_COST_FEE, GOODS_FEE, BUY_COUNT, NEWCUS_DISCOUNTS, FULL_DISCOUNTS, PACKING_FEE, SORTING_FEE, DELIVERY_FEE, CLIMBING_FEE, ORDER_FEE, CUSTOMER_MES, PREPAY_ID, ORDER_TIME_LIMIT, STORE_ID, ORDER_TYPE, PAY_TYPE, PAY_CHANNEL, PAY_STATUS, STATUS, CREATE_DATE, PAY_DATE, SOURCE_TYPE, COMMISSION_RATE, DELIVERY_DISCOUNTS_FLAG, REQUIRE_DATE, FINISH_DATE, RMK, REFUND_FEE, PRINT_TIMES, WX_POINT)
+VALUES ('20260101000007', '5566', @member_id, 1, 1, 1, @address_id, '703', '吴九', '13800138008', '测试地址8号', 1200, 1200, 1, 0, 0, 100, 0, 200, 0, 1500, '退款测试', 'prepay_008', '2026-01-01 11:00:00', @store_id, 1, 1, 1, 1, -20, '2026-01-01 09:00:00', '2026-01-01 09:05:00', 1, 100, 0, '2026-01-01', NULL, '测试订单8 - 已退款', 1500, 0, 10);
+
+
+-- ============================================================
+-- 2. 插入订单详情数据 (bu_order_detail)
+-- 使用上面插入的订单,通过 ORDER_CODE 关联
+-- ============================================================
+
+-- 订单1的详情 (待接单)
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品A', '1', '大份', '辣度:微辣', 1500, 1200, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000001';
+
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品B', '2', '中份', '辣度:中辣', 1200, 1000, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000001';
+
+-- 订单2的详情 (已接单)
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品C', '1', '小份', '', 2000, 1800, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000002';
+
+-- 订单3的详情 (待配送)
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品A', '1', '大份', '辣度:特辣', 1500, 1200, 2
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000003';
+
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品D', '3', '标准', '', 1000, 1000, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000003';
+
+-- 订单4的详情 (配送中)
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品E', '1', '标准', '', 2000, 1500, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000004';
+
+-- 订单5的详情 (待自取)
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品A', '1', '大份', '', 1500, 1100, 2
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000005';
+
+-- 订单6的详情 (已完成)
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品B', '2', '中份', '微辣', 1200, 1200, 2
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000006';
+
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品F', '1', '特大份', '', 3000, 2600, 2
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000006';
+
+-- 订单7的详情 (待支付)
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品A', '1', '大份', '中辣', 1500, 1500, 2
+FROM bu_order o WHERE o.ORDER_CODE = '20260810000001';
+
+-- 订单8的详情 (已退款)
+INSERT INTO bu_order_detail (ORDER_ID, GOODS_ID, GOODS_NAME, MODEL_ID, MODEL_NAME, PROPERTYS, PRICE, SALES_PRICE, BUY_COUNT)
+SELECT o.ORDER_ID, @goods_id, '测试商品C', '1', '小份', '', 1200, 1200, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000007';
+
+
+-- ============================================================
+-- 3. 插入订单进度数据 (bu_order_progress)
+-- ============================================================
+
+-- 订单1进度 (待接单)
+INSERT INTO bu_order_progress (ORDER_ID, WAITER_ID, RIDER_ID, CLIMB_STAIRS_ID, STATUS, PAY_DATE, RECEIVE_ORDER_DATE, DONE_MEAL_DATE, TAKE_MEAL_DATE, TRANSFER_DATE, DELIVERY_BEGIN_DATE, DOWNSTAIRS_DATE, UPSTAIRS_BEGIN_DATE, COMPLETE_DATE, RIDER_TYPE)
+SELECT o.ORDER_ID, NULL, NULL, NULL, 10, o.PAY_DATE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000001';
+
+-- 订单2进度 (已接单 -> 待出餐)
+INSERT INTO bu_order_progress (ORDER_ID, WAITER_ID, RIDER_ID, CLIMB_STAIRS_ID, STATUS, PAY_DATE, RECEIVE_ORDER_DATE, DONE_MEAL_DATE, TAKE_MEAL_DATE, TRANSFER_DATE, DELIVERY_BEGIN_DATE, DOWNSTAIRS_DATE, UPSTAIRS_BEGIN_DATE, COMPLETE_DATE, RIDER_TYPE)
+SELECT o.ORDER_ID, @rider_id, NULL, NULL, 10, o.PAY_DATE, '2026-01-01 10:40:00', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000002';
+
+-- 订单3进度 (待配送 -> 已出餐)
+INSERT INTO bu_order_progress (ORDER_ID, WAITER_ID, RIDER_ID, CLIMB_STAIRS_ID, STATUS, PAY_DATE, RECEIVE_ORDER_DATE, DONE_MEAL_DATE, TAKE_MEAL_DATE, TRANSFER_DATE, DELIVERY_BEGIN_DATE, DOWNSTAIRS_DATE, UPSTAIRS_BEGIN_DATE, COMPLETE_DATE, RIDER_TYPE)
+SELECT o.ORDER_ID, @rider_id, @rider_id, NULL, 20, o.PAY_DATE, '2026-01-01 11:10:00', '2026-01-01 11:30:00', NULL, NULL, NULL, NULL, NULL, NULL, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000003';
+
+-- 订单4进度 (配送中)
+INSERT INTO bu_order_progress (ORDER_ID, WAITER_ID, RIDER_ID, CLIMB_STAIRS_ID, STATUS, PAY_DATE, RECEIVE_ORDER_DATE, DONE_MEAL_DATE, TAKE_MEAL_DATE, TRANSFER_DATE, DELIVERY_BEGIN_DATE, DOWNSTAIRS_DATE, UPSTAIRS_BEGIN_DATE, COMPLETE_DATE, RIDER_TYPE)
+SELECT o.ORDER_ID, @rider_id, @rider_id, NULL, 50, o.PAY_DATE, '2026-01-01 12:10:00', '2026-01-01 12:25:00', '2026-01-01 12:28:00', '2026-01-01 12:30:00', '2026-01-01 12:35:00', NULL, NULL, NULL, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000004';
+
+-- 订单5进度 (待自取)
+INSERT INTO bu_order_progress (ORDER_ID, WAITER_ID, RIDER_ID, CLIMB_STAIRS_ID, STATUS, PAY_DATE, RECEIVE_ORDER_DATE, DONE_MEAL_DATE, TAKE_MEAL_DATE, TRANSFER_DATE, DELIVERY_BEGIN_DATE, DOWNSTAIRS_DATE, UPSTAIRS_BEGIN_DATE, COMPLETE_DATE, RIDER_TYPE)
+SELECT o.ORDER_ID, @rider_id, NULL, NULL, 20, o.PAY_DATE, '2026-01-01 13:10:00', '2026-01-01 13:25:00', NULL, NULL, NULL, NULL, NULL, NULL, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000005';
+
+-- 订单6进度 (已完成)
+INSERT INTO bu_order_progress (ORDER_ID, WAITER_ID, RIDER_ID, CLIMB_STAIRS_ID, STATUS, PAY_DATE, RECEIVE_ORDER_DATE, DONE_MEAL_DATE, TAKE_MEAL_DATE, TRANSFER_DATE, DELIVERY_BEGIN_DATE, DOWNSTAIRS_DATE, UPSTAIRS_BEGIN_DATE, COMPLETE_DATE, RIDER_TYPE)
+SELECT o.ORDER_ID, @rider_id, @rider_id, NULL, 80, o.PAY_DATE, '2026-01-01 14:10:00', '2026-01-01 14:20:00', '2026-01-01 14:22:00', '2026-01-01 14:25:00', '2026-01-01 14:28:00', '2026-01-01 14:40:00', NULL, '2026-01-01 14:50:00', 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000006';
+
+-- 订单8进度 (已退款)
+INSERT INTO bu_order_progress (ORDER_ID, WAITER_ID, RIDER_ID, CLIMB_STAIRS_ID, STATUS, PAY_DATE, RECEIVE_ORDER_DATE, DONE_MEAL_DATE, TAKE_MEAL_DATE, TRANSFER_DATE, DELIVERY_BEGIN_DATE, DOWNSTAIRS_DATE, UPSTAIRS_BEGIN_DATE, COMPLETE_DATE, RIDER_TYPE)
+SELECT o.ORDER_ID, NULL, NULL, NULL, 10, o.PAY_DATE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1
+FROM bu_order o WHERE o.ORDER_CODE = '20260101000007';
+
+
+-- ============================================================
+-- 验证数据
+-- ============================================================
+SELECT '=== 订单数据验证 ===' AS '';
+SELECT ORDER_ID, ORDER_CODE, ORDER_NAME, STATUS, ORDER_TYPE, ORDER_FEE, CREATE_DATE FROM bu_order ORDER BY ORDER_ID DESC LIMIT 10;
+SELECT '=== 订单详情验证 ===' AS '';
+SELECT od.ORDER_DETAIL_ID, od.ORDER_ID, od.GOODS_NAME, od.SALES_PRICE, od.BUY_COUNT FROM bu_order_detail od ORDER BY od.ORDER_DETAIL_ID DESC LIMIT 10;
+SELECT '=== 订单进度验证 ===' AS '';
+SELECT ORDER_PROGRESS_ID, ORDER_ID, STATUS, PAY_DATE, RECEIVE_ORDER_DATE, DONE_MEAL_DATE, COMPLETE_DATE FROM bu_order_progress ORDER BY ORDER_PROGRESS_ID DESC LIMIT 10;