DCS/ruiyiweiUX/Assets/Scripts/Models/UserModels.cs

143 lines
3.7 KiB
C#
Raw Permalink Normal View History

2026-06-09 13:59:11 +08:00
using System;
using System.Collections.Generic;
/// <summary>
/// 用户数据库结构
/// 支持版本管理和用户集合
/// </summary>
[System.Serializable]
public class UserDatabase
{
public string Version = "1.0";
public List<UserInfo> Users = new List<UserInfo>();
/// <summary>
/// 查找活跃用户
/// 用户名区分大小写
/// </summary>
/// <param name="username">用户名</param>
/// <returns>用户信息如果不存在或不活跃则返回null</returns>
public UserInfo FindUser(string username)
{
// 修改为区分大小写的比较
return Users.Find(u => u.Username == username && u.IsActive);
}
/// <summary>
/// 获取所有活跃用户
/// </summary>
/// <returns>活跃用户列表</returns>
public List<UserInfo> GetActiveUsers()
{
return Users.FindAll(u => u.IsActive);
}
/// <summary>
/// 获取管理员用户列表
/// </summary>
/// <returns>管理员用户列表</returns>
public List<UserInfo> GetAdminUsers()
{
return Users.FindAll(u => u.IsActive && u.Role == UserRole.Admin);
}
}
/// <summary>
/// 扩展的用户信息类
/// 包含完整的用户数据和时间戳
/// </summary>
[System.Serializable]
public class UserInfo
{
public string Username;
public string Password;
public UserRole Role;
public DateTime CreatedTime;
public DateTime LastLoginTime;
public DateTime PasswordChangedTime;
public bool IsActive = true;
/// <summary>
/// 获取用户显示名称
/// </summary>
/// <returns>包含角色信息的显示名称</returns>
public string GetDisplayName()
{
string displayName = Username;
if (Role == UserRole.Admin)
{
displayName += " [管理员]";
}
return displayName;
}
/// <summary>
/// 检查密码是否需要更新(例如:超过指定天数)
/// </summary>
/// <param name="maxDays">最大天数</param>
/// <returns>是否需要更新</returns>
public bool IsPasswordExpired(int maxDays = 90)
{
if (PasswordChangedTime == default(DateTime))
{
// 如果从未修改过密码,使用创建时间
return (DateTime.Now - CreatedTime).Days > maxDays;
}
return (DateTime.Now - PasswordChangedTime).Days > maxDays;
}
}
/// <summary>
/// 用户操作日志事件
/// 记录用户的各种操作行为
/// </summary>
[System.Serializable]
public class UserLogEvent
{
public int Id;
public string Username;
public string Operation; // 操作类型:登录、登出、修改密码、创建用户等
public string OperationDetails; // 操作详情
public DateTime Timestamp;
public string IPAddress; // IP地址如果需要
public bool IsSuccessful; // 操作是否成功
public UserLogEvent()
{
Timestamp = DateTime.Now;
IsSuccessful = true;
}
public UserLogEvent(string username, string operation, string details = null, bool successful = true)
{
Username = username;
Operation = operation;
OperationDetails = details;
IsSuccessful = successful;
Timestamp = DateTime.Now;
}
}
/// <summary>
/// 系统使用日志事件(保持向后兼容)
/// </summary>
[System.Serializable]
public class UseLogEvent
{
public int Id;
public string OperationContentText;
public DateTime Time;
public string Account;
public UseLogEvent()
{
Time = DateTime.Now;
}
public UseLogEvent(string account, string operation)
{
Account = account;
OperationContentText = operation;
Time = DateTime.Now;
}
}