添加项目文件。

This commit is contained in:
2025-12-02 13:10:10 +08:00
parent 93a2382a16
commit 289aa4cbe7
400 changed files with 91177 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Mapster.DependencyInjection" Version="1.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Atomx.Utils\Atomx.Utils.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,60 @@
namespace Atomx.Common.Configuration
{
public static class ConfigKeys
{
/// <summary>
/// 常规通用 key
/// </summary>
public const string General = "System.General";
/// <summary>
/// 文件上传 key
/// </summary>
public const string Upload = "System.Upload";
/// <summary>
/// 系统消息 key
/// </summary>
public const string MessageProvider = "System.Message.Provider";
/// <summary>
/// 邮件验证码 key
/// </summary>
public const string EmailCodeTemplate = "Email.Code.Template";
/// <summary>
/// 邮件忘记密码 key
/// </summary>
public const string EmailForgetTemplate = "Email.Forget.Template";
/// <summary>
/// 邮件促销活动 key
/// </summary>
public const string EmailPromotionTemplate = "Email.Promotion.Template";
/// <summary>
/// 短信验证码 key
/// </summary>
public const string SMSCodeTemplate = "SMS.Code.Template";
/// <summary>
/// 游戏商店最后刷新时间 key 模版
/// </summary>
public const string GameShopLastRefreshKeyTemplate = "GameShop.{0}.LastRefresh";
/// <summary>
/// 游戏商店道具刷新缓存时间 key 模版
/// </summary>
public const string GameShopCacheTimeKeyTemplate = "GameShop.{0}.CacheTime";
/// <summary>
/// 签到重置间隔 key 模版
/// </summary>
public const string SignInResetIntervalKeyTemplate = "SignIn.{0}.Reset.Interval";
/// <summary>
/// 签到最后重置时间 key 模版
/// </summary>
public const string SignInLastResetKeyTemplate = "SignIn.{0}.Last.Reset.Time";
}
}

View File

@@ -0,0 +1,50 @@
namespace Atomx.Common.Configuration
{
public static class CurrencyNumber
{
/// <summary>
/// 金币
/// </summary>
public const int Gold = 1;
/// <summary>
/// 宝石
/// </summary>
public const int Gem = 2;
/// <summary>
/// 美元
/// </summary>
public const int USD = 100;
/// <summary>
/// 人民币
/// </summary>
public const int CNY = 101;
/// <summary>
/// 欧元
/// </summary>
public const int EUR = 102;
/// <summary>
/// 港币
/// </summary>
public const int HKD = 102;
/// <summary>
/// USDT
/// </summary>
public const int USDT = 1000;
/// <summary>
/// 比特币
/// </summary>
public const int Bitcoin = 1001;
/// <summary>
/// 以太坊
/// </summary>
public const int Ethereum = 1001;
}
}

View File

@@ -0,0 +1,60 @@
namespace Atomx.Common.Configuration
{
/// <summary>
/// 系统基本配置
/// </summary>
public class GeneralConfig
{
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 网站的LOGO
/// </summary>
public string Logo { get; set; } = string.Empty;
/// <summary>
/// Meta 关键词
/// </summary>
public string Keywords { get; set; } = string.Empty;
/// <summary>
/// Meta 介绍
/// </summary>
public string Description { get; set; } = string.Empty;
/// <summary>
/// 域名
/// </summary>
public string Domain { get; set; } = string.Empty;
/// <summary>
/// 联系我们邮箱
/// </summary>
public string ContactEmail { get; set; } = string.Empty;
/// <summary>
/// 是否启用登录错误
/// </summary>
public bool EnableLoginErrorLock { get; set; }
/// <summary>
/// 登录错误最大上限
/// </summary>
public int LoginErrorMaxUpper { get; set; } = 5;
/// <summary>
/// 登录错误锁定时长
/// </summary>
public int LoginErrorLockDuration { get; set; } = 30;
/// <summary>
/// 是否多个法定货币钱包
/// </summary>
public bool MultipleLegalTenderWallets { get; set; } = false;
}
}

View File

@@ -0,0 +1,9 @@
namespace Atomx.Common.Configuration
{
public static class StorageKeys
{
public const string JWTTokenKeyName = "token";
public const string RefreshTokenKeyName = "refresh";
}
}

View File

@@ -0,0 +1,40 @@
namespace Atomx.Common.Configuration
{
public class UploadConfig
{
/// <summary>
/// 图片文件访问域名
/// </summary>
public string ImageDomain { get; set; } = string.Empty;
/// <summary>
/// 上传图片最大限制
/// </summary>
public int ImageMaxSize { get; set; }
/// <summary>
/// 上传文件最大限制
/// </summary>
public int FileMaxSize { get; set; }
/// <summary>
/// 允许上传图片类型
/// </summary>
public string ImageTypes { get; set; } = string.Empty;
/// <summary>
/// 允许上传文件类型
/// </summary>
public string FileTypes { get; set; } = string.Empty;
/// <summary>
/// 远程图片是否自动保存
/// </summary>
public bool RemoteAutoDownloadSave { get; set; }
/// <summary>
/// 启用云对象存储
/// </summary>
public bool StorageServiceEnabled { get; set; }
}
}

View File

@@ -0,0 +1,220 @@
namespace Atomx.Common.Constant
{
/// <summary>
/// 系统缓存 key
/// </summary>
public class CacheKeys {
/// <summary>
/// 管理系统菜单缓存 key
/// </summary>
public const string AdminMenu = "Config.AdminMenu";
/// <summary>
/// 角色权限缓存KEY
/// </summary>
public const string Roles = "Config.Roles";
/// <summary>
/// 权限缓存KEY
/// </summary>
public const string Permissions = "Config.Permissions";
/// <summary>
/// 常规设置缓存
/// </summary>
public const string GeneralConfig = "Config.General";
/// <summary>
/// 邮件服务设置
/// </summary>
public const string EmailConfig = "Config.EmailServer";
/// <summary>
/// 忘记交易密码邮件内容模板
/// </summary>
public const string ForgetTransactionPasswordEmailTemplateConfig = "Config.ForgetTransactionPasswordEmailTemplate";
/// <summary>
/// 忘记密码邮件内容模板
/// </summary>
public const string ForgetPasswordEmailTemplateConfig = "Config.ForgetPasswordEmailTemplate";
/// <summary>
/// 注册激活邮件
/// </summary>
public const string RegisterActiveEmailTemplateConfig = "Config.RegisterActiveEmailTemplate";
/// <summary>
/// 制造商缓存信息
/// </summary>
public const string Manufacturers = "Manufacturers";
/// <summary>
/// 产品分类缓存信息
/// </summary>
public const string ProductCategories = "Product.Categories";
/// <summary>
/// 产品分类缓存信息
/// </summary>
public const string ProductNewList = "Product.NewList";
/// <summary>
/// 产品分类缓存信息
/// </summary>
public const string ProductNewListPrefix = "Product.NewList.";
/// <summary>
/// 产品分类缓存信息
/// </summary>
public const string ProductHotList = "Product.HotList";
/// <summary>
/// 产品精选
/// </summary>
public const string ProductFeaturedList = "Product.FeaturedList";
/// <summary>
/// 产品分类缓存信息
/// </summary>
public const string ProductHotListPrefix = "Product.HotList.";
/// <summary>
/// 产品分类缓存信息
/// </summary>
public const string MarketingProduct = "Marketing.Product";
/// <summary>
/// 内容分类缓存信息
/// </summary>
public const string ContentCategories = "Content.Categories";
public const string Area = "Area";
/// <summary>
/// 国家数据缓存
/// </summary>
public const string Country = "Area.Country";
/// <summary>
/// 省州数据缓存
/// </summary>
public const string Province = "Area.Province";
/// <summary>
/// 城市数据缓存
/// </summary>
public const string City = "Area.City";
/// <summary>
/// 地区数据
/// </summary>
public const string Regions = "Regions";
/// <summary>
/// 地区树数据
/// </summary>
public const string RegionTree = "RegionTree";
/// <summary>
/// 语言数据
/// </summary>
public const string Languages = "Languages";
/// <summary>
/// 语言数据
/// </summary>
public const string LocalizedPropertyPrefix = "LocalizedProperty.";
/// <summary>
/// 店铺套餐包
/// </summary>
public const string StorePackage = "StorePackage";
/// <summary>
/// 店铺数据集
/// </summary>
public const string Stores = "Stores";
/// <summary>
/// 店铺数据集
/// </summary>
public const string StorePrefix = "Store.";
/// <summary>
/// 支付通道
/// </summary>
public const string PaymentChannels = "Payment.Channels";
/// <summary>
/// 货币信息
/// </summary>
public const string Currencies = "Currencies";
/// <summary>
/// 货币信息
/// </summary>
public const string CurrencyChannel = "CurrencyChannel";
/// <summary>
/// 产品属性
/// </summary>
public const string ProductAttributes = "Product.Attributes";
/// <summary>
/// 产品属性预设值
/// </summary>
public const string ProductAttributeOptionsPrefix = "Product.AttributeOption.";
// <summary>
/// 行为日志类型
/// </summary>
public const string ActionLogType = "ActionLogType";
// <summary>
/// 内容
/// </summary>
public const string ContentPrefix = "Content.";
/// <summary>
/// 产品
/// </summary>
public const string ProductPrefix = "Product.";
/// <summary>
/// 产品
/// </summary>
public const string DailyBestSellProductPrefix = "Product.DailyBestSell.";
/// <summary>
/// 客服
/// </summary>
public const string CustomerServicePrefix = "CustomerService.";
/// <summary>
/// 用户信息
/// </summary>
public const string UserPrefix = "User.";
/// <summary>
/// 代理信息
/// </summary>
public const string AgencyPrefix = "Agency.";
/// <summary>
/// 店铺等级
/// </summary>
public const string StoreLevel = "StoreLevel";
/// <summary>
/// 用户本地化
/// </summary>
public const string LocalizationPrefix = "Localization.";
/// <summary>
/// 本地化文本资源缓存
/// </summary>
public const string LocaleResourcePrefix = "LocaleResource.";
}
}

