diff --git a/Blog.Core.Api/Blog.Core.Model.xml b/Blog.Core.Api/Blog.Core.Model.xml
index 41ab451..8437e22 100644
--- a/Blog.Core.Api/Blog.Core.Model.xml
+++ b/Blog.Core.Api/Blog.Core.Model.xml
@@ -4,6 +4,36 @@
Blog.Core.Model
+
+
+ 无任何权限
+
+
+
+
+ 自定义权限
+
+
+
+
+ 本部门
+
+
+
+
+ 本部门及以下
+
+
+
+
+ 仅自己
+
+
+
+
+ 所有
+
+
以下model 来自ids4项目,多库模式,为了调取ids4数据
@@ -651,6 +681,17 @@
排序
+
+
+ 自定义权限的部门ids
+
+
+
+
+ 权限范围
+ -1 无任何权限;1 自定义权限;2 本部门;3 本部门及以下;4 仅自己;9 全部;
+
+
是否激活
@@ -751,6 +792,11 @@
状态
+
+
+ 部门
+
+
备注
diff --git a/Blog.Core.Api/Blog.Core.xml b/Blog.Core.Api/Blog.Core.xml
index add15ba..27a3c81 100644
--- a/Blog.Core.Api/Blog.Core.xml
+++ b/Blog.Core.Api/Blog.Core.xml
@@ -640,7 +640,7 @@
用户管理
-
+
构造函数
diff --git a/Blog.Core.Api/Controllers/UserController.cs b/Blog.Core.Api/Controllers/UserController.cs
index d26146d..9d71302 100644
--- a/Blog.Core.Api/Controllers/UserController.cs
+++ b/Blog.Core.Api/Controllers/UserController.cs
@@ -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 _logger;
+ private string fullName;
///
/// 构造函数
@@ -44,13 +46,16 @@ namespace Blog.Core.Controllers
///
///
public UserController(IUnitOfWork unitOfWork, ISysUserInfoServices sysUserInfoServices,
- IUserRoleServices userRoleServices, IRoleServices roleServices,
+ IUserRoleServices userRoleServices,
+ IRoleServices roleServices,
+ IDepartmentServices departmentServices,
IUser user, IMapper mapper, ILogger 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 dids = new List();
+ 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 departments, int departmentId, List 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(userinfo);
+ data.response = _mapper.Map(userinfo);
data.success = true;
data.msg = "获取成功";
}
diff --git a/Blog.Core.Api/Program.cs b/Blog.Core.Api/Program.cs
index 1e55871..f9dda12 100644
--- a/Blog.Core.Api/Program.cs
+++ b/Blog.Core.Api/Program.cs
@@ -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;
diff --git a/Blog.Core.Api/Program.five.cs b/Blog.Core.Api/Program.five.cs
new file mode 100644
index 0000000..900c949
--- /dev/null
+++ b/Blog.Core.Api/Program.five.cs
@@ -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()
+// .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();
+// }
+
+
+// ///
+// /// 根据环境变量定向配置文件名称
+// ///
+// ///
+// private static string GetAppSettingsConfigName()
+// {
+// if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") != null
+// && Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") != "")
+// {
+// return $".{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.";
+// }
+// else
+// {
+// return ".";
+// }
+// }
+// }
+//}
diff --git a/Blog.Core.Model/CustomEnums/AuthorityScopeEnum.cs b/Blog.Core.Model/CustomEnums/AuthorityScopeEnum.cs
new file mode 100644
index 0000000..422b2c5
--- /dev/null
+++ b/Blog.Core.Model/CustomEnums/AuthorityScopeEnum.cs
@@ -0,0 +1,30 @@
+namespace Blog.Core.Model
+{
+ public enum AuthorityScopeEnum
+ {
+ ///
+ /// 无任何权限
+ ///
+ NONE = -1,
+ ///
+ /// 自定义权限
+ ///
+ Custom = 1,
+ ///
+ /// 本部门
+ ///
+ MyDepart = 2,
+ ///
+ /// 本部门及以下
+ ///
+ MyDepartAndDown = 3,
+ ///
+ /// 仅自己
+ ///
+ OnlySelf = 4,
+ ///
+ /// 所有
+ ///
+ ALL = 9
+ }
+}
diff --git a/Blog.Core.Model/Models/Role.cs b/Blog.Core.Model/Models/Role.cs
index 0d53783..e34ccdd 100644
--- a/Blog.Core.Model/Models/Role.cs
+++ b/Blog.Core.Model/Models/Role.cs
@@ -46,6 +46,17 @@ namespace Blog.Core.Model.Models
///
public int OrderSort { get; set; }
///
+ /// 自定义权限的部门ids
+ ///
+ [SugarColumn(Length = 500, IsNullable = true)]
+ public string Dids { get; set; }
+ ///
+ /// 权限范围
+ /// -1 无任何权限;1 自定义权限;2 本部门;3 本部门及以下;4 仅自己;9 全部;
+ ///
+ [SugarColumn(IsNullable = true)]
+ public int AuthorityScope { get; set; } = -1;
+ ///
/// 是否激活
///
public bool Enabled { get; set; }
diff --git a/Blog.Core.Model/Models/sysUserInfo.cs b/Blog.Core.Model/Models/sysUserInfo.cs
index d8ffeee..5b4b8b8 100644
--- a/Blog.Core.Model/Models/sysUserInfo.cs
+++ b/Blog.Core.Model/Models/sysUserInfo.cs
@@ -45,6 +45,11 @@ namespace Blog.Core.Model.Models
///
public int Status { get; set; }
///
+ /// 部门
+ ///
+ [SugarColumn(IsNullable = true)]
+ public int DepartmentId { get; set; } = -1;
+ ///
/// 备注
///
[SugarColumn(Length = 2000, IsNullable = true)]
@@ -94,6 +99,10 @@ namespace Blog.Core.Model.Models
[SugarColumn(IsIgnore = true)]
public List RoleNames { get; set; }
+ [SugarColumn(IsIgnore = true)]
+ public List Dids { get; set; }
+ [SugarColumn(IsIgnore = true)]
+ public string DepartmentName { get; set; }
}
}
diff --git a/Blog.Core.Model/ViewModels/SysUserInfoDto.cs b/Blog.Core.Model/ViewModels/SysUserInfoDto.cs
index 9a9e832..33d8416 100644
--- a/Blog.Core.Model/ViewModels/SysUserInfoDto.cs
+++ b/Blog.Core.Model/ViewModels/SysUserInfoDto.cs
@@ -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 RoleNames { get; set; }
+ public List Dids { get; set; }
+ public string DepartmentName { get; set; }
}
}