validator; } protected function buildQueryConfig(Request $request, string $scene = 'default'): array { $p = $request->all(); $config = []; $config['model'] = $this->modelClass; switch ($scene) { case 'index': $config['order']['id'] = 'desc'; $config['with'] = [ 'instance', 'approver', 'instance.flows', 'instance.initiator', 'instance.bizInfo' ]; // $config['dataLimit']['type'] = 'relation'; // $config['dataLimit']['userId'] = $request->user->uid; // $config['dataLimit']['userField'] = 'approver_id'; break; case 'todo': if ($p['scene'] === 'todo') { // if (!in_array(1, $request->user->role_ids)) { $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; } $config['where']['status'] = ['!=', 'pending']; } $config['order']['id'] = 'desc'; $config['with'] = [ 'instance', 'approver', 'instance.flows', 'instance.initiator', 'instance.bizInfo' ]; break; case 'show': $config['where']['id'] = $p['id']; break; case 'store': break; case 'update': $config['where']['id'] = $p['id']; break; case 'destroy': $config['where']['id'] = $p['id']; break; case 'logs': $config['where']['instance_id'] = $p['instance_id']; $config['order']['id'] = 'desc'; break; } return $config; } public function serviceApprove(Request $request) { $param = $request->all(); $appro = new \app\common\utils\approval\service\ApprovalFlowService(); return $appro->approve($param['instance_id'], $request->user->uid, $param['action'], $param['comment']); } public function serviceLogs(Request $request) { $config = $this->buildQueryConfig($request, 'logs'); $item = $this->logicListAll($config); return $this->postProcess('Logs', $item); } }