From 9d1d0694502d3eb17edcaf6e602d3fe6cd59fa0e Mon Sep 17 00:00:00 2001 From: liguoyang Date: Fri, 7 Jun 2024 12:11:32 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=A4=90=E8=A1=A5=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=A6=BB=E8=81=8C=E4=BA=BA=E5=91=98,?= =?UTF-8?q?=E5=88=86=E9=85=8D=E6=9D=83=E9=99=90=E5=A2=9E=E5=8A=A0=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DevicePermissionService.cs | 72 ++++++++++--------- .../Controllers/GainfoMealController.cs | 2 +- .../Services/Implements/MealUserService.cs | 25 ++++--- 3 files changed, 53 insertions(+), 46 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index c541890d..2d08c476 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -33,11 +33,43 @@ public class DevicePermissionService : IDevicePermissionService public async Task AssignAsync(DevicePermissionSaveRequest request) { - // var currentTenantId = _currentUser.GetStringTenantId(); - // - // await using var handler = await _redisCache.LockAsync($"permission:generate:{currentTenantId}"); - // handler.Acquired.ThrowIfFalse("请勿频繁分配设备权限"); - // + var currentTenantId = _currentUser.GetStringTenantId(); + + using (var handler = await _redisCache.LockAsync($"permission:generate:{currentTenantId}")) + { + handler.Acquired.ThrowIfFalse("请勿频繁分配设备权限"); + + var tenantId = request.AssignType == AssignTypeEnumType.Department ? request.TenantId : _currentUser.GetStringTenantId(); + + await GenerateDeviceTasksAsync(async () => + { + //删除当前匹配的基地权限 + var p = await _dbContext.Queryable() + .Where(x => x.AssignType == request.AssignType) + .Where(x => x.AssignValue == request.AssignValue) + .Where(x => x.UniqueType == request.UniqueType) + .Where(x => x.TenantId == tenantId) + .ToListAsync(); + + await _dbContext.DeleteReallyAsync(p); + + //保存配置的权限 + if (request.Codes.IsPresent()) + { + var devicePermissions = request.Codes.Select(code => new DevicePermissionEntity + { + AssignType = request.AssignType, + AssignValue = request.AssignValue, + UniqueType = request.UniqueType, + UniqueValue = code, + TenantId = tenantId + }).ToList(); + + await _dbContext.InsertAsync(devicePermissions); + } + }, null); + } + // var tenantId = request.AssignType == AssignTypeEnumType.Department ? request.TenantId : _currentUser.GetStringTenantId(); // request.TenantId = tenantId; // @@ -54,36 +86,6 @@ public class DevicePermissionService : IDevicePermissionService // { // Id = id // }); - - var tenantId = request.AssignType == AssignTypeEnumType.Department ? request.TenantId : _currentUser.GetStringTenantId(); - - await GenerateDeviceTasksAsync(async () => - { - //删除当前匹配的基地权限 - var p = await _dbContext.Queryable() - .Where(x => x.AssignType == request.AssignType) - .Where(x => x.AssignValue == request.AssignValue) - .Where(x => x.UniqueType == request.UniqueType) - .Where(x => x.TenantId == tenantId) - .ToListAsync(); - - await _dbContext.DeleteReallyAsync(p); - - //保存配置的权限 - if (request.Codes.IsPresent()) - { - var devicePermissions = request.Codes.Select(code => new DevicePermissionEntity - { - AssignType = request.AssignType, - AssignValue = request.AssignValue, - UniqueType = request.UniqueType, - UniqueValue = code, - TenantId = tenantId - }).ToList(); - - await _dbContext.InsertAsync(devicePermissions); - } - }, null); } public async Task GeneratePermissionsAsync(long id) diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoMealController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoMealController.cs index 7a74b953..f352daf4 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoMealController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoMealController.cs @@ -36,7 +36,7 @@ public class GainfoMealController : ControllerBase /// /// 迁移 /// - /// + [Authorize(Roles = "admin")] [HttpPost("migration")] public async Task MigrationAsync(GainfoBalanceMigrationRequest request) { diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/MealUserService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/MealUserService.cs index a07037df..a83bf496 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/MealUserService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/MealUserService.cs @@ -9,6 +9,7 @@ using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; using Kurisu.AspNetCore.Utils; using Kurisu.AspNetCore.Utils.Extensions; +using SqlSugar; namespace Dlhis.Basic.Organization.Services.Implements; @@ -27,20 +28,24 @@ public class MealUserService : IMealUserService { var tenantId = _currentUser.GetStringTenantId(); - var page = await _dbContext.Queryable() - .LeftJoin((x, meal) => x.Code == meal.UserCode) - .LeftJoin((x, meal, dept) => dept.No == x.DepartmentNo) - .WhereIF(request.Search.IsPresent(), (x, meal) => x.Code == request.Search || x.Name == request.Search) - .Where(x => x.Factory == tenantId) - .Select((x, meal, dept) => new MealUserResponse + var page = await _dbContext.Queryable() + .LeftJoin((meal, gainfo) => meal.UserCode == gainfo.Code) + .LeftJoin((meal, gainfo, gainfoLeave) => meal.UserCode == gainfoLeave.Code) + .LeftJoin((meal, gainfo, gainfoLeave, dept1) => dept1.No == gainfo.DepartmentNo) + .LeftJoin((meal, gainfo, gainfoLeave, dept1, dept2) => dept2.No == gainfo.DepartmentNo) + .WhereIF(request.Search.IsPresent(), (meal, gainfo, gainfoLeave, dept1, dept2) => meal.UserCode == request.Search + || gainfo.Name.Contains(request.Search) + || gainfoLeave.Name.Contains(request.Search)) + .Where((meal, gainfo, gainfoLeave) => gainfo.Factory == tenantId || gainfoLeave.Factory == tenantId) + .Select((meal, gainfo, gainfoLeave, dept1, dept2) => new MealUserResponse { Balance = meal.Balance, BalanceOfRecharge = meal.BalanceOfRecharge, BalanceOfSubsidies = meal.BalanceOfSubsidies, - UserCode = x.Code, - UserName = x.Name, - UserNo = x.No, - DepartmentName = dept.Name, + UserCode = meal.UserCode, + UserName = SqlFunc.IsNull(gainfo.Name, gainfoLeave.Name), + UserNo = SqlFunc.IsNull(gainfo.No, gainfoLeave.No), + DepartmentName = SqlFunc.IsNull(dept1.Name, dept2.Name) }) .ToPageListAsync(request);