373 lines
7.5 KiB
C#
373 lines
7.5 KiB
C#
namespace OrpaonVision.Model.Security;
|
||
|
||
/// <summary>
|
||
/// 机种权限模型。
|
||
/// </summary>
|
||
public sealed class ProductPermissionModel
|
||
{
|
||
/// <summary>
|
||
/// 权限ID。
|
||
/// </summary>
|
||
public Guid Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 机种ID。
|
||
/// </summary>
|
||
public Guid ProductTypeId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 用户ID。
|
||
/// </summary>
|
||
public Guid UserId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 角色ID。
|
||
/// </summary>
|
||
public Guid RoleId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 权限类型。
|
||
/// </summary>
|
||
public ProductPermissionType PermissionType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否启用。
|
||
/// </summary>
|
||
public bool IsEnabled { get; set; }
|
||
|
||
/// <summary>
|
||
/// 授权时间(UTC)。
|
||
/// </summary>
|
||
public DateTime GrantedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 授权人。
|
||
/// </summary>
|
||
public string GrantedBy { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 过期时间(UTC)。
|
||
/// </summary>
|
||
public DateTime? ExpiresAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 备注。
|
||
/// </summary>
|
||
public string? Remark { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建时间(UTC)。
|
||
/// </summary>
|
||
public DateTime CreatedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建人。
|
||
/// </summary>
|
||
public string CreatedBy { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 更新时间(UTC)。
|
||
/// </summary>
|
||
public DateTime UpdatedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 更新人。
|
||
/// </summary>
|
||
public string UpdatedBy { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 机种权限类型枚举。
|
||
/// </summary>
|
||
public enum ProductPermissionType
|
||
{
|
||
/// <summary>
|
||
/// 查看权限。
|
||
/// </summary>
|
||
View = 0,
|
||
|
||
/// <summary>
|
||
/// 编辑权限。
|
||
/// </summary>
|
||
Edit = 1,
|
||
|
||
/// <summary>
|
||
/// 发布权限。
|
||
/// </summary>
|
||
Publish = 2,
|
||
|
||
/// <summary>
|
||
/// 切换权限。
|
||
/// </summary>
|
||
Switch = 3,
|
||
|
||
/// <summary>
|
||
/// 强制切换权限(班组长专用)。
|
||
/// </summary>
|
||
ForceSwitch = 4,
|
||
|
||
/// <summary>
|
||
/// 管理权限。
|
||
/// </summary>
|
||
Manage = 5
|
||
}
|
||
|
||
/// <summary>
|
||
/// 机种锁定记录模型。
|
||
/// </summary>
|
||
public sealed class ProductLockRecordModel
|
||
{
|
||
/// <summary>
|
||
/// 记录ID。
|
||
/// </summary>
|
||
public Guid Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 机种ID。
|
||
/// </summary>
|
||
public Guid ProductTypeId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 锁定类型。
|
||
/// </summary>
|
||
public ProductLockType LockType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 锁定原因。
|
||
/// </summary>
|
||
public string LockReason { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 锁定人ID。
|
||
/// </summary>
|
||
public Guid LockedByUserId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 锁定人姓名。
|
||
/// </summary>
|
||
public string LockedByName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 锁定时间(UTC)。
|
||
/// </summary>
|
||
public DateTime LockedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 预计解锁时间(UTC)。
|
||
/// </summary>
|
||
public DateTime? ExpectedUnlockAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 实际解锁时间(UTC)。
|
||
/// </summary>
|
||
public DateTime? UnlockedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 解锁人ID。
|
||
/// </summary>
|
||
public Guid? UnlockedByUserId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 解锁人姓名。
|
||
/// </summary>
|
||
public string? UnlockedByName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 解锁原因。
|
||
/// </summary>
|
||
public string? UnlockReason { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否已解锁。
|
||
/// </summary>
|
||
public bool IsUnlocked { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建时间(UTC)。
|
||
/// </summary>
|
||
public DateTime CreatedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建人。
|
||
/// </summary>
|
||
public string CreatedBy { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 机种锁定类型枚举。
|
||
/// </summary>
|
||
public enum ProductLockType
|
||
{
|
||
/// <summary>
|
||
/// 权限锁定。
|
||
/// </summary>
|
||
Permission = 0,
|
||
|
||
/// <summary>
|
||
/// 配置锁定。
|
||
/// </summary>
|
||
Configuration = 1,
|
||
|
||
/// <summary>
|
||
/// 运行锁定。
|
||
/// </summary>
|
||
Runtime = 2,
|
||
|
||
/// <summary>
|
||
/// 维护锁定。
|
||
/// </summary>
|
||
Maintenance = 3,
|
||
|
||
/// <summary>
|
||
/// 审计锁定。
|
||
/// </summary>
|
||
Audit = 4,
|
||
|
||
/// <summary>
|
||
/// 紧急锁定。
|
||
/// </summary>
|
||
Emergency = 5
|
||
}
|
||
|
||
/// <summary>
|
||
/// 机种切换记录模型。
|
||
/// </summary>
|
||
public sealed class ProductSwitchRecordModel
|
||
{
|
||
/// <summary>
|
||
/// 记录ID。
|
||
/// </summary>
|
||
public Guid Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 源机种ID。
|
||
/// </summary>
|
||
public Guid? SourceProductTypeId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 源机种编码。
|
||
/// </summary>
|
||
public string? SourceProductTypeCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 目标机种ID。
|
||
/// </summary>
|
||
public Guid TargetProductTypeId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 目标机种编码。
|
||
/// </summary>
|
||
public string TargetProductTypeCode { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 切换类型。
|
||
/// </summary>
|
||
public ProductSwitchType SwitchType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 切换原因。
|
||
/// </summary>
|
||
public string SwitchReason { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 切换人ID。
|
||
/// </summary>
|
||
public Guid SwitchedByUserId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 切换人姓名。
|
||
/// </summary>
|
||
public string SwitchedByName { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 切换人角色。
|
||
/// </summary>
|
||
public string SwitchedByRole { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 切换时间(UTC)。
|
||
/// </summary>
|
||
public DateTime SwitchedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否强制切换。
|
||
/// </summary>
|
||
public bool IsForced { get; set; }
|
||
|
||
/// <summary>
|
||
/// 强制切换原因。
|
||
/// </summary>
|
||
public string? ForcedReason { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批人ID(强制切换时需要)。
|
||
/// </summary>
|
||
public Guid? ApprovedByUserId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批人姓名。
|
||
/// </summary>
|
||
public string? ApprovedByName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批时间(UTC)。
|
||
/// </summary>
|
||
public DateTime? ApprovedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 审批意见。
|
||
/// </summary>
|
||
public string? ApprovalComment { get; set; }
|
||
|
||
/// <summary>
|
||
/// 切换前状态。
|
||
/// </summary>
|
||
public string? PreviousStateJson { get; set; }
|
||
|
||
/// <summary>
|
||
/// 切换后状态。
|
||
/// </summary>
|
||
public string? NewStateJson { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建时间(UTC)。
|
||
/// </summary>
|
||
public DateTime CreatedAtUtc { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建人。
|
||
/// </summary>
|
||
public string CreatedBy { get; set; } = string.Empty;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 机种切换类型枚举。
|
||
/// </summary>
|
||
public enum ProductSwitchType
|
||
{
|
||
/// <summary>
|
||
/// 正常切换。
|
||
/// </summary>
|
||
Normal = 0,
|
||
|
||
/// <summary>
|
||
/// 强制切换。
|
||
/// </summary>
|
||
Forced = 1,
|
||
|
||
/// <summary>
|
||
/// 紧急切换。
|
||
/// </summary>
|
||
Emergency = 2,
|
||
|
||
/// <summary>
|
||
/// 计划切换。
|
||
/// </summary>
|
||
Planned = 3,
|
||
|
||
/// <summary>
|
||
/// 回滚切换。
|
||
/// </summary>
|
||
Rollback = 4
|
||
}
|