add users documents

This commit is contained in:
2023-05-23 22:08:56 +08:00
parent c8bf017a70
commit 589940adc2
16 changed files with 987 additions and 72 deletions

View File

@ -3,13 +3,37 @@ using Microsoft.EntityFrameworkCore;
namespace Blahblah.FlowerStory.Server.Data;
/// <summary>
/// 数据库管理类
/// </summary>
public class FlowerDatabase : DbContext
{
public FlowerDatabase(DbContextOptions<FlowerDatabase> options) : base(options) { }
/// <summary>
/// 构造数据库对象
/// </summary>
/// <param name="options">选项参数</param>
public FlowerDatabase(DbContextOptions<FlowerDatabase> options) : base(options)
{
//Database.Migrate();
}
/// <summary>
/// 用户集
/// </summary>
public DbSet<UserItem> Users { get; set; }
/// <summary>
/// 花草集
/// </summary>
public DbSet<FlowerItem> Flowers { get; set; }
/// <summary>
/// 记录集
/// </summary>
public DbSet<RecordItem> Records { get; set; }
/// <summary>
/// 会话令牌集
/// </summary>
public DbSet<TokenItem> Tokens { get; set; }
}

View File

@ -1,32 +1,67 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
namespace Blahblah.FlowerStory.Server.Data.Model;
/// <summary>
/// 花草对象
/// </summary>
[Table("flowers")]
public class FlowerItem
{
[Column("fid"), Key, Required]
/// <summary>
/// 自增 id主键
/// </summary>
[Column("fid")]
[Key]
[Required]
public int Id { get; set; }
[Column("categoryid"), Required]
/// <summary>
/// 类别 id
/// </summary>
[Column("categoryid")]
[Required]
public int CategoryId { get; set; }
[Column("name"), Required]
/// <summary>
/// 花草名称
/// </summary>
[Column("name")]
[Required]
public required string Name { get; set; }
[Column("datebuy"), Required]
/// <summary>
/// 购买时间
/// </summary>
[Column("datebuy")]
[Required]
[JsonPropertyName("dateBuy")]
public long DateBuyUnixTime { get; set; }
/// <summary>
/// 购买花费
/// </summary>
[Column("cost", TypeName = "real")]
public decimal? Cost { get; set; }
/// <summary>
/// 购买渠道
/// </summary>
[Column("purchase")]
public string? Purchase { get; set; }
/// <summary>
/// 购买照片
/// </summary>
[Column("photo")]
public byte[]? Photo { get; set; }
/// <summary>
/// 购买时间
/// </summary>
[NotMapped]
[JsonIgnore]
public DateTimeOffset DateBuy => DateTimeOffset.FromUnixTimeMilliseconds(DateBuyUnixTime);
}

View File

@ -1,29 +1,60 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
namespace Blahblah.FlowerStory.Server.Data.Model;
/// <summary>
/// 记录对象
/// </summary>
[Table("records")]
public class RecordItem
{
[Column("rid"), Key, Required]
/// <summary>
/// 自增 id主键
/// </summary>
[Column("rid")]
[Key]
[Required]
public int Id { get; set; }
[Column("eid"), Required]
/// <summary>
/// 事件类型
/// </summary>
[Column("eid")]
[Required]
public int EventId { get; set; }
[Column("date"), Required]
/// <summary>
/// 操作时间
/// </summary>
[Column("date")]
[Required]
[JsonPropertyName("date")]
public long DateUnixTime { get; set; }
/// <summary>
/// 操作人 uid
/// </summary>
[Column("byuid")]
public int? ByUserId { get; set; }
/// <summary>
/// 操作人名称
/// </summary>
[Column("byname")]
public string? ByUserName { get; set; }
/// <summary>
/// 事件关联照片
/// </summary>
[Column("photo")]
public byte[]? Photo { get; set; }
/// <summary>
/// 操作时间
/// </summary>
[NotMapped]
[JsonIgnore]
public DateTimeOffset Date => DateTimeOffset.FromUnixTimeMilliseconds(DateUnixTime);
}

View File

