From a33b109ddb3454dec4ec8b6cd2cb7674140a368d Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Mon, 8 Dec 2025 15:01:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E5=8B=A4=E5=A4=87=E8=B4=A7=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/service/ApprovalRecordsService.php | 23 +++++++++++++++- app/crm/service/StockOrdersService.php | 26 ++++++++++++++++--- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/app/common/service/ApprovalRecordsService.php b/app/common/service/ApprovalRecordsService.php index 9853b9d..46ceb16 100644 --- a/app/common/service/ApprovalRecordsService.php +++ b/app/common/service/ApprovalRecordsService.php @@ -2,6 +2,8 @@ namespace app\common\service; +use app\common\model\User; +use app\common\model\UserGroupMembers; use app\common\validate\ApprovalRecordsValidate; use app\common\traits\crud\CrudServiceTrait; use app\common\model\ApprovalRecords; @@ -61,7 +63,26 @@ class ApprovalRecordsService // } $roles_id = array_intersect([1,5,6], $request->user->role_ids); if(count($roles_id) == 0){ - $config['where']['approver_id'] = $request->user->uid; + if(in_array(4, $request->user->role_ids)){ + $report = User::where('report_to',$request->user->uid)->pluck('id')->toArray(); + $report = array_merge($report, [$request->user->uid]); + $config['where']['approver_id'] = ['in',$report]; + } elseif (in_array(5, $request->user->role_ids)){ //内勤 + $userGroupMember = UserGroupMembers::where('user_id',$request->user->uid) + ->where('is_leader',1) + ->first(); + if($userGroupMember){ + $report = UserGroupMembers::where('user_id',$request->user->uid) + ->pluck('id') + ->toArray(); + $report = array_merge($report, [$request->user->uid]); + $config['where']['salesperson_id'] = ['in',$report]; + }else{ //内勤没有负责的组时 + $config['where']['salesperson_id'] = $request->user->uid; + } + } else { + $config['where']['approver_id'] = $request->user->uid; + } } $config['where']['status'] = 'pending'; $config['where']['instance.status'] = 'processing'; diff --git a/app/crm/service/StockOrdersService.php b/app/crm/service/StockOrdersService.php index cfd964a..449c182 100644 --- a/app/crm/service/StockOrdersService.php +++ b/app/crm/service/StockOrdersService.php @@ -3,6 +3,7 @@ namespace app\crm\service; use app\common\model\User; +use app\common\model\UserGroupMembers; use support\Request; use support\exception\BusinessException; @@ -35,9 +36,28 @@ class StockOrdersService extends \app\common\service\StockOrdersService $config['order']['id'] = 'desc'; - $roles_id = array_intersect([1,5,6], $request->user->role_ids); - if(count($roles_id) == 0){ - $config['where']['salesperson_id'] = $request->user->uid; + $roles_id = array_intersect([1,6], $request->user->role_ids); + if (count($roles_id) == 0){ + if(in_array(4, $request->user->role_ids)){ //业务主管 + $report = User::where('report_to',$request->user->uid)->pluck('id')->toArray(); + $report = array_merge($report, [$request->user->uid]); + $config['where']['salesperson_id'] = ['in',$report]; + } elseif (in_array(5, $request->user->role_ids)){ //内勤 + $userGroupMember = UserGroupMembers::where('user_id',$request->user->uid) + ->where('is_leader',1) + ->first(); + if($userGroupMember){ + $report = UserGroupMembers::where('user_id',$request->user->uid) + ->pluck('id') + ->toArray(); + $report = array_merge($report, [$request->user->uid]); + $config['where']['salesperson_id'] = ['in',$report]; + }else{ //内勤没有负责的组时 + $config['where']['salesperson_id'] = $request->user->uid; + } + } else { + $config['where']['salesperson_id'] = $request->user->uid; + } } break; case 'print':