feat: 移植商户端订单管理到平台端 & 新增订单打印功能
1. 将商户端订单管理功能完整移植到平台端管理后台,包括: - 商户订单列表、退款单、预约管理(服务看板+工单管理) - 菜单名称加"商户"前缀,区别于平台端原有订单管理 - 不影响平台端原有订单管理功能 2. 新增订单打印功能: - 前端:独立打印页面(无layout),支持浏览器打印 - 后端:新增打印专用API,使用eb_sync_order_detail_staging表的product_name和info字段 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -161,6 +161,13 @@ public class MerchantOrderController {
|
||||
}
|
||||
return CommonResult.failed().setMessage("修改发货单配送信息失败");
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('merchant:order:info')")
|
||||
@ApiOperation(value = "订单打印详情(使用staging表数据)")
|
||||
@RequestMapping(value = "/print/detail/{orderNo}", method = RequestMethod.GET)
|
||||
public CommonResult<OrderPrintDetailResponse> getOrderPrintDetail(@PathVariable(value = "orderNo") String orderNo) {
|
||||
return CommonResult.success(manageOrderService.getOrderPrintDetail(orderNo));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -108,4 +108,11 @@ public interface ManageOrderService {
|
||||
* 修改发货单配送信息
|
||||
*/
|
||||
Boolean updateInvoice(OrderInvoiceUpdateRequest request);
|
||||
|
||||
/**
|
||||
* 获取订单打印详情(使用staging表数据)
|
||||
* @param orderNo 订单号
|
||||
* @return OrderPrintDetailResponse
|
||||
*/
|
||||
OrderPrintDetailResponse getOrderPrintDetail(String orderNo);
|
||||
}
|
||||
|
||||
@@ -8,13 +8,16 @@ import com.zbkj.common.model.admin.SystemAdmin;
|
||||
import com.zbkj.common.model.order.Order;
|
||||
import com.zbkj.common.model.order.OrderDetail;
|
||||
import com.zbkj.common.model.reservation.ReservationWorkOrder;
|
||||
import com.zbkj.common.model.sync.SyncOrderDetailStaging;
|
||||
import com.zbkj.common.request.*;
|
||||
import com.zbkj.common.response.*;
|
||||
import com.zbkj.common.result.OrderResultCode;
|
||||
import com.zbkj.common.utils.SecurityUtil;
|
||||
import com.zbkj.common.vo.LogisticsResultVo;
|
||||
import com.zbkj.service.dao.sync.SyncOrderDetailStagingDao;
|
||||
import com.zbkj.service.service.OrderService;
|
||||
import com.zbkj.service.service.ReservationWorkOrderService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -43,6 +46,8 @@ public class ManageOrderServiceImpl implements ManageOrderService {
|
||||
private OrderService orderService;
|
||||
@Autowired
|
||||
private ReservationWorkOrderService reservationWorkOrderService;
|
||||
@Autowired
|
||||
private SyncOrderDetailStagingDao syncOrderDetailStagingDao;
|
||||
|
||||
/**
|
||||
* 商户端后台分页列表
|
||||
@@ -224,6 +229,59 @@ public class ManageOrderServiceImpl implements ManageOrderService {
|
||||
return orderService.updateInvoice(request, systemAdmin);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单打印详情(使用staging表数据)
|
||||
* @param orderNo 订单号
|
||||
* @return OrderPrintDetailResponse
|
||||
*/
|
||||
@Override
|
||||
public OrderPrintDetailResponse getOrderPrintDetail(String orderNo) {
|
||||
// 获取订单基本信息
|
||||
OrderAdminDetailResponse orderInfo = adminDetail(orderNo);
|
||||
if (orderInfo == null) {
|
||||
throw new CrmebException("订单不存在");
|
||||
}
|
||||
|
||||
// 从staging表查询商品详情
|
||||
LambdaQueryWrapper<SyncOrderDetailStaging> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SyncOrderDetailStaging::getOrderNo, orderNo);
|
||||
queryWrapper.orderByAsc(SyncOrderDetailStaging::getId);
|
||||
List<SyncOrderDetailStaging> stagingList = syncOrderDetailStagingDao.selectList(queryWrapper);
|
||||
|
||||
List<OrderPrintProductItemResponse> detailList;
|
||||
if (stagingList != null && !stagingList.isEmpty()) {
|
||||
// 使用staging表的数据(包含product_name和info字段)
|
||||
detailList = stagingList.stream().map(staging -> {
|
||||
OrderPrintProductItemResponse item = new OrderPrintProductItemResponse();
|
||||
item.setProductName(staging.getProductName());
|
||||
item.setInfo(staging.getInfo());
|
||||
item.setImage(staging.getImage());
|
||||
item.setSku(staging.getSku());
|
||||
item.setPrice(staging.getPrice());
|
||||
item.setPayNum(staging.getPayNum());
|
||||
item.setProductId(staging.getProductId());
|
||||
item.setProductType(staging.getProductType());
|
||||
return item;
|
||||
}).collect(Collectors.toList());
|
||||
} else {
|
||||
// 如果staging表没有数据,降级使用订单详情中的商品信息
|
||||
detailList = orderInfo.getOrderDetailList().stream().map(detail -> {
|
||||
OrderPrintProductItemResponse item = new OrderPrintProductItemResponse();
|
||||
item.setProductName(detail.getProductName());
|
||||
item.setInfo(null);
|
||||
item.setImage(detail.getImage());
|
||||
item.setSku(detail.getSku());
|
||||
item.setPrice(detail.getPrice());
|
||||
item.setPayNum(detail.getPayNum());
|
||||
return item;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
OrderPrintDetailResponse response = new OrderPrintDetailResponse();
|
||||
response.setOrderInfo(orderInfo);
|
||||
response.setDetailList(detailList);
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user