356 lines
8.2 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;
namespace YD_Event.Application.AppUser.Dtos;
/// <summary>
/// 普通用户分页查询输入
/// </summary>
public class AppUserPageInput : Pagination
{
/// <summary>
/// 姓名
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public Gender? Gender { get; set; }
/// <summary>
/// 联系电话
/// </summary>
public string? Mobile { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public AuditStatus? AuditStatus { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime? StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime? EndTime { get; set; }
}
/// <summary>
/// 成员统一查询输入(合并领队、教练、运动员)
/// </summary>
public class MemberQueryInput : Pagination
{
/// <summary>
/// 人员类型:1-运动员,2-教练,3-领队
/// </summary>
[Required(ErrorMessage = "人员类型不能为空")]
[EnumDataType(typeof(PersonType), ErrorMessage = "不支持的人员类型")]
public PersonType PersonType { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public Gender? Gender { get; set; }
/// <summary>
/// 联系电话
/// </summary>
public string? Mobile { get; set; }
/// <summary>
/// 身份证号 (运动员常用)
/// </summary>
public string? IdCardNumber { get; set; }
/// <summary>
/// 技能等级(仅教练)
/// </summary>
public string? SkillLevel { get; set; }
/// <summary>
/// 认证状态(仅教练)
/// </summary>
public int? CertificationStatus { get; set; }
/// <summary>
/// 开始注册时间
/// </summary>
public DateTime? StartTime { get; set; }
/// <summary>
/// 结束注册时间
/// </summary>
public DateTime? EndTime { get; set; }
}
/// <summary>
/// 统一成员输出
/// </summary>
public class MemberOutput : AppUserOutput
{
/// <summary>
/// 人员类型:1-运动员,2-教练,3-领队
/// </summary>
public PersonType PersonType { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime? BirthDate { get; set; }
/// <summary>
/// 年龄
/// 优先使用数据库存储的Age字段,如果不存在则根据BirthDate动态计算
/// </summary>
public int? Age { get; set; }
/// <summary>
/// 根据出生日期计算年龄的辅助方法
/// </summary>
public static int? CalculateAgeFromBirthDate(DateTime? birthDate)
{
if (!birthDate.HasValue) return null;
var today = DateTime.Today;
var age = today.Year - birthDate.Value.Year;
if (birthDate.Value.Date > today.AddYears(-age)) age--;
return age;
}
/// <summary>
/// 技能等级(教练)
/// </summary>
public string? SkillLevel { get; set; }
/// <summary>
/// 认证状态(教练)
/// </summary>
public int? CertificationStatus { get; set; }
}
/// <summary>
/// 创建/更新成员输入
/// </summary>
public class CreateOrUpdateMemberInput
{
/// <summary>
/// 人员类型:1-运动员,2-教练,3-领队
/// </summary>
[Required(ErrorMessage = "人员类型不能为空")]
[EnumDataType(typeof(PersonType), ErrorMessage = "不支持的人员类型")]
public PersonType PersonType { get; set; }
/// <summary>
/// ID (更新时必填)
/// </summary>
public long? Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
[Required(ErrorMessage = "姓名不能为空")]
public string Name { get; set; }
/// <summary>
/// 性别
/// </summary>
[Required(ErrorMessage = "性别不能为空")]
public Gender Gender { get; set; }
/// <summary>
/// 身份证号
/// </summary>
//[Required(ErrorMessage = "身份证号不能为空")]
//[RegularExpression(@"(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)", ErrorMessage = "身份证号格式不正确")]
public string IdCardNumber { get; set; }
/// <summary>
/// 护照号码(护照认证时使用)
/// </summary>
public string? PassportNumber { get; set; }
/// <summary>
/// 身份证图片URL
/// </summary>
public string? IdCardImageUrl { get; set; }
/// <summary>
/// 身份证背面图片URL
/// </summary>
public string? IdCardBackImageUrl { get; set; }
/// <summary>
/// 护照图片URL
/// </summary>
public string? PassportPhotoUrl { get; set; }
/// <summary>
/// 户口本图片URL
/// </summary>
public string? HouseholdPhotoUrl { get; set; }
/// <summary>
/// 认证类型:1-身份证,2-护照,3-户口本
/// </summary>
public int AuthType { get; set; } = 1;
/// <summary>
/// 出生日期 (运动员等)
/// </summary>
public DateTime? BirthDate { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int? Age { get; set; }
/// <summary>
/// 联系电话(非必填,有值时校验手机号格式)
/// </summary>
[RegularExpression(@"^1[3456789]\d{9}$", ErrorMessage = "手机号格式不正确")]
public string? Mobile { get; set; }
/// <summary>
/// 技能等级(教练特有)
/// </summary>
public string? SkillLevel { get; set; }
/// <summary>
/// 认证状态(教练特有):0-未认证,1-已认证
/// </summary>
public int? CertificationStatus { get; set; }
/// <summary>
/// 备注
/// </summary>
public string? Remark { get; set; }
/// <summary>
/// 验证码(仅新增领队/教练时需要)
/// </summary>
public string? VerificationCode { get; set; }
}
/// <summary>
/// 成员状态变更输入
/// </summary>
public class ChangeMemberStatusInput
{
/// <summary>
/// ID
/// </summary>
[Required]
public long Id { get; set; }
/// <summary>
/// 状态:1-启用,2-禁用
/// </summary>
[Required]
public AvailabilityStatus Status { get; set; }
}
/// <summary>
/// 普通用户输出
/// </summary>
public class AppUserOutput
{
/// <summary>
/// 主键ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public Gender Gender { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string Mobile { get; set; }
/// <summary>
/// 身份证号
/// </summary>
public string IdCardNumber { get; set; }
/// <summary>
/// 护照号码
/// </summary>
public string? PassportNumber { get; set; }
/// <summary>
/// 身份证图片URL
/// </summary>
public string? IdCardImageUrl { get; set; }
/// <summary>
/// 身份证背面图片URL
/// </summary>
public string? IdCardBackImageUrl { get; set; }
/// <summary>
/// 护照图片URL
/// </summary>
public string? PassportPhotoUrl { get; set; }
/// <summary>
/// 户口本图片URL
/// </summary>
public string? HouseholdPhotoUrl { get; set; }
/// <summary>
/// 认证类型:1-身份证,2-护照,3-户口本
/// </summary>
public int AuthType { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public AuditStatus AuditStatus { get; set; }
/// <summary>
/// 审核备注
/// </summary>
public string? AuditRemark { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreatedTime { get; set; }
}
/// <summary>
/// 审核输入
/// </summary>
public class AuditInput
{
/// <summary>
/// 审核对象ID列表
/// </summary>
public List<long> Ids { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public AuditStatus Status { get; set; }
/// <summary>
/// 审核备注
/// </summary>
public string? Remark { get; set; }
}