674 lines
15 KiB
C#
674 lines
15 KiB
C#
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;
|
||
}
|