fix: department set

This commit is contained in:
anjoy8 2022-04-10 08:45:56 +08:00
parent 93361ce67d
commit 3ade35f4dd
9 changed files with 207 additions and 4 deletions

View File

@ -4,6 +4,36 @@
<name>Blog.Core.Model</name>
</assembly>
<members>
<member name="F:Blog.Core.Model.AuthorityScopeEnum.NONE">
<summary>
无任何权限
</summary>
</member>
<member name="F:Blog.Core.Model.AuthorityScopeEnum.Custom">
<summary>
自定义权限
</summary>
</member>
<member name="F:Blog.Core.Model.AuthorityScopeEnum.MyDepart">
<summary>
本部门
</summary>
</member>
<member name="F:Blog.Core.Model.AuthorityScopeEnum.MyDepartAndDown">
<summary>
本部门及以下
</summary>
</member>
<member name="F:Blog.Core.Model.AuthorityScopeEnum.OnlySelf">
<summary>
仅自己
</summary>
</member>
<member name="F:Blog.Core.Model.AuthorityScopeEnum.ALL">
<summary>
所有
</summary>
</member>
<member name="T:Blog.Core.Model.IDS4DbModels.ApplicationRole">
<summary>
以下model 来自ids4项目多库模式为了调取ids4数据
@ -651,6 +681,17 @@
排序
</summary>
</member>
<member name="P:Blog.Core.Model.Models.Role.Dids">
<summary>
自定义权限的部门ids
</summary>
</member>
<member name="P:Blog.Core.Model.Models.Role.AuthorityScope">
<summary>
权限范围
-1 无任何权限1 自定义权限2 本部门3 本部门及以下4 仅自己9 全部;
</summary>
</member>
<member name="P:Blog.Core.Model.Models.Role.Enabled">
<summary>
是否激活
@ -751,6 +792,11 @@
状态
</summary>
</member>
<member name="P:Blog.Core.Model.Models.SysUserInfo.DepartmentId">
<summary>
部门
</summary>
</member>
<member name="P:Blog.Core.Model.Models.SysUserInfo.Remark">
<summary>
备注

View File

@ -640,7 +640,7 @@
用户管理
</summary>
</member>
<member name="M:Blog.Core.Controllers.UserController.#ctor(Blog.Core.IRepository.UnitOfWork.IUnitOfWork,Blog.Core.IServices.ISysUserInfoServices,Blog.Core.IServices.IUserRoleServices,Blog.Core.IServices.IRoleServices,Blog.Core.Common.HttpContextUser.IUser,AutoMapper.IMapper,Microsoft.Extensions.Logging.ILogger{Blog.Core.Controllers.UserController})">
<member name="M:Blog.Core.Controllers.UserController.#ctor(Blog.Core.IRepository.UnitOfWork.IUnitOfWork,Blog.Core.IServices.ISysUserInfoServices,Blog.Core.IServices.IUserRoleServices,Blog.Core.IServices.IRoleServices,Blog.Core.IServices.IDepartmentServices,Blog.Core.Common.HttpContextUser.IUser,AutoMapper.IMapper,Microsoft.Extensions.Logging.ILogger{Blog.Core.Controllers.UserController})">
<summary>
构造函数
</summary>

View File

