validator; } protected function buildQueryConfig(Request $request, string $scene = 'default'): array { $p = $request->all(); $config = []; $config['model'] = $this->modelClass; switch ($scene) { case 'default': $config['where']['status'] = 1; $config['order']['sort'] = 'desc'; $config['order']['id'] = 'desc'; $config['with'] = ['groupMembers', 'groupMembers.user']; break; case 'index': $config['where']['status'] = 1; $config['order']['sort'] = 'desc'; $config['order']['id'] = 'desc'; $config['with'] = ['groupMembers', 'groupMembers.user']; break; case 'show': $config['where']['id'] = $p['id']; $config['where']['status'] = 1; break; case 'store': break; case 'update': $config['where']['id'] = $p['id']; break; case 'destroy': $config['where']['id'] = $p['id']; break; case 'userGroup': $config['where']['status'] = 1; $config['order']['sort'] = 'desc'; $config['order']['id'] = 'desc'; $config['fields'] = ['id', 'title']; break; } return $config; } public function serviceStore(Request $request, array $data = [], string $scene = 'store') { $data = $this->preProcess(ucfirst($scene), $data, $request); $created = (new UserGroupLogic())->createGroup($data); return $this->postProcess(ucfirst($scene), $created); } public function serviceUpdate(Request $request, array $data = [], string $scene = 'update') { $data = $this->preProcess(ucfirst($scene), $data, $request); $config = $this->buildQueryConfig($request, $scene); $userGroup = $this->logicShow($config); $updated = (new UserGroupLogic())->updateGroup($userGroup, $data); return $this->postProcess(ucfirst($scene), $updated); } public function serviceDestroy(Request $request, string $scene = 'destroy') { $config = $this->buildQueryConfig($request, $scene); $deleted = $this->logicDeleteBy($config); (new UserGroupMembersLogic())->deleteUserGroupMembers($config['where']['id']); return $this->postProcess(ucfirst($scene), $deleted); } public function userGroup(Request $request, string $scene = 'userGroup') { $config = $this->buildQueryConfig($request, $scene); $result = $this->logicListAll($config); return $this->postProcess(ucfirst($scene), $result); } public function userGroupScene(Request $request, string $scene = 'userGroup') { $data = (new \app\common\service\SysDictService())->pluckKeyValueByCode('user_group_scene'); $result = []; foreach($data as $key => $value) { $result[] = [ 'name' => $key, 'id' => $value, ]; } return $this->postProcess(ucfirst($scene), $result); } }