fix 补充营业点分配权限接口

This commit is contained in:
2024-03-20 15:12:30 +08:00
parent 07672f1d32
commit bf5c937037
9 changed files with 138 additions and 7 deletions

View File

@@ -1,4 +1,5 @@
using Dlhis.Basic.Dishes.Request;
using Dlhis.Basic.BusinessPlace.Services;
using Dlhis.Basic.Dishes.Request;
using Dlhis.Basic.Dishes.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Canteen.Entities;
@@ -11,16 +12,21 @@ namespace Dlhis.Basic.Dishes.Services.Implements;
public class DishesCategoryService : IDishesCategoryService
{
private readonly IDbContext _dbContext;
private readonly IBusinessPlacePermissionsService _businessPlacePermissionsService;
public DishesCategoryService(IDbContext dbContext)
public DishesCategoryService(IDbContext dbContext, IBusinessPlacePermissionsService businessPlacePermissionsService)
{
_dbContext = dbContext;
_businessPlacePermissionsService = businessPlacePermissionsService;
}
public async Task<List<DishesCategoryTreeResponse>> TreeAsync()
{
var mybCodes = await GetMyBusinessPlaceCodesAsync();
var categories = await _dbContext.Queryable<DishesCategoryEntity>()
.LeftJoin<BusinessPlaceEntity>((x, bplace) => x.BusinessPlaceCode == bplace.Code)
.Where(x => mybCodes.Contains(x.BusinessPlaceCode))
.Select((x, bplace) => new DishesCategoryTreeResponse
{
BusinessPlaceCode = bplace.Code,
@@ -42,6 +48,8 @@ public class DishesCategoryService : IDishesCategoryService
public async Task SaveAsync(DishesCategorySaveRequest request)
{
await CheckBusinessPlacePermissionAsync(request.BusinessPlaceCode);
if (!request.Id.HasValue)
{
var entity = request.Adapt<DishesCategoryEntity>();
@@ -73,4 +81,27 @@ public class DishesCategoryService : IDishesCategoryService
}
}
}
/// <summary>
/// 检查营业点权限
/// </summary>
/// <param name="businessPlaceCode"></param>
/// <returns></returns>
private async Task CheckBusinessPlacePermissionAsync(Guid businessPlaceCode)
{
var codes = await GetMyBusinessPlaceCodesAsync();
codes.Contains(businessPlaceCode).ThrowIfFalse("无权操作当前营业点");
}
/// <summary>
/// 获取我管理的营业点
/// </summary>
/// <returns></returns>
private async Task<List<Guid>> GetMyBusinessPlaceCodesAsync()
{
var mybCodes = (await _businessPlacePermissionsService.GetMyAsync()).Select(x => x.Code).ToList();
return mybCodes;
}
}

View File

@@ -28,7 +28,7 @@ public class BusinessPlacePermissionsController
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[Authorize(Roles = "admin,tenant-admin,businessplace-manager")]
[HttpGet("page")]
public async Task<Pagination<BusinessPlacePermissionPageResponse>> GetPageAsync([FromQuery] BusinessPlacePermissionPageRequest request)
{
@@ -57,4 +57,28 @@ public class BusinessPlacePermissionsController
{
await _businessPlacePermissionsService.SaveBusinessPlacePermissionAsync(request);
}
/// <summary>
/// 通过userid获取分配的营业点信息
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[HttpGet("assignments/{userId}")]
public async Task<List<BusinessPlacePermissionPageResponse>> GetBusinessPlacePermissionByUserIdAsyc(int userId)
{
return await _businessPlacePermissionsService.GetBusinessPlacePermissionByUserIdAsyc(userId);
}
/// <summary>
/// 删除记录
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[HttpDelete("{id}")]
public async Task DeleteAssignmentAsync(int id)
{
await _businessPlacePermissionsService.DeleteAssignmentAsync(id);
}
}

View File

@@ -7,7 +7,7 @@ public class BusinessPlacePermissionPageResponse
/// <summary>
/// 用户id
/// </summary>
public string UserId { get; set; }
public int UserId { get; set; }
/// <summary>
/// 用户name

View File

@@ -12,4 +12,8 @@ public interface IBusinessPlacePermissionsService : IScopeDependency
Task SaveBusinessPlacePermissionAsync(BusinessPlacePermissionSaveRequest request);
Task<List<BusinessPlaceDto>> GetMyAsync();
Task<List<BusinessPlacePermissionPageResponse>> GetBusinessPlacePermissionByUserIdAsyc(int id);
Task DeleteAssignmentAsync(int id);
}

View File

@@ -6,6 +6,9 @@ using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Services;
using Mapster;
using Dlhis.Basic.Places.Dtos;
using Kurisu.SqlSugar.Extensions;
using Dlhis.Sys.Api;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.Basic.BusinessPlace.Services.Implements;
@@ -13,16 +16,36 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService
{
private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser;
private readonly IUserApi _userApi;
public BusinessPlacePermissionsService(IDbContext dbContext, ICurrentUser currentUser)
public BusinessPlacePermissionsService(IDbContext dbContext, ICurrentUser currentUser, IUserApi userApi)
{
_dbContext = dbContext;
_currentUser = currentUser;
_userApi = userApi;
}
public async Task<Pagination<BusinessPlacePermissionPageResponse>> GetPageAsync(BusinessPlacePermissionPageRequest request)
{
throw new NotImplementedException();
var page = await _dbContext.Queryable<BusinessPlaceManagerRelationshipEntity>()
.LeftJoin<BusinessPlaceEntity>((x, bplace) => x.BusinessPlaceCode == bplace.Code)
.Select((x, bplace) => new BusinessPlacePermissionPageResponse
{
UserId = x.ManagerUserId,
BusinessPlaceCode = x.BusinessPlaceCode,
BusinessPlaceName = bplace.Name,
})
.ToPageListAsync(request);
var usersResult = await _userApi.GetUserByIdsAsync(page.Data.Select(x => x.UserId).Distinct().ToList());
var users = usersResult.Data;
page.Data.ForEach(item =>
{
item.UserName = users.FirstOrDefault(x => x.Id == item.UserId)?.UserName;
});
return page;
}
public async Task<List<BusinessPlaceDto>> GetMyAsync()
@@ -59,4 +82,33 @@ public class BusinessPlacePermissionsService : IBusinessPlacePermissionsService
await _dbContext.InsertAsync(entity);
}
}
public async Task<List<BusinessPlacePermissionPageResponse>> GetBusinessPlacePermissionByUserIdAsyc(int id)
{
var infos = await _dbContext.Queryable<BusinessPlaceManagerRelationshipEntity>()
.LeftJoin<BusinessPlaceEntity>((x, bplace) => x.BusinessPlaceCode == bplace.Code)
.Where(x => x.ManagerUserId == id)
.Select((x, bplace) => new BusinessPlacePermissionPageResponse
{
UserId = x.ManagerUserId,
BusinessPlaceCode = x.BusinessPlaceCode,
BusinessPlaceName = bplace.Name,
})
.ToListAsync();
var userResult = await _userApi.GetUserByIdAsync(id);
var user = userResult.Data;
infos.ForEach(item =>
{
item.UserName = user?.UserName;
});
return infos;
}
public async Task DeleteAssignmentAsync(int id)
{
await _dbContext.Client.Deleteable<BusinessPlaceManagerRelationshipEntity>().Where(x => x.Id == id).ExecuteCommandAsync();
}
}

