diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs
index f740694f..1801ea53 100644
--- a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs
+++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs
@@ -3,6 +3,7 @@ using Dlhis.Basic.Organization.Request;
using Dlhis.Basic.Organization.Response;
using Dlhis.Basic.Organization.Services;
using Dlhis.Basic.Places.Response;
+using Dlhis.Entity.Device.Enums;
using Kurisu.AspNetCore.DataAccess.Dto;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -65,4 +66,16 @@ public class GainfoPermissionsController : ControllerBase
{
return await _gainfoPermissions.GetAssignGroupAsync(userNo);
}
+
+ ///
+ /// 权限重置
+ ///
+ ///
+ ///
+ [Authorize(Roles = "admin")]
+ [HttpPost("reset")]
+ public async Task ResetPermissionsAsync(GainfoPermissionResetRequest request)
+ {
+ return await _gainfoPermissions.ResetPermissionsAsync(request.UserNo, request.Status ? DeviceTaskEnumType.Add : DeviceTaskEnumType.Delete, null);
+ }
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs b/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs
new file mode 100644
index 00000000..71d6e26b
--- /dev/null
+++ b/Src/Dlhis.Basic/Organization/Request/GainfoPermissionResetRequest.cs
@@ -0,0 +1,14 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Dlhis.Basic.Organization.Request;
+
+public class GainfoPermissionResetRequest
+{
+ [Required]
+ public string UserNo { get; set; }
+
+ ///
+ /// true下发所有,false删除所有
+ ///
+ public bool Status { get; set; }
+}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs
index 544479bb..03ce1e5b 100644
--- a/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/IGainfoPermissionService.cs
@@ -17,5 +17,5 @@ public interface IGainfoPermissionService : IScopeDependency
Task> GetAssignGroupAsync(string userNo);
- Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes);
+ Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes);
}
\ No newline at end of file
diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs
index e22b705d..4867ada3 100644
--- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs
+++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs
@@ -33,7 +33,7 @@ public class GainfoPermissionService : IGainfoPermissionService
{
var gainfo = await _gainfoStore.Queryable()
.Where(x => x.No == request.UserNo)
- .FirstAsync();
+ .SingleAsync();
if (gainfo == null)
{
@@ -77,7 +77,7 @@ public class GainfoPermissionService : IGainfoPermissionService
return new List();
}
- var groups = RecursionGetNext(currentGroup, deviceGroups).ToList();
+ var groups = RecursionHelper.HandlerDeviceGroupNextCodes(currentGroup.Code, deviceGroups);
return groups.Select(groupCode =>
{
@@ -191,7 +191,7 @@ public class GainfoPermissionService : IGainfoPermissionService
}
- public async Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes)
+ public async Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes)
{
var gainfo = await _dbContext.Queryable()
.Where(x => x.No == userNo)
@@ -230,10 +230,14 @@ public class GainfoPermissionService : IGainfoPermissionService
DeviceType = x.Type,
TenantId = x.TenantId,
Priority = 10,
- Source = DeviceTaskSourceEnumType.Manually
+ Source = DeviceTaskSourceEnumType.Manually,
}).ToList();
await _dbContext.InsertAsync(tasks);
+
+ var addCount = type == DeviceTaskEnumType.Add ? tasks.Count : 0;
+ var deleteCount = type == DeviceTaskEnumType.Delete ? tasks.Count : 0;
+ return new DevicePermissionAssignResponse(addCount, deleteCount);
}
@@ -252,17 +256,4 @@ public class GainfoPermissionService : IGainfoPermissionService
.Select()
.ToListAsync();
}
-
- //**********************************************************************************************************************************************
-
- private static IEnumerable RecursionGetNext(DeviceGroupEntity current, List deviceGroups)
- {
- var next = deviceGroups.Where(x => x.PCode == current.Code).ToList();
- foreach (var item in next)
- {
- RecursionGetNext(item, deviceGroups);
- }
-
- yield return current.Code;
- }
}
\ No newline at end of file