add users documents
This commit is contained in:
@ -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; }
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
103
Server/Data/Model/TokenItem.cs
Normal file
103
Server/Data/Model/TokenItem.cs
Normal 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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user