From 5c6fed4e404cfdc71acfe981c879c25cf37012bd Mon Sep 17 00:00:00 2001 From: "mzl@hnxinyouhe.com" Date: Wed, 13 Aug 2025 18:40:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=96=B0=E5=A2=9E=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E9=83=A8=E5=88=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/RoleController.php | 3 ++- app/admin/controller/UserController.php | 13 ++++++++++++ app/admin/logic/UserLogic.php | 20 ++++++++---------- app/admin/service/RoleService.php | 9 ++++++++ app/admin/service/UserService.php | 5 +++++ app/common/controller/PresetController.php | 24 ++++++++++++++++++++++ app/common/service/ResourceService.php | 13 ++++++++++++ app/common/utils/Tree.php | 3 ++- app/controller/IndexController.php | 2 ++ config/route.php | 2 ++ 10 files changed, 80 insertions(+), 14 deletions(-) diff --git a/app/admin/controller/RoleController.php b/app/admin/controller/RoleController.php index f73f07d..a08ff7e 100644 --- a/app/admin/controller/RoleController.php +++ b/app/admin/controller/RoleController.php @@ -32,7 +32,8 @@ class RoleController extends BaseController public function menuResource(Request $request) { try { - $data = $this->validate($this->service->getValidator(), $request->post(), 'allocation'); + // $data = $this->validate($this->service->getValidator(), $request->post(), 'allocation'); + $data = $request->post(); $res = $this->service->menuResource($request, $data); return $this->success($res); } catch (\Throwable $e) { diff --git a/app/admin/controller/UserController.php b/app/admin/controller/UserController.php index ae596e3..10a8d57 100644 --- a/app/admin/controller/UserController.php +++ b/app/admin/controller/UserController.php @@ -51,6 +51,19 @@ class UserController extends BaseController $data['corp_name'] = Corp::where('id', $data['corp_id'])->value('name'); $data['customer_count'] = Customer::where('user_id', $data['id'])->count(); + + $data['role_ids'] = []; + $data['system_ids'] = []; + if (isset($data['roles']) && count($data['roles']) > 0) { + foreach ($data['roles'] as $role) { + $data['role_ids'][] = $role['id']; + } + } + if (isset($data['systems']) && count($data['systems']) > 0) { + foreach ($data['systems'] as $system) { + $data['system_ids'][] = $system['id']; + } + } return $data; } diff --git a/app/admin/logic/UserLogic.php b/app/admin/logic/UserLogic.php index e01da99..d70b6de 100644 --- a/app/admin/logic/UserLogic.php +++ b/app/admin/logic/UserLogic.php @@ -22,34 +22,30 @@ class UserLogic $systemIds = $data['system_ids'] ?? []; $userId = $data['user_id'] ?? 0; - if (empty($roleId)) { - return false; - } - Db::beginTransaction(); try { Db::table('user_roles')->where('user_id', $userId)->delete(); - if (!empty($roleIds)) { - $insertData = []; + if (count($roleIds) > 0) { + $insertDataRole = []; foreach ($roleIds as $roleId) { - $insertData[] = [ + $insertDataRole[] = [ 'role_id' => $roleId, 'user_id' => $userId ]; } - Db::table('user_roles')->insert($insertData); + Db::table('user_roles')->insert($insertDataRole); } Db::table('user_systems')->where('user_id', $userId)->delete(); - if (!empty($systemIds)) { - $insertData = []; + if (count($systemIds) > 0) { + $insertDataSystem = []; foreach ($systemIds as $systemId) { - $insertData[] = [ + $insertDataSystem[] = [ 'system_id' => $systemId, 'user_id' => $userId ]; } - Db::table('user_systems')->insert($insertData); + Db::table('user_systems')->insert($insertDataSystem); } Db::commit(); diff --git a/app/admin/service/RoleService.php b/app/admin/service/RoleService.php index af86a04..f2ee190 100644 --- a/app/admin/service/RoleService.php +++ b/app/admin/service/RoleService.php @@ -38,4 +38,13 @@ class RoleService { return (new RoleLogic)->updateRoleResources($data); } + + + public function getList() + { + $config['where']['status'] = 1; + $config['order']['sort'] = 'asc'; + $config['order']['id'] = 'asc'; + return $this->logicListAll($config); + } } \ No newline at end of file diff --git a/app/admin/service/UserService.php b/app/admin/service/UserService.php index d3d1175..d807db1 100644 --- a/app/admin/service/UserService.php +++ b/app/admin/service/UserService.php @@ -63,6 +63,11 @@ class UserService } $config['fields'] = ['id','sn', 'name', 'email', 'sex', 'phone', 'avatar', 'corp_id', 'country_id', 'position', 'status', 'created_at']; + + $config['with']['roles'][] = 'id'; + $config['with']['roles'][] = 'name'; + $config['with']['systems'][] = 'id'; + $config['with']['systems'][] = 'name'; break; case 'show': $config['where']['id'] = $p['id']; diff --git a/app/common/controller/PresetController.php b/app/common/controller/PresetController.php index ad88a8f..569a895 100644 --- a/app/common/controller/PresetController.php +++ b/app/common/controller/PresetController.php @@ -2,11 +2,13 @@ namespace app\common\controller; +use app\admin\service\RoleService; use support\Request; use app\common\service\CorpService; use app\common\service\CorpFeishuAppService; use app\common\service\SystemsService; use app\common\service\UserService; +use support\Cache; class PresetController extends BaseController { @@ -61,4 +63,26 @@ class PresetController extends BaseController return $this->error($e->getMessage()); } } + + + public function roles() + { + try { + $result = (new RoleService)->getList(); + return $this->success($result, '获取角色列表'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } + + + public function cacheClear() + { + try { + Cache::clear(); + return $this->success([], '操作成功'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } } \ No newline at end of file diff --git a/app/common/service/ResourceService.php b/app/common/service/ResourceService.php index c2469ef..c8ef178 100644 --- a/app/common/service/ResourceService.php +++ b/app/common/service/ResourceService.php @@ -110,4 +110,17 @@ class ResourceService $data = Tree::buildMenuTree($data->toArray()); return $data; } + + + public function beforeServiceStore($data, Request $request) + { + $data['parent_id'] = $data['parent_id'] != '' ? $data['parent_id'] : 0; + return $data; + } + + public function beforeServiceUpdate($data, Request $request) + { + $data['parent_id'] = $data['parent_id'] != '' ? $data['parent_id'] : 0; + return $data; + } } \ No newline at end of file diff --git a/app/common/utils/Tree.php b/app/common/utils/Tree.php index 478eb10..b831185 100644 --- a/app/common/utils/Tree.php +++ b/app/common/utils/Tree.php @@ -358,7 +358,8 @@ class Tree $authList[] = [ 'id' => $permission['id'], 'title' => $permission['name'] ?? '', - 'authMark' => $permission['code'] ?? '' + 'authMark' => $permission['code'] ?? '', + 'selected' => isset($permission['selected']) && $permission['selected'] ? true : false ]; } $menuItem['meta']['authList'] = $authList; diff --git a/app/controller/IndexController.php b/app/controller/IndexController.php index 3875843..e7ae182 100644 --- a/app/controller/IndexController.php +++ b/app/controller/IndexController.php @@ -119,6 +119,8 @@ class IndexController // ]; // \Webman\RedisQueue\Redis::send('perm-agt', $options); + $res = Cache::delete("user_resources_74_fdesk"); + return 22; } } \ No newline at end of file diff --git a/config/route.php b/config/route.php index 27ba099..d1fd613 100644 --- a/config/route.php +++ b/config/route.php @@ -58,6 +58,8 @@ Route::group('/common', function () { Route::any('/corps', [app\common\controller\PresetController::class, 'corps']); Route::any('/feishu/app', [app\common\controller\PresetController::class, 'feishuApp']); Route::any('/systems', [app\common\controller\PresetController::class, 'systems']); + Route::any('/roles', [app\common\controller\PresetController::class, 'roles']); + Route::any('/cache/clear', [app\common\controller\PresetController::class, 'cacheClear']); }); });