View File

@@ -0,0 +1,67 @@
namespace Atomx.Common.Constant
{
public static class Permissions
{
public static class Role
{
public const string View = "Role.View";
public const string Create = "Role.Create";
public const string Edit = "Role.Edit";
public const string Delete = "Role.Delete";
public const string Export = "Role.Export";
}
public static class User
{
public const string View = "User.View";
public const string Create = "User.Create";
public const string Edit = "User.Edit";
public const string Delete = "User.Delete";
public const string Export = "User.Export";
}
public static class Admin
{
public const string View = "Admin.View";
public const string Create = "Admin.Create";
public const string Edit = "Admin.Edit";
public const string Delete = "Admin.Delete";
public const string Export = "Admin.Export";
}
private static readonly Dictionary<string, string> PermissionDescriptions = new()
{
{ "User", "用户管理" },
{ "User.View", "查看用户列表和详情" },
{ "User.Create", "创建新用户" },
{ "User.Edit", "编辑用户信息" },
{ "User.Delete", "删除用户" },
{ "User.Export", "导出用户数据" },
{ "Role", "角色管理" },
{ "Role.View", "查看角色列表和详情" },
{ "Role.Create", "创建新角色" },
{ "Role.Edit", "编辑角色信息" },
{ "Role.Delete", "删除角色" },
{ "Role.Export", "导出角色数据" },
{ "System", "系统管理" },
{ "Content", "内容管理" },
{ "Reports", "报表管理" }
};
public static List<string> GetAllPermissions()
{
return typeof(Permissions)
.GetNestedTypes().SelectMany(t => t.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.FlattenHierarchy))
.Where(fi => fi.IsLiteral && !fi.IsInitOnly && fi.FieldType == typeof(string))
.Select(fi => (string)fi.GetValue(null)!)
.ToList();
}
public static string GetPermissionDescription(string permission)
{
return PermissionDescriptions.ContainsKey(permission) ? PermissionDescriptions[permission] : permission;
}
}
}

View File

