diff --git a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs
index 36f6654f..5afd5d6f 100644
--- a/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs
+++ b/Src/Dlhis.Canteen/Order/Controllers/OrdersController.cs
@@ -8,7 +8,7 @@ using Kurisu.Core.Result;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
-namespace Dlhis.Canteen.Dishes.Controllers;
+namespace Dlhis.Canteen.Order.Controllers;
///
/// 订单
diff --git a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs
index fc96866f..48923d36 100644
--- a/Src/Dlhis.Canteen/Order/Services/IOrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/IOrderService.cs
@@ -7,10 +7,8 @@ namespace Dlhis.Canteen.Order.Services;
public interface IOrderService : IScopeDependency
{
-
Task> AddAsync(OrderAddRequest request);
-
-
+
Task ReCalcOfflineAsync(ReCalcOfflineRequest request);
Task UpdateOffline(UpdateOfflineRequest outRequest);
@@ -23,4 +21,4 @@ public interface IOrderService : IScopeDependency
Task> DeviceConsume(OrderAddRequest request);
Task> GetOrdersAggregationAsync(PageDto page);
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Entity/Sys/Entities/RoleEntity.cs b/Src/Dlhis.Entity/Sys/Entities/RoleEntity.cs
index f9a7afa6..d78c470c 100644
--- a/Src/Dlhis.Entity/Sys/Entities/RoleEntity.cs
+++ b/Src/Dlhis.Entity/Sys/Entities/RoleEntity.cs
@@ -17,5 +17,7 @@ public class RoleEntity
public string NormalizedName { get; set; }
+ public string Description { get; set; }
+
public Guid ConcurrencyStamp { get; set; }
}
diff --git a/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs b/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs
index cd65a44d..ebd9446a 100644
--- a/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs
+++ b/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs
@@ -29,7 +29,7 @@ public class RolesController : ControllerBase
///
[Authorize(Roles = "admin")]
[HttpGet("page")]
- public async Task> GetPageAsync([FromQuery] RolePageRequest request)
+ public async Task> GetPageAsync([FromQuery] RolePageRequest request)
{
return await _roleService.GetPageAsync(request);
}
@@ -40,7 +40,7 @@ public class RolesController : ControllerBase
///
[Authorize(Roles = "admin")]
[HttpGet("list")]
- public async Task> GetListAsync()
+ public async Task> GetListAsync()
{
return await _roleService.GetListAsync();
}
@@ -85,7 +85,7 @@ public class RolesController : ControllerBase
///
///
[HttpGet("my")]
- public async Task GetMyRoleAsync(int? userId)
+ public async Task GetMyRoleAsync(int? userId)
{
return await _roleService.GetMyRoleAsync(userId);
}
diff --git a/Src/Dlhis.Sys/Identity/Controllers/TenantsController.cs b/Src/Dlhis.Sys/Identity/Controllers/TenantsController.cs
index 6015e096..f7c16948 100644
--- a/Src/Dlhis.Sys/Identity/Controllers/TenantsController.cs
+++ b/Src/Dlhis.Sys/Identity/Controllers/TenantsController.cs
@@ -92,4 +92,4 @@ public class TenantsController : ControllerBase
{
return await _tenantService.GetMyTenantsAsync();
}
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs b/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs
index c3f4ffa5..d11a2293 100644
--- a/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs
+++ b/Src/Dlhis.Sys/Identity/Controllers/UsersController.cs
@@ -26,7 +26,7 @@ public class UsersController : ControllerBase
///
///
///
- [Authorize(Roles = "admin")]
+ [Authorize(Roles = "admin,tenant-admin")]
[HttpGet("page")]
public async Task> GetPageAsync([FromQuery] UserPageRequest request)
{
@@ -64,7 +64,7 @@ public class UsersController : ControllerBase
}
///
- ///
+ /// 创建用户
///
///
///
diff --git a/Src/Dlhis.Sys/Identity/Request/RoleSaveRequest.cs b/Src/Dlhis.Sys/Identity/Request/RoleSaveRequest.cs
index 843bc8c5..52f6eda7 100644
--- a/Src/Dlhis.Sys/Identity/Request/RoleSaveRequest.cs
+++ b/Src/Dlhis.Sys/Identity/Request/RoleSaveRequest.cs
@@ -6,6 +6,9 @@ public class RoleSaveRequest
{
public int? Id { get; set; }
- [Required(ErrorMessage = "角色名不能为空")]
+ [Required(ErrorMessage = "角色标识不能为空")]
public string Name { get; set; }
+
+ [Required(ErrorMessage = "描述不能为空")]
+ public string Description { get; set; }
}
diff --git a/Src/Dlhis.Sys/Identity/Request/UserPageRequest.cs b/Src/Dlhis.Sys/Identity/Request/UserPageRequest.cs
index 3184123a..02136a5d 100644
--- a/Src/Dlhis.Sys/Identity/Request/UserPageRequest.cs
+++ b/Src/Dlhis.Sys/Identity/Request/UserPageRequest.cs
@@ -4,4 +4,8 @@ namespace Dlhis.Sys.Identity.Request;
public class UserPageRequest : PageDto
{
-}
+ ///
+ /// 操作员
+ ///
+ public bool IsOperator { get; set; }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Sys/Identity/Response/RoleRespone.cs b/Src/Dlhis.Sys/Identity/Response/RoleResponse.cs
similarity index 52%
rename from Src/Dlhis.Sys/Identity/Response/RoleRespone.cs
rename to Src/Dlhis.Sys/Identity/Response/RoleResponse.cs
index 03cd8c23..7c90a410 100644
--- a/Src/Dlhis.Sys/Identity/Response/RoleRespone.cs
+++ b/Src/Dlhis.Sys/Identity/Response/RoleResponse.cs
@@ -1,13 +1,24 @@
namespace Dlhis.Sys.Identity.Response;
-public class RoleRespone
+public class RoleResponse
{
public int Id { get; set; }
+ ///
+ /// 名称
+ ///
public string Name { get; set; }
+ ///
+ /// 标准化名称
+ ///
public string NormalizedName { get; set; }
+ ///
+ /// 描述
+ ///
+ public string Description { get; set; }
+
///
/// 是否可编辑
///
diff --git a/Src/Dlhis.Sys/Identity/Services/IRoleService.cs b/Src/Dlhis.Sys/Identity/Services/IRoleService.cs
index 8b02ba23..4cb1dba1 100644
--- a/Src/Dlhis.Sys/Identity/Services/IRoleService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/IRoleService.cs
@@ -6,13 +6,13 @@ namespace Dlhis.User.Identity.Services;
public interface IRoleService : IScopeDependency
{
- Task> GetPageAsync(RolePageRequest request);
+ Task> GetPageAsync(RolePageRequest request);
- Task> GetListAsync();
+ Task> GetListAsync();
Task SaveRoleAsync(RoleSaveRequest request);
- Task GetMyRoleAsync(int? userId);
+ Task GetMyRoleAsync(int? userId);
Task RemoveRoleAsync(RoleRemoveRequest request);
diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
index 58909bc5..c8248594 100644
--- a/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/Implements/RoleService.cs
@@ -2,8 +2,6 @@
using Dlhis.Sys.Identity.Request;
using Dlhis.Sys.Identity.Response;
using Dlhis.User.Identity.Services;
-using Kurisu.AspNetCore.Scope;
-using Kurisu.AspNetCore.UnifyResultAndValidation;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.CustomClass;
using Kurisu.Core.DataAccess.Dto;
@@ -24,29 +22,24 @@ public class RoleService : IRoleService
_dbContext = dbContext.ChangeDb("identity");
}
- public async Task> GetPageAsync(RolePageRequest request)
+ public async Task> GetPageAsync(RolePageRequest request)
{
return await _dbContext.Queryable()
- .WhereIF(request.Search.IsPresent(), x => x.Name.Contains(request.Search) || x.NormalizedName.Contains(request.Search))
- .Where(x => x.Name != "admin")
- .Select()
- .ToPageListAsync(request);
+ .WhereIF(request.Search.IsPresent(), x => x.Name.Contains(request.Search) || x.NormalizedName.Contains(request.Search))
+ .Where(x => x.Name != "admin")
+ .Select()
+ .ToPageListAsync(request);
}
- public async Task GetMyRoleAsync(int? userId)
+ public async Task GetMyRoleAsync(int? userId)
{
userId ??= _currentUser.GetIntSubjectId();
return await _dbContext.Queryable()
- .LeftJoin((x, r) => x.RoleId == r.Id)
- .Where(x => x.UserId == userId)
- .Select((x, r) => new RoleRespone
- {
- Id = r.Id,
- Name = r.Name,
- NormalizedName = r.NormalizedName,
- })
- .FirstAsync();
+ .LeftJoin((x, r) => x.RoleId == r.Id)
+ .Where(x => x.UserId == userId)
+ .Select()
+ .FirstAsync();
}
public async Task SaveRoleAsync(RoleSaveRequest request)
@@ -59,6 +52,7 @@ public class RoleService : IRoleService
{
Name = request.Name,
NormalizedName = request.Name.ToUpperInvariant(),
+ Description = request.Description,
ConcurrencyStamp = Guid.NewGuid(),
});
}
@@ -69,6 +63,7 @@ public class RoleService : IRoleService
entity.Name = request.Name;
entity.NormalizedName = request.Name.ToUpperInvariant();
+ entity.Description = request.Description;
entity.ConcurrencyStamp = Guid.NewGuid();
await _dbContext.UpdateAsync(entity);
@@ -107,9 +102,9 @@ public class RoleService : IRoleService
else
{
await _dbContext.Updateable()
- .SetColumns(x => x.RoleId == request.RoleId)
- .Where(x => x.UserId == request.UserId)
- .ExecuteCommandAsync();
+ .SetColumns(x => x.RoleId == request.RoleId)
+ .Where(x => x.UserId == request.UserId)
+ .ExecuteCommandAsync();
}
}
else
@@ -127,12 +122,12 @@ public class RoleService : IRoleService
await _dbContext.DeleteReallyAsync(role);
}
- public async Task> GetListAsync()
+ public async Task> GetListAsync()
{
return await _dbContext.Queryable()
- .Where(x => x.Name != "admin")
- .Select()
- .ToListAsync();
+ .Where(x => x.Name != "admin")
+ .Select()
+ .ToListAsync();
}
@@ -148,4 +143,4 @@ public class RoleService : IRoleService
exists.ThrowIfTrue($"重复角色名称{request.Name}");
}
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/TenantService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/TenantService.cs
index f8e51a11..9cda48e0 100644
--- a/Src/Dlhis.Sys/Identity/Services/Implements/TenantService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/Implements/TenantService.cs
@@ -23,16 +23,16 @@ public class TenantService : ITenantService
public async Task> GetPageAsync(TenantPageRequest request)
{
return await _dbContext.Queryable()
- .WhereIF(request.Search.IsPresent(), (tenant) => tenant.Name.Contains(request.Search))
- .Select()
- .ToPageListAsync(request);
+ .WhereIF(request.Search.IsPresent(), (tenant) => tenant.Name.Contains(request.Search))
+ .Select()
+ .ToPageListAsync(request);
}
public async Task> GetListAsync()
{
return await _dbContext.Queryable()
- .Select()
- .ToListAsync();
+ .Select()
+ .ToListAsync();
}
public async Task GetTenantByCode(string code)
@@ -73,16 +73,16 @@ public class TenantService : ITenantService
var tenantId = _currentUser.GetStringTenantId();
var myTenants = await _dbContext.Queryable()
- .LeftJoin((ut, t) => ut.TenantCode == t.Code)
- .Where(ut => ut.UserId == userId)
- .Select((ut, t) => new TenantResponse
- {
- Id = t.Id,
- PCode = t.PCode,
- Code = t.Code,
- Name = t.Name,
- })
- .ToListAsync();
+ .LeftJoin((ut, t) => ut.TenantCode == t.Code)
+ .Where(ut => ut.UserId == userId)
+ .Select((ut, t) => new TenantResponse
+ {
+ Id = t.Id,
+ PCode = t.PCode,
+ Code = t.Code,
+ Name = t.Name,
+ })
+ .ToListAsync();
var currentTenant = myTenants.FirstOrDefault(x => x.Code == tenantId);
var otherTenants = myTenants.Where(x => x.Code != tenantId);
@@ -100,17 +100,16 @@ public class TenantService : ITenantService
public async Task> GetTreeAsync()
{
var tenants = await _dbContext.Queryable()
- .Select()
- .ToListAsync();
+ .Select()
+ .ToListAsync();
var tops = tenants.Where(x => x.PCode.IsEmpty()).ToList();
- foreach (var item in tops)
- {
- RecursionGetNext(item, tenants);
- }
+ tops.ForEach(item => RecursionGetNext(item, tenants));
+
return tops;
}
+ //****************************************************************** help methods *****************************************************************************
private static void RecursionGetNext(TenantTreeResponse current, List data)
{
@@ -121,4 +120,4 @@ public class TenantService : ITenantService
RecursionGetNext(item, data);
}
}
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs
index 35b2d6fa..3381e7d7 100644
--- a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs
@@ -3,40 +3,49 @@ using Dlhis.Sys.Identity.Request;
using Dlhis.Sys.Identity.Response;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto;
+using Kurisu.Core.User.Abstractions;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
using Microsoft.AspNetCore.Identity;
+using SqlSugar;
namespace Dlhis.Sys.Identity.Services.Implements;
public class UserService : IUserService
{
+ private readonly ICurrentUser _currentUser;
private readonly IDbContext _dbContext;
- public UserService(IDbContext dbContext)
+ public UserService(IDbContext dbContext, ICurrentUser currentUser)
{
+ _currentUser = currentUser;
_dbContext = dbContext.ChangeDb("identity");
}
public async Task> GetPageAsync(UserPageRequest request)
{
+ var tenant = _currentUser.GetStringTenantId();
+
var page = await _dbContext.Queryable()
.LeftJoin((x, ur) => x.Id == ur.UserId)
.LeftJoin((x, ur, r) => ur.RoleId == r.Id)
.LeftJoin((x, ur, r, c) => x.Id == c.UserId && c.ClaimType == "preferred_username")
+ .LeftJoin((x, ur, r, c, cc) => x.Id == c.UserId && c.ClaimType == "tenant")
.Where(x => x.UserName != "admin")
+ .Where((x, ur, r, c, cc) => cc.ClaimValue == tenant)
+ .WhereIF(request.IsOperator, (x, ur, r, c) => !SqlFunc.IsNullOrEmpty(r.Name))
+ .WhereIF(!request.IsOperator, (x, ur, r, c) => SqlFunc.IsNullOrEmpty(r.Name))
.WhereIF(request.Search.IsPresent(), (x, ur, r, c) => x.UserName == request.Search
- || x.Email == request.Search
- || x.PhoneNumber == request.Search
- || c.ClaimValue == request.Search
+ || x.Email == request.Search
+ || x.PhoneNumber == request.Search
+ || c.ClaimValue == request.Search
)
- .Select((x, ur, r, c) => new UserResponse
+ .Select((x, ur, r, c, cc) => new UserResponse
{
Id = x.Id,
RoleId = ur.RoleId,
Role = r.Name,
OperatorName = c.ClaimValue,
-
}, true)
.ToPageListAsync(request);
@@ -74,7 +83,6 @@ public class UserService : IUserService
RoleId = ur.RoleId,
Role = r.Name,
OperatorName = c.ClaimValue,
-
}, true)
.FirstAsync();
@@ -124,4 +132,4 @@ public class UserService : IUserService
});
}
}
-}
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/UserTenantService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/UserTenantService.cs
index 6dbaffe5..3b10b794 100644
--- a/Src/Dlhis.Sys/Identity/Services/Implements/UserTenantService.cs
+++ b/Src/Dlhis.Sys/Identity/Services/Implements/UserTenantService.cs
@@ -31,10 +31,9 @@ public class UserTenantService : IUserTenantService
await _dbContext.DeleteReallyAsync(userTenants);
await _dbContext.InsertAsync(request.TenantCodes.Select(x => new UserTenantEntity
- {
- UserId = request.UserId,
- TenantCode = x
- })
- .ToList());
+ {
+ UserId = request.UserId,
+ TenantCode = x
+ }).ToList());
}
}
\ No newline at end of file