Browse Source

完善功能

gorden 10 months ago
parent
commit
dd4bb351dd

+ 16 - 1
app/admin/controller/customer/IndexController.php

@@ -8,7 +8,9 @@ use app\model\Customer;
 use app\model\Member;
 use app\model\Member;
 use app\model\MemberCert;
 use app\model\MemberCert;
 use app\model\MemberInfo;
 use app\model\MemberInfo;
+use app\model\SysRole;
 use app\model\SysSerial;
 use app\model\SysSerial;
+use app\model\SysUser;
 use support\Db;
 use support\Db;
 use support\exception\BusinessException;
 use support\exception\BusinessException;
 use support\Request;
 use support\Request;
@@ -27,9 +29,22 @@ class IndexController extends Curd
 
 
     public function select(Request $request): Response
     public function select(Request $request): Response
     {
     {
+        $userId = JwtToken::getCurrentId();
+        $user = SysUser::find($userId);
+        if (empty($user->join_user_role_id)) {
+            return json_fail("请先关联角色");
+        }
+        $role = SysRole::find($user->join_user_role_id);
+        $selfAndChildIds = SysRole::where('role_path', 'like', $role->role_path)
+            ->where('role_id', '<>', $role->role_id)
+            ->pluck('role_id');
+        $userIds = SysUser::whereIn('join_user_role_id', $selfAndChildIds)->pluck('user_id')->toArray();
+        array_unshift($userIds, $userId);
+
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         [$where, $format, $limit, $field, $order] = $this->selectInput($request);
         $order = $request->get('order', 'desc');
         $order = $request->get('order', 'desc');
         $field = $field ?? 'created_at';
         $field = $field ?? 'created_at';
+        $where['creator'] = ['in', $userIds];
         $query = $this->doSelect($where, $field, $order);
         $query = $this->doSelect($where, $field, $order);
         return $this->doFormat($query, $format, $limit);
         return $this->doFormat($query, $format, $limit);
     }
     }
@@ -126,7 +141,7 @@ class IndexController extends Curd
                 'member_status' => 'ACTIVED',
                 'member_status' => 'ACTIVED',
                 'member_mobile' => $customer->mobile ?? '',
                 'member_mobile' => $customer->mobile ?? '',
                 'member_from' => 'CUSTOMER',
                 'member_from' => 'CUSTOMER',
-                'member_addtimes'=>time()
+                'member_addtimes' => time()
             ];
             ];
             Member::insert($member);
             Member::insert($member);
 
 

+ 11 - 0
app/admin/controller/sys_manage/RoleController.php

@@ -59,6 +59,17 @@ class RoleController extends Curd
         return json_success('success', $tree->getTree());
         return json_success('success', $tree->getTree());
     }
     }
 
 
+    public function afterQuery($items)
+    {
+        foreach ($items as &$item){
+            if (!empty($item->role_permission) && is_json($item->role_permission)) {
+                $item->role_permission = json_decode($item->role_permission);
+            }
+        }
+
+        return $items;
+    }
+
     /**
     /**
      * @Desc 角色详情
      * @Desc 角色详情
      * @Author Gorden
      * @Author Gorden

+ 36 - 5
app/admin/service/sys_manage/RoleService.php

@@ -3,6 +3,7 @@
 namespace app\admin\service\sys_manage;
 namespace app\admin\service\sys_manage;
 
 
 use app\model\SysRole;
 use app\model\SysRole;
+use support\Db;
 use support\Request;
 use support\Request;
 
 
 class RoleService
 class RoleService
@@ -78,7 +79,9 @@ class RoleService
     public static function insertRole($params)
     public static function insertRole($params)
     {
     {
         try {
         try {
+            Db::beginTransaction();
             $data = [
             $data = [
+                'role_superior_id' => $params['role_superior_id'] ?? 0,
                 'role_status' => $params['role_status'],
                 'role_status' => $params['role_status'],
                 'role_category' => $params['role_category'],
                 'role_category' => $params['role_category'],
                 'role_name' => $params['role_name'],
                 'role_name' => $params['role_name'],
@@ -87,12 +90,22 @@ class RoleService
                 'role_permission' => '[]',
                 'role_permission' => '[]',
                 'role_addtimes' => time()
                 'role_addtimes' => time()
             ];
             ];
-
-            // 入库
-            if (!SysRole::insert($data)) {
-                throw new \Exception('角色添加失败');
+            $roleId = SysRole::insertGetId($data);
+            $path = '/0/';
+            if (!empty($params['role_superior_id'])) {
+                $superior = SysRole::find($params['role_superior_id']);
+                dump($superior);
+                if (!isset($superior->role_path)) {
+                    Db::rollBack();
+                    return json_fail("上级角色不存在");
+                }
+                $path = $superior->role_path;
             }
             }
+            SysRole::where('role_id', $roleId)->update(['role_path' => $path . $roleId . '/']);
+            Db::commit();
         } catch (\Exception $e) {
         } catch (\Exception $e) {
+            Db::rollBack();
+            dump($e->getMessage());
             return json_fail('角色添加失败');
             return json_fail('角色添加失败');
         }
         }
 
 
@@ -111,22 +124,40 @@ class RoleService
     public static function updateRole($id, $params)
     public static function updateRole($id, $params)
     {
     {
         $role = SysRole::find($id);
         $role = SysRole::find($id);
+        $oldPath = $role->role_path;
         if (!$role) {
         if (!$role) {
             return json_fail('角色不存在');
             return json_fail('角色不存在');
         }
         }
-
         try {
         try {
+            Db::beginTransaction();
             $data = [
             $data = [
+                'role_superior_id' => $params['role_superior_id'] ?? 0,
                 'role_status' => $params['role_status'],
                 'role_status' => $params['role_status'],
                 'role_category' => $params['role_category'],
                 'role_category' => $params['role_category'],
                 'role_name' => $params['role_name'],
                 'role_name' => $params['role_name'],
                 'role_remark' => $params['role_remark'] ? format_string($params['role_remark']) : null,
                 'role_remark' => $params['role_remark'] ? format_string($params['role_remark']) : null,
                 'role_extend_json' => $params['role_extend_json'] ?? '{}',
                 'role_extend_json' => $params['role_extend_json'] ?? '{}',
             ];
             ];
+            if ($data['role_superior_id'] == 0) {
+                $data['role_path'] = '/0/' . $id . '/';
+            } else if ($data['role_superior_id'] != $role->role_superior_id) {
+                $superior = SysRole::find($data['role_superior_id']);
+                $data['role_path'] = $superior->role_path . $id . '/';
+                $child = SysRole::where('role_path', 'like', $oldPath . '%')->get();
+                dump($child);
+                foreach ($child as $item) {
+                    $childPath = str_replace($oldPath, $data['role_path'], $item->role_path);
+                    SysRole::where('role_id', $item->role_id)->update(['role_path'=>$childPath]);
+                }
+            }
+            dump($data);
             if (!SysRole::where('role_id', $id)->update($data)) {
             if (!SysRole::where('role_id', $id)->update($data)) {
+                Db::rollBack();
                 throw new \Exception('角色修改失败');
                 throw new \Exception('角色修改失败');
             }
             }
+            Db::commit();
         } catch (\Exception $e) {
         } catch (\Exception $e) {
+            Db::rollBack();
             return json_fail($e->getMessage());
             return json_fail($e->getMessage());
         }
         }