@@ -0,0 +1,149 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 用户收货地址信息
/// </summary>
[Table("Addresses")]
public class Address
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 添加地址用户
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 收件人姓名
/// </summary>
[Column(TypeName = "varchar(128)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 邮件地址
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Email { get; set; } = string.Empty;
/// <summary>
/// 电话号码
/// </summary>
[Column(TypeName = "varchar(20)")]
public string Phone { get; set; } = string.Empty;
/// <summary>
/// 公司
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Company { get; set; } = string.Empty;
/// <summary>
/// 国家ID
/// </summary>
public long CountryId { get; set; }
/// <summary>
/// 国家
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Country { get; set; } = string.Empty;
/// <summary>
/// 省份
/// </summary>
public long ProvinceId { get; set; }
/// <summary>
/// 省、州
/// </summary>
[Column(TypeName = "varchar(100)")]
public string Province { get; set; } = string.Empty;
/// <summary>
/// 城市
/// </summary>
public long CityId { get; set; }
/// <summary>
/// 城市
/// </summary>
[Column(TypeName = "varchar(100)")]
public string City { get; set; } = string.Empty;
/// <summary>
/// 地区
/// </summary>
public long RegionId { get; set; }
/// <summary>
/// 地区街
/// </summary>
[Column(TypeName = "varchar(100)")]
public string Region { get; set; } = string.Empty;
/// <summary>
/// 邮政编码
/// </summary>
[Column(TypeName = "varchar(15)")]
public string PostalCode { get; set; } = string.Empty;
/// <summary>
/// 详细地址
/// </summary>
[Column(TypeName = "varchar(256)")]
public string AddressDetails { get; set; } = string.Empty;
/// <summary>
/// 完整地址
/// </summary>
[Column(TypeName = "varchar(1024)")]
public string FullAddress { get; set; } = string.Empty;
/// <summary>
/// 地址所在经度
/// </summary>
[Column(TypeName = "decimal(10,6)")]
public decimal Longitude { get; set; }
/// <summary>
/// 地址所在纬度
/// </summary>
[Column(TypeName = "decimal(10,6)")]
public decimal Latitude { get; set; }
/// <summary>
/// 是否是虚拟地址
/// </summary>
public bool IsVirtual { get; set; }
/// <summary>
/// 地址使用次数
/// </summary>
public int Count { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public bool IsDelete { get; set; }
/// <summary>
/// 建立时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,94 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 系统管理员表
/// </summary>
[Table("Admins")]
public class Admin
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 用户名
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Username { get; set; } = string.Empty;
/// <summary>
/// 登录密码
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Password { get; set; } = string.Empty;
/// <summary>
/// 邮箱
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Email { get; set; } = string.Empty;
/// <summary>
/// 手机号
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Mobile { get; set; } = string.Empty;
/// <summary>
/// 头像
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Avatar { get; set; } = string.Empty;
/// <summary>
/// 角色ID
/// </summary>
public int RoleId { get; set; }
/// <summary>
/// 时区校对
/// </summary>
[Column(TypeName = "varchar(4)")]
public string TimeOffset { get; set; } = "0";
/// <summary>
/// 账号数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 登录次数
/// </summary>
public int LoginCount { get; set; }
/// <summary>
/// 最后登录时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? LastLogin { get; set; }
/// <summary>
/// 最后登录时间
/// </summary>
[Column(TypeName = "varchar(50)")]
public string LastIp { get; set; } = string.Empty;
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,99 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 应用版本
/// </summary>
[Table("AppVersions")]
public class AppVersion
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属站点应用ID
/// </summary>
public long SiteId { get; set; }
/// <summary>
/// 运行平台
/// </summary>
public int Platform { get; set; }
/// <summary>
/// 应用名称KEY
/// </summary>
[Column(TypeName = "varchar(64)")]
public string AppName { get; set; } = string.Empty;
/// <summary>
/// 版本标题
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 版本
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Version { get; set; } = string.Empty;
/// <summary>
/// 主版本号(major)无法向下兼容时,需要递增
/// </summary>
[Column(TypeName = "varchar(64)")]
public int VersionX { get; set; }
/// <summary>
/// 次版本号(minor)新增新的特性时,需要递增
/// </summary>
[Column(TypeName = "varchar(64)")]
public int VersionY { get; set; }
/// <summary>
/// 修订版本号(patch)修复问题时,需要递增
/// </summary>
[Column(TypeName = "varchar(64)")]
public int VersionZ { get; set; }
/// <summary>
/// 版本日期
/// </summary>
[Column(TypeName = "varchar(64)")]
public int VersionDate { get; set; }
/// <summary>
/// 版本状态 例如b 表示bate版即测试版
/// </summary>
public int VersionState { get; set; }
/// <summary>
/// 更新内容说明
/// </summary>
[Column(TypeName = "text")]
public string Content { get; set; } = string.Empty;
/// <summary>
/// 版本状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,69 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 地区(国家、省、市、区)
/// </summary>
public class Area
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 上级ID
/// </summary>
public long ParentId { get; set; }
/// <summary>
/// 地区名称
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 首字母
/// </summary>
[Column(TypeName = "varchar(1)")]
public string Initial { get; set; } = string.Empty;
/// <summary>
/// 双字母代码
/// </summary>
[Column(TypeName = "varchar(2)")]
public string TwoLetterISOCode { get; set; } = string.Empty;
/// <summary>
/// 三字母代码
/// </summary>
[Column(TypeName = "varchar(3)")]
public string ThreeLetterISOCode { get; set; } = string.Empty;
/// <summary>
/// 数字代码
/// </summary>
public int NumericISOCode { get; set; }
/// <summary>
/// 是否允许配送
/// </summary>
public bool AllowShipping { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 显示排序
/// </summary>
public int DisplayOrder { get; set; }
}
}

View File

@@ -0,0 +1,119 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 分类
/// </summary>
public class Category
{
/// <summary>
/// 分类ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属站点应用ID
/// </summary>
public long SiteId { get; set; }
/// <summary>
/// 分类类型,1内容2产品3社区
/// </summary>
public int Type { get; set; }
/// <summary>
/// 上级分类ID
/// </summary>
public long ParentId { get; set; }
/// <summary>
/// 分类名称
/// </summary>
[Column(TypeName = "varchar(25)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 分类URL缩略名
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Slug { get; set; } = string.Empty;
/// <summary>
/// Meta描述介绍
/// </summary>
[Column(TypeName = "varchar(255)")]
public string MetaDescription { get; set; } = string.Empty;
/// <summary>
/// Meta关键词
/// </summary>
[Column(TypeName = "varchar(255)")]
public string MetaKeywords { get; set; } = string.Empty;
/// <summary>
/// 过滤属性IDs
/// </summary>
[Column(TypeName = "varchar(255)")]
public string FilterAttributes { get; set; } = string.Empty;
/// <summary>
/// 分类图片
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Image { get; set; } = string.Empty;
/// <summary>
/// 分类页 banner
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Banner { get; set; } = string.Empty;
/// <summary>
/// 只是一个节点
/// </summary>
public bool IsNode { get; set; }
/// <summary>
/// 是否可用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 层级深度
/// </summary>
public int Depth { get; set; }
/// <summary>
/// 层级路径
/// </summary>
[Column(TypeName = "varchar(100)")]
public string Path { get; set; } = string.Empty;
/// <summary>
/// 排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 统计量
/// </summary>
public int Count { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,84 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 评论
/// </summary>
[Table("Comments")]
public class Comment
{
/// <summary>
/// 分类ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属站点应用ID
/// </summary>
public long SiteId { get; set; }
/// <summary>
/// 发布评论用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 内容ID
/// </summary>
public long PostId { get; set; }
/// <summary>
/// 上级评论ID,0表示根评论
/// </summary>
public long ParentId { get; set; }
/// <summary>
/// 引用评论ID,0表示不引用
/// </summary>
public long QuoteId { get; set; }
/// <summary>
/// 评论信息
/// </summary>
[Column(TypeName = "text")]
public string Content { get; set; } = string.Empty;
/// <summary>
/// 支持的点赞数
/// </summary>
public int LikeCount { get; set; }
/// <summary>
/// 回复的评论数
/// </summary>
public int Replies { get; set; }
/// <summary>
/// 评论IP
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Ip { get ; set; } = string.Empty;
/// <summary>
/// 评论状态,0-待审核,1-已发布,2-垃圾评论,3-回收站
/// </summary>
public int Status { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,64 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 公司信息
/// </summary>
[Table("Corporations")]
public class Corporation
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 公司名称
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 店铺网点数量
/// </summary>
public int StoreCount { get; set; }
/// <summary>
/// 产品数量
/// </summary>
public int ProductCount { get; set; }
/// <summary>
/// 商品数量
/// </summary>
public int GoodsCount { get; set; }
/// <summary>
/// 数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 数据删除时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? DeleteTime { get; set; }
}
}

View File

@@ -0,0 +1,35 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 企业供应商关系
/// </summary>
[Table("CorporationManufacturerRelations")]
public class CorporationManufacturerRelation
{
/// <summary>
/// 产品属性关联数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 企业ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 供应制造商ID
/// </summary>
public long ManufacturerId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
}
}

View File

@@ -0,0 +1,96 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
[Table("CorporationStaffs")]
public class CorporationStaff
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 用户名
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Username { get; set; } = string.Empty;
/// <summary>
/// 登录密码
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Password { get; set; } = string.Empty;
/// <summary>
/// 邮箱
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Email { get; set; } = string.Empty;
/// <summary>
/// 手机号
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Mobile { get; set; } = string.Empty;
/// <summary>
/// 头像
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Avatar { get; set; } = string.Empty;
/// <summary>
/// 角色ID
/// </summary>
public int RoleId { get; set; }
/// <summary>
/// 时区校对
/// </summary>
[Column(TypeName = "varchar(4)")]
public string TimeOffset { get; set; } = "0";
/// <summary>
/// 账号数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 登录次数
/// </summary>
public int LoginCount { get; set; }
/// <summary>
/// 最后登录时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? LastLogin { get; set; }
/// <summary>
/// 最后登录时间
/// </summary>
[Column(TypeName = "varchar(50)")]
public string LastIp { get; set; } = string.Empty;
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,43 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 用户公司关系
/// </summary>
[Table("CorporationUserRelations")]
public class CorporationUserRelation
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,94 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 货币信息
/// </summary>
public class Currency
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public int Id { get; set; }
/// <summary>
/// 货币名称,系统
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 货币标题,识别
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 货币单位代码
/// </summary>
[Column(TypeName = "varchar(10)")]
public string CurrencyCode { get; set; }= string.Empty;
/// <summary>
/// 本地显示
/// </summary>
[Column(TypeName = "varchar(15)")]
public string DisplayLocale { get; set;} = string.Empty;
/// <summary>
/// 货币符号
/// </summary>
[Column(TypeName = "varchar(8)")]
public string Symbolic { get; set; } = string.Empty;
/// <summary>
/// 数字自定义格式化
/// </summary>
[Column(TypeName = "varchar(20)")]
public string CustomFormatting { get; set; } = string.Empty;
/// <summary>
/// 兑换汇率
/// </summary>
[Column(TypeName = "decimal(16, 4)")]
public decimal Rate { get; set; }
/// <summary>
/// 排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 是否显示
/// </summary>
public bool EnableDisplay { get; set; }
/// <summary>
/// 启用支付
/// </summary>
public bool EnablePay { get; set; }
/// <summary>
/// 是否可用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 建立时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,73 @@
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace Atomx.Common.Entities
{
/// <summary>
/// 货币与支付通道关联表
/// </summary>
public class CurrencyChannelRelation
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 货币支付通道标题
/// </summary>
public string Title { get; set; } = string.Empty;
/// <summary>
/// 货币ID
/// </summary>
public int CurrencyId { get; set; }
/// <summary>
/// 支付通道ID
/// </summary>
public int PayChannelId { get; set; }
/// <summary>
/// 每天可用开始时间
/// </summary>
public int StartTime { get; set; }
/// <summary>
/// 每天可用暂停时间
/// </summary>
public int EndTime { get; set; }
/// <summary>
/// 每天可用时间的时区
/// </summary>
public int TimeZone { get; set; }
/// <summary>
/// 通道费率
/// </summary>
public decimal Rate { get; set; }
/// <summary>
/// 扩展信息
/// </summary>
[Column(TypeName = "text")]
public string Extended { get; set; } = string.Empty;
/// <summary>
/// 通道状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 建立时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,71 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 语言
/// </summary>
[Table("Languages")]
public class Language
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int Id { get; set; }
/// <summary>
/// 语言名称
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 语言标题
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 语言名称
/// </summary>
[Column(TypeName = "varchar(25)")]
public string Culture { get; set; } = string.Empty;
/// <summary>
/// 国旗
/// </summary>
[Column(TypeName = "varchar(255)")]
public string FlagImage { get; set; } = string.Empty;
/// <summary>
/// 排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 是否可用,系统面
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 多语言资源的版本,可以是时间戳或哈希
/// </summary>
[Column(TypeName = "varchar(25)")]
public string ResourceVersion { get; set; } = string.Empty;
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,42 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 本地化多语言资源,用于系统文本多语言
/// </summary>
[Table("LocaleResources")]
public class LocaleResource
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 语言编码
/// </summary>
public int LanguageId { get; set; }
/// <summary>
/// 资源名称
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 资源内容值
/// </summary>
[Column(TypeName = "varchar(1000)")]
public string Value { get; set; } = string.Empty;
/// <summary>
/// 最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,46 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 数据本地化属性值,适用于数据多语言
/// </summary>
[Table("LocalizedProperties")]
public class LocalizedProperty
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 语言编码
/// </summary>
public int LanguageNumber { get; set; }
/// <summary>
/// 数据类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 数据实体ID
/// </summary>
public long EntityId { get; set; }
/// <summary>
/// 数据KEY
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Key { get; set; } = string.Empty;
/// <summary>
/// 数据值
/// </summary>
[Column(TypeName = "text")]
public string Value { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,88 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 制造商供应商数据
/// </summary>
[Table("Manufacturers")]
public class Manufacturer
{
/// <summary>
/// 制造商ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 制造商名称
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 是否是供应商
/// </summary>
public bool IsVendor { get; set; }
/// <summary>
/// 品牌LOGO
/// </summary>
[Column(TypeName = "varchar(300)")]
public string Logo { get; set; } = string.Empty;
/// <summary>
/// 品牌制造商描述
/// </summary>
[Column(TypeName = "varchar(512)")]
public string Description { get; set; } = string.Empty;
/// <summary>
/// Meta标题
/// </summary>
[Column(TypeName = "varchar(50)")]
public string MetaTitle { get; set; } = string.Empty;
/// <summary>
/// Meta标题
/// </summary>
[Column(TypeName = "varchar(255)")]
public string MetaKeywords { get; set; } = string.Empty;
/// <summary>
/// Meta标题
/// </summary>
[Column(TypeName = "varchar(512)")]
public string MetaDescription { get; set; } = string.Empty;
/// <summary>
/// 品牌产品数量
/// </summary>
public int Count { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 显示排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 建立时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,43 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 制造商产品关系
/// </summary>
[Table("ManufacturerProductRelations")]
public class ManufacturerProductRelation
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 供应制造商ID
/// </summary>
public long ManufacturerId { get; set; }
/// <summary>
/// 预设默认制造加工费
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal ProcessingFee { get; set; }
/// <summary>
/// 预设默认附加工费
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal AdditionalFee { get; set; }
}
}

View File

@@ -0,0 +1,45 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 物料原料类型数据
/// </summary>
[Table("Materials")]
public class Material
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 原料类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 原料归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 原料归属店铺网点ID
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 原料数量
/// </summary>
public decimal Quantity { get; set; }
/// <summary>
/// 数据最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,66 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 原料采购批次
/// </summary>
[Table("MaterialBatchs")]
public class MaterialBatch
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 类型:采购、借调、借调归还
/// </summary>
public int Type { get; set; }
/// <summary>
/// 原料数据ID
/// </summary>
public long MaterialId { get; set; }
/// <summary>
/// 原料归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 原料归属店铺网点ID
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 原料当前数量
/// </summary>
public decimal Quantity { get; set; }
/// <summary>
/// 原料批次总量
/// </summary>
public decimal TotalQuantity { get; set; }
/// <summary>
/// 原料采购价格
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,81 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 原料详细记录,采购入库、使用出库、借调、归还、盘点校对
/// </summary>
[Table("MaterialRecords")]
public class MaterialRecord
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 操作类型,采购入库、使用出库、借调出库、归还入库、盘点校对
/// </summary>
public int Type { get; set; }
/// <summary>
/// 原料Id
/// </summary>
public long MaterialId { get; set; }
/// <summary>
/// 归属原料批次ID
/// </summary>
public long MaterialBatchId { get; set; }
/// <summary>
/// 归属公司id
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 数据店铺网点id
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 操作用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 原料价格
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 数量
/// </summary>
public decimal Quantity { get; set; }
/// <summary>
/// 使用原料产生的费用
/// </summary>
public decimal Expenses { get; set; }
/// <summary>
/// 标记
/// </summary>
public int Mark { get; set; }
/// <summary>
/// 备注说明
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Note { get; set; } = string.Empty;
/// <summary>
/// 注册数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
}
}

View File

@@ -0,0 +1,98 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 菜单数据,可用于后台菜单和其他菜单通过Type约定
/// </summary>
[Table("Menus")]
public class Menu
{
/// <summary>
/// 分类ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 分类类型,1-管理后台系统
/// </summary>
public int Type { get; set; }
/// <summary>
/// 上级分类ID
/// </summary>
public long ParentId { get; set; }
/// <summary>
/// 分类名称
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 分类图标
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Icon { get; set; } = string.Empty;
/// <summary>
/// 菜单分组,针对折叠菜单效果
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Key { get; set; } = string.Empty;
/// <summary>
/// 菜单链接的URL
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Url { get; set; } = string.Empty;
/// <summary>
/// 权限代码
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Code { get; set; } = string.Empty;
/// <summary>
/// 是否外链接
/// </summary>
public bool IsLink { get; set; }
/// <summary>
/// 是否可用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 层级深度
/// </summary>
public int Depth { get; set; }
/// <summary>
/// 层级路径
/// </summary>
[Column(TypeName = "varchar(100)")]
public string Path { get; set; } = string.Empty;
/// <summary>
/// 排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,65 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 系统消息模版
/// </summary>
[Table("MessageTemplates")]
public class MessageTemplate
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 消息模板类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 信息模板KEY
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Key { get; set; } = string.Empty;
/// <summary>
/// 消息模板名称
/// </summary>
[Column(TypeName = "varchar(256)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 消息标题
/// </summary>
[Column(TypeName = "varchar(256)")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 消息内容
/// </summary>
[Column(TypeName = "text")]
public string Body { get; set; } = string.Empty;
/// <summary>
/// 是否可用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,363 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 订单
/// </summary>
[Table("Orders")]
public class Order
{
// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 订单号
/// </summary>
public long OrderNumber { get; set; }
/// <summary>
/// 平台ID1自有商城2淘宝3天猫4京东5拼多多6抖音7快手8小红书等
/// </summary>
public int PlatformId { get; set; }
/// <summary>
/// 平台订单号
/// </summary>
public long PlatformOrderNumber { get; set; }
/// <summary>
/// 订单类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 是否虚拟数据
/// </summary>
public bool IsVirtual { get; set; }
/// <summary>
/// 订单商品供应商ID
/// </summary>
public long VendorId { get; set; }
/// <summary>
/// 成交店铺ID
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 销售人员Id
/// </summary>
public long SalespersonId { get; set; }
/// <summary>
/// 下单用户
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 收件人姓名
/// </summary>
[Column(TypeName = "varchar(128)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 邮件地址
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Email { get; set; } = string.Empty;
/// <summary>
/// 电话号码
/// </summary>
[Column(TypeName = "varchar(20)")]
public string Phone { get; set; } = string.Empty;
/// <summary>
/// 公司
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Company { get; set; } = string.Empty;
/// <summary>
/// 国家ID
/// </summary>
public long CountryId { get; set; }
/// <summary>
/// 国家
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Country { get; set; } = string.Empty;
/// <summary>
/// 省份
/// </summary>
public long ProvinceId { get; set; }
/// <summary>
/// 省、州
/// </summary>
[Column(TypeName = "varchar(100)")]
public string Province { get; set; } = string.Empty;
/// <summary>
/// 城市
/// </summary>
public long CityId { get; set; }
/// <summary>
/// 城市
/// </summary>
[Column(TypeName = "varchar(100)")]
public string City { get; set; } = string.Empty;
/// <summary>
/// 地区
/// </summary>
public long RegionId { get; set; }
/// <summary>
/// 地区街
/// </summary>
[Column(TypeName = "varchar(100)")]
public string Region { get; set; } = string.Empty;
/// <summary>
/// 邮政编码
/// </summary>
[Column(TypeName = "varchar(15)")]
public string PostalCode { get; set; } = string.Empty;
/// <summary>
/// 详细地址
/// </summary>
[Column(TypeName = "varchar(256)")]
public string AddressDetails { get; set; } = string.Empty;
/// <summary>
/// 完整地址
/// </summary>
[Column(TypeName = "varchar(1024)")]
public string FullAddress { get; set; } = string.Empty;
/// <summary>
/// 地址所在经度
/// </summary>
[Column(TypeName = "decimal(10,6)")]
public decimal Longitude { get; set; }
/// <summary>
/// 地址所在纬度
/// </summary>
[Column(TypeName = "decimal(10,6)")]
public decimal Latitude { get; set; }
/// <summary>
/// 订单原市场总价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal TotalMarketPrice { get; set; }
/// <summary>
/// 商品销售总价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal TotalPrice { get; set; }
/// <summary>
/// 折扣总额
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal DiscountAmount { get; set; }
/// <summary>
/// 订单总价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal OrderPrice { get; set; }
/// <summary>
/// 订单个数
/// </summary>
public int ProductCount { get; set; }
/// <summary>
/// 购买产品总数量
/// </summary>
public int TotalQuantity { get; set; }
/// <summary>
/// 税费
/// </summary>
[Column(TypeName = "decimal(8,4)")]
public decimal Taxes { get; set; }
/// <summary>
/// 运费
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal ShippingCost { get; set; }
/// <summary>
/// 订单使用的优惠券ID
/// </summary>
public long CouponId { get; set; }
/// <summary>
/// 客户支付单ID
/// </summary>
public long OrderPaymentId { get; set; }
/// <summary>
/// 付款方式,支付通道
/// </summary>
public int PaymentChannel { get; set; }
/// <summary>
/// 订单实付总额
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal PaymentAmount { get; set; }
/// <summary>
/// 支付状态
/// </summary>
public int PaymentStatus { get; set; }
/// <summary>
/// 付款时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? PaymentTime { get; set; }
/// <summary>
/// 卖家利润
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal StoreProfit { get; set; }
/// <summary>
/// 卖家店铺是否提货
/// </summary>
public bool StorePickedUp { get; set; }
/// <summary>
/// 卖点店铺提货时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? StorePickedUpTime { get; set; }
/// <summary>
/// 卖家回款时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? StorePaybackTime { get; set; }
/// <summary>
/// 卖家订单利润结算时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? StoreProfitSettlementTime { get; set; }
/// <summary>
/// 供应商是否确认订单
/// </summary>
public bool IsConfirmed { get; set; }
/// <summary>
/// 供应商订单确认时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? ConfirmedTime { get; set; }
/// <summary>
/// 是否已评论
/// </summary>
public bool Reviewed { get; set; }
/// <summary>
/// 扩展信息
/// </summary>
[Column(TypeName = "text")]
public string Extended { get; set; } = string.Empty;
/// <summary>
/// 订单状态,(待付款,待发货,待签收,待结算,订单取消,订单过期,支付失败)
/// </summary>
public int Status { get; set; }
/// <summary>
/// 订单备注说明
/// </summary>
[Column(TypeName = "varchar(255)")]
public string? Remark { get; set; } = string.Empty;
/// <summary>
/// 卖家下单备注信息
/// </summary>
[Column(TypeName = "varchar(255)")]
public string? Message { get; set; } = string.Empty;
/// <summary>
/// 物流快递公司编号
/// </summary>
public long ExpressId { get; set; }
/// <summary>
/// 快递公司
/// </summary>
[Column(TypeName = "varchar(25)")]
public string ExpressName { get; set; } = string.Empty;
/// <summary>
/// 快递单号
/// </summary>
[Column(TypeName = "varchar(30)")]
public string WaybillNumber { get; set; } = string.Empty;
/// <summary>
/// 发货状态
/// </summary>
public int DeliveryStatus { get; set; }
/// <summary>
/// 发货时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? DeliveryTime { get; set; }
/// <summary>
/// 包裹签收时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? SigningTime { get; set; }
/// <summary>
/// 下单时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,186 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 订单详情数据
/// </summary>
[Table("OrderItems")]
public class OrderItem
{
/// <summary>
/// 订单商品明细ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 订单ID
/// </summary>
public long OrderId { get; set; }
/// <summary>
/// 平台ID1自有商城2淘宝3天猫4京东5拼多多6抖音7快手8小红书等
/// </summary>
public int PlatformId { get; set; }
/// <summary>
/// 下单购买用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 仓库ID
/// </summary>
public long WarehouseId { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 商城产品信息ID
/// </summary>
public long ProductListingId { get; set; }
/// <summary>
/// 销售产品的店铺ID
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// SKU ID0则表示无SKU ID
/// </summary>
public long SkuId { get; set; }
/// <summary>
/// 供应商ID
/// </summary>
public long VendorId { get; set; }
/// <summary>
/// 品牌ID
/// </summary>
public long ManufacturerId { get; set; }
/// <summary>
/// 商品名称
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 商品封面图
/// </summary>
[Column(TypeName = "varchar(256)")]
public string Image { get; set; } = string.Empty;
/// <summary>
/// 购买数量
/// </summary>
public int Quantity { get; set; }
/// <summary>
/// 是否允许退货
/// </summary>
public bool AllowReturn { get; set; }
/// <summary>
/// 是否允许换货
/// </summary>
public bool AllowExchange { get; set; }
/// <summary>
/// SKU数据 JSON信息
/// </summary>
[Column(TypeName = "text")]
public string AttributesJson { get; set; } = string.Empty;
/// <summary>
/// 产品SKU编码
/// </summary>
[Column(TypeName = "varchar(20)")]
public string SkuNumber { get; set; } = string.Empty;
/// <summary>
/// 运费模板ID,0表示全国免费包邮
/// </summary>
public long ShippingId { get; set; }
/// <summary>
/// 发货省份
/// </summary>
public long ProvinceId { get; set; }
/// <summary>
/// 发货城市
/// </summary>
public long CityId { get; set; }
/// <summary>
/// 市场价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal MarketPrice { get; set; }
/// <summary>
/// 成本价单价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal? ProductCost { get; set; }
/// <summary>
/// 销售价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal Price { get; set; }
/// <summary>
/// 分摊优惠金额单价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal DiscountAmount { get; set; }
/// <summary>
/// 卖家利润
/// </summary>
[Column(TypeName = "decimal(8,4)")]
public decimal StoreProfit { get; set; }
/// <summary>
/// 售后状态
/// </summary>
public int AfterSalesStatus { get; set; }
/// <summary>
/// 售后退款金额
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal RefundAmount { get; set; }
/// <summary>
/// 是否已晒单
/// </summary>
public bool Reviewed { get; set; }
/// <summary>
/// 商品留言
/// </summary>
[Column(TypeName = "varchar(100)")]
public string? Message { get; set; } = string.Empty;
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
}
}

View File

@@ -0,0 +1,54 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
[Table("OrderLogs")]
public class OrderLog
{
/// <summary>
/// 日志数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 订单ID
/// </summary>
public long OrderId { get; set; }
/// <summary>
/// 产生动作的用户ID
/// </summary>
public long? Operator { get; set; }
/// <summary>
/// 日志类型
/// </summary>
public int? Type { get; set; }
/// <summary>
/// 订单状态
/// </summary>
public int OrderStatus { get; set; }
/// <summary>
/// 备注说明
/// </summary>
[Column(TypeName = "varchar(300)")]
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 操作IP
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Ip { get; set; } = string.Empty;
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
}
}

View File

@@ -0,0 +1,78 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
public class PaymentChannel
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public int Id { get; set; }
/// <summary>
/// 付款方式,银行、微信、支付宝USDT
/// </summary>
public int Type { get; set; }
/// <summary>
/// 支付网络,区块链-TRC20Online-WechatBank-ICBC
/// </summary>
public int Network { get; set; }
/// <summary>
/// 支付渠道名称
/// </summary>
[Column(TypeName = "varchar(20)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 支付渠道标题名称
/// </summary>
[Column(TypeName = "varchar(20)")]
public string Title { get; set; }=string.Empty;
/// <summary>
/// 描述说明
/// </summary>
[Column(TypeName = "varchar(512)")]
public string Description { get; set; } = string.Empty;
/// <summary>
/// 收款账号
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Account { get; set; } = string.Empty;
/// <summary>
/// 支付通道的设置
/// </summary>
[Column(TypeName = "text")]
public string Config { get; set; } = string.Empty;
/// <summary>
/// 排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,34 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
[Table("Permissions")]
public class Permission
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 权限名称 例如: "User.Read"
/// </summary>
[Column(TypeName = "varchar(128)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 权限点说明
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Description { get; set; } = string.Empty;
/// <summary>
/// 权限分类
/// </summary>
[Column(TypeName = "varchar(128)")]
public string Category { get; set; } = string.Empty; // 权限分类
}
}

View File

@@ -0,0 +1,60 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 图片
/// </summary>
[Table("Pictures")]
public class Picture
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 图片类别
/// </summary>
public int Type { get; set; } = 0;
/// <summary>
/// 上传文件名
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 文件大小
/// </summary>
public int FileSize { get; set; } = 0;
/// <summary>
/// 文件存放位置
/// </summary>
[Column(TypeName = "varchar(250)")]
public string Path { get; set; } = string.Empty;
/// <summary>
/// 文件访问域名
/// </summary>
[Column(TypeName = "varchar(250)")]
public string Domain { get; set; } = string.Empty;
/// <summary>
/// 文件hash
/// </summary>
[Column(TypeName = "varchar(128)")]
public string SHA256Hash { get; set; } = string.Empty;
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Atomx.Common.Entities
{
public class Post
{
}
}

View File

@@ -0,0 +1,72 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 价格走势
/// </summary>
[Table("PriceTrends")]
public class PriceTrend
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 日期
/// </summary>
public int Date { get; set; }
/// <summary>
/// 类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 当前价格
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 最低价格
/// </summary>
public decimal LowestPrice { get; set; }
/// <summary>
/// 最高价格
/// </summary>
public decimal HighestPrice { get; set; }
/// <summary>
/// 当前零售价格
/// </summary>
public decimal RetailPrice { get; set; }
/// <summary>
/// 最低零售价格
/// </summary>
public decimal LowestRetailPrice { get; set; }
/// <summary>
/// 最高零售价格
/// </summary>
public decimal HighestRetailPrice { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,201 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
///
/// </summary>
[Table("Products")]
public class Product
{
/// <summary>
/// 产品ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 发布的企业用户ID
/// </summary>
public long CorporationStaffId { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 卖家店铺ID
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 产品类型ID
/// </summary>
public long ProductTypeId { get; set; }
/// <summary>
/// 分类路径
/// </summary>
[Column(TypeName = "varchar(200)")]
public string? CategoryPath { get; set; } = string.Empty;
/// <summary>
/// 分类ID
/// </summary>
public long CategoryId { get; set; }
/// <summary>
/// 制造商ID
/// </summary>
public long ManufacturerId { get; set; }
/// <summary>
/// 产品名称
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Title { get; set; } = string.Empty;
/// <summary>
/// 产品唯一编码
/// </summary>
[Column(TypeName = "varchar(20)")]
public string? SIN { get; set; } = string.Empty;
/// <summary>
/// 封面图片
/// </summary>
[Column(TypeName = "varchar(256)")]
public string? Image { get; set; } = string.Empty;
/// <summary>
/// 产品图片JSON
/// </summary>
[Column(TypeName = "text")]
public string? Photos { get; set; } = string.Empty;
/// <summary>
/// 产品卖点
/// </summary>
[Column(TypeName = "varchar(255)")]
public string? Feature { get; set; } = string.Empty;
/// <summary>
/// 产品简介
/// </summary>
[Column(TypeName = "varchar(255)")]
public string? Description { get; set; } = string.Empty;
/// <summary>
/// 规格信息Json
/// </summary>
[Column(TypeName = "text")]
public string? SpecificationJson { get; set; } = string.Empty;
/// <summary>
/// 重量
/// </summary>
[Column(TypeName = "decimal(6,2)")]
public decimal? Weight { get; set; }
/// <summary>
/// 最小重量有SKU的时候生效
/// </summary>
[Column(TypeName = "decimal(6,2)")]
public decimal? MinWeight { get; set; }
/// <summary>
/// 最大重量有SKU的时候生效
/// </summary>
[Column(TypeName = "decimal(6,2)")]
public decimal? MaxWeight { get; set; }
/// <summary>
/// 市场价,划线价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal MarketPrice { get; set; }
/// <summary>
/// 销售标价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal Price { get; set; }
/// <summary>
/// SKU组合的产品价格信息
/// </summary>
[Column(TypeName = "text")]
public string? SkuPrices { get; set; } = string.Empty;
/// <summary>
/// 商品扩展信息
/// </summary>
[Column(TypeName = "text")]
public string Extended { get; set; } = string.Empty;
/// <summary>
/// 排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 产品信息审核状态
/// </summary>
public int ReviewStatus { get; set; }
/// <summary>
/// 库存管理模式,0不跟踪库存1以产品跟踪库存2以SKU跟踪库存
/// </summary>
public int InventoryMethod { get; set; }
/// <summary>
/// 商品库存
/// </summary>
public int StockQuantity { get; set; }
/// <summary>
/// 总销售数量
/// </summary>
public int SalesQuantity { get; set; }
/// <summary>
/// 图片数量
/// </summary>
public int PictureCount { get; set; }
/// <summary>
/// 产品状态0未上架1上架
/// </summary>
public int Status { get; set; }
/// <summary>
/// 是否逻辑删除
/// </summary>
public bool Deleted { get; set; }
/// <summary>
/// 删除时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? DeletedTime { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,84 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 商品属性
/// </summary>
[Table("ProductAttributes")]
public class ProductAttribute
{
/// <summary>
/// 属性ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 分类ID
/// </summary>
public long CategoryId { get; set; }
/// <summary>
/// 上级属性,用于规格属性做分组
/// </summary>
public long ParentId { get; set; }
/// <summary>
/// 属性名称
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 必须填写重量
/// </summary>
public bool WeightIsRequired { get; set; } = false;
/// <summary>
/// 重量单位,1毫克mg2克g,3千克kg,4吨t5磅lb6盎司oz
/// </summary>
public int WeightUnit { get; set; }
/// <summary>
/// 属性控件类型1选项0文本
/// </summary>
public int ControlType { get; set; }
/// <summary>
/// 使用属性的产品数量
/// </summary>
public int Count { get; set; }
/// <summary>
/// 展示排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 是否是必须的属性
/// </summary>
public bool IsRequired { get; set; }
/// <summary>
/// 数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,127 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 产品属性组合商品数据
/// </summary>
[Table("ProductAttributeCombinations")]
public class ProductAttributeCombination
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 供应制造商ID
/// </summary>
public long ManufacturerId { get; set; }
/// <summary>
/// 属性JSON
/// </summary>
[Column(TypeName = "text")]
public string AttributesJson { get; set; } = string.Empty;
/// <summary>
/// 库存数量
/// </summary>
public int StockQuantity { get; set; }
/// <summary>
/// 销售数量
/// </summary>
public int SalesQuantity { get; set; }
/// <summary>
/// SKU编码
/// </summary>
[Column(TypeName = "varchar(20)")]
public string SkuNumber { get; set; } = string.Empty;
/// <summary>
/// 重量
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal Weight { get; set; }
/// <summary>
/// 重量单位1克2千克3磅4盎司
/// </summary>
public int WeightUnit { get; set; }
/// <summary>
/// 销售加工费
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal ProcessCharge { get; set; }
/// <summary>
/// 加工费成本
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal ProcessCost { get; set; }
/// <summary>
/// 销售附加费
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal Surcharge { get; set; }
/// <summary>
/// 附加费成本
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal SurchargeCost { get; set; }
/// <summary>
/// SKU的市场价划线价
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal MarketPrice { get; set; }
/// <summary>
/// SKU的销售价格
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal Price { get; set; }
/// <summary>
/// 标记
/// </summary>
public int Mark { get; set; }
/// <summary>
/// 备注说明
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Note { get; set; } = string.Empty;
/// <summary>
/// 是否禁用停售
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,64 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 产品属性选项
/// </summary>
[Table("ProductAttributeOptions")]
public class ProductAttributeOption
{
/// <summary>
/// 预设值ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 产品属性ID
/// </summary>
public long AttributeId { get; set; }
/// <summary>
/// 预设值名称
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Value { get; set; } = string.Empty;
/// <summary>
/// 属性值使用量
/// </summary>
public int Count { get; set; }
/// <summary>
/// 展示排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 是否通用的
/// </summary>
public bool Standard { get; set; }
/// <summary>
/// 数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,39 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 产品属性关系表
/// </summary>
[Table("ProductAttributeRelations")]
public class ProductAttributeRelation
{
/// <summary>
/// 产品属性关联数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 产品属性ID
/// </summary>
public long AttributeId { get; set; }
/// <summary>
/// 属性
/// </summary>
public bool Image { get; set; }
/// <summary>
/// 展示排序
/// </summary>
public int DisplayOrder { get; set; }
}
}

View File

@@ -0,0 +1,67 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 产品属性值表
/// </summary>
[Table("ProductAttributeValues")]
public class ProductAttributeValue
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 预设值ID
/// </summary>
public long OptionId { get; set; }
/// <summary>
/// 产品属性关系数据ID
/// </summary>
public long ProductAttributeRelationId { get; set; }
/// <summary>
/// 属性值名称
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 属性图片
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Image { get; set; } = string.Empty;
/// <summary>
/// 重量
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal Weight { get; set; }
/// <summary>
/// 重量单位1克2千克3磅4盎司
/// </summary>
public int WeightUnit { get; set; }
/// <summary>
/// 是否是加重的
/// </summary>
public bool IsAddWeight { get; set; } = false;
/// <summary>
/// 展示排序
/// </summary>
public int DisplayOrder { get; set; }
}
}

View File

@@ -0,0 +1,66 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 产品变更日志
/// </summary>
[Table("ProductChangeLogs")]
public class ProductChangeLog
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 变更类型,新增,编辑,删除,恢复
/// </summary>
public int ChangeType { get; set; }
/// <summary>
/// 操作用户ID
/// </summary>
public long? Operator { get; set; }
/// <summary>
/// 操作账号
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Username { get; set; } = string.Empty;
/// <summary>
/// 日志操作方
/// </summary>
public int OperatorParty { get; set; }
/// <summary>
/// 操作摘要
/// </summary>
[Column(TypeName = "varchar(256)")]
public string Summary { get; set; } = string.Empty;
/// <summary>
/// 操作内容
/// </summary>
[Column(TypeName = "text")]
public string Details { get; set; } = string.Empty;
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
}
}

View File

@@ -0,0 +1,56 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 产品仓库库存表
/// </summary>
[Table("ProductInventories")]
public class ProductInventory
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 产品属性组合ID
/// </summary>
public long ProductAttributeCombinationId { get; set; }
/// <summary>
/// 仓库ID
/// </summary>
public long WarehouseId { get; set; }
/// <summary>
/// 库存数量
/// </summary>
public int StockQuantity { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,97 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 产品库存记录
/// </summary>
[Table("ProductInventoryLogs")]
public class ProductInventoryLog
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 产生动作的用户ID
/// </summary>
public long? Operator { get; set; }
/// <summary>
/// 类型,0入库1出库初始
/// </summary>
public int? Type { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 归属买家店铺或货仓
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 供应制造商ID
/// </summary>
public long ManufacturerId { get; set; }
/// <summary>
/// 仓库ID
/// </summary>
public long WarehouseId { get; set; }
/// <summary>
/// 产品属性组合ID
/// </summary>
public long ProductAttributeCombinationId { get; set; }
/// <summary>
/// 订单ID
/// </summary>
public long OrderId { get; set; }
/// <summary>
/// 操作数量
/// </summary>
public int ChangeAmount { get; set; }
/// <summary>
/// 重量
/// </summary>
[Column(TypeName = "decimal(18,4)")]
public decimal Weight { get; set; }
/// <summary>
/// 操作之前库存
/// </summary>
public int BeforeStock { get; set; }
/// <summary>
/// 操作之后库存
/// </summary>
public int AfterStock { get; set; }
/// <summary>
/// 备注说明
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Note { get; set; } = string.Empty;
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
}
}

View File

@@ -0,0 +1,224 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 自有商城或平台网点的商品列表。
/// </summary>
[Table("ProductListings")]
public class ProductListing
{
/// <summary>
/// 产品ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 基础产品信息
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 发布的企业用户ID
/// </summary>
public long CorporationStaffId { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 平台ID1自有商城2淘宝3天猫4京东5拼多多6抖音7快手8小红书等
/// </summary>
public int PlatformId { get; set; }
/// <summary>
/// 卖家店铺ID
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 产品类型ID
/// </summary>
public long ProductTypeId { get; set; }
/// <summary>
/// SEO Title
/// </summary>
[Column(TypeName = "varchar(255)")]
public string MetaTitle { get; set; } = string.Empty;
/// <summary>
/// SEO Description
/// </summary>
[Column(TypeName = "varchar(512)")]
public string MetaDescription { get; set; } = string.Empty;
/// <summary>
/// 产品Slug
/// </summary>
public string Slug { get; set; } = string.Empty;
/// <summary>
/// 产品特点标签
/// </summary>
[Column(TypeName = "varchar(100)")]
public string? Tags { get; set; } = string.Empty;
/// <summary>
/// 产品详细介绍
/// </summary>
[Column(TypeName = "text")]
public string Body { get; set; } = string.Empty;
/// <summary>
/// 订单最小数量
/// </summary>
public int OrderMinimumQuantity { get; set; }
/// <summary>
/// 订单最多数量
/// </summary>
public int OrderMaximumQuantity { get; set; }
/// <summary>
/// 是否允许退货
/// </summary>
public bool AllowReturn { get; set; }
/// <summary>
/// 是否允许换货
/// </summary>
public bool AllowExchange { get; set; }
/// <summary>
/// 是否独立发货
/// </summary>
public bool SingleShip { get; set; }
/// <summary>
/// 预计运输天数
/// </summary>
public int ShippingDays { get; set; }
/// <summary>
/// 运费模板ID
/// </summary>
public long ShippingId { get; set; }
/// <summary>
/// 精选
/// </summary>
public bool IsFeatured { get; set; }
/// <summary>
/// 是否 best
/// </summary>
public bool IsBest { get; set; }
/// <summary>
/// 是否标注新品
/// </summary>
public bool IsNew { get; set; }
/// <summary>
/// 暂停销售,前台处理成已售罄
/// </summary>
public bool StopSales { get; set; }
/// <summary>
/// 产品信息审核状态
/// </summary>
public int ReviewStatus { get; set; }
/// <summary>
/// 商品库存
/// </summary>
public int StockQuantity { get; set; }
/// <summary>
/// 总销售数量
/// </summary>
public int SalesQuantity { get; set; }
/// <summary>
/// 评分
/// </summary>
public double Ratings { get; set; }
/// <summary>
/// 5颗星
/// </summary>
public int FiveStars { get; set; }
/// <summary>
/// 4课星
/// </summary>
public int FourStars { get; set; }
/// <summary>
/// 三颗星
/// </summary>
public int ThreeStars { get; set; }
/// <summary>
/// 两颗星
/// </summary>
public int TwoStars { get; set; }
/// <summary>
/// 一颗星
/// </summary>
public int OneStars { get; set; }
/// <summary>
/// 评论数量
/// </summary>
public int ReviewsCount { get; set; }
/// <summary>
/// 总浏览次数
/// </summary>
public int ViewsCount { get; set; }
/// <summary>
/// 产品状态0未上架1上架
/// </summary>
public int Status { get; set; }
/// <summary>
/// 是否逻辑删除
/// </summary>
public bool Deleted { get; set; }
/// <summary>
/// 删除时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? DeletedTime { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,42 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
[Table("ProductPictures")]
public class ProductPicture
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 图片类型封面SKU
/// </summary>
public int Type { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 产品属性组合ID
/// </summary>
public long ProductAttributeCombination { get; set; }
/// <summary>
/// 图片ID
/// </summary>
public long FileId { get; set; }
/// <summary>
/// 显示排序
/// </summary>
public int DisplayOrder { get; set; }
}
}

View File

@@ -0,0 +1,68 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 角色
/// </summary>
[Table("Roles")]
public class Role
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public int Id { get; set; }
/// <summary>
/// 角色类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 角色名称
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 说明
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Description { get; set; } = string.Empty;
/// <summary>
/// 权限
/// </summary>
[Column(TypeName = "text")]
public string Permission { get; set; } = string.Empty;
/// <summary>
/// 是否系统角色
/// </summary>
public bool IsSystemRole { get; set; }
/// <summary>
/// 角色用户数量
/// </summary>
public int Count { get; set; }
/// <summary>
/// 是否可用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,47 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 系统设置配置
/// </summary>
[Table("Settings")]
public class Setting
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属的网站应用Id
/// </summary>
public long SiteId { get; set; }
/// <summary>
/// 系统设置KEY
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Key { get; set; } = string.Empty;
/// <summary>
/// 配置类型,0 系统设置,
/// </summary>
public int Type { get; set; }
/// <summary>
/// 标题名称
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 系统设置项
/// </summary>
[Column(TypeName = "text")]
public string Content { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,47 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 站点应用
/// </summary>
public class SiteApp
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 网站应用类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 网站应用名称
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 是否可用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 建立时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,69 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 规格属性
/// </summary>
[Table("SpecificationAttributes")]
public class SpecificationAttribute
{
/// <summary>
/// 属性ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 分类ID
/// </summary>
public long CategoryId { get; set; }
/// <summary>
/// 上级属性,用于规格属性做分组
/// </summary>
public long ParentId { get; set; }
/// <summary>
/// 属性名称
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 属性控件类型1选项2文本
/// </summary>
public int ControlType { get; set; }
/// <summary>
/// 使用属性的产品数量
/// </summary>
public int Count { get; set; }
/// <summary>
/// 展示排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,59 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 规格属性选项
/// </summary>
[Table("SpecificationAttributeOptions")]
public class SpecificationAttributeOption
{
/// <summary>
/// 预设值ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 产品属性ID
/// </summary>
public long SpecificationId { get; set; }
/// <summary>
/// 预设值名称
/// </summary>
[Column(TypeName = "varchar(50)")]
public string Value { get; set; } = string.Empty;
/// <summary>
/// 属性值使用量
/// </summary>
public int Count { get; set; }
/// <summary>
/// 展示排序
/// </summary>
public int DisplayOrder { get; set; }
/// <summary>
/// 数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,59 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 店铺
/// </summary>
[Table("Stores")]
public class Store
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 上级ID用于团队内部分组
/// </summary>
public int ParentId { get; set; }
/// <summary>
/// 店铺类型,网店,实体店,档口,直播间
/// </summary>
public int Type { get; set; }
/// <summary>
/// 名称
/// </summary>
[Column(TypeName = "varchar(64)")]
public required string Name { get; set; }
/// <summary>
/// 数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 数据删除时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? DeleteTime { get; set; }
}
}

View File

@@ -0,0 +1,47 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 店铺产品清单
/// </summary>
[Table("StoreProductItems")]
public class StoreProductItem
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 店铺
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 产品ID
/// </summary>
public long ProductId { get; set; }
/// <summary>
/// 库存数量
/// </summary>
public int StockQuantity { get; set; }
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,84 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 上传的文件
/// </summary>
[Table("UploadFiles")]
public class UploadFile
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属站点应用ID
/// </summary>
public long SiteId { get; set; }
/// <summary>
/// 文件类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 文件名
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 存放路径
/// </summary>
[Column(TypeName = "varchar(128)")]
public string Path { get; set; } = string.Empty;
/// <summary>
/// 文件扩展
/// </summary>
[Column(TypeName = "varchar(12)")]
public string Extension { get; set; } = string.Empty;
/// <summary>
/// 文件扩展
/// </summary>
[Column(TypeName = "varchar(32)")]
public string ContentType { get; set; } = string.Empty;
/// <summary>
/// 文件hash
/// </summary>
[Column(TypeName = "varchar(128)")]
public string SHA256Hash { get; set; } = string.Empty;
/// <summary>
/// 文件大小,单位:字节
/// </summary>
public int Size { get; set; }
/// <summary>
/// 创建用户ID
/// </summary>
public long CreateUid { get; set; }
/// <summary>
/// 创建用户名
/// </summary>
[Column(TypeName = "varchar(32)")]
public string CreateBy { get; set; } = string.Empty;
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,58 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 用户数据
/// </summary>
[Table("Users")]
public class User
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 用户名
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 邮箱
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Email { get; set; } = string.Empty;
/// <summary>
/// 手机号
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Mobile { get; set; } = string.Empty;
/// <summary>
/// 头像
/// </summary>
[Column(TypeName = "varchar(64)")]
public string Avatar { get; set; } = string.Empty;
/// <summary>
/// 登录密码
/// </summary>
[Column(TypeName = "varchar(32)")]
public string Password { get; set; } = string.Empty;
/// <summary>
/// 注册数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,51 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 用户资产数据表
/// </summary>
public class UserAsset
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 类型
/// </summary>
public int Type { get; set; }
/// <summary>
/// 资产名称ID
/// </summary>
public long CurrencyId { get; set; }
/// <summary>
/// 总额
/// </summary>
public decimal Amount { get; set; }
/// <summary>
/// 余额
/// </summary>
public decimal Balance { get; set; }
/// <summary>
/// 冻结数量
/// </summary>
public decimal FrozenAmount { get; set; }
/// <summary>
/// 数据最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,45 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 用户资料
/// </summary>
[Table("UserMetas")]
public class UserMeta
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 字段KEY
/// </summary>
[Column(TypeName = "varchar(255)")]
public string MetaKey { get; set; } = string.Empty;
/// <summary>
/// 存储值
/// </summary>
[Column(TypeName = "text")]
public string MetaValue { get; set; } = string.Empty;
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据最后更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,43 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 用户店铺关系
/// </summary>
[Table("UserStoreRelations")]
public class UserStoreRelation
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 店铺ID
/// </summary>
public long StoreId { get; set; }
/// <summary>
/// 数据状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
/// <summary>
/// 数据更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,47 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 仓库数据
/// </summary>
[Table("Warehouses")]
public class Warehouse
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 归属公司ID
/// </summary>
public long CorporationId { get; set; }
/// <summary>
/// 分类名称
/// </summary>
[Column(TypeName = "varchar(25)")]
public string Name { get; set; } = string.Empty;
/// <summary>
/// 是否可用
/// </summary>
public bool Enabled { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime? UpdateTime { get; set; }
}
}

View File

@@ -0,0 +1,41 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Atomx.Common.Entities
{
/// <summary>
/// 出入库记录
/// </summary>
[Table("WarehouseStockRecords")]
public class WarehouseStockRecord
{
/// <summary>
/// 数据ID
/// </summary>
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
public long Id { get; set; }
/// <summary>
/// 类型,0入库1出库初始
/// </summary>
public int? Type { get; set; }
/// <summary>
/// 产生动作的用户ID
/// </summary>
public long? Operator { get; set; }
/// <summary>
/// 备注说明
/// </summary>
[Column(TypeName = "varchar(255)")]
public string Note { get; set; } = string.Empty;
/// <summary>
/// 注册数据创建时间
/// </summary>
[Column(TypeName = "timestamptz")]
public DateTime CreateTime { get; set; } = DateTime.UtcNow;
}
}

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Atomx.Common.Enums
{
/// <summary>
/// 分类类型
/// </summary>
public enum CategoryType
{
/// <summary>
/// 内容
/// </summary>
Content,
/// <summary>
/// 产品
/// </summary>
Product,
}
}

View File

@@ -0,0 +1,15 @@
namespace Atomx.Common.Enums
{
public enum ConfigType
{
/// <summary>
/// 系统设置
/// </summary>
System = 0,
/// <summary>
/// 产品分类
/// </summary>
ProductCategory = 10,
}
}

View File

@@ -0,0 +1,18 @@
namespace Atomx.Common.Enums
{
/// <summary>
/// 数据状态
/// </summary>
public enum DataStatus
{
None = 0,
/// <summary>
/// 可用
/// </summary>
Enable = 1,
/// <summary>
/// 禁用
/// </summary>
Disable = 2,
}
}

View File

@@ -0,0 +1,7 @@
namespace Atomx.Common.Enums
{
public enum LocalizedType
{
None,
}
}

View File

@@ -0,0 +1,10 @@
namespace Atomx.Common.Enums
{
/// <summary>
/// 原料类型
/// </summary>
public enum MaterialType
{
Gold = 1
}
}

View File

@@ -0,0 +1,18 @@
namespace Atomx.Common.Enums
{
/// <summary>
/// 菜单数据类型
/// </summary>
public enum MenuType
{
/// <summary>
/// 未知
/// </summary>
None = 0,
/// <summary>
/// 管理系统
/// </summary>
AdminSystem = 1
}
}

View File

@@ -0,0 +1,28 @@
namespace Atomx.Common.Enums
{
/// <summary>
/// 消息通道
/// </summary>
public enum MessageTemplateType
{
/// <summary>
/// 站内信
/// </summary>
Message = 1,
/// <summary>
/// 电子邮件
/// </summary>
Email,
/// <summary>
/// 短信
/// </summary>
Sms,
/// <summary>
/// 应用推送
/// </summary>
Push
}
}

View File

@@ -0,0 +1,13 @@
namespace Atomx.Common.Enums
{
/// <summary>
/// 产品库存变更类型
/// </summary>
public enum ProductInventoryChangeType
{
Initial = 0, // 初始库存
StockIn = 1, // 入库
StockOut = 2, // 出库
ReturnIn = 3, //退货入库
}
}

View File

@@ -0,0 +1,17 @@
namespace Atomx.Common.Enums
{
/// <summary>
/// 返回代码
/// </summary>
public enum ResultCode
{
/// <summary>
/// 成功
/// </summary>
Success = 0,
/// <summary>
/// 失败
/// </summary>
Fail = 1
}
}

View File

@@ -0,0 +1,51 @@
using Atomx.Common.Enums;
using Atomx.Utils.Models;
namespace Atomx.Common.Models
{
public class ApiResult<T> : Result<T>
{
/// <summary>
/// 服务器UTC时间
/// </summary>
public DateTime ServerTime => DateTime.UtcNow;
public ApiResult()
{
}
public ApiResult(Result<T> result)
{
Data = result.Data;
Message = result.Message;
Code = result.Code;
Success = result.Success;
}
public ApiResult(T? data, string message, ResultCode code, bool success)
{
Data = data;
Message = message;
Code = (int)code;
Success = success;
}
public ApiResult<T> IsSuccess(T? data = default)
{
return new ApiResult<T>(data, string.Empty, ResultCode.Success, true);
}
public ApiResult<T> IsFail(string message, T? data = default)
{
return new ApiResult<T>(data, message, ResultCode.Fail, false);
}
public ApiResult<T> IsFail(string message)
{
return new ApiResult<T>(default, message, ResultCode.Fail, false);
}
}
}

View File

@@ -0,0 +1,15 @@
namespace Atomx.Common.Models
{
public class BaseSearch
{
/// <summary>
/// 查询开始时间
/// </summary>
public DateTime? StartTime { get; set; }
/// <summary>
/// 查询结束时间
/// </summary>
public DateTime? EndTime { get; set; }
}
}

View File

@@ -0,0 +1,12 @@
using Atomx.Common.Entities;
using System;
using System.Collections.Generic;
using System.Text;
namespace Atomx.Common.Models
{
public class CategoryItemModel : Category
{
public string Breadcrumbs { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Atomx.Common.Models
{
public class JwtSetting
{
/// <summary>
/// 令牌的颁发者,一般就写成域名,实际可任意
/// </summary>
public string Issuer { get; set; } = string.Empty;
/// <summary>
/// 颁发给谁,一般写成项目名,实际可任意
/// </summary>
public string Audience { get; set; } = string.Empty;
/// <summary>
/// 签名验证的KEY,至少 128bit 即16个英文字符以上实际可任意英文字符
/// </summary>
public string SecurityKey { get; set; } = string.Empty;
/// <summary>
/// 过期时间
/// </summary>
public int ClockSkew { get; set; }
/// <summary>
/// 访问令牌过期时间
/// </summary>
public int AccessTokenExpirationMinutes { get; set; }
/// <summary>
/// 刷新令牌过期时间
/// </summary>
public int RefreshTokenExpirationMinutes { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
namespace Atomx.Common.Models
{
public class LocalizationFile
{
/// <summary>
/// 本地化文件版本
/// </summary>
public string ResourceVersion { get; set; } = string.Empty;
/// <summary>
/// 本地化译文
/// </summary>
public Dictionary<string, string> Translations { get; set; } = new();
}
}

View File

@@ -0,0 +1,45 @@
namespace Atomx.Common.Models
{
public class PagingList<T>
{
/// <summary>
/// 总记录数
/// </summary>
public int Count { get; set; }
/// <summary>
/// 分页大小
/// </summary>
public int Size { get; set; }
/// <summary>
/// 当前页数
/// </summary>
public int Index { get; set; }
/// <summary>
/// 表格数据
/// </summary>
public List<T> Items { get; set; } = new List<T>();
/// <summary>
/// 总页数
/// </summary>
public int Pages
{
get
{
var total = 1;
if (Count > 0)
{
total = Count / Size;
if (Count % Size > 0)
{
total++;
}
}
return total;
}
}
}
}

View File

@@ -0,0 +1,9 @@
namespace Atomx.Common.Models
{
/// <summary>
/// 产品分类的配置信息
/// </summary>
public class ProductCategoryConfig
{
}
}

View File

@@ -0,0 +1,9 @@
namespace Atomx.Common.Models
{
public class SelectItem
{
public long Id { get; set; }
public string Name { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,13 @@
namespace Atomx.Common.Utils
{
public static class ClaimKeys
{
public const string Id = "id";
public const string CorporationId = "cid";
public const string Name = "name";
public const string Email = "email";
public const string Mobile = "mobile";
public const string Role = "r";
public const string Permission = "p";
}
}