diff --git a/WebFirst/database/sqlite.db b/WebFirst/database/sqlite.db index 33c5eb78..661d2ca7 100644 Binary files a/WebFirst/database/sqlite.db and b/WebFirst/database/sqlite.db differ diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs index 4ea014ce..154ccb99 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs @@ -113,7 +113,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers var data = await _iUserService.GetUserAllInfo(userId); //将后端菜单转换成前端路由,组件级别需要过滤 - List routers = _iUserService.RouterBuild(data.Menus.ToList()); + List routers = MenuEntity.RouterBuild(data.Menus.ToList()); return Result.Success().SetData(routers); } diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs index 9ea93ca1..13c3d009 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs @@ -54,24 +54,6 @@ namespace Yi.Framework.ApiMicroservice.Controllers } - - ///// - ///// 添加用户,去重,密码加密 - ///// - ///// - ///// - //[Permission($"{nameof(UserEntity)}:add")] - //[HttpPost] - //public async Task Add(UserEntity entity) - //{ - // if (!await _iUserService.Exist(entity.UserName)) - // { - // entity.BuildPassword(); - // return Result.Success().SetData(await _iUserService._repository.InsertReturnSnowflakeIdAsync(entity)); - // } - // return Result.SuccessError("用户已存在"); - //} - /// /// 给多用户设置多角色 /// diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db index 8bda6f81..3004486f 100644 Binary files a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db and b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db differ diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/IUserService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/IUserService.cs index fa861e85..2e6d49e9 100644 --- a/Yi.Framework.Net6/Yi.Framework.Interface/IUserService.cs +++ b/Yi.Framework.Net6/Yi.Framework.Interface/IUserService.cs @@ -78,12 +78,6 @@ namespace Yi.Framework.Interface /// Task>> SelctPageList(UserEntity user, PageParModel page); - /// - /// 菜单构建前端路由 - /// - /// - /// - List RouterBuild(List menus); /// /// 更新用户信息 @@ -106,5 +100,6 @@ namespace Yi.Framework.Interface /// /// Task RestPassword(long userId,string password ); + Task GiveUserSetPost(List userIds, List postIds); } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/MenuEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/MenuEntity.cs index e7bb6e46..911c3c63 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/MenuEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/MenuEntity.cs @@ -2,6 +2,9 @@ using System.Collections.Generic; using System.Linq; using SqlSugar; +using Yi.Framework.Common.Enum; +using Yi.Framework.Common.Models; + namespace Yi.Framework.Model.Models { /// @@ -11,5 +14,56 @@ namespace Yi.Framework.Model.Models { [SqlSugar.SugarColumn(IsIgnore = true)] public List Children { get; set; } + + + public static List RouterBuild(List menus) + { + menus = menus.Where(m => m.MenuType != null && m.MenuType != MenuTypeEnum.Component.GetHashCode()).ToList(); + List routers = new(); + foreach (var m in menus) + { + + var r = new VueRouterModel(); + var routerName = m.Router.Split("/").LastOrDefault(); + r.Id = m.Id; + r.ParentId = (long)m.ParentId; + + //开头大写 + r.Name = routerName.First().ToString().ToUpper() + routerName.Substring(1); + r.Path = m.Router; + r.Hidden = (bool)!m.IsShow; + + + if (m.MenuType == MenuTypeEnum.Catalogue.GetHashCode()) + { + r.Redirect = "noRedirect"; + r.AlwaysShow = true; + r.Component = "Layout"; + } + if (m.MenuType == MenuTypeEnum.Menu.GetHashCode()) + { + + r.Redirect = "noRedirect"; + r.AlwaysShow = true; + r.Component = m.Component; + } + + + r.Meta = new Meta + { + Title = m.MenuName, + Icon = m.MenuIcon, + NoCache = (bool)!m.IsCache + }; + if ((bool)m.IsLink) + { + r.Meta.link = m.Router; + } + + routers.Add(r); + } + return Common.Helper.TreeHelper.SetTree(routers); + } + } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleDeptEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleDeptEntity.cs index 9400a984..a63cc7ab 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleDeptEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleDeptEntity.cs @@ -26,8 +26,8 @@ namespace Yi.Framework.Model.Models /// /// 部门id /// - [SugarColumn(ColumnName="Dept" )] - public long? Dept { get; set; } + [SugarColumn(ColumnName="DeptId" )] + public long? DeptId { get; set; } /// /// 创建者 /// diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserPostEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserPostEntity.cs index 8f422276..ef30ac12 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserPostEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserPostEntity.cs @@ -26,8 +26,8 @@ namespace Yi.Framework.Model.Models /// /// 岗位id /// - [SugarColumn(ColumnName="Post" )] - public long? Post { get; set; } + [SugarColumn(ColumnName= "PostId")] + public long? PostId { get; set; } /// /// 创建者 /// diff --git a/Yi.Framework.Net6/Yi.Framework.Service/UserService.cs b/Yi.Framework.Net6/Yi.Framework.Service/UserService.cs index 46d8992d..c5ad788c 100644 --- a/Yi.Framework.Net6/Yi.Framework.Service/UserService.cs +++ b/Yi.Framework.Net6/Yi.Framework.Service/UserService.cs @@ -101,6 +101,34 @@ namespace Yi.Framework.Service } + public async Task GiveUserSetPost(List userIds, List postIds) + { + var _repositoryUserPost = _repository.ChangeRepository>(); + + //多次操作,需要事务确保原子性 + return await _repositoryUserPost.UseTranAsync(async () => + { + //删除用户之前所有的用户角色关系(物理删除,没有恢复的必要) + await _repositoryUserPost.DeleteAsync(u => userIds.Contains((long)u.UserId)); + + //遍历用户 + foreach (var userId in userIds) + { + //添加新的关系 + List userPostEntities = new(); + foreach (var post in postIds) + { + userPostEntities.Add(new UserPostEntity() { UserId = userId,PostId = post }); + } + + //一次性批量添加 + await _repositoryUserPost.InsertReturnSnowflakeIdAsync(userPostEntities); + } + }); + } + + + public async Task GetInfoById(long userId) { return await _repository._DbQueryable.Includes(u => u.Roles).InSingleAsync(userId); @@ -173,55 +201,8 @@ namespace Yi.Framework.Service } - public List RouterBuild(List menus) - { - menus = menus.Where(m => m.MenuType != null && m.MenuType != MenuTypeEnum.Component.GetHashCode()).ToList(); - List routers = new(); - foreach (var m in menus) - { - - var r = new VueRouterModel(); - var routerName = m.Router.Split("/").LastOrDefault(); - r.Id = m.Id; - r.ParentId = (long)m.ParentId; - - //开头大写 - r.Name = routerName.First().ToString().ToUpper() + routerName.Substring(1); - r.Path = m.Router; - r.Hidden = (bool)!m.IsShow; - if (m.MenuType == MenuTypeEnum.Catalogue.GetHashCode()) - { - r.Redirect = "noRedirect"; - r.AlwaysShow = true; - r.Component = "Layout"; - } - if (m.MenuType == MenuTypeEnum.Menu.GetHashCode()) - { - - r.Redirect = "noRedirect"; - r.AlwaysShow = true; - r.Component = m.Component; - } - - - r.Meta = new Meta - { - Title = m.MenuName, - Icon = m.MenuIcon, - NoCache = (bool)!m.IsCache - }; - if ((bool)m.IsLink) - { - r.Meta.link = m.Router; - } - - routers.Add(r); - } - return Common.Helper.TreeHelper.SetTree(routers) ; - } - public async Task UpdateInfo(UserInfoDto userDto) { //未填写密码,可不更新 @@ -230,9 +211,11 @@ namespace Yi.Framework.Service { userDto.User.BuildPassword(); } + userDto.User.DeptId = userDto.DeptId; var res1 = await _repository.UpdateIgnoreNullAsync(userDto.User); var res2 = await GiveUserSetRole(new List { userDto.User.Id }, userDto.RoleIds); - return res1 && res2; + var res3 = await GiveUserSetPost(new List { userDto.User.Id }, userDto.PostIds); + return res1 && res2&& res3; } public async Task AddInfo(UserInfoDto userDto) @@ -240,7 +223,8 @@ namespace Yi.Framework.Service userDto.User.BuildPassword(); var res1 = await _repository.InsertReturnSnowflakeIdAsync(userDto.User); var res2 = await GiveUserSetRole(new List { res1 }, userDto.RoleIds); - return !0.Equals(res1) && res2; + var res3 = await GiveUserSetPost(new List { res1 }, userDto.PostIds); + return !0.Equals(res1) && res2&& res3; } public async Task RestPassword(long userId, string password)