This commit is contained in:
2021-06-01 09:53:30 +08:00
7 changed files with 61 additions and 22 deletions

View File

@@ -1,4 +1,5 @@
using Ewide.Core.Service.Area; using Ewide.Core.Service;
using Ewide.Core.Service.Area;
using Ewide.Core.Service.Area.Dto; using Ewide.Core.Service.Area.Dto;
using Furion.DynamicApiController; using Furion.DynamicApiController;
using Mapster; using Mapster;
@@ -18,10 +19,13 @@ namespace Ewide.Core.Controller
public class AreaCodeController : IDynamicApiController public class AreaCodeController : IDynamicApiController
{ {
private readonly IAreaCodeService _areaCodeService; private readonly IAreaCodeService _areaCodeService;
private readonly ISysUserService _sysUserService;
public AreaCodeController(IAreaCodeService areaCodeService) private readonly IUserManager _userManager;
public AreaCodeController(IAreaCodeService areaCodeService, IUserManager userManager, ISysUserService sysUserService)
{ {
_areaCodeService = areaCodeService; _areaCodeService = areaCodeService;
_userManager = userManager;
_sysUserService = sysUserService;
} }
/// <summary> /// <summary>
/// 查询 /// 查询
@@ -81,7 +85,13 @@ namespace Ewide.Core.Controller
[HttpGet("/sysArea/tree")] [HttpGet("/sysArea/tree")]
public async Task<List<AreaTreeNode>> GetAreaCodeTree([FromQuery]int? level) public async Task<List<AreaTreeNode>> GetAreaCodeTree([FromQuery]int? level)
{ {
return await _areaCodeService.GetAreaCodeTree(level); List<string> areaCodeList = null;
if (!_userManager.SuperAdmin)
{
var orgIdList = await _sysUserService.GetUserDataScopeIdList(_userManager.UserId);
areaCodeList = await _areaCodeService.GetAreaCodeListByOrgId(orgIdList);
}
return await _areaCodeService.GetAreaCodeTree(level, areaCodeList);
} }
} }
} }

View File

@@ -3058,7 +3058,7 @@
<param name="code">区域代码</param> <param name="code">区域代码</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Ewide.Core.Service.Area.AreaCodeService.GetAreaCodeTree(System.Nullable{System.Int32})"> <member name="M:Ewide.Core.Service.Area.AreaCodeService.GetAreaCodeTree(System.Nullable{System.Int32},System.Collections.Generic.List{System.String})">
<summary> <summary>
获取区域目录树 获取区域目录树
</summary> </summary>
@@ -6967,6 +6967,13 @@
<param name="input"></param> <param name="input"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Ewide.Core.Service.SysUserService.GetUserOwnArea(Ewide.Core.Service.QueryUserInput)">
<summary>
获取用户拥有区域
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Ewide.Core.Service.SysUserService.ResetUserPwd(Ewide.Core.Service.QueryUserInput)"> <member name="M:Ewide.Core.Service.SysUserService.ResetUserPwd(Ewide.Core.Service.QueryUserInput)">
<summary> <summary>
重置用户密码 重置用户密码

View File

@@ -80,7 +80,7 @@ namespace Ewide.Core.Service.Area
/// 获取区域目录树 /// 获取区域目录树
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task<List<AreaTreeNode>> GetAreaCodeTree(int? level) public async Task<List<AreaTreeNode>> GetAreaCodeTree(int? level, List<string> areaCodeList)
{ {
level = level.GetValueOrDefault(100); level = level.GetValueOrDefault(100);
var cachedAreaCodes = await _sysCacheService.GetAreaCode(); var cachedAreaCodes = await _sysCacheService.GetAreaCode();
@@ -92,7 +92,12 @@ namespace Ewide.Core.Service.Area
await _sysCacheService.SetAreaCode(cachedAreaCodes); await _sysCacheService.SetAreaCode(cachedAreaCodes);
#endif #endif
} }
cachedAreaCodes = cachedAreaCodes.Where(p => p.LevelType <= level).ToList(); var query = cachedAreaCodes.Where(p => p.LevelType <= level);
if (areaCodeList != null)
{
query = query.Where(p => areaCodeList.Contains(p.Code));
}
cachedAreaCodes = query.ToList();
return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode return new TreeBuildUtil<AreaTreeNode>().DoTreeBuild(cachedAreaCodes.Select(u => new AreaTreeNode
{ {
Code = u.Code, Code = u.Code,
@@ -167,5 +172,10 @@ namespace Ewide.Core.Service.Area
} }
return true; return true;
} }
public async Task<List<string>> GetAreaCodeListByOrgId(List<string> orgIdList)
{
return await _sysOrgRep.DetachedEntities.Where(p => orgIdList.Contains(p.Id)).Select(p => p.AreaCode).Distinct().ToListAsync();
}
} }
} }

View File

@@ -16,8 +16,10 @@ namespace Ewide.Core.Service.Area
Task<SysAreaCode> GetAreaCode(string code); Task<SysAreaCode> GetAreaCode(string code);
Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code); Task<List<SysAreaCode>> GetAreaCodeWithChildren(string code);
Task<List<AreaTreeNode>> GetAreaCodeTree(int? level); Task<List<AreaTreeNode>> GetAreaCodeTree(int? level,List<string> areaCodeList);
Task<dynamic> QueryAreaCodePageList([FromQuery] AreaCodeInput input); Task<dynamic> QueryAreaCodePageList([FromQuery] AreaCodeInput input);
Task<List<string>> GetAreaCodeListByOrgId(List<string> orgIdList);
} }
} }