@ -29,9 +29,11 @@ namespace Blog.Core.Controllers
readonly ISysUserInfoServices _sysUserInfoServices;
readonly IUserRoleServices _userRoleServices;
readonly IRoleServices _roleServices;
private readonly IDepartmentServices _departmentServices;
private readonly IUser _user;
private readonly IMapper _mapper;
private readonly ILogger<UserController> _logger;
private string fullName;
/// <summary>
/// 构造函数
@ -44,13 +46,16 @@ namespace Blog.Core.Controllers
/// <param name="mapper"></param>
/// <param name="logger"></param>
public UserController(IUnitOfWork unitOfWork, ISysUserInfoServices sysUserInfoServices,
IUserRoleServices userRoleServices, IRoleServices roleServices,
IUserRoleServices userRoleServices,
IRoleServices roleServices,
IDepartmentServices departmentServices,
IUser user, IMapper mapper, ILogger<UserController> logger)
{
_unitOfWork = unitOfWork;
_sysUserInfoServices = sysUserInfoServices;
_userRoleServices = userRoleServices;
_roleServices = roleServices;
_departmentServices = departmentServices;
_user = user;
_mapper = mapper;
_logger = logger;
@ -81,6 +86,7 @@ namespace Blog.Core.Controllers
// 这里可以封装到多表查询,此处简单处理
var allUserRoles = await _userRoleServices.Query(d => d.IsDeleted == false);
var allRoles = await _roleServices.Query(d => d.IsDeleted == false);
var allDepartments = await _departmentServices.Query(d => d.IsDeleted == false);
var sysUserInfos = data.data;
foreach (var item in sysUserInfos)
@ -88,6 +94,12 @@ namespace Blog.Core.Controllers
var currentUserRoles = allUserRoles.Where(d => d.UserId == item.Id).Select(d => d.RoleId).ToList();
item.RIDs = currentUserRoles;
item.RoleNames = allRoles.Where(d => currentUserRoles.Contains(d.Id)).Select(d => d.Name).ToList();
List<int> dids = new List<int>();
fullName = "";
var departmentName = GetFullDepartmentName(allDepartments, item.DepartmentId, dids);
item.DepartmentName = departmentName;
dids.Insert(0, 0);
item.Dids = dids;
}
data.data = sysUserInfos;
@ -98,6 +110,21 @@ namespace Blog.Core.Controllers
}
private string GetFullDepartmentName(List<Department> departments, int departmentId, List<int> dids)
{
var departmentModel = departments.FirstOrDefault(d => d.Id == departmentId);
if (departmentModel == null)
{
return fullName;
}
fullName = $"{departmentModel.Name}/{fullName}";
dids.Insert(0, departmentModel.Id);
GetFullDepartmentName(departments, departmentModel.Pid, dids);
return fullName;
}
// GET: api/User/5
[HttpGet("{id}")]
[AllowAnonymous]
@ -127,7 +154,7 @@ namespace Blog.Core.Controllers
var userinfo = await _sysUserInfoServices.QueryById(tokenModel.Uid);
if (userinfo != null)
{
data.response = _mapper.Map<SysUserInfoDto>(userinfo);
data.response = _mapper.Map<SysUserInfoDto>(userinfo);
data.success = true;
data.msg = "获取成功";
}

View File

@ -1,4 +1,6 @@
using Autofac;

// 以下为asp.net 6.0的写法如果用5.0请看Program.five.cs文件
using Autofac;
using Autofac.Extensions.DependencyInjection;
using Blog.Core;
using Blog.Core.Common;

View File