View File

@@ -10,4 +10,8 @@ public interface IUserApi
[Auth]
[Get("/api/users")]
Task<DefaultApiResult<UserResponse>> GetUserByIdAsync(int id);
[Auth]
[Post("/api/users/by-ids")]
Task<DefaultApiResult<List<UserResponse>>> GetUserByIdsAsync(List<int> ids);
}

View File

@@ -56,6 +56,13 @@ public class UsersController : ControllerBase
return await _userService.GetUserByIdAsync(id);
}
[Authorize]
[HttpPost("by-ids")]
public async Task<List<UserResponse>> GetUserByIdsAsync(List<int> ids)
{
return await _userService.GetUserByIdsAsync(ids);
}
/// <summary>
/// 上传头像
/// </summary>

View File

@@ -15,4 +15,7 @@ public interface IUserService : IScopeDependency
Task<UserResponse> GetUserByIdAsync(int id);
Task UploadUserAvatarAsync(UserAvatarUploadRequest request);
Task<List<UserResponse>> GetUserByIdsAsync(List<int> ids);
}

View File

@@ -61,4 +61,10 @@ public class UserService : IUserService
{
var user = await _dbContext.Queryable<UserEntity>().Where(x => x.Id == request.UserNo).Select<UserResponse>().FirstAsync();
}
public async Task<List<UserResponse>> GetUserByIdsAsync(List<int> ids)
{
var users = await _dbContext.Queryable<UserEntity>().Where(x => ids.Contains(x.Id)).Select<UserResponse>().ToListAsync();
return users;
}
}