View File

@@ -50,15 +50,12 @@ namespace Ewide.Core.Service.User
{ {
u.Delete(); u.Delete();
}); });
var dbset = _sysUserAreaRep.Entities;
input.GrantAreaCodeList.ForEach(u => await _sysUserAreaRep.InsertAsync(input.GrantAreaCodeList.Select(u => new SysUserArea
{ {
new SysUserArea SysUserId = input.Id,
{ AreaCode = u
SysUserId = input.Id, }));
AreaCode = u
}.Insert();
});
} }
} }
} }

View File

@@ -1,4 +1,5 @@
using Furion.DatabaseAccessor; using Ewide.Core.Service.Role;
using Furion.DatabaseAccessor;
using Furion.DatabaseAccessor.Extensions; using Furion.DatabaseAccessor.Extensions;
using Furion.DataEncryption; using Furion.DataEncryption;
using Furion.DependencyInjection; using Furion.DependencyInjection;
@@ -27,13 +28,15 @@ namespace Ewide.Core.Service
private readonly ISysEmpService _sysEmpService; private readonly ISysEmpService _sysEmpService;
private readonly ISysUserDataScopeService _sysUserDataScopeService; private readonly ISysUserDataScopeService _sysUserDataScopeService;
private readonly ISysUserRoleService _sysUserRoleService; private readonly ISysUserRoleService _sysUserRoleService;
private readonly ISysUserAreaService _sysUserAreaService;
public SysUserService(IRepository<SysUser> sysUserRep, public SysUserService(IRepository<SysUser> sysUserRep,
IUserManager userManager, IUserManager userManager,
ISysCacheService sysCacheService, ISysCacheService sysCacheService,
ISysEmpService sysEmpService, ISysEmpService sysEmpService,
ISysUserDataScopeService sysUserDataScopeService, ISysUserDataScopeService sysUserDataScopeService,
ISysUserRoleService sysUserRoleService) ISysUserRoleService sysUserRoleService,
ISysUserAreaService sysUserAreaService)
{ {
_sysUserRep = sysUserRep; _sysUserRep = sysUserRep;
_userManager = userManager; _userManager = userManager;
@@ -41,6 +44,7 @@ namespace Ewide.Core.Service
_sysEmpService = sysEmpService; _sysEmpService = sysEmpService;
_sysUserDataScopeService = sysUserDataScopeService; _sysUserDataScopeService = sysUserDataScopeService;
_sysUserRoleService = sysUserRoleService; _sysUserRoleService = sysUserRoleService;
_sysUserAreaService = sysUserAreaService;
} }
/// <summary> /// <summary>
@@ -288,7 +292,16 @@ namespace Ewide.Core.Service
{ {
return await _sysUserDataScopeService.GetUserDataScopeIdList(input.Id); return await _sysUserDataScopeService.GetUserDataScopeIdList(input.Id);
} }
/// <summary>
/// 获取用户拥有区域
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet("/sysUser/ownArea")]
public async Task<dynamic> GetUserOwnArea([FromQuery] QueryUserInput input)
{
return await _sysUserAreaService.GetUserAreaIdList(input.Id);
}
/// <summary> /// <summary>
/// 重置用户密码 /// 重置用户密码
/// </summary> /// </summary>

View File

@@ -37,7 +37,7 @@ namespace Ewide.Test
_output.WriteLine($"login status code {response.StatusCode}"); _output.WriteLine($"login status code {response.StatusCode}");
var body = await response.Content.ReadAsStringAsync(); var body = await response.Content.ReadAsStringAsync();
_output.WriteLine($"body {body}"); _output.WriteLine($"body {body}");
var result = JsonConvert.DeserializeObject<XnRestfulResult<LoginOutput>>(body); var result = JsonConvert.DeserializeObject<RestfulResult<LoginOutput>>(body);
Assert.NotNull(result.Data); Assert.NotNull(result.Data);
} }
[Theory] [Theory]
@@ -56,7 +56,7 @@ namespace Ewide.Test
, Encoding.UTF8, "application/json")); , Encoding.UTF8, "application/json"));
var body = await response.Content.ReadAsStringAsync(); var body = await response.Content.ReadAsStringAsync();
_output.WriteLine($"body {body}"); _output.WriteLine($"body {body}");
var result = JsonConvert.DeserializeObject<XnRestfulResult<string>>(body); var result = JsonConvert.DeserializeObject<RestfulResult<string>>(body);
Assert.Equal(code, result.Code); Assert.Equal(code, result.Code);
} }
@@ -78,7 +78,7 @@ namespace Ewide.Test
, Encoding.UTF8, "application/json")); , Encoding.UTF8, "application/json"));
var body = await response.Content.ReadAsStringAsync(); var body = await response.Content.ReadAsStringAsync();
_output.WriteLine($"body {body}"); _output.WriteLine($"body {body}");
var result = JsonConvert.DeserializeObject<XnRestfulResult<string>>(body); var result = JsonConvert.DeserializeObject<RestfulResult<string>>(body);
if (!result.Success) if (!result.Success)
{ {
throw new ArgumentException("»ñÈ¡AccessTokenʧ°Ü"); throw new ArgumentException("»ñÈ¡AccessTokenʧ°Ü");