@ -0,0 +1,75 @@
//using Autofac.Extensions.DependencyInjection;
//using Blog.Core.Extensions.Apollo;
//using Microsoft.AspNetCore.Hosting;
//using Microsoft.Extensions.Configuration;
//using Microsoft.Extensions.Hosting;
//using Microsoft.Extensions.Logging;
//using System;
//using System.IO;
// 这是asp.net5.0的写法如果用5.0请用本文件代码替换Program.cs代码
//namespace Blog.Core
//{
// public class Program
// {
// public static void Main(string[] args)
// {
// //初始化默认主机Builder
// Host.CreateDefaultBuilder(args)
// .UseServiceProviderFactory(new AutofacServiceProviderFactory())
// .ConfigureWebHostDefaults(webBuilder =>
// {
// webBuilder
// .UseStartup<Startup>()
// .ConfigureAppConfiguration((hostingContext, config) =>
// {
// config.Sources.Clear();
// config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
// //.AddJsonFile($"appsettings{ GetAppSettingsConfigName() }json", optional: true, reloadOnChange: false)
// ;
// //接入Apollo配置中心
// config.AddConfigurationApollo("appsettings.apollo.json");
// })
// .UseUrls("http://*:9291")
// .ConfigureLogging((hostingContext, builder) =>
// {
// // 1.过滤掉系统默认的一些日志
// builder.AddFilter("System", LogLevel.Error);
// builder.AddFilter("Microsoft", LogLevel.Error);
// // 2.也可以在appsettings.json中配置LogLevel节点
// // 3.统一设置
// builder.SetMinimumLevel(LogLevel.Error);
// // 默认log4net.confg
// builder.AddLog4Net(Path.Combine(Directory.GetCurrentDirectory(), "Log4net.config"));
// })
// ;
// })
// // 生成承载 web 应用程序的 Microsoft.AspNetCore.Hosting.IWebHost。Build是WebHostBuilder最终的目的将返回一个构造的WebHost最终生成宿主。
// .Build()
// // 运行 web 应用程序并阻止调用线程, 直到主机关闭。
// // ※※※※ 有异常,查看 Log 文件夹下的异常日志 ※※※※
// .Run();
// }
// /// <summary>
// /// 根据环境变量定向配置文件名称
// /// </summary>
// /// <returns></returns>
// private static string GetAppSettingsConfigName()
// {
// if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") != null
// && Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") != "")
// {
// return $".{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.";
// }
// else
// {
// return ".";
// }
// }
// }
//}

View File

@ -0,0 +1,30 @@
namespace Blog.Core.Model
{
public enum AuthorityScopeEnum
{
/// <summary>
/// 无任何权限
/// </summary>
NONE = -1,
/// <summary>
/// 自定义权限
/// </summary>
Custom = 1,
/// <summary>
/// 本部门
/// </summary>
MyDepart = 2,
/// <summary>
/// 本部门及以下
/// </summary>
MyDepartAndDown = 3,
/// <summary>
/// 仅自己
/// </summary>
OnlySelf = 4,
/// <summary>
/// 所有
/// </summary>
ALL = 9
}
}

View File

@ -46,6 +46,17 @@ namespace Blog.Core.Model.Models
/// </summary>
public int OrderSort { get; set; }
/// <summary>
/// 自定义权限的部门ids
/// </summary>
[SugarColumn(Length = 500, IsNullable = true)]
public string Dids { get; set; }
/// <summary>
/// 权限范围
/// -1 无任何权限1 自定义权限2 本部门3 本部门及以下4 仅自己9 全部;
/// </summary>
[SugarColumn(IsNullable = true)]
public int AuthorityScope { get; set; } = -1;
/// <summary>
/// 是否激活
/// </summary>
public bool Enabled { get; set; }

View File

@ -45,6 +45,11 @@ namespace Blog.Core.Model.Models
/// </summary>
public int Status { get; set; }
/// <summary>
/// 部门
/// </summary>
[SugarColumn(IsNullable = true)]
public int DepartmentId { get; set; } = -1;
/// <summary>
/// 备注
/// </summary>
[SugarColumn(Length = 2000, IsNullable = true)]
@ -94,6 +99,10 @@ namespace Blog.Core.Model.Models
[SugarColumn(IsIgnore = true)]
public List<string> RoleNames { get; set; }
[SugarColumn(IsIgnore = true)]
public List<int> Dids { get; set; }
[SugarColumn(IsIgnore = true)]
public string DepartmentName { get; set; }
}
}

View File

@ -9,6 +9,7 @@ namespace Blog.Core.Model.ViewModels
public string uLoginPWD { get; set; }
public string uRealName { get; set; }
public int uStatus { get; set; }
public int DepartmentId { get; set; }
public string uRemark { get; set; }
public System.DateTime uCreateTime { get; set; } = DateTime.Now;
public System.DateTime uUpdateTime { get; set; } = DateTime.Now;
@ -21,5 +22,7 @@ namespace Blog.Core.Model.ViewModels
public string addr { get; set; }
public bool tdIsDelete { get; set; }
public List<string> RoleNames { get; set; }
public List<int> Dids { get; set; }
public string DepartmentName { get; set; }
}
}