145 lines
3.3 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.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
}