Parcourir la source

完善获取角色下的用户信息

tangs il y a 5 ans
Parent
commit
29060fd1ff

+ 11 - 5
app/Http/Controllers/RoleController.php

@@ -156,19 +156,25 @@ class RoleController extends Controller
         $validator = Validator::make($request->all(), [
             "keyword" => "max: 255",
             "page" => "integer|min:1",
-            "pageCount" => "integer|min:1"
+            "pageCount" => "integer|min:1",
+            "ukeyword" => "max: 255",
+            "upage" => "integer|min:1",
+            "upageCount" => "integer|min:1"
         ]);
         if ($validator->fails()) {
             return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
         }
 
         $keyword = $request->input("keyword");
-        $page = $request->input("page");
-        $pageCount = $request->input("pageCount");
+        $page = (int)$request->input("page");
+        $pageCount = (int)$request->input("pageCount");
+        $ukeyword = $request->input("ukeyword");
+        $upage = (int)$request->input("page");
+        $upageCount = (int)$request->input("pageCount");
 
         $role = new Models\Role();
-        $data = $role->LoadRoleUsers($keyword, $page, $pageCount);
+        $data = $role->LoadRoleUsers($keyword, $page, $pageCount, $ukeyword, $upage, $upageCount);
 
-        return $data;
+        return $this->success($data);
     }
 }

+ 0 - 1
app/Models/ActionBar.php

@@ -220,7 +220,6 @@ class ActionBar extends Model
         $tmpRes = [];
         foreach ($bars as $bar) {
             $parent = $bar["parent"];
-            Log::debug($parent);
             if (!key_exists($parent, $tmpRes)) {
                 $tmpRes[$parent] = [];
             }

+ 16 - 10
app/Models/Role.php

@@ -160,23 +160,29 @@ class Role extends Model
     /**
      * 列出角色下的用户,如果列出指定角色下的用户,可以keyword指定为角色名即可.
      *
-     * @param $keyword 根据role的名称来列出,支持模糊搜索
-     * @param $page 暂时没用
-     * @param $pageCount 暂时没用
+     * @param string $keyword 根据role的名称来列出,支持模糊搜索
+     * @param int $page 用户角色分页
+     * @param int $pageCount 用户角色分页
+     * @param string $ukeyword 根据角色下用户的名称来列出,支持模糊搜索
+     * @param int $upage 用户角色下的用户分页
+     * @param int $upageCount 用户角色下的用户分页
      * @return array
      */
-    public function LoadRoleUsers($keyword, $page, $pageCount)
+    public function LoadRoleUsers($keyword, $page, $pageCount, $ukeyword, $upage, $upageCount)
     {
-//        print $keyword;
-//        print $page;
-//        print $pageCount;
+        $page = $page < 1 ? 1 : $page;
+        $pageCount = $pageCount < 1 || $pageCount > 15 ? 15 : $pageCount;
+//        $upage = $upage < 1 ? 1 : $upage;
+//        $upageCount = $upageCount < 1 || $upageCount > 15 ? 15 : $upageCount;
 
         // load all roles
         $roleQuery = $this->select("id", "name", "description");
         if ($keyword != "") {
             $roleQuery = $roleQuery->where("name", "like", "%" . $keyword . "%")->where("is_del", false);
         }
-        $roles = $roleQuery->get();
+        $total = $roleQuery->count();
+
+        $roles = $roleQuery->offset(($page - 1) * $pageCount)->limit($pageCount)->get();
 
         if (count($roles) < 1) {
             return [];
@@ -193,8 +199,8 @@ class Role extends Model
         $users = $roleUsers->LoadUsersWithRoles($rids);
 
         // return result
-        $users["roles"] = $roles;
-        return $users;
+        $result = ["roles" => $roles, "roleUser" => $users, "total" => $total];
+        return $result;
     }
 
 }

+ 1 - 1
app/Models/UserActionBar.php

@@ -87,7 +87,7 @@ class UserActionBar extends Model
         // 先收集所有的actionBars,并且根据角色分类
         $userBars = $this->ListActionBarIds($ownerTypes, $ownerIds);
         if (count($userBars) < 1) {
-            return ["userBars" => (object)[]];
+            return [];
         }
 
         // 收集所有的bar id

+ 41 - 11
app/Models/UserRole.php

@@ -143,25 +143,55 @@ class UserRole extends Model
     /**
      * 根据角色id,列出用户-角色数据
      *
-     * @param $rids 多个角色id
+     * @param array $rids 多个角色id
      * @return array
      */
-    public function LoadUsersWithRoles($rids)
+    public function LoadUsersWithRoles(array $rids)
     {
-        $user_roles = $this->select("id", "user_id", "role_id", "status")
+        $userRoles = $this->select("id", "user_id", "role_id", "status")
             ->whereIn("role_id", $rids)->where("is_del", false)
             ->get();
-        $uids = [];
-        foreach ($user_roles as $ur) {
-            array_push($uids, $ur["user_id"]);
+        if (count($userRoles) == 0) {
+            return [];
+        }
+        // 根据不同角色收集各自的user_id,同时收集所有的用户id,用于查出用户信息
+        $allUids = [];
+        $roleUsers = [];
+        foreach ($userRoles as $userRole) {
+            $key = $userRole["role_id"];
+            $userId = $userRole["user_id"];
+
+            if (!key_exists($key, $roleUsers)) {
+                $roleUsers[$key] = [];
+            }
+            $tmpUsers = $roleUsers[$key];
+            array_push($tmpUsers, $userId);
+            $roleUsers[$key] = $tmpUsers;
+            array_push($allUids, $userId);
         }
-        if (count($uids) == 0) {
-            return ["user_role" => [], "userInfo" => null];
+
+        // 这个if正常情况下是不会进入的,前面已经有if了。
+        if (count($allUids) == 0) {
+            return [];
         }
 
         // load user info
-        $u = new User();
-        $users = $u->ListUserByIds_KV($uids);
-        return ["user_role" => $user_roles, "userInfo" => $users];
+        $userObj = new User();
+        $userInfo = $userObj->ListUserByIds_KV($allUids);
+
+
+        $result = [];
+        // 每个角色分别收取自己拥有的用户信息
+        foreach ($roleUsers as $roleId => $uids) {
+            $tmpUsers = [];
+            foreach ($uids as $uid) {
+                if (!key_exists($uid, $userInfo)) {
+                    continue;
+                }
+                array_push($tmpUsers, $userInfo[$uid]);
+            }
+            $result[$roleId] = $tmpUsers;
+        }
+        return $result;
     }
 }

+ 2 - 2
routes/web.php

@@ -36,12 +36,12 @@ Route::get("loadRole", "RoleController@LoadRole");
 
 
 // user role
-Route::get("loadRoleUsers", "RoleController@LoadRoleUsers");
+Route::get("admin/assignRoleUser", "PermissionController@AssignRoleUser");
+Route::get("admin/loadRoleUsers", "RoleController@LoadRoleUsers");
 
 // user action bar
 Route::get("admin/assignActionBars", "PermissionController@AssignActionBars");
 Route::get("admin/assignUserRole", "PermissionController@AssignUserRole");
-Route::get("admin/assignRoleUser", "PermissionController@AssignRoleUser");
 
 Route::get("addUserActionBar", "UserActionBarController@AddUserActionBar");
 Route::get("removeUserActionBar", "UserActionBarController@RemoveUserActionBar");