diff --git a/Api/Ewide.Core/Entity/SysOrg.cs b/Api/Ewide.Core/Entity/SysOrg.cs index 078bc89..f0a92c5 100644 --- a/Api/Ewide.Core/Entity/SysOrg.cs +++ b/Api/Ewide.Core/Entity/SysOrg.cs @@ -1,5 +1,6 @@ using Microsoft.EntityFrameworkCore; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Xml.Serialization; @@ -29,6 +30,7 @@ namespace Ewide.Core /// 名称 /// [Comment("名称")] + [MaxLength(20)] public string Name { get; set; } /// diff --git a/Api/Ewide.Core/Service/User/Dto/OrgUserInput.cs b/Api/Ewide.Core/Service/User/Dto/OrgUserInput.cs new file mode 100644 index 0000000..254cf96 --- /dev/null +++ b/Api/Ewide.Core/Service/User/Dto/OrgUserInput.cs @@ -0,0 +1,6 @@ +namespace Ewide.Core.Service +{ + public class OrgUserInput + { + } +} \ No newline at end of file diff --git a/Api/Ewide.Core/Service/User/Dto/OrgUserTreeNode.cs b/Api/Ewide.Core/Service/User/Dto/OrgUserTreeNode.cs new file mode 100644 index 0000000..fa429d0 --- /dev/null +++ b/Api/Ewide.Core/Service/User/Dto/OrgUserTreeNode.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ewide.Core.Service.User.Dto +{ + public class OrgUserTreeNode : ITreeNode + { + public string Id { get; set; } + public string ParentId { get; set; } + public string Name { get; set; } + public int Type { get; set; } + public List Children { get; set; } + public string GetId() => Id; + public string GetPid() => ParentId; + public void SetChildren(IList children) + { + Children = (List)children; + } + } +} \ No newline at end of file diff --git a/Api/Ewide.Core/Service/User/ISysUserService.cs b/Api/Ewide.Core/Service/User/ISysUserService.cs index a3bc80d..fea737e 100644 --- a/Api/Ewide.Core/Service/User/ISysUserService.cs +++ b/Api/Ewide.Core/Service/User/ISysUserService.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc; +using Ewide.Core.Service.User.Dto; +using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using System.Threading.Tasks; @@ -29,5 +30,7 @@ namespace Ewide.Core.Service Task SendCode(Usermailphone input); Task CheckBindcode(Usermailphone input); + + Task GetOrgUserTree(OrgUserInput input); } } \ No newline at end of file diff --git a/Api/Ewide.Core/Service/User/SysUserService.cs b/Api/Ewide.Core/Service/User/SysUserService.cs index 54dcfd3..d6646a8 100644 --- a/Api/Ewide.Core/Service/User/SysUserService.cs +++ b/Api/Ewide.Core/Service/User/SysUserService.cs @@ -1,4 +1,5 @@ using Ewide.Core.Service.Role; +using Ewide.Core.Service.User.Dto; using Ewide.Core.Util; using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; @@ -25,6 +26,8 @@ namespace Ewide.Core.Service public class SysUserService : ISysUserService, IDynamicApiController, ITransient { private readonly IRepository _sysUserRep; // 用户表仓储 + private readonly IRepository _sysOrgRep; + private readonly IRepository _sysEmpRep; private readonly IUserManager _userManager; private readonly ISysCacheService _sysCacheService; private readonly ISysEmpService _sysEmpService; @@ -34,6 +37,8 @@ namespace Ewide.Core.Service private readonly ISysUserAreaService _sysUserAreaService; public SysUserService(IRepository sysUserRep, + IRepository sysOrgRep, + IRepository sysEmpRep, IUserManager userManager, IMemoryCache memoryCache, ISysCacheService sysCacheService, @@ -43,6 +48,8 @@ namespace Ewide.Core.Service ISysUserAreaService sysUserAreaService) { _sysUserRep = sysUserRep; + _sysOrgRep = sysOrgRep; + _sysEmpRep = sysEmpRep; _userManager = userManager; _iMemoryCache = memoryCache; _sysCacheService = sysCacheService; @@ -51,7 +58,7 @@ namespace Ewide.Core.Service _sysUserRoleService = sysUserRoleService; _sysUserAreaService = sysUserAreaService; } - + /// /// 分页查询用户 /// @@ -65,11 +72,10 @@ namespace Ewide.Core.Service var pid = input.SysEmpParam.OrgId; var sysEmpRep = Db.GetRepository(); - var sysOrgRep = Db.GetRepository(); var dataScopes = await GetUserDataScopeIdList(_userManager.UserId); var users = await _sysUserRep.DetachedEntities .Join(sysEmpRep.DetachedEntities, u => u.Id, e => e.Id, (u, e) => new { u, e }) - .Join(sysOrgRep.DetachedEntities, n => n.e.OrgId, o => o.Id, (n, o) => new { n, o }) + .Join(_sysOrgRep.DetachedEntities, n => n.e.OrgId, o => o.Id, (n, o) => new { n, o }) .Where(!string.IsNullOrEmpty(searchValue), x => (x.n.u.Account.Contains(input.SearchValue) || x.n.u.Name.Contains(input.SearchValue) || x.n.u.Phone.Contains(input.SearchValue))) @@ -467,7 +473,7 @@ namespace Ewide.Core.Service var Regex_Email = @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"; CodeHelper ch = new CodeHelper(_iMemoryCache); //Type为1时,给原手机号发送验证码 - if(input.Type == 1) + if (input.Type == 1) { try { @@ -477,12 +483,12 @@ namespace Ewide.Core.Service { throw Oops.Oh(ErrorCode.D1018); } - + } //Type为2时,给原邮箱发送验证码 - else if(input.Type == 2) + else if (input.Type == 2) { - if(new Regex(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$").IsMatch(_userManager.User.Email)) + if (new Regex(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$").IsMatch(_userManager.User.Email)) { try { @@ -499,20 +505,20 @@ namespace Ewide.Core.Service else { //通过正则判断绑定类型 - if(new Regex(Regex_phone).IsMatch(input.Target)) + if (new Regex(Regex_phone).IsMatch(input.Target)) { try { - + ch.SendSmscode(input.Target, Smscode_Key); return true; } - catch(Exception e) + catch (Exception e) { throw Oops.Oh(ErrorCode.D1018); } } - if(new Regex(Regex_Email).IsMatch(input.Target)) + if (new Regex(Regex_Email).IsMatch(input.Target)) { try { @@ -541,7 +547,7 @@ namespace Ewide.Core.Service var Regex_Email = @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"; var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == _userManager.UserId); CodeHelper ch = new CodeHelper(_iMemoryCache); - if(input.Type == 1) + if (input.Type == 1) { if (ch.Checkcode(_userManager.User.Phone, input.Orgcode, Orgcode_Key)) { @@ -549,9 +555,9 @@ namespace Ewide.Core.Service }; throw Oops.Oh("验证错误"); } - else if(input.Type == 2) + else if (input.Type == 2) { - if(ch.Checkcode(_userManager.User.Email, input.Orgcode, Orgcode_Key)) + if (ch.Checkcode(_userManager.User.Email, input.Orgcode, Orgcode_Key)) { return true; } @@ -560,11 +566,11 @@ namespace Ewide.Core.Service else { //为第一次绑定 - if(string.IsNullOrEmpty(_userManager.User.Phone) && string.IsNullOrEmpty(_userManager.User.Email)) + if (string.IsNullOrEmpty(_userManager.User.Phone) && string.IsNullOrEmpty(_userManager.User.Email)) { - if(new Regex(Regex_phone).IsMatch(input.Target)) + if (new Regex(Regex_phone).IsMatch(input.Target)) { - if (ch.Checkcode(input.Target,input.Code, Smscode_Key)) + if (ch.Checkcode(input.Target, input.Code, Smscode_Key)) { try { @@ -581,7 +587,7 @@ namespace Ewide.Core.Service } throw Oops.Oh("验证码失效"); } - if(new Regex(Regex_Email).IsMatch(input.Target)) + if (new Regex(Regex_Email).IsMatch(input.Target)) { if (ch.Checkcode(input.Target, input.Code, Mailcode_Key)) { @@ -650,7 +656,19 @@ namespace Ewide.Core.Service } throw Oops.Oh("验证码失效"); } - } + } + } + + [HttpPost("/sysUser/GetOrgUserTree")] + public async Task GetOrgUserTree(OrgUserInput input) + { + var list = await (from u in _sysUserRep.DetachedEntities + join e in _sysEmpRep.DetachedEntities on u.Id equals e.Id + select new OrgUserTreeNode { Id = u.Id, ParentId = e.OrgId,Type=1,Name=u.Name }).Union( + from o in _sysOrgRep.DetachedEntities + select new OrgUserTreeNode { Id = o.Id, ParentId = o.Pid ,Type=0,Name=o.Name}).ToListAsync(); + + return new TreeBuildUtil().DoTreeBuild(list); } } }