@ -0,0 +1,103 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
namespace Blahblah.FlowerStory.Server.Data.Model;
/// <summary>
/// 会话令牌对象
/// </summary>
[Table("tokens")]
public class TokenItem
{
/// <summary>
/// token 唯一 id
/// </summary>
[Column("tid")]
[Key]
[Required]
public required string Id { get; set; }
/// <summary>
/// 关联用户 uid
/// </summary>
[Column("uid")]
[Required]
public int UserId { get; set; }
/// <summary>
/// 登录时间
/// </summary>
[Column("logondate")]
[Required]
[JsonPropertyName("logonDate")]
public long LogonDateUnixTime { get; set; }
/// <summary>
/// 活动时间
/// </summary>
[Column("activedate")]
[Required]
[JsonPropertyName("activeDate")]
public long ActiveDateUnixTime { get; set; }
/// <summary>
/// 过期时间
/// </summary>
[Column("expiredate")]
[Required]
[JsonPropertyName("expireDate")]
public long ExpireDateUnixTime { get; set; }
/// <summary>
/// 过期秒数
/// </summary>
[Column("expiresecs")]
[Required]
public int ExpireSeconds { get; set; }
/// <summary>
/// 验证码
/// </summary>
[Column("verifycode")]
public string? VerifyCode { get; set; }
/// <summary>
/// 客户端类型
/// </summary>
[Column("clientapp")]
public string? ClientApp { get; set; }
/// <summary>
/// 客户端设备 id
/// </summary>
[Column("deviceid")]
public string? DeviceId { get; set; }
/// <summary>
/// 客户端代理标识
/// </summary>
[Column("clientagent")]
public string? ClientAgent { get; set; }
/// <summary>
/// 登录时间
/// </summary>
[NotMapped]
[JsonIgnore]
public DateTimeOffset LogonDate => DateTimeOffset.FromUnixTimeMilliseconds(LogonDateUnixTime);
/// <summary>
/// 活动时间
/// </summary>
[NotMapped]
[JsonIgnore]
public DateTimeOffset ActiveDate => DateTimeOffset.FromUnixTimeMilliseconds(ActiveDateUnixTime);
/// <summary>
/// 过期时间
/// </summary>
[NotMapped]
[JsonIgnore]
public DateTimeOffset ExpireDate => DateTimeOffset.FromUnixTimeMilliseconds(ExpireDateUnixTime);
}

View File

@ -1,32 +1,93 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
namespace Blahblah.FlowerStory.Server.Data.Model;
/// <summary>
/// 用户对象
/// </summary>
[Table("users")]
public class UserItem
{
[Column("uid"), Key, Required]
/// <summary>
/// 自增 id主键
/// </summary>
[Column("uid")]
[Key]
[Required]
public int Id { get; set; }
[Column("id"), Required]
/// <summary>
/// 用户 id
/// </summary>
[Column("id")]
[Required]
public required string UserId { get; set; }
[Column("password"), Required]
public required string Password { get; set; }
[Column("level"), Required]
/// <summary>
/// 密码,值为 SHA256(password+id+salt)
/// </summary>
[Column("password")]
[Required]
[JsonIgnore]
public string? Password { get; set; }
/// <summary>
/// 用户级别
/// -1: Disabled
/// 0: Common
/// 99: Admin
/// </summary>
[Column("level")]
[Required]
public int Level { get; set; }
[Column("regdate"), Required]
/// <summary>
/// 注册时间
/// </summary>
[Column("regdate")]
[Required]
[JsonPropertyName("registerDate")]
public long RegisterDateUnixTime { get; set; }
/// <summary>
/// 最后变动时间
/// </summary>
[Column("activedate")]
[JsonIgnore]
public long? ActiveDateUnixTime { get; set; }
[Column("name"), Required]
/// <summary>
/// 用户名
/// </summary>
[Column("name")]
[Required]
public required string Name { get; set; }
/// <summary>
/// 邮箱
/// </summary>
[Column("email")]
public string? Email { get; set; }
/// <summary>
/// 联系电话
/// </summary>
[Column("mobile")]
public string? Mobile { get; set; }
/// <summary>
/// 注册时间
/// </summary>
[NotMapped]
[JsonIgnore]
public DateTimeOffset RegisterDate => DateTimeOffset.FromUnixTimeMilliseconds(RegisterDateUnixTime);
/// <summary>
/// 最后变动时间
/// </summary>
[NotMapped]
[JsonIgnore]
public DateTimeOffset? ActiveDate => ActiveDateUnixTime == null ? null : DateTimeOffset.FromUnixTimeMilliseconds(ActiveDateUnixTime.Value);
}