✨
This commit is contained in:
15
StopShopping.Services/Models/Resp/AccessToken.cs
Normal file
15
StopShopping.Services/Models/Resp/AccessToken.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
public class AccessToken
|
||||
{
|
||||
/// <summary>
|
||||
/// token
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Token { get; set; }
|
||||
/// <summary>
|
||||
/// 有效秒
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int ExpiresIn { get; set; }
|
||||
}
|
||||
54
StopShopping.Services/Models/Resp/Address.cs
Normal file
54
StopShopping.Services/Models/Resp/Address.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// 收货地址
|
||||
/// </summary>
|
||||
public class Address
|
||||
{
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// 姓名
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 联系电话
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string Telephone { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 自定义标签
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Tag { get; set; }
|
||||
/// <summary>
|
||||
/// 是否默认地址
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public bool Default { get; set; }
|
||||
/// <summary>
|
||||
/// 区域id,表示省/直辖市
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int DistrictLevel1Id { get; set; }
|
||||
/// <summary>
|
||||
/// 区域id,表示市/直辖市时为空
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int? DistrictLevel2Id { get; set; }
|
||||
/// <summary>
|
||||
/// 区域id,表示区
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int DistrictLevel3Id { get; set; }
|
||||
/// <summary>
|
||||
/// 区域id,表示街道/镇
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int DistrictLevel4Id { get; set; }
|
||||
/// <summary>
|
||||
/// 详细地址
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Detail { get; set; }
|
||||
}
|
||||
18
StopShopping.Services/Models/Resp/AntiForgeryToken.cs
Normal file
18
StopShopping.Services/Models/Resp/AntiForgeryToken.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// csrf token
|
||||
/// </summary>
|
||||
public class AntiForgeryToken
|
||||
{
|
||||
/// <summary>
|
||||
/// csrf请求头
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? HeaderName { get; set; }
|
||||
/// <summary>
|
||||
/// csrf token
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Token { get; set; }
|
||||
}
|
||||
64
StopShopping.Services/Models/Resp/ApiResponse.cs
Normal file
64
StopShopping.Services/Models/Resp/ApiResponse.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// 强类型返回值
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
public class ApiResponse<T>
|
||||
{
|
||||
public ApiResponse()
|
||||
{ }
|
||||
|
||||
public ApiResponse(T data)
|
||||
{
|
||||
Data = data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 是否成功
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public bool IsSucced { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// 错误消息
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Message { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联数据
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public T? Data { get; set; }
|
||||
|
||||
public ApiResponse<T> Failed(string message)
|
||||
{
|
||||
IsSucced = false;
|
||||
Message = message;
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 强类型返回值,只返回成功与否和消息
|
||||
/// </summary>
|
||||
public class ApiResponse : ApiResponse<object?>
|
||||
{
|
||||
public ApiResponse(bool isSucced = true, string message = "")
|
||||
{
|
||||
IsSucced = isSucced;
|
||||
Message = message;
|
||||
}
|
||||
|
||||
public static ApiResponse Succed(string message = "")
|
||||
{
|
||||
return new ApiResponse(message: message);
|
||||
}
|
||||
|
||||
public static new ApiResponse Failed(string message)
|
||||
{
|
||||
return new ApiResponse(false, message);
|
||||
}
|
||||
}
|
||||
23
StopShopping.Services/Models/Resp/Category.cs
Normal file
23
StopShopping.Services/Models/Resp/Category.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
public record Category
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int ParentId { get; set; }
|
||||
public string Name { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// logo地址
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string LogoUrl { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 层级中序号
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int Order { get; set; }
|
||||
/// <summary>
|
||||
/// 下级分类列表
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public List<Category> Children { get; set; } = [];
|
||||
}
|
||||
29
StopShopping.Services/Models/Resp/District.cs
Normal file
29
StopShopping.Services/Models/Resp/District.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// 行政区划
|
||||
/// </summary>
|
||||
public class District
|
||||
{
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// 父级id
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int ParentId { get; set; }
|
||||
/// <summary>
|
||||
/// 层级:1,[2,]3,4
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int Level { get; set; }
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string FullName { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 下级,街道无下级
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public List<District> Children { get; set; } = [];
|
||||
}
|
||||
18
StopShopping.Services/Models/Resp/FileUpload.cs
Normal file
18
StopShopping.Services/Models/Resp/FileUpload.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// 文件上传结果
|
||||
/// </summary>
|
||||
public class FileUpload
|
||||
{
|
||||
/// <summary>
|
||||
/// 新名,上传后重命名
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string NewName { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// Url
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string Url { get; set; } = string.Empty;
|
||||
}
|
||||
32
StopShopping.Services/Models/Resp/PagedResult.cs
Normal file
32
StopShopping.Services/Models/Resp/PagedResult.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
public class PagedResult<T>
|
||||
{
|
||||
public int PageCount { get; set; }
|
||||
public int PageSize { get; set; }
|
||||
public int PageIndex { get; set; }
|
||||
public List<T> Data { get; set; } = [];
|
||||
}
|
||||
|
||||
public static class PagedQueryExtensions
|
||||
{
|
||||
public static async Task<PagedResult<T>> ToPagedAsync<T>(this IAsyncEnumerable<T> query
|
||||
, int pageIndex = 1
|
||||
, int pageSize = 20)
|
||||
{
|
||||
PagedResult<T> result = new()
|
||||
{
|
||||
PageSize = pageSize,
|
||||
PageIndex = pageIndex
|
||||
};
|
||||
|
||||
var total = await query.CountAsync();
|
||||
result.PageCount = (int)Math.Ceiling(total / (decimal)result.PageSize);
|
||||
result.Data = await query
|
||||
.Skip((result.PageIndex - 1) * result.PageSize)
|
||||
.Take(result.PageSize)
|
||||
.ToListAsync();
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
62
StopShopping.Services/Models/Resp/Product.cs
Normal file
62
StopShopping.Services/Models/Resp/Product.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// 列表商品
|
||||
/// </summary>
|
||||
public class Product
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
/// <summary>
|
||||
/// 简介
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Description { get; set; }
|
||||
/// <summary>
|
||||
/// 图片地址
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? LogoUrl { get; set; }
|
||||
/// <summary>
|
||||
/// 分类名称
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string CategoryName { get; set; } = "";
|
||||
/// <summary>
|
||||
/// 最小销售单元
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string MinimumUnit { get; set; } = "";
|
||||
/// <summary>
|
||||
/// 单价
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public decimal UnitPrice { get; set; }
|
||||
/// <summary>
|
||||
/// 已售数量
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int SoldAmount { get; set; }
|
||||
/// <summary>
|
||||
/// 添加时间
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string CreateTime { get; set; } = "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 详情商品
|
||||
/// </summary>
|
||||
public class ProductInfo : Product
|
||||
{
|
||||
/// <summary>
|
||||
/// 分类id
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int CategoryId { get; set; }
|
||||
/// <summary>
|
||||
/// 详情
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Detail { get; set; }
|
||||
}
|
||||
41
StopShopping.Services/Models/Resp/Reply.cs
Normal file
41
StopShopping.Services/Models/Resp/Reply.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// 竞标
|
||||
/// </summary>
|
||||
public class Reply
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int ProductId { get; set; }
|
||||
public string ProductName { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 单价
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public decimal UnitPrice { get; set; }
|
||||
/// <summary>
|
||||
/// 最小销售单元
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string MinimumUnit { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 数量
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int Amount { get; set; }
|
||||
/// <summary>
|
||||
/// 竞标时间
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string ReplyTime { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 竞标者
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string Replier { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 留言
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Memo { get; set; }
|
||||
}
|
||||
59
StopShopping.Services/Models/Resp/Request.cs
Normal file
59
StopShopping.Services/Models/Resp/Request.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// 列表需求
|
||||
/// </summary>
|
||||
public class Request
|
||||
{
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// 序列号
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string SerialNo { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public RequestStatus Status { get; set; }
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 描述
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Description { get; set; }
|
||||
/// <summary>
|
||||
/// 分类id
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int CategoryId { get; set; }
|
||||
/// <summary>
|
||||
/// 分类名称
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string CategoryName { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 发布者
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string Publisher { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 发布时间
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string PublishTime { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 截止日期
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string Deadline { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 竞标者数量
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public int ReplyAmount { get; set; }
|
||||
}
|
||||
47
StopShopping.Services/Models/Resp/SignIn.cs
Normal file
47
StopShopping.Services/Models/Resp/SignIn.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
/// 登录返回
|
||||
/// </summary>
|
||||
public abstract class SignIn
|
||||
{
|
||||
/// <summary>
|
||||
/// 访问令牌
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public AccessToken AccessToken { get; set; } = new();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录用户
|
||||
/// </summary>
|
||||
public class SignInUser : SignIn
|
||||
{
|
||||
/// <summary>
|
||||
/// 昵称
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string NickName { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 头像地址
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? AvatarUrl { get; set; }
|
||||
/// <summary>
|
||||
/// 默认角色
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public UserRoles DefaultRole { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 登录管理员
|
||||
/// </summary>
|
||||
public class SignInAdmin : SignIn
|
||||
{
|
||||
/// <summary>
|
||||
/// 昵称
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string NickName { get; set; } = string.Empty;
|
||||
}
|
||||
38
StopShopping.Services/Models/Resp/User.cs
Normal file
38
StopShopping.Services/Models/Resp/User.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
namespace StopShopping.Services.Models.Resp;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class User
|
||||
{
|
||||
/// <summary>
|
||||
/// 登录账号
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string Account { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 昵称
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string NickName { get; set; } = string.Empty;
|
||||
/// <summary>
|
||||
/// 电话
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? Telephone { get; set; }
|
||||
/// <summary>
|
||||
/// 默认角色
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public UserRoles DefaultRole { get; set; }
|
||||
/// <summary>
|
||||
/// 头像地址
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? AvatarUrl { get; set; }
|
||||
/// <summary>
|
||||
/// 上次登录时间
|
||||
/// </summary>
|
||||
/// <value></value>
|
||||
public string? LastLoginTime { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user