角色分配提供分页功能

This commit is contained in:
samisgod 2021-12-17 09:55:48 +08:00 committed by 不做码农
parent 40cab1dd1e
commit 31157a2f97
7 changed files with 132 additions and 34 deletions

View File

@ -1,7 +1,6 @@
using Infrastructure;
using Infrastructure.Attribute;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Linq;
using ZR.Admin.WebApi.Filters;
using ZR.Model;
@ -29,13 +28,13 @@ namespace ZR.Admin.WebApi.Controllers.System
/// <summary>
/// 根据角色编号获取已分配的用户
/// </summary>
/// <param name="roleId"></param>
/// <param name="roleUserQueryDto"></param>
/// <returns></returns>
[HttpGet("get/{roleId}")]
[HttpGet("list")]
[ActionPermissionFilter(Permission = "system:roleusers:query")]
public IActionResult GetList(long roleId = 0)
public IActionResult GetList([FromQuery] RoleUserQueryDto roleUserQueryDto)
{
var list = SysUserRoleService.GetSysUsersByRoleId(roleId);
var list = SysUserRoleService.GetSysUsersByRoleId(roleUserQueryDto);
return SUCCESS(list, TIME_FORMAT_FULL);
}
@ -70,24 +69,19 @@ namespace ZR.Admin.WebApi.Controllers.System
/// <summary>
/// 获取未分配用户角色
/// </summary>
/// <param name="roleId"></param>
/// <param name="roleUserQueryDto"></param>
/// <returns></returns>
[HttpGet("GetExcludeUsers")]
public IActionResult GetExcludeUsers(long roleId = 0)
public IActionResult GetExcludeUsers([FromQuery] RoleUserQueryDto roleUserQueryDto)
{
if (roleId <= 0)
if (roleUserQueryDto.RoleId <= 0)
{
throw new CustomException(ResultCode.PARAM_ERROR, "roleId不能为空");
}
// 取得该角色所有添加的用户
var userIds = SysUserRoleService.GetSysUsersByRoleId(roleId).Select(f => f.UserId);
SysUser userQuery = new();
userQuery.Status = "0";
PagerInfo pager = new(1, 50);
// 获取未添加用户
var list = UserService.SelectUserList(userQuery, pager).Where(m => !userIds.Contains(m.UserId));
var list = SysUserRoleService.GetExcludedSysUsersByRoleId(roleUserQueryDto);
return SUCCESS(list, TIME_FORMAT_FULL);
}
}

View File

@ -5,6 +5,13 @@ using System.Text;
namespace ZR.Model.System.Dto
{
public class RoleUserQueryDto : PagerInfo
{
public long RoleId { get; set; }
public string UserName { get; set; }
}
public class RoleUsersCreateDto
{
/// <summary>

View File

@ -1,7 +1,9 @@
using Infrastructure.Attribute;
using SqlSugar;
using System.Collections.Generic;
using ZR.Model;
using ZR.Model.System;
using ZR.Model.System.Dto;
namespace ZR.Repository.System
{
@ -73,5 +75,39 @@ namespace ZR.Repository.System
.Select((t1, u) => u)
.ToList();
}
/// <summary>
/// 获取用户数据根据角色id
/// </summary>
/// <param name="roleUserQueryDto"></param>
/// <returns></returns>
public PagedInfo<SysUser> GetSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
{
var query = Context.Queryable<SysUserRole, SysUser>((t1, u) => new JoinQueryInfos(
JoinType.Left, t1.UserId == u.UserId))
.Where((t1, u) => t1.RoleId == roleUserQueryDto.RoleId && u.DelFlag == "0");
if (!string.IsNullOrEmpty(roleUserQueryDto.UserName))
{
query = query.Where((t1, u) => u.UserName.Contains(roleUserQueryDto.UserName));
}
return query.Select((t1, u) => u).ToPage(roleUserQueryDto);
}
/// <summary>
/// 获取尚未指派的用户数据根据角色id
/// </summary>
/// <param name="roleUserQueryDto"></param>
/// <returns></returns>
public PagedInfo<SysUser> GetExcludedSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
{
var query = Context.Queryable<SysUser>()
.Where(it => SqlFunc.Subqueryable<SysUserRole>()
.Where(s => s.UserId == it.UserId).NotAny());
if (!string.IsNullOrEmpty(roleUserQueryDto.UserName))
{
query = query.Where(x => x.UserName.Contains(roleUserQueryDto.UserName));
}
return query.ToPage(roleUserQueryDto);
}
}
}

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZR.Model;
using ZR.Model.System.Dto;
using ZR.Model.System;
@ -34,8 +35,27 @@ namespace ZR.Service.System.IService
/// <returns></returns>
public int AddUserRole(List<SysUserRole> sysUsers);
/// <summary>
/// 获取用户数据根据角色id
/// </summary>
/// <param name="roleId"></param>
/// <returns></returns>
public List<SysUser> GetSysUsersByRoleId(long roleId);
/// <summary>
/// 获取用户数据根据角色id
/// </summary>
/// <param name="roleUserQueryDto"></param>
/// <returns></returns>
public PagedInfo<SysUser> GetSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto);
/// <summary>
/// 获取尚未指派的用户数据根据角色id
/// </summary>
/// <param name="roleUserQueryDto"></param>
/// <returns></returns>
public PagedInfo<SysUser> GetExcludedSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto);
/// <summary>
/// 新增用户角色信息
/// </summary>

View File

@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using ZR.Model;
using ZR.Model.System.Dto;
using ZR.Model.System;
using ZR.Repository.System;
@ -12,8 +13,8 @@ namespace ZR.Service.System
/// <summary>
/// 用户角色
/// </summary>
[AppService(ServiceType = typeof(ISysUserRoleService),ServiceLifetime = LifeTime.Transient)]
public class SysUserRoleService: ISysUserRoleService
[AppService(ServiceType = typeof(ISysUserRoleService), ServiceLifetime = LifeTime.Transient)]
public class SysUserRoleService : ISysUserRoleService
{
public SysUserRoleRepository SysUserRoleRepository;
@ -74,6 +75,26 @@ namespace ZR.Service.System
return SysUserRoleRepository.GetSysUsersByRoleId(roleId);
}
/// <summary>
/// 获取用户数据根据角色id
/// </summary>
/// <param name="roleUserQueryDto"></param>
/// <returns></returns>
public PagedInfo<SysUser> GetSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
{
return SysUserRoleRepository.GetSysUsersByRoleId(roleUserQueryDto);
}
/// <summary>
/// 获取尚未指派的用户数据根据角色id
/// </summary>
/// <param name="roleUserQueryDto"></param>
/// <returns></returns>
public PagedInfo<SysUser> GetExcludedSysUsersByRoleId(RoleUserQueryDto roleUserQueryDto)
{
return SysUserRoleRepository.GetExcludedSysUsersByRoleId(roleUserQueryDto);
}
/// <summary>
/// 新增用户角色信息
/// </summary>

View File

