Member.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using System.ComponentModel.DataAnnotations.Schema;
  2. using System.ComponentModel.DataAnnotations;
  3. using Microsoft.EntityFrameworkCore;
  4. using bitforum.Constants;
  5. /// <summary>
  6. /// 사용자단 일반 회원 정보
  7. /// </summary>
  8. namespace bitforum.Models.User
  9. {
  10. [Table("Member")]
  11. [Comment("회원 정보")]
  12. [Index(nameof(SID), Name = "IX_Member_SID", IsUnique = true)]
  13. [Index(nameof(Email), Name = "IX_Member_Email", IsUnique = true)]
  14. [Index(nameof(Name), Name = "IX_Member_Name", IsUnique = true)]
  15. public class Member
  16. {
  17. [ForeignKey("ID")]
  18. public virtual MemberApprove MemberApproves { get; set; }
  19. [ForeignKey("GradeID")]
  20. public virtual MemberGrade MemberGrade { get; set; }
  21. [Key]
  22. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  23. [Comment("PK")]
  24. public int ID { get; set; }
  25. [Comment("회원등급 ID")]
  26. public int? GradeID { get; set; } = null;
  27. [Required]
  28. [MaxLength(20)]
  29. [Comment("SID")]
  30. public string SID { get; set; } // 무작위 문자열
  31. [Required]
  32. [MaxLength(255)]
  33. [Comment("이메일")]
  34. [DataType(DataType.EmailAddress)]
  35. public string Email { get; set; }
  36. [MaxLength(20)]
  37. [Comment("별명")]
  38. public string? Name { get; set; } = null;
  39. [MaxLength(40)]
  40. [Comment("본명")]
  41. public string? FullName { get; set; } = null;
  42. [MaxLength(20)]
  43. [Comment("본명(성)")]
  44. public string? FirstName { get; set; } = null;
  45. [MaxLength(40)]
  46. [Comment("본명(이름)")]
  47. public string? LastName { get; set; } = null;
  48. [Required]
  49. [MaxLength(255)]
  50. [Comment("비밀번호")]
  51. [DataType(DataType.Password)]
  52. public string Password { get; set; }
  53. [MaxLength(1000)]
  54. [Comment("자기소개")]
  55. public string? Intro { get; set; } = null;
  56. [MaxLength(50)]
  57. [Comment("한마디")]
  58. public string? Summary { get; set; } = null;
  59. [Comment("코인")]
  60. public long Coin { get; set; } = 0;
  61. [Comment("경험치")]
  62. public int Exp { get; set; } = 0;
  63. [MaxLength(15)]
  64. [Comment("연락처")]
  65. public string? Phone { get; set; } = null;
  66. [MaxLength(10)]
  67. [Comment("생년월일")]
  68. public DateOnly? Birthday { get; set; } = null;
  69. [MaxLength(6)]
  70. [Comment("성별")]
  71. public Gender? Gender { get; set; } = null;
  72. [MaxLength(255)]
  73. [Comment("사진")]
  74. public string? Photo { get; set; } = null;
  75. [Comment("이메일 인증 여부")]
  76. public bool IsEmailVerified { get; set; } = false;
  77. [Comment("본인 인증 여부")]
  78. public bool IsAuthCertified { get; set; } = false;
  79. [Comment("차단 여부")]
  80. public bool IsDenied { get; set; } = false;
  81. [Comment("운영진 여부")]
  82. public bool IsAdmin { get; set; } = false;
  83. [Comment("탈퇴 여부")]
  84. public bool IsWithdraw { get; set; } = false;
  85. [Comment("구독 중")]
  86. public int Following { get; set; } = 0;
  87. [Comment("구독자")]
  88. public int Followed { get; set; } = 0;
  89. [MaxLength(400)]
  90. [Comment("로그인 단말기 정보")]
  91. public string? DeviceInfo { get; set; } = null;
  92. [Required]
  93. [MaxLength(15)]
  94. [Comment("회원가입 시 IP")]
  95. public string SignupIP { get; set; }
  96. [MaxLength(15)]
  97. [Comment("마지막 로그인 IP")]
  98. public string? LastLoginIp { get; set; } = null;
  99. [Comment("마지막 로그인 일시")]
  100. public DateTime? LastLoginAt { get; set; } = null;
  101. [Comment("이메일 인증 일시")]
  102. public DateTime? EmailVerifiedAt { get; set; } = null;
  103. [Comment("본인인증 일시")]
  104. public DateTime? AuthCertifiedAt { get; set; } = null;
  105. [Required]
  106. [Comment("비밀번호 변경 일시")]
  107. public DateTime PasswordUpdatedAt { get; set; }
  108. [Required]
  109. [Comment("가입 일시")]
  110. public DateTime CreatedAt { get; set; }
  111. [Comment("수정 일시")]
  112. public DateTime? UpdatedAt { get; set; } = null;
  113. [Comment("탈퇴 일시")]
  114. public DateTime? DeletedAt { get; set; } = null;
  115. }
  116. }