From 6e2e8e1cc6448e844b4c8ea3f68d18521a9cf6ba Mon Sep 17 00:00:00 2001 From: mzl Date: Thu, 6 Aug 2026 11:49:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=87=E8=B4=A7=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=94=AF=E6=8C=81=20view=5Fscope(all/self)=20?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E5=88=87=E6=8D=A2=EF=BC=88=E4=BB=85=20user?= =?UTF-8?q?=5Fid=3D73=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在 /crm/stock/order/list 的 buildQueryConfig index 分支最前面短路: - 仅当前用户 uid=73 且传 view_scope 时生效,最高优先级,覆盖角色范围逻辑 - all:自己和别人的单,排除草稿(approval_status>=1) - self:只看自己(salesperson_id=73,含自己草稿) - 非73用户或未传该参数:走原逻辑,向后兼容,无越权 Co-Authored-By: Claude --- app/crm/service/StockOrdersService.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/crm/service/StockOrdersService.php b/app/crm/service/StockOrdersService.php index f5d33e9..1c3ec45 100644 --- a/app/crm/service/StockOrdersService.php +++ b/app/crm/service/StockOrdersService.php @@ -21,6 +21,25 @@ class StockOrdersService extends \app\common\service\StockOrdersService switch ($scene) { case 'index': + // ====== view_scope:仅 user_id=73 生效,最高优先级,覆盖下方业务id默认值与角色范围逻辑 ====== + $viewScope = $p['view_scope'] ?? ''; + if ($request->user->uid == 73 && in_array($viewScope, ['all', 'self'], true)) { + if ($viewScope === 'self') { + $config['where']['salesperson_id'] = $request->user->uid; // 只看自己(含自己草稿) + } else { // 'all':自己和别人的,排除草稿(approval_status=0) + $config['where']['approval_status'] = ['>=', 1]; + } + $config['where']['is_final'] = $p['is_final'] ?? 0; + if (isset($p['keyword']) && $p['keyword']) { + $k = '%' . $p['keyword'] . '%'; + foreach (['pi_no', 'order_no', 'customer_snapshot'] as $col) { + $config['orWhere'][] = [$col, 'like', $k]; + } + } + $config['order']['id'] = 'desc'; + break; // 最高优先级:跳过下方业务id默认值与角色范围逻辑 + } + // ====== ====== 筛选 ====== ====== // 业务id if (isset($p['salesperson_id']) && $p['salesperson_id']) {