diff --git a/QYZH.InteractiveMagazine.Models/Dto/Admin/AdminPermissionDto.cs b/QYZH.InteractiveMagazine.Models/Dto/Admin/AdminPermissionDto.cs
index 08855c8..860714c 100644
--- a/QYZH.InteractiveMagazine.Models/Dto/Admin/AdminPermissionDto.cs
+++ b/QYZH.InteractiveMagazine.Models/Dto/Admin/AdminPermissionDto.cs
@@ -1,3 +1,5 @@
+using QYZH.InteractiveMagazine.Models.Enum;
+
namespace QYZH.InteractiveMagazine.Models.Dto;
///
@@ -148,6 +150,11 @@ public class AdminRoleInput
///
public string Code { get; set; } = string.Empty;
+ ///
+ /// 角色类型
+ ///
+ public AdminRoleTypeEnum Type { get; set; } = AdminRoleTypeEnum.Normal;
+
///
/// 备注
///
@@ -184,6 +191,11 @@ public class AdminRoleOutput
///
public string Code { get; set; } = string.Empty;
+ ///
+ /// 角色类型
+ ///
+ public AdminRoleTypeEnum Type { get; set; }
+
///
/// 备注
///
@@ -224,6 +236,11 @@ public class AdminRoleSimpleOutput
/// 角色编码
///
public string Code { get; set; } = string.Empty;
+
+ ///
+ /// 角色类型
+ ///
+ public AdminRoleTypeEnum Type { get; set; }
}
///
@@ -241,6 +258,11 @@ public class AdminRoleQueryInput : PageQueryModel
///
public string? Code { get; set; }
+ ///
+ /// 角色类型
+ ///
+ public AdminRoleTypeEnum? Type { get; set; }
+
///
/// 状态
///
diff --git a/QYZH.InteractiveMagazine.Models/Entity/AdminRole.cs b/QYZH.InteractiveMagazine.Models/Entity/AdminRole.cs
index 9ffd19a..a5b6982 100644
--- a/QYZH.InteractiveMagazine.Models/Entity/AdminRole.cs
+++ b/QYZH.InteractiveMagazine.Models/Entity/AdminRole.cs
@@ -1,4 +1,5 @@
using SqlSugar;
+using QYZH.InteractiveMagazine.Models.Enum;
namespace QYZH.InteractiveMagazine.Models.Entity;
@@ -22,6 +23,13 @@ public partial class AdminRole : SqlSugarBaseEntity
///
public string Code { get; set; } = string.Empty;
+ ///
+ /// Desc:角色类型,0=普通角色,1=系统角色
+ /// Default:0
+ /// Nullable:False
+ ///
+ public AdminRoleTypeEnum Type { get; set; } = AdminRoleTypeEnum.Normal;
+
///
/// Desc:备注
/// Default:
diff --git a/QYZH.InteractiveMagazine.Models/Enum/AdminRoleTypeEnum.cs b/QYZH.InteractiveMagazine.Models/Enum/AdminRoleTypeEnum.cs
new file mode 100644
index 0000000..b234aa3
--- /dev/null
+++ b/QYZH.InteractiveMagazine.Models/Enum/AdminRoleTypeEnum.cs
@@ -0,0 +1,21 @@
+using System.ComponentModel;
+
+namespace QYZH.InteractiveMagazine.Models.Enum;
+
+///
+/// 后台角色类型枚举
+///
+public enum AdminRoleTypeEnum
+{
+ ///
+ /// 普通角色
+ ///
+ [Description("普通角色")]
+ Normal = 0,
+
+ ///
+ /// 系统角色
+ ///
+ [Description("系统角色")]
+ System = 1
+}
diff --git a/QYZH.InteractiveMagazine.Service/AdminPermissionService.cs b/QYZH.InteractiveMagazine.Service/AdminPermissionService.cs
index 77ec6d9..78fe19e 100644
--- a/QYZH.InteractiveMagazine.Service/AdminPermissionService.cs
+++ b/QYZH.InteractiveMagazine.Service/AdminPermissionService.cs
@@ -128,6 +128,7 @@ public class AdminPermissionService(
{
Name = input.Name.Trim(),
Code = input.Code.Trim(),
+ Type = input.Type,
Remark = input.Remark?.Trim(),
Status = input.Status,
CreatedBy = "System",
@@ -157,9 +158,11 @@ public class AdminPermissionService(
BusinessException.ThrowIf(role == null, "角色不存在", ResultCode.NOT_FOUND);
await ValidateRoleInputAsync(input, id);
+ BusinessException.ThrowIf(role!.Type == AdminRoleTypeEnum.System && input.Type != AdminRoleTypeEnum.System, "系统角色不能修改为普通角色", ResultCode.FORBIDDEN);
- role!.Name = input.Name.Trim();
+ role.Name = input.Name.Trim();
role.Code = input.Code.Trim();
+ role.Type = input.Type;
role.Remark = input.Remark?.Trim();
role.Status = input.Status;
role.UpdatedBy = "System";
@@ -182,6 +185,7 @@ public class AdminPermissionService(
public async Task DeleteRoleAsync(long id)
{
var role = await adminRoleRepository.GetByIdAsync(id);
+ BusinessException.ThrowIf(role?.Type == AdminRoleTypeEnum.System, "系统角色不允许删除", ResultCode.FORBIDDEN);
BusinessException.ThrowIf(role == null, "角色不存在", ResultCode.NOT_FOUND);
var usedByUser = await adminUserRoleRepository.Queryable().AnyAsync(x => x.RoleId == id && !x.IsDeleted);
@@ -221,6 +225,7 @@ public class AdminPermissionService(
.Where(x => !x.IsDeleted)
.WhereIF(!string.IsNullOrWhiteSpace(input.Name), x => x.Name.Contains(input.Name!))
.WhereIF(!string.IsNullOrWhiteSpace(input.Code), x => x.Code.Contains(input.Code!))
+ .WhereIF(input.Type.HasValue, x => x.Type == input.Type!.Value)
.WhereIF(input.Status.HasValue, x => x.Status == input.Status!.Value)
.OrderByDescending(x => x.CreatedAt)
.ToPageListAsync(input.PageIndex, input.PageSize, totalNumber);
@@ -283,7 +288,8 @@ public class AdminPermissionService(
{
Id = role.Id,
Name = role.Name,
- Code = role.Code
+ Code = role.Code,
+ Type = role.Type
})
.ToListAsync();
}
@@ -490,6 +496,7 @@ public class AdminPermissionService(
Id = role.Id,
Name = role.Name,
Code = role.Code,
+ Type = role.Type,
Remark = role.Remark,
Status = role.Status,
MenuIds = menuIds,
diff --git a/QYZH.InteractiveMagazine.WorkService/Consumers/JournalTaskReceiveConsumer.cs b/QYZH.InteractiveMagazine.WorkService/Consumers/JournalTaskReceiveConsumer.cs
index 1f10f2a..e2da403 100644
--- a/QYZH.InteractiveMagazine.WorkService/Consumers/JournalTaskReceiveConsumer.cs
+++ b/QYZH.InteractiveMagazine.WorkService/Consumers/JournalTaskReceiveConsumer.cs
@@ -963,7 +963,7 @@ public class JournalTaskReceiveConsumer(
LastTag = 0,
DotPageNum = page?.PageNum ?? 0,
PageResultUrl = string.Empty,
- Type = task.Type.ToString(),
+ Type = ((int)task.Type).ToString(),
DotPageNo = page?.PageNo ?? string.Empty,
PageAnswerDotUrl = string.Empty,
BreakCount = GetBreakCount(scoreUnit),