From b3d80c3c5086c1d6f8b4e4309e8a3672612c496b Mon Sep 17 00:00:00 2001 From: AriadenCaseblg Date: Sun, 12 Apr 2026 10:46:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E7=AB=AF=E5=95=86=E6=88=B7=E8=AE=A2=E5=8D=95=E4=B8=8E=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E9=A1=B5=E6=B5=8B=E8=AF=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复平台管理员在商户订单页查看详情等操作时出现“订单不存在”的问题,并完善商户订单查询筛选逻辑。同步修复商户订单打印页电话展示与积分信息展示,满足测试项要求。 Made-with: Cursor --- docs/change-0410.md | 6 +++ .../service/impl/ManageOrderServiceImpl.java | 7 +++ .../service/impl/OrderServiceImpl.java | 51 ++++++++++++++----- .../resources/mapper/order/OrderMapper.xml | 4 +- mer_plat_admin/src/api/merchantOrder.js | 15 +++++- .../src/views/merchantOrder/orderPrint.vue | 8 ++- 6 files changed, 73 insertions(+), 18 deletions(-) diff --git a/docs/change-0410.md b/docs/change-0410.md index a948509..979fe37 100644 --- a/docs/change-0410.md +++ b/docs/change-0410.md @@ -11,3 +11,9 @@ - **已修复**1. 新增“订单打印”功能,点击订单打印按钮(不同于打印小票),新打开一个订单详情(含商品信息,收货信息)的单独页面(不需要页面layout),点击页面上的“打印”按钮,可以直接使用浏览器打印 - **已修复**2. 订单打印详情页中的商品相关信息使用eb_sync_order_detail_staging中的product_name,info字段的商品详细信息 + +## 测试问题(平台管理后台) + +- **已修复**商户订单页面(order/merchantList)点击详情等按钮提示“订单不存在” +- **已修复**商户订单页面(order/merchantList),不显示订单数据, +- **已修复**平台管理后台商户订单打印页(/order/merchantPrint)中的收货信息中电话显示全部电话号码,不使用maskedUserPhone \ No newline at end of file diff --git a/mer_java/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ManageOrderServiceImpl.java b/mer_java/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ManageOrderServiceImpl.java index fa6fdfb..aad6879 100644 --- a/mer_java/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ManageOrderServiceImpl.java +++ b/mer_java/crmeb-admin/src/main/java/com/zbkj/admin/service/impl/ManageOrderServiceImpl.java @@ -45,6 +45,8 @@ public class ManageOrderServiceImpl implements ManageOrderService { @Autowired private OrderService orderService; @Autowired + private com.zbkj.service.service.MerchantOrderService merchantOrderService; + @Autowired private ReservationWorkOrderService reservationWorkOrderService; @Autowired private SyncOrderDetailStagingDao syncOrderDetailStagingDao; @@ -241,6 +243,11 @@ public class ManageOrderServiceImpl implements ManageOrderService { if (orderInfo == null) { throw new CrmebException("订单不存在"); } + // 打印页要求展示完整收货电话,不走全局手机号脱敏展示 + com.zbkj.common.model.order.MerchantOrder merchantOrder = merchantOrderService.getOneByOrderNo(orderNo); + if (merchantOrder != null) { + orderInfo.setUserPhone(merchantOrder.getUserPhone()); + } // 从staging表查询商品详情 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); diff --git a/mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java b/mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java index 149f138..9b5ec6b 100644 --- a/mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java +++ b/mer_java/crmeb-service/src/main/java/com/zbkj/service/service/impl/OrderServiceImpl.java @@ -288,11 +288,9 @@ public class OrderServiceImpl extends ServiceImpl implements Or map.put("endTime", dateLimit.getEndTime()); } } - // 平台管理员(mer_id=0)可按商户筛选或查看全部,商户管理员只查看自己的订单 - if (systemAdmin.getMerId() > 0) { - map.put("merId", systemAdmin.getMerId()); - } else if (ObjectUtil.isNotNull(request.getMerId()) && request.getMerId() > 0) { - map.put("merId", request.getMerId()); + Integer effectiveMerId = resolveMerchantFilterMerId(systemAdmin.getMerId(), request.getMerId()); + if (ObjectUtil.isNotNull(effectiveMerId)) { + map.put("merId", effectiveMerId); } if (StrUtil.isNotBlank(request.getOrderNo())) { map.put("orderNo", URLUtil.decode(request.getOrderNo())); @@ -858,7 +856,7 @@ public class OrderServiceImpl extends ServiceImpl implements Or */ @Override public Boolean merchantDeleteByOrderNo(String orderNo, SystemAdmin systemAdmin) { - Order order = getByOrderNoAndMerId(orderNo, systemAdmin.getMerId()); + Order order = getByOrderNoForAdminScope(orderNo, systemAdmin); if (!order.getIsUserDel()) { throw new CrmebException(OrderResultCode.ORDER_USER_NOT_DELETE); } @@ -875,7 +873,7 @@ public class OrderServiceImpl extends ServiceImpl implements Or */ @Override public Boolean merchantMark(OrderRemarkRequest request, SystemAdmin systemAdmin) { - Order order = getByOrderNoAndMerId(request.getOrderNo(), systemAdmin.getMerId()); + Order order = getByOrderNoForAdminScope(request.getOrderNo(), systemAdmin); MerchantOrder merchantOrder = merchantOrderService.getOneByOrderNo(order.getOrderNo()); merchantOrder.setMerchantRemark(request.getRemark()); merchantOrder.setUpdateTime(DateUtil.date()); @@ -1584,7 +1582,7 @@ public class OrderServiceImpl extends ServiceImpl implements Or */ @Override public List getInvoiceListByMerchant(String orderNo, SystemAdmin systemAdmin) { - getByOrderNoAndMerId(orderNo, systemAdmin.getMerId()); + getByOrderNoForAdminScope(orderNo, systemAdmin); return getInvoiceList(orderNo); } @@ -1909,7 +1907,7 @@ public class OrderServiceImpl extends ServiceImpl implements Or if (request.getReturnType().equals(2) && CollUtil.isEmpty(request.getDetailList())) { throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "请选择要退款的商品"); } - Order order = getByOrderNoAndMerId(request.getOrderNo(), systemAdmin.getMerId()); + Order order = getByOrderNoForAdminScope(request.getOrderNo(), systemAdmin); if (order.getRefundStatus().equals(OrderConstants.ORDER_REFUND_STATUS_ALL)) { throw new CrmebException(OrderResultCode.ORDER_REFUND_ED); } @@ -2603,6 +2601,18 @@ public class OrderServiceImpl extends ServiceImpl implements Or return order; } + /** + * 商户订单操作范围校验 + * 平台管理员可操作任意商户订单,商户管理员仅可操作自己商户订单 + */ + private Order getByOrderNoForAdminScope(String orderNo, SystemAdmin systemAdmin) { + Order order = getByOrderNo(orderNo); + if (order.getIsMerchantDel() || (systemAdmin.getMerId() > 0 && !order.getMerId().equals(systemAdmin.getMerId()))) { + throw new CrmebException(OrderResultCode.ORDER_NOT_EXIST); + } + return order; + } + /** * 拆单发货 * @@ -2944,10 +2954,9 @@ public class OrderServiceImpl extends ServiceImpl implements Or map.put("endTime", dateLimit.getEndTime()); } } - if (merId > 0) { - map.put("merId", merId); - } else if (ObjectUtil.isNotNull(request.getMerId()) && request.getMerId() > 0) { - map.put("merId", request.getMerId()); + Integer effectiveMerId = resolveMerchantFilterMerId(merId, request.getMerId()); + if (ObjectUtil.isNotNull(effectiveMerId)) { + map.put("merId", effectiveMerId); } if (StrUtil.isNotBlank(request.getOrderNo())) { map.put("orderNo", URLUtil.decode(request.getOrderNo())); @@ -2958,6 +2967,22 @@ public class OrderServiceImpl extends ServiceImpl implements Or return dao.getMerchantAdminPageCount(map); } + /** + * 商户订单筛选归一化: + * - 商户管理员始终锁定当前商户; + * - 平台管理员仅在显式选择有效商户ID时按商户过滤; + * - 非法或空商户ID不参与过滤。 + */ + private Integer resolveMerchantFilterMerId(Integer loginMerId, Integer requestMerId) { + if (ObjectUtil.isNotNull(loginMerId) && loginMerId > 0) { + return loginMerId; + } + if (ObjectUtil.isNotNull(requestMerId) && requestMerId > 0) { + return requestMerId; + } + return null; + } + /** * 获取订单总数(平台端) * diff --git a/mer_java/crmeb-service/src/main/resources/mapper/order/OrderMapper.xml b/mer_java/crmeb-service/src/main/resources/mapper/order/OrderMapper.xml index 13a2443..9fefe49 100644 --- a/mer_java/crmeb-service/src/main/resources/mapper/order/OrderMapper.xml +++ b/mer_java/crmeb-service/src/main/resources/mapper/order/OrderMapper.xml @@ -134,7 +134,7 @@ left join eb_merchant_order as mo on o.order_no = mo.order_no left join eb_user as u on o.uid = u.id left join eb_merchant as m on o.mer_id = m.id - where o.is_del = 0 and o.is_merchant_del = 0 and o.level = 1 + where o.is_del = 0 and o.is_merchant_del = 0 and o.mer_id > 0 and o.mer_id = #{merId} @@ -317,7 +317,7 @@ select count(*) from eb_order o left join eb_user as u on o.uid = u.id - where o.is_del = 0 and o.is_merchant_del = 0 and o.level = 1 + where o.is_del = 0 and o.is_merchant_del = 0 and o.mer_id > 0 and o.second_type in (0,2,5,6,7,8) and o.mer_id = #{merId} diff --git a/mer_plat_admin/src/api/merchantOrder.js b/mer_plat_admin/src/api/merchantOrder.js index f7dd535..29dc3c4 100644 --- a/mer_plat_admin/src/api/merchantOrder.js +++ b/mer_plat_admin/src/api/merchantOrder.js @@ -10,6 +10,17 @@ import request from '@/utils/request'; +function normalizeMerchantOrderParams(params = {}) { + const normalized = { ...params }; + const merId = Number(normalized.merId); + if (!Number.isFinite(merId) || merId <= 0) { + delete normalized.merId; + } else { + normalized.merId = merId; + } + return normalized; +} + /** * 商户订单 列表 * @param params @@ -18,7 +29,7 @@ export function merchantOrderListApi(params) { return request({ url: '/admin/merchant/order/list', method: 'get', - params, + params: normalizeMerchantOrderParams(params), }); } @@ -30,7 +41,7 @@ export function merchantOrderStatusNumApi(params) { return request({ url: '/admin/merchant/order/status/num', method: 'get', - params, + params: normalizeMerchantOrderParams(params), }); } diff --git a/mer_plat_admin/src/views/merchantOrder/orderPrint.vue b/mer_plat_admin/src/views/merchantOrder/orderPrint.vue index 9dc7965..4a69fae 100644 --- a/mer_plat_admin/src/views/merchantOrder/orderPrint.vue +++ b/mer_plat_admin/src/views/merchantOrder/orderPrint.vue @@ -33,6 +33,12 @@ 支付时间: {{ orderData.payTime || '-' }} + + 使用积分: + {{ orderData.useIntegral || 0 }} + 积分抵扣: + ¥ {{ orderData.integralPrice || '0.00' }} + @@ -44,7 +50,7 @@ 收货人: {{ orderData.realName }} 联系电话: - {{ orderData.userPhone }} + {{ orderData.userPhone || '-' }} 收货地址: