Browse Source

超级管理员可以查看所有菜单

develop-lawyerExampaper
胡超1 2 years ago
parent
commit
abdf52221a
  1. 158
      24Hour/Controllers/system/SystemControllerController.cs

158
24Hour/Controllers/system/SystemControllerController.cs

@ -1,4 +1,5 @@
using AutoMapper; using AutoMapper;
using com.sun.corba.se.spi.orbutil.fsm;
using com.sun.org.apache.bcel.@internal.generic; using com.sun.org.apache.bcel.@internal.generic;
using com.sun.xml.@internal.ws.api.model; using com.sun.xml.@internal.ws.api.model;
using Elight.Entity; using Elight.Entity;
@ -88,12 +89,16 @@ namespace _24Hour.Controllers.system
//获取部门信息 //获取部门信息
var Departlist = await _db.Queryable<App_Sys_DepartModel>().Where(q => q.IsDelete == 0).ToListAsync(); var Departlist = await _db.Queryable<App_Sys_DepartModel>().Where(q => q.IsDelete == 0).ToListAsync();
//获取角色信息 //获取角色信息
var RoleModel = _db.Queryable<App_Sys_RoleUserModel>().LeftJoin<App_Sys_RoleModel>((o, i) => o.roleId == i.Id && o.IsDelete == 0 && i.IsDeleted == 0).Select((o, i) => new App_Sys_RoleDto { Id = o.roleId, name = i.name, userId = o.roleuserId }).ToList(); var RoleModel = _db.Queryable<App_Sys_RoleUserModel>()
.LeftJoin<App_Sys_RoleModel>((o, i) => o.roleId == i.Id && o.IsDelete == 0 && i.IsDeleted == 0)
.Select((o, i) => new App_Sys_RoleDto { Id = o.roleId, name = i.name, userId = o.roleuserId })
.ToList();
var list = await _db.Queryable<App_Sys_UserModel>() var list = await _db.Queryable<App_Sys_UserModel>()
.WhereIF(!UserModel.name.IsNull(), q => q.name.Contains(UserModel.name)) .WhereIF(!UserModel.name.IsNull(), q => q.name.Contains(UserModel.name))
.WhereIF(!UserModel.phone.IsNull(), q => q.phone.Contains(UserModel.phone)) .WhereIF(!UserModel.phone.IsNull(), q => q.phone.Contains(UserModel.phone))
.WhereIF(!UserModel.duties.IsNull(), q => q.duties.Contains(UserModel.duties)) .WhereIF(!UserModel.duties.IsNull(), q => q.duties.Contains(UserModel.duties))
.WhereIF(!UserModel.cardId.IsNull(), q => q.cardId.Contains(UserModel.cardId)) .WhereIF(!UserModel.cardId.IsNull(), q => q.cardId.Contains(UserModel.cardId))
.Where(q => q.IsDeleted == 0 && q.phone != "admin" && q.usertype == 0) .Where(q => q.IsDeleted == 0 && q.phone != "admin" && q.usertype == 0)
.ToPageListAsync(UserModel.PageIndex, UserModel.PageSize, totalNumber); .ToPageListAsync(UserModel.PageIndex, UserModel.PageSize, totalNumber);
UserModel.RowsCount = totalNumber; UserModel.RowsCount = totalNumber;
@ -332,7 +337,8 @@ namespace _24Hour.Controllers.system
{ {
try try
{ {
var model = await _db.Queryable<App_Sys_UserModel>().Where(x => x.Id == _userdata.Id && x.IsDeleted == 0).FirstAsync(); var model = await _db.Queryable<App_Sys_UserModel>()
.FirstAsync(x => x.Id == _userdata.Id && x.IsDeleted == 0);
if (model != null) if (model != null)
{ {
model.wechatId = string.Empty; model.wechatId = string.Empty;
@ -715,7 +721,7 @@ namespace _24Hour.Controllers.system
userlist.ForEach(q => userlist.ForEach(q =>
{ {
//头像地址 //头像地址
q.cardIdphoto= photo; q.cardIdphoto = photo;
}); });
var num = await _db.Updateable(userlist).ExecuteCommandAsync(); var num = await _db.Updateable(userlist).ExecuteCommandAsync();
_db.CommitTran(); _db.CommitTran();
@ -785,7 +791,7 @@ namespace _24Hour.Controllers.system
[HttpPost] [HttpPost]
[Route("QueryRole")] [Route("QueryRole")]
public async Task<Result> QueryRole(App_Sys_RoleInput roledata) public async Task<Result> QueryRole(App_Sys_RoleInput roledata)
{ {
RefAsync<int> totalNumber = 0;//总数据 RefAsync<int> totalNumber = 0;//总数据
var list = await _db.Queryable<App_Sys_RoleModel>() var list = await _db.Queryable<App_Sys_RoleModel>()
.WhereIF(roledata.name.NotNull(), q => q.name.Contains(roledata.name)) .WhereIF(roledata.name.NotNull(), q => q.name.Contains(roledata.name))
@ -945,10 +951,10 @@ namespace _24Hour.Controllers.system
await _db.Deleteable(list).ExecuteCommandAsync(); await _db.Deleteable(list).ExecuteCommandAsync();
var RoleMenulist = RoleMenudata.RoleMenuIds.Split(",").ToList(); var RoleMenulist = RoleMenudata.RoleMenuIds.Split(",").ToList();
var menulist = new List<App_Sys_RoleMenuModel>(); var menulist = new List<App_Sys_RoleMenuModel>();
if (RoleMenulist.Length > 0) if (RoleMenulist.Count > 0)
{ {
//添加角色菜单 //添加角色菜单
for (int i = 0; i < RoleMenulist.Length; i++) for (int i = 0; i < RoleMenulist.Count; i++)
{ {
var App_Sys_RoleMenuModel = new App_Sys_RoleMenuModel() var App_Sys_RoleMenuModel = new App_Sys_RoleMenuModel()
{ {
@ -1464,64 +1470,64 @@ namespace _24Hour.Controllers.system
[HttpPost] [HttpPost]
[Route("QueryMenuTree")] [Route("QueryMenuTree")]
public async Task<Result> QueryMenuTree(App_Sys_MenuInput Menudata) public async Task<Result> QueryMenuTree(App_Sys_MenuInput Menudata)
{ {
var roleids = new List<string?>(); var roleids = new List<string?>();
if (_userdata.phone != "admin") if (_userdata.phone != "admin")
{ {
var userroleinfo = await _db.Queryable<App_Sys_RoleUserModel>().FirstAsync(x => x.roleuserId == _userdata.Id); var userroleinfo = await _db.Queryable<App_Sys_RoleUserModel>().FirstAsync(x => x.roleuserId == _userdata.Id);
roleids = await _db.Queryable<App_Sys_RoleMenuModel>() roleids = await _db.Queryable<App_Sys_RoleMenuModel>()
.WhereIF(!userroleinfo.roleId.IsNull(), q => q.roleId == userroleinfo.roleId) .WhereIF(!userroleinfo.roleId.IsNull(), q => q.roleId == userroleinfo.roleId)
.Where(q => q.IsDelete == 0).Select(x => x.menuId).ToListAsync(); .Where(q => q.IsDelete == 0).Select(x => x.menuId).ToListAsync();
} }
var treelist = await _db.Queryable<App_Sys_MenuTree>() var treelist = await _db.Queryable<App_Sys_MenuTree>()
.WhereIF(!Menudata.name.IsNull(), q => q.name.Contains(Menudata.name)) .WhereIF(!Menudata.name.IsNull(), q => q.name.Contains(Menudata.name))
.WhereIF(!Menudata.title.IsNull(), q => q.title.Contains(Menudata.title)) .WhereIF(!Menudata.title.IsNull(), q => q.title.Contains(Menudata.title))
.Where(q => q.IsDelete == 0) .Where(q => q.IsDelete == 0)
.OrderBy(q => q.sortnum, OrderByType.Asc) .OrderBy(q => q.sortnum, OrderByType.Asc)
.ToTreeAsync(it => it.children, it => it.pid, null); .ToTreeAsync(it => it.children, it => it.pid, null);
if (_userdata.phone != "admin") if (_userdata.phone != "admin")
{ {
foreach (var item in treelist) foreach (var item in treelist)
{ {
if (roleids.Contains(item.Id)) if (roleids.Contains(item.Id))
{ {
if (item.children != null) if (item.children != null)
{ {
item.children = item.children.Where(x => roleids.Contains(x.Id)).ToList(); item.children = item.children.Where(x => roleids.Contains(x.Id)).ToList();
} }
} }
else else
{ {
if (item.children == null) if (item.children == null)
{ {
item.IsDelete = -1; item.IsDelete = -1;
} }
else else
{ {
if (item.children.Any(x => roleids.Contains(x.Id))) if (item.children.Any(x => roleids.Contains(x.Id)))
{ {
item.children = item.children.Where(x => roleids.Contains(x.Id)).ToList(); item.children = item.children.Where(x => roleids.Contains(x.Id)).ToList();
} }
else else
{ {
item.IsDelete = -1; item.IsDelete = -1;
} }
} }
} }
} }
treelist = treelist.Where(x => x.IsDelete != -1).ToList(); treelist = treelist.Where(x => x.IsDelete != -1).ToList();
result.IsSucceed = true; result.IsSucceed = true;
result.result = treelist; result.result = treelist;
return result; return result;
} }
else else
{ {
result.IsSucceed = true; result.IsSucceed = true;
result.result = treelist; result.result = treelist;
return result; return result;
} }
} }
/// <summary> /// <summary>
/// 菜单分页查询 /// 菜单分页查询
@ -1669,18 +1675,31 @@ namespace _24Hour.Controllers.system
//获取父级菜单 //获取父级菜单
var pidlist = await _db.Queryable<App_Sys_MenuModel>().Where(q => q.IsDelete == 0 && string.IsNullOrEmpty(q.pid)).ToListAsync(); var pidlist = await _db.Queryable<App_Sys_MenuModel>().Where(q => q.IsDelete == 0 && string.IsNullOrEmpty(q.pid)).ToListAsync();
//联表查询该用户菜单 //联表查询该用户菜单
var menulist = await _db.Queryable<App_Sys_RoleUserModel>().Where(x => x.roleuserId == _userdata.Id) var menulist = await Task.Run(async () =>
.LeftJoin<App_Sys_RoleMenuModel>((o, cus) => o.roleId == cus.roleId)
.LeftJoin<App_Sys_MenuModel>((o, cus, menu) => cus.menuId == menu.Id)
.Where((o, cus, menu) => o.IsDelete == 0 && cus.IsDelete == 0 && menu.IsDelete == 0)
.Select((o, cus, menu) => menu)
.ToListAsync();
if (_userdata.phone == "admin")
{ {
menulist = await _db.Queryable<App_Sys_MenuModel>().Where(x => x.IsDelete == 0).ToListAsync(); if (_userdata.phone == "admin")
} {
//通过分组父级菜单 return await _db.Queryable<App_Sys_MenuModel>()
var datalist = menulist.OrderBy(q => q.sortnum).GroupBy(q => q.pid).Select(q => new { pid = q.Key, dalist = q.OrderBy(q => q.sortnum).ToList() }).ToList(); .Where(x => x.IsDelete == 0)
.ToListAsync();
}
else
{
return await _db.Queryable<App_Sys_RoleUserModel>()
.Where(x => x.roleuserId == _userdata.Id)
.LeftJoin<App_Sys_RoleMenuModel>((o, cus) => o.roleId == cus.roleId)
.LeftJoin<App_Sys_MenuModel>((o, cus, menu) => cus.menuId == menu.Id)
.Where((o, cus, menu) => o.IsDelete == 0 && cus.IsDelete == 0 && menu.IsDelete == 0)
.Select((o, cus, menu) => menu)
.ToListAsync();
}
});
//通过分组父级菜单
var datalist = menulist.OrderBy(q => q.sortnum)
.GroupBy(q => q.pid)
.Select(q => new { pid = q.Key, dalist = q.OrderBy(q => q.sortnum).ToList() })
.ToList();
if (datalist.Count > 0) if (datalist.Count > 0)
{ {
pidlist.OrderBy(q => q.sortnum).ToList().ForEach(item => pidlist.OrderBy(q => q.sortnum).ToList().ForEach(item =>
@ -1694,6 +1713,7 @@ namespace _24Hour.Controllers.system
{ {
childrenlist.Add(new childrenlist.Add(new
{ {
path = it.path, path = it.path,
name = it.name, name = it.name,
component = it.component, component = it.component,
@ -1713,9 +1733,11 @@ namespace _24Hour.Controllers.system
var fjdata = datalist.Where(q => string.IsNullOrEmpty(q.pid)).FirstOrDefault()?.dalist.FirstOrDefault(q => q.Id == item.Id); var fjdata = datalist.Where(q => string.IsNullOrEmpty(q.pid)).FirstOrDefault()?.dalist.FirstOrDefault(q => q.Id == item.Id);
if (childrenlist.Count > 0 || fjdata != null) if (childrenlist.Count > 0 || fjdata != null)
{ {
//添加父级菜单 //添加父级菜单
list.Add(new list.Add(new
{ {
path = item.path, path = item.path,
name = item.name, name = item.name,
component = item.component, component = item.component,

Loading…
Cancel
Save