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

143 lines
3.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}