145 lines
3.3 KiB
C#
145 lines
3.3 KiB
C#
using System.ComponentModel.DataAnnotations;
|
||
using System.Text.Json.Serialization;
|
||
|
||
namespace MilliSim.Common.Models;
|
||
|
||
/// <summary>
|
||
/// 统一 API 响应模型
|
||
/// </summary>
|
||
public class ApiResponse<T>
|
||
{
|
||
public int Code { get; set; } = 200;
|
||
public string Message { get; set; } = "success";
|
||
public T? Data { get; set; }
|
||
|
||
public static ApiResponse<T> Success(T? data = default, string message = "success")
|
||
=> new() { Code = 200, Message = message, Data = data };
|
||
|
||
public static ApiResponse<T> Fail(string message, int code = 400)
|
||
=> new() { Code = code, Message = message, Data = default };
|
||
}
|
||
|
||
public class ApiResponse : ApiResponse<object>
|
||
{
|
||
public static ApiResponse Success(string message = "success")
|
||
=> new() { Code = 200, Message = message, Data = null };
|
||
|
||
public new static ApiResponse Fail(string message, int code = 400)
|
||
=> new() { Code = code, Message = message, Data = null };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 分页结果
|
||
/// </summary>
|
||
public class PagedResult<T>
|
||
{
|
||
public List<T> Items { get; set; } = new();
|
||
public long Total { get; set; }
|
||
public int PageIndex { get; set; }
|
||
public int PageSize { get; set; }
|
||
|
||
public static PagedResult<T> Create(List<T> items, long total, int pageIndex, int pageSize)
|
||
=> new() { Items = items, Total = total, PageIndex = pageIndex, PageSize = pageSize };
|
||
}
|
||
|
||
/// <summary>
|
||
/// 分页请求
|
||
/// </summary>
|
||
public class PageRequest
|
||
{
|
||
private int _pageIndex = 1;
|
||
private int _pageSize = 12;
|
||
|
||
public int PageIndex
|
||
{
|
||
get => _pageIndex;
|
||
set => _pageIndex = value < 1 ? 1 : value;
|
||
}
|
||
|
||
public int PageSize
|
||
{
|
||
get => _pageSize;
|
||
set => _pageSize = value is < 1 or > 100 ? 12 : value;
|
||
}
|
||
|
||
public string? Keyword { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 用户角色枚举
|
||
/// 注意:不使用 JsonStringEnumConverter,序列化为数字,与前端数字枚举一致
|
||
/// </summary>
|
||
public enum UserRole
|
||
{
|
||
Guest = 0,
|
||
Customer = 1,
|
||
Sales = 2,
|
||
ProductManager = 3,
|
||
Admin = 4
|
||
}
|
||
|
||
/// <summary>
|
||
/// 用户状态
|
||
/// 注意:不使用 JsonStringEnumConverter,序列化为数字,与前端数字枚举一致
|
||
/// </summary>
|
||
public enum UserStatus
|
||
{
|
||
Disabled = 0,
|
||
Active = 1
|
||
}
|
||
|
||
/// <summary>
|
||
/// 项目状态
|
||
/// 注意:不使用 JsonStringEnumConverter,序列化为数字,与前端 ProjectStatus 数字枚举一致
|
||
/// </summary>
|
||
public enum ProjectStatus
|
||
{
|
||
Offline = 0,
|
||
Published = 1
|
||
}
|
||
|
||
/// <summary>
|
||
/// 授权状态
|
||
/// 注意:不使用 JsonStringEnumConverter,序列化为数字,与前端数字枚举一致
|
||
/// </summary>
|
||
public enum AuthorizationStatus
|
||
{
|
||
Cancelled = 0,
|
||
Active = 1,
|
||
Expired = 2
|
||
}
|
||
|
||
/// <summary>
|
||
/// 通知类型
|
||
/// 注意:不使用 JsonStringEnumConverter,序列化为数字,与前端数字枚举一致
|
||
/// </summary>
|
||
public enum NotificationType
|
||
{
|
||
System = 0,
|
||
Project = 1,
|
||
Account = 2,
|
||
Authorization = 3
|
||
}
|
||
|
||
/// <summary>
|
||
/// 资源包类型
|
||
/// 注意:不使用 JsonStringEnumConverter,序列化为数字,与前端 PackageType 数字枚举一致
|
||
/// </summary>
|
||
public enum PackageType
|
||
{
|
||
WebGL = 0,
|
||
Android = 1,
|
||
Windows = 2,
|
||
Mac = 3
|
||
}
|
||
|
||
/// <summary>
|
||
/// 存储模式
|
||
/// 注意:不使用 JsonStringEnumConverter,序列化为数字,与前端数字枚举一致
|
||
/// </summary>
|
||
public enum StorageMode
|
||
{
|
||
Local = 0,
|
||
Cos = 1
|
||
}
|