diff --git a/app/common/service/ApprovalRecordsService.php b/app/common/service/ApprovalRecordsService.php index 61c026e..f0e33b1 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; @@ -56,16 +58,62 @@ class ApprovalRecordsService case 'todo': if ($p['scene'] === 'todo') { - if (!in_array(1, $request->user->role_ids)) { - $config['where']['approver_id'] = $request->user->uid; +// if (!in_array(1, $request->user->role_ids)) { +// $config['where']['approver_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']['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('group_id',$userGroupMember->group_id) + ->pluck('user_id') + ->toArray(); + $report = array_merge($report, [$request->user->uid]); + $config['where']['approver_id'] = ['in',$report]; + }else{ //内勤没有负责的组时 + $config['where']['approver_id'] = $request->user->uid; + } + } else { + $config['where']['approver_id'] = $request->user->uid; + } } $config['where']['status'] = 'pending'; $config['where']['instance.status'] = 'processing'; } if ($p['scene'] === 'history') { - if (!in_array(1, $request->user->role_ids)) { - $config['where']['approver_id'] = $request->user->uid; +// if (!in_array(1, $request->user->role_ids) && !in_array(5, $request->user->role_ids)) { +// $config['where']['approver_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']['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('group_id',$userGroupMember->group_id) + ->pluck('user_id') + ->toArray(); + $report = array_merge($report, [$request->user->uid]); + $config['where']['approver_id'] = ['in',$report]; + }else{ //内勤没有负责的组时 + $config['where']['approver_id'] = $request->user->uid; + } + } else { + $config['where']['approver_id'] = $request->user->uid; + } } $config['where']['status'] = ['!=', 'pending']; } diff --git a/app/crm/service/StockOrdersService.php b/app/crm/service/StockOrdersService.php index 492ffd3..b2b2654 100644 --- a/app/crm/service/StockOrdersService.php +++ b/app/crm/service/StockOrdersService.php @@ -2,6 +2,8 @@ namespace app\crm\service; +use app\common\model\User; +use app\common\model\UserGroupMembers; use support\Request; use support\exception\BusinessException; @@ -34,7 +36,29 @@ class StockOrdersService extends \app\common\service\StockOrdersService $config['order']['id'] = 'desc'; - $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('group_id',$userGroupMember->group_id) + ->pluck('user_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': case 'approval':