From 89762cad788ebab0b009d2d43d1ed032753413e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= Date: Tue, 13 Sep 2022 18:15:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=AF=E7=94=B1=E6=9E=84=E5=BB=BA=E5=85=85?= =?UTF-8?q?=E8=A1=80=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebFirst/database/sqlite.db | Bin 634880 -> 634880 bytes .../Controllers/AccountController.cs | 2 +- .../Controllers/UserController.cs | 18 ---- .../yi-sqlsugar-dev.db | Bin 151552 -> 151552 bytes .../Yi.Framework.Interface/IUserService.cs | 7 +- .../Yi.Framework.Model/MenuEntity.cs | 54 ++++++++++++ .../ModelsTemplate/RoleDeptEntity.cs | 4 +- .../ModelsTemplate/UserPostEntity.cs | 4 +- .../Yi.Framework.Service/UserService.cs | 82 +++++++----------- 9 files changed, 93 insertions(+), 78 deletions(-) diff --git a/WebFirst/database/sqlite.db b/WebFirst/database/sqlite.db index 33c5eb78da106a96ea7654ad8036ce6d02e58170..661d2ca7c96e8f4b5914b54d9939a9d0c499ff30 100644 GIT binary patch delta 216 zcmZp8pw{p}ZGtr8&xtb5j6WL_S`!$zCNRbN@>y6J8d#Z_=^2=t85kN(E_|Ur{gW@# zT7C;F14}Ct3q4Z{OCvKQ@rg(tle-hRc8Ntcn0V>g2}tJ8G$048@n)=bW9P8UvD zPF9Y4tWMiw0+^n$XsNWha5G3sa&U0SiZU_;I}mehZ;#}x G34?b1je#MVTmywNufx((}!gTfkCU-v0X3lI*7fxAD zR*ridySK*#Fg;_LxWI4wgit1JW)_7u7w+l%Bbbf=S$5p*?U77C%nZaVK+FonY(UHo M#2nk(BRMO>003|`_5c6? 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 8bda6f8177050c7b65132ecaa841a04ce9694283..3004486fed272e47e1869d1dbb0180d982983dae 100644 GIT binary patch delta 1008 zcmah{T}TvB7`@k@>+HI_cQze&XV$efGbwbNJF`DCnwC~XZlDo_mc`H}CRD4Yfls;% z7D*4uKo%Nk555J;f(k|1iseJlTi`=bFBTE>(6iB<{jpIWnm_pNz2|&q&iO`XETc1) zM;>Pi08mZe+|@WyE5p=+Hj76_X!qAq9oOcY8@dy5~?Rsy(n%k$v&bOOTnN&NR*(eN_t`W z@Uav9{r+g|7Lk>3_9l`{B>Lgjd-Pa}1#zv=jd+;p%Nu=p0Qf4v09~u7b*6bmk+$-a za6lCm{aHoAAuGX9SP961VDSr}>0Y5rND%l>zmxJ@;p+gYA`GufLiN5JkF5IB@GN&wrK*O0y^5!m1{`O=MsmUPIIn=3^CcOnSacfpV%rpO z%sK8j6#JGvWxsDfXLsT@T$MqjgG!#ivRc_ZALtjp3X+hg*+HU8ZWb!niycwEy2XG}{KQ|i+cTe56 zJ1#n7)E>7PYy6cyecThsX`?|?{Z_mJFeU&e@f?1NAL0=_fV*)A-oPL5Z@h^kxCs*) zRWY7i`3O;ECLxb4AHi%~P%ssM*E`yVkFLj}<1H*K%j~2Jz-0@=Ug$Ozz?EoUY=?-2 zk;x(r?q@(G{{noSe_*27Yfbc37rDG%I3_P0xduBSTkF$Kb@vUPy{`Fg#%}i{g WcM#PaM6L!-pDlJTJ&(exKmP($9_~5- delta 889 zcmZuuT}YEr7(QpM&;5Nno7?=HI)5q=$*u2y`(`VqiRorrHFYhE&H0mvX_@FE&<#uo zFN!aczzgldyFeLeV5k@hfnA3|R5unBNOWyX9k+<9y>H z0H74#{d4w71qT=BqSJ`d)&fFf1sW@P3zg{}>T9(xRio;bbV+f$>I8mVCvcIr7Czn8 z)c~jfm6SZdWC8#SCEGoD!-7K+MV{lG49hWWFj0HIKF}MBT<#Qm`#XC4t&Od5nyzl+ z`a1hMg$p%8sIDtg$M-NU%tygN|;*i(bbg91C z-y0kptRJ}JZ0K*0+IX=i>}m>ih5f1sWEhc`S8QX-)M-e`w!9YkL*86B%khHfbV)SBZq2^>wmgaD>&&7giQBJ}c;Jp* zuu4#=&P;6uz*=N6D|2)T1IT7+mbKHoofV52-p%uF4ljat9Sl3&G!9D+f#>8;1-Z&( z6G5ft@}DV`$s5P1w6Ad9Sb_pTM;d{CM&GY@kvrrnIY#u5zUp{&<9ZV}wgLS68WM`OSMsN#Qcn8C9lJQ8X96et! zd^iUWT=@@v^6L1iL9q{S{w=&2NF9df+$`-DIERySN#=v_YqJw6%#66cGh1Z<|0@;U zEaT=V(IGLSWI9?ae?ON`V{VzOzeyUj0(2-0P#Vpk=V%-aqr0dbh0!M3K)=uy+Q4fn zM200u^oY~t`w(b}K_m&2X87ITje82&wRB%2B2?LBwWJO_-N>L2AK?E+z sC5DQHr5Id?npCVbi?Z3^sAZus3a`Pe^0HF|RcVo@wYdu~;_&8=KV8q_O#lD@ 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)