| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- <?php
- declare (strict_types = 1);
- namespace app\controller;
- use app\BaseController;
- use app\model\UserRoleModel;
- use app\model\UserModel;
- use think\facade\Config;
- use think\facade\Request;
- use think\facade\Cookie;
- class UserRole extends BaseController
- {
- /**
- * 获取所有权限配置
- */
- public function getPermissions()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- if (!checkPermission($loginInfo, 'role', 'permissions')) {
- return json_error([], '没有查看权限配置的权限');
- }
-
- $permissions = Config::get('permission.permissions', []);
- return json_success($permissions, '获取权限配置成功');
- }
-
- /**
- * 获取角色列表
- */
- public function list()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- if (!checkPermission($loginInfo, 'role', 'list')) {
- return json_error([], '没有查看角色列表的权限');
- }
-
- $list = UserRoleModel::getRoleList($loginInfo['merchant_id']);
-
- return json_success([
- 'list' => $list,
- 'total' => count($list)
- ], '获取角色列表成功');
- }
-
- /**
- * 获取角色详情
- */
- public function detail()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- if (!checkPermission($loginInfo, 'role', 'detail')) {
- return json_error([], '没有查看角色详情的权限');
- }
-
- $id = Request::param('id', 0, 'intval');
- if (!$id) {
- return json_error([], '角色ID不能为空');
- }
-
- $role = UserRoleModel::getRoleById($id, $loginInfo['merchant_id']);
- if (!$role) {
- return json_error([], '角色不存在');
- }
-
- return json_success($role, '获取角色详情成功');
- }
-
- /**
- * 创建角色
- */
- public function create()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- if (!checkPermission($loginInfo, 'role', 'create')) {
- return json_error([], '没有创建角色的权限');
- }
-
- $data = Request::only(['role_name', 'privileges']);
-
- if (empty($data['role_name'])) {
- return json_error([], '角色名称不能为空');
- }
-
- if (empty($data['privileges']) || !is_array($data['privileges'])) {
- return json_error([], '权限配置不能为空');
- }
-
- if (UserRoleModel::checkRoleExists($data['role_name'], $loginInfo['merchant_id'])) {
- return json_error([], '角色名称已存在');
- }
-
- $data['merchant_id'] = $loginInfo['merchant_id'];
-
- try {
- $role = UserRoleModel::createRole($data);
- return json_success(['id' => $role->id], '创建角色成功');
- } catch (\Exception $e) {
- return json_error([], '创建角色失败:' . $e->getMessage());
- }
- }
-
- /**
- * 更新角色
- */
- public function update()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- if (!checkPermission($loginInfo, 'role', 'update')) {
- return json_error([], '没有编辑角色的权限');
- }
-
- $id = Request::param('id', 0, 'intval');
- if (!$id) {
- return json_error([], '角色ID不能为空');
- }
-
- $data = Request::only(['role_name', 'privileges']);
-
- if (empty($data['role_name'])) {
- return json_error([], '角色名称不能为空');
- }
-
- if (empty($data['privileges']) || !is_array($data['privileges'])) {
- return json_error([], '权限配置不能为空');
- }
-
- $role = UserRoleModel::getRoleById($id, $loginInfo['merchant_id']);
- if (!$role) {
- return json_error([], '角色不存在');
- }
-
- if (UserRoleModel::checkRoleExists($data['role_name'], $loginInfo['merchant_id'], $id)) {
- return json_error([], '角色名称已存在');
- }
-
- try {
- UserRoleModel::updateRole($id, $loginInfo['merchant_id'], $data);
- return json_success([], '更新角色成功');
- } catch (\Exception $e) {
- return json_error([], '更新角色失败:' . $e->getMessage());
- }
- }
-
- /**
- * 删除角色
- */
- public function delete()
- {
- $loginInfo = checkUserLogin();
- if (!$loginInfo) {
- return json_error([], '请先登录');
- }
-
- if (!checkPermission($loginInfo, 'role', 'delete')) {
- return json_error([], '没有删除角色的权限');
- }
-
- $id = Request::param('id', 0, 'intval');
- if (!$id) {
- return json_error([], '角色ID不能为空');
- }
-
- $role = UserRoleModel::getRoleById($id, $loginInfo['merchant_id']);
- if (!$role) {
- return json_error([], '角色不存在');
- }
-
- $superAdminRoleId = Config::get('permission.super_admin_role_id', 1);
- if ($id == $superAdminRoleId) {
- return json_error([], '不能删除超级管理员角色');
- }
-
- $userCount = UserModel::where('user_role', $id)
- ->where('merchant_id', $loginInfo['merchant_id'])
- ->count();
- if ($userCount > 0) {
- return json_error([], '该角色下还有用户,不能删除');
- }
-
- try {
- UserRoleModel::deleteRole($id, $loginInfo['merchant_id']);
- return json_success([], '删除角色成功');
- } catch (\Exception $e) {
- return json_error([], '删除角色失败:' . $e->getMessage());
- }
- }
-
- }
|