@ -1,10 +1,11 @@
import request from '@/utils/request'
// 查询角色用户
export function getRoleUsers(roleId) {
export function getRoleUsers(query) {
return request({
url: '/system/userRole/get/' + roleId,
method: 'get'
url: '/system/userRole/list',
method: 'get',
params: query,
})
}
@ -25,10 +26,11 @@ export function deleteRoleUsers(data) {
})
}
// 查询角色未添加用户列表
export function getExcludeUsers(roleId) {
export function getExcludeUsers(query) {
return request({
url: '/system/userRole/getExcludeUsers?roleId=' + roleId,
method: 'get'
url: '/system/userRole/getExcludeUsers',
method: 'get',
params: query,
})
}

View File

@ -16,12 +16,10 @@
批量取消授权</el-button>
</el-form-item>
<el-form-item style="margin-left:auto">
<el-input v-model="search" placeholder="请输入用户名称" clearable prefix-icon="el-icon-search" />
<el-input v-model="roleUserQueryParams.userName" placeholder="请输入用户名称" clearable prefix-icon="el-icon-search" @keyup.enter.native="getRoleUser" />
</el-form-item>
</el-form>
<el-table ref="roleUserTable" v-loading="loadingRoleUser"
:data="dataRoleUserTable.filter(data => !search || data.userName.toLowerCase().includes(search.toLowerCase()))" row-key="userId" stripe
border :height="tableHeight-180">
<el-table ref="roleUserTable" v-loading="loadingRoleUser" :data="dataRoleUserTable" row-key="userId" stripe border :height="tableHeight-230">
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="userId" align="center" label="用户Id" width="150" />
<el-table-column prop="userName" align="center" label="用户账号" width="150" />
@ -41,16 +39,17 @@
</template>
</el-table-column>
</el-table>
<pagination v-show="dataRoleUserCount > 0" :total="dataRoleUserCount" :page.sync="roleUserQueryParams.pageNum" :limit.sync="roleUserQueryParams.pageSize" @pagination="getRoleUser" />
</el-col>
</el-row>
<!-- 添加或修改菜单对话框 -->
<el-dialog title="添加用户" :visible.sync="open" append-to-body :close-on-click-modal="false" @close="cancel">
<!-- <el-form style="display:flex" :inline="true" @submit.native.prevent>
<el-form style="display:flex" :inline="true" @submit.native.prevent>
<el-form-item style="margin-left:auto">
<el-input v-model="search" placeholder="请输入用户名称" clearable prefix-icon="el-icon-search" />
<el-input v-model="userQueryParams.userName" placeholder="请输入用户名称" clearable prefix-icon="el-icon-search" @keyup.enter.native="handleGetUserTable" />
</el-form-item>
</el-form> -->
</el-form>
<el-row>
<el-col>
<el-table ref="userTable" v-loading="loadingUser" :data="dataUserTable" row-key="userId" stripe border :height="tableHeight*0.5">
@ -65,6 +64,7 @@
</template>
</el-table-column>
</el-table>
<pagination v-show="dataUserCount > 0" :total="dataUserCount" :page.sync="userQueryParams.pageNum" :limit.sync="userQueryParams.pageSize" @pagination="handleGetUserTable" />
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
@ -96,8 +96,10 @@ export default {
dataRoleTable: [],
//
dataRoleUserTable: [],
dataRoleUserCount: 0,
//
dataUserTable: [],
dataUserCount: 0,
//
addSelections: [],
//
@ -108,6 +110,18 @@ export default {
roleId: "",
//
open: false,
roleUserQueryParams: {
pageNum: 1,
pageSize: 10,
roleId: undefined,
userName: undefined,
},
userQueryParams: {
pageNum: 1,
pageSize: 10,
roleId: undefined,
userName: undefined,
},
};
},
created() {
@ -124,8 +138,10 @@ export default {
//
getRoleUser() {
this.loadingRoleUser = true;
getRoleUsers(this.roleId).then((response) => {
this.dataRoleUserTable = response.data;
this.roleUserQueryParams.roleId = this.roleId;
getRoleUsers(this.roleUserQueryParams).then((response) => {
this.dataRoleUserTable = response.data.result;
this.dataRoleUserCount = response.data.totalNum;
this.loadingRoleUser = false;
});
},
@ -191,8 +207,10 @@ export default {
handleGetUserTable() {
this.open = true;
this.loadingUser = true;
getExcludeUsers(this.roleId).then((response) => {
this.dataUserTable = response.data;
this.userQueryParams.roleId = this.roleId;
getExcludeUsers(this.userQueryParams).then((response) => {
this.dataUserTable = response.data.result;
this.dataUserCount = response.data.totalNum;
this.loadingUser = false;
});
},