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),