From 7368d0388e78228499f28b33f79891c60639fb57 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 17 Apr 2022 22:43:19 +0800 Subject: ... --- BackEnd/Timeline/Entities/DatabaseContext.cs | 5 ++- BackEnd/Timeline/Entities/RegisterCode.cs | 4 +- BackEnd/Timeline/Entities/UserEntity.cs | 3 -- BackEnd/Timeline/Entities/UserRegisterInfo.cs | 31 +++++++++++++ .../User/RegisterCode/IRegisterCodeService.cs | 51 +++++++++++++++++++--- 5 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 BackEnd/Timeline/Entities/UserRegisterInfo.cs (limited to 'BackEnd') diff --git a/BackEnd/Timeline/Entities/DatabaseContext.cs b/BackEnd/Timeline/Entities/DatabaseContext.cs index cb776e72..7984f0a3 100644 --- a/BackEnd/Timeline/Entities/DatabaseContext.cs +++ b/BackEnd/Timeline/Entities/DatabaseContext.cs @@ -1,4 +1,4 @@ -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; namespace Timeline.Entities { @@ -36,6 +36,9 @@ namespace Timeline.Entities public DbSet UserConfigurations { get; set; } = default!; + public DbSet RegisterCodes { get; set; } = default!; + public DbSet UserRegisterInfos { get; set; } = default!; + public DbSet JwtToken { get; set; } = default!; public DbSet UserTokens { get; set; } = default!; public DbSet Data { get; set; } = default!; diff --git a/BackEnd/Timeline/Entities/RegisterCode.cs b/BackEnd/Timeline/Entities/RegisterCode.cs index 945d61e9..034dde98 100644 --- a/BackEnd/Timeline/Entities/RegisterCode.cs +++ b/BackEnd/Timeline/Entities/RegisterCode.cs @@ -10,10 +10,10 @@ namespace Timeline.Entities public long Id { get; set; } [Column("owner_id")] - public long OwnerId { get; set; } + public long? OwnerId { get; set; } [ForeignKey(nameof(OwnerId))] - public UserEntity Owner { get; set; } = default!; + public UserEntity? Owner { get; set; } = default!; [Column("code")] public string Code { get; set; } = default!; diff --git a/BackEnd/Timeline/Entities/UserEntity.cs b/BackEnd/Timeline/Entities/UserEntity.cs index 267d0ef2..d8015ccf 100644 --- a/BackEnd/Timeline/Entities/UserEntity.cs +++ b/BackEnd/Timeline/Entities/UserEntity.cs @@ -37,9 +37,6 @@ namespace Timeline.Entities [Column("last_modified")] public DateTime LastModified { get; set; } - [Column("register_code")] - public string? RegisterCode { get; set; } - public UserAvatarEntity? Avatar { get; set; } #pragma warning disable CA2227 // Collection properties should be read only diff --git a/BackEnd/Timeline/Entities/UserRegisterInfo.cs b/BackEnd/Timeline/Entities/UserRegisterInfo.cs new file mode 100644 index 00000000..1d62aadb --- /dev/null +++ b/BackEnd/Timeline/Entities/UserRegisterInfo.cs @@ -0,0 +1,31 @@ +using System; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Timeline.Entities +{ + [Table("user_register_info")] + public class UserRegisterInfo + { + [Column("id"), Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public long Id { get; set; } + + [Column("user_id")] + public long UserId { get; set; } + + [ForeignKey(nameof(UserId))] + public UserEntity User { get; set; } = default!; + + [Column("register_code")] + public string RegisterCode { get; set; } = default!; + + [Column("introducer_id")] + public long? IntroducerId { get; set; } + + [ForeignKey(nameof(IntroducerId))] + public UserEntity? Introducer { get; set; } + + [Column("register_time")] + public DateTime RegisterTime { get; set; } + } +} diff --git a/BackEnd/Timeline/Services/User/RegisterCode/IRegisterCodeService.cs b/BackEnd/Timeline/Services/User/RegisterCode/IRegisterCodeService.cs index e4aa17fa..65decefc 100644 --- a/BackEnd/Timeline/Services/User/RegisterCode/IRegisterCodeService.cs +++ b/BackEnd/Timeline/Services/User/RegisterCode/IRegisterCodeService.cs @@ -1,17 +1,56 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Timeline.Entities; namespace Timeline.Services.User.RegisterCode { public interface IRegisterCodeService { - string? GetCurrentRegisterCode(long userId); + /// + /// Get the owner of a register code or null if the code does not exist or is not enabled. + /// + /// The register code. + /// If true, only when code is enabled the owner id is returned. + /// A task contains the owner of the register code. Null of the code does not exist or is not enabled. + Task GetCodeOwner(string code, bool onlyEnabled = true); - List GetAllRegisterCodes(long userId); + /// + /// Get the current enabled register code of the user or null if there is none. + /// + /// The user id. + /// A task contains current enabled register code or null if there is none. + Task GetCurrentCode(long userId); - string CreateNewRegisterCode(long userId); + /// + /// Create a new register code for a user, enable it and disable the previous one if there is a previous one. + /// + /// The user id. + /// A task contains the new register code. + Task CreateNewCode(long userId); - List GetUsersIntroducedByCode(string registerCode); + /// + /// Record a register info for a user. + /// + /// The newly-registered user. + /// The introducer user id. + /// The register code. + /// The register time. + /// The created register info. + Task CreateRegisterInfo(long userId, long introducerId, string registerCode, DateTime registerTime); - List GetUsersIntroducedByUser(long userId); + /// + /// Get register info of a user if there is one. + /// + /// The user id. + /// The user register info if there is one. Or null if there is not. + Task GetUserRegisterInfo(long userId); + + /// + /// Get the list of user register info of the specified introducer. + /// + /// + /// The list of user register info. + Task> GetUserRegisterInfoOfIntroducer(long introducerId); } } -- cgit v1.2.3