674 lines
15 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 YD_Event.Core.Enum;
using SqlSugar;
namespace YD_Event.Application.Client.Dtos;
/// <summary>
/// 通用分页输入
/// </summary>
public class MyPageInput : Pagination
{
}
/// <summary>
/// 个人中心-首页信息
/// </summary>
public class MyProfileDto
{
/// <summary>
/// 小程序账户角色:participant/referee/checker。
/// </summary>
public string Role { get; set; }
/// <summary>
/// 小程序账户角色:1-参赛者,2-裁判,3-检录员。
/// </summary>
public int RoleType { get; set; }
/// <summary>
/// 注册身份文本:运动员/教练/裁判/检录员。
/// </summary>
public string RoleName { get; set; } = string.Empty;
/// <summary>
/// 参赛者身份:0-普通用户,1-运动员,2-教练,3-领队。
/// </summary>
public int PersonType { get; set; }
/// <summary>
/// 昵称
/// </summary>
public string NickName { get; set; }
/// <summary>
/// 头像
/// </summary>
public string Avatar { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string Mobile { get; set; }
/// <summary>
/// 积分
/// </summary>
public int Points { get; set; }
/// <summary>
/// 证书数量
/// </summary>
public int CertificateCount { get; set; }
/// <summary>
/// 实名认证状态:0-未认证,1-已认证,2-审核中
/// </summary>
public int AuthStatus { get; set; }
/// <summary>
/// 所在单位
/// </summary>
public string? MerchantName { get; set; }
/// <summary>
/// 性别:0-未知,1-男,2-女
/// </summary>
public int? Gender { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime? BirthDate { get; set; }
}
/// <summary>
/// 个人中心-实名认证信息
/// </summary>
public class MyAuthInfoDto
{
/// <summary>
/// 认证类型:1-身份证,2-护照
/// </summary>
public int AuthType { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string Mobile { get; set; }
/// <summary>
/// 性别
/// </summary>
public int? Gender { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime? BirthDate { get; set; }
/// <summary>
/// 身份证号(认证类型1时使用)
/// </summary>
public string? IdCardNumber { get; set; }
/// <summary>
/// 护照号码(认证类型2时使用)
/// </summary>
public string? PassportNumber { get; set; }
/// <summary>
/// 身份证正面图片(认证类型1时使用)
/// </summary>
public string? IdCardImageUrl { get; set; }
/// <summary>
/// 身份证背面图片(认证类型1时使用)
/// </summary>
public string? IdCardBackImageUrl { get; set; }
/// <summary>
/// 护照图片(认证类型2时使用)
/// </summary>
public string? PassportPhotoUrl { get; set; }
/// <summary>
/// 户口本图片(认证类型3时使用)
/// </summary>
public string? HouseholdPhotoUrl { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public AuditStatus AuditStatus { get; set; }
/// <summary>
/// 审核备注
/// </summary>
public string? AuditRemark { get; set; }
}
/// <summary>
/// 提交实名认证
/// </summary>
public class SubmitAuthInput
{
/// <summary>
/// 认证类型:1-身份证,2-护照
/// </summary>
[Required(ErrorMessage = "认证类型不能为空")]
public int AuthType { get; set; }
/// <summary>
/// 姓名
/// </summary>
[Required(ErrorMessage = "姓名不能为空")]
[MaxLength(50, ErrorMessage = "姓名不能超过50个字符")]
public string Name { get; set; }
/// <summary>
/// 手机号
/// </summary>
[Required(ErrorMessage = "手机号不能为空")]
[RegularExpression(@"^1[3-9]\d{9}$", ErrorMessage = "请输入正确的手机号格式")]
public string Mobile { get; set; }
/// <summary>
/// 手机号验证码
/// </summary>
[Required(ErrorMessage = "手机号验证码不能为空")]
public string SmsCode { get; set; }
/// <summary>
/// 性别(认证类型2时需要)
/// </summary>
public int? Gender { get; set; }
/// <summary>
/// 出生日期(认证类型2时需要)
/// </summary>
public DateTime? BirthDate { get; set; }
/// <summary>
/// 身份证号(认证类型1时必填)
/// </summary>
[MaxLength(20, ErrorMessage = "身份证号不能超过20个字符")]
public string? IdCardNumber { get; set; }
/// <summary>
/// 护照号码(认证类型2时必填)
/// </summary>
[MaxLength(20, ErrorMessage = "护照号码不能超过20个字符")]
public string? PassportNumber { get; set; }
/// <summary>
/// 身份证正面图片(认证类型1时必填)
/// </summary>
[MaxLength(500, ErrorMessage = "图片URL不能超过500个字符")]
public string? IdCardImageUrl { get; set; }
/// <summary>
/// 身份证背面图片(认证类型1时必填)
/// </summary>
[MaxLength(500, ErrorMessage = "图片URL不能超过500个字符")]
public string? IdCardBackImageUrl { get; set; }
/// <summary>
/// 护照图片(认证类型2时必填)
/// </summary>
[MaxLength(500, ErrorMessage = "图片URL不能超过500个字符")]
public string? PassportPhotoUrl { get; set; }
/// <summary>
/// 户口本图片(认证类型3时必填)
/// </summary>
[MaxLength(500, ErrorMessage = "图片URL不能超过500个字符")]
public string? HouseholdPhotoUrl { get; set; }
}
/// <summary>
/// 个人中心-我的团队
/// </summary>
public class MyTeamDto
{
/// <summary>
/// 团队ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 团队名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 队员数量
/// </summary>
public int MemberCount { get; set; }
/// <summary>
/// 是否队长
/// </summary>
public bool IsLeader { get; set; }
}
/// <summary>
/// 团队成员
/// </summary>
public class MyTeamMemberDto
{
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 性别:0-未知,1-男,2-女
/// </summary>
public int Gender { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int? Age { get; set; }
/// <summary>
/// 角色:1-运动员,2-教练,3-领队
/// </summary>
public int PersonType { get; set; }
/// <summary>
/// 手机号(脱敏)
/// </summary>
public string? Mobile { get; set; }
}
/// <summary>
/// 个人中心-团队详情
/// </summary>
public class MyTeamDetailDto
{
/// <summary>
/// 团队ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 团队名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 领队信息
/// </summary>
public MyTeamMemberDto? Leader { get; set; }
/// <summary>
/// 教练信息
/// </summary>
public MyTeamMemberDto? Coach { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 队员数量
/// </summary>
public int MemberCount { get; set; }
/// <summary>
/// 成员列表
/// </summary>
public List<MyTeamMemberDto> Members { get; set; } = new List<MyTeamMemberDto>();
}
/// <summary>
/// 个人中心-我的证书
/// </summary>
public class MyCertificateDto
{
/// <summary>
/// 证书ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 项目-组别(合并显示)
/// </summary>
public string ProjectGroupDisplay => !string.IsNullOrEmpty(ProjectName) && !string.IsNullOrEmpty(GroupName)
? $"{ProjectName}-{GroupName}"
: ProjectName ?? GroupName ?? "";
/// <summary>
/// 证书名称
/// </summary>
public string CertificateName { get; set; }
/// <summary>
/// 证书URL
/// </summary>
public string CertificateUrl { get; set; }
/// <summary>
/// 颁发时间
/// </summary>
public DateTime? IssuedTime { get; set; }
}
/// <summary>
/// 我的证书分页输入
/// </summary>
public class MyCertificatePageInput : MyPageInput
{
/// <summary>
/// 证书类型筛选:1-个人证书,2-团队证书,不传则查全部
/// </summary>
public int? Type { get; set; }
}
/// <summary>
/// 我的证书总览
/// </summary>
public class MyCertificateOverviewDto
{
/// <summary>
/// 证书总数
/// </summary>
public int TotalCount { get; set; }
}
/// <summary>
/// 个人中心-积分记录
/// </summary>
public class MyPointsRecordDto
{
/// <summary>
/// 记录ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string? EventName { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string? ProjectName { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string? GroupName { get; set; }
/// <summary>
/// 项目-组别(合并显示)
/// </summary>
public string ProjectGroupDisplay => !string.IsNullOrEmpty(ProjectName) && !string.IsNullOrEmpty(GroupName)
? $"{ProjectName}-{GroupName}"
: ProjectName ?? GroupName ?? "";
/// <summary>
/// 名次
/// </summary>
public int? Rank { get; set; }
/// <summary>
/// 积分变动值
/// </summary>
public decimal Points { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
/// <summary>
/// 类型 (1-获取,2-消耗)
/// </summary>
public int Type { get; set; }
}
/// <summary>
/// 积分记录分页输入
/// </summary>
public class MyPointsPageInput : MyPageInput
{
/// <summary>
/// 类型筛选:1-获取,2-消耗,不传则查全部
/// </summary>
public int? Type { get; set; }
/// <summary>
/// 单位认证ID筛选,不传则查全部
/// </summary>
public long? MerchantCertificationId { get; set; }
}
/// <summary>
/// 我的积分总览
/// </summary>
public class MyPointsOverviewDto
{
/// <summary>
/// 总积分
/// </summary>
public int TotalPoints { get; set; }
}
/// <summary>
/// 个人中心-我的订单
/// </summary>
public class MyOrderDto
{
/// <summary>
/// 订单ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 实付金额
/// </summary>
public decimal ActualAmount { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundAmount { get; set; }
/// <summary>
/// 订单状态
/// </summary>
public OrderStatus OrderStatus { get; set; }
/// <summary>
/// 支付/退款时间
/// </summary>
public DateTime? PaymentTime { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
}
/// <summary>
/// 订单详情-项目项
/// </summary>
public class MyOrderItemDto
{
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 费用
/// </summary>
public decimal Fee { get; set; }
}
/// <summary>
/// 个人中心-订单详情
/// </summary>
public class MyOrderDetailDto
{
/// <summary>
/// 订单ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 实付金额
/// </summary>
public decimal ActualAmount { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal? RefundAmount { get; set; }
/// <summary>
/// 退款时间
/// </summary>
public DateTime? RefundTime { get; set; }
/// <summary>
/// 订单状态
/// </summary>
public OrderStatus OrderStatus { get; set; }
/// <summary>
/// 支付时间
/// </summary>
public DateTime? PaymentTime { get; set; }
/// <summary>
/// 支付方式:1-线上,2-线下
/// </summary>
public int PaymentMethod { get; set; }
/// <summary>
/// 收费模式:0-免费,1-定价(赛事),2-单价(赛事),3-单价(项目)
/// </summary>
public ChargeMode? ChargeMode { get; set; }
/// <summary>
/// 项目列表
/// </summary>
public List<MyOrderItemDto> Items { get; set; } = new List<MyOrderItemDto>();
}
/// <summary>
/// 个人中心-参赛记录
/// </summary>
public class MyRegistrationDto
{
/// <summary>
/// 报名ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 团队名称 (个人赛则为个人)
/// </summary>
public string TeamName { get; set; }
/// <summary>
/// 报名状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 报名时间
/// </summary>
public DateTime RegistrationTime { get; set; }
/// <summary>
/// 报名项目集合
/// </summary>
public string ProjectNames { get; set; }
}
/// <summary>
/// 更新头像URL输入
/// </summary>
public class UpdateAvatarUrlInput
{
/// <summary>
/// 头像图片URL
/// </summary>
[Required(ErrorMessage = "头像URL不能为空")]
[MaxLength(500, ErrorMessage = "头像URL不能超过500个字符")]
public string AvatarUrl { get; set; } = string.Empty;
}
/// <summary>
/// 更新头像输出
/// </summary>
public class UpdateAvatarOutput
{
/// <summary>
/// 头像URL
/// </summary>
public string AvatarUrl { get; set; } = string.Empty;
}