using Furion.DatabaseAccessor;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace iWare.Wms.Core
{
///
/// 用户表
///
[Table("sys_user")]
[Comment("用户表")]
public class SysUser : DEntityBase, IEntityTypeBuilder
{
///
/// 账号
///
[Comment("账号")]
[Required, MaxLength(50)]
public string Account { get; set; }
///
/// 密码(默认MD5加密)
///
[Comment("密码")]
[Required, MaxLength(50)]
public string Password { get; set; }
///
/// 昵称
///
[Comment("昵称")]
[MaxLength(20)]
public string NickName { get; set; }
///
/// 姓名
///
[Comment("姓名")]
[MaxLength(20)]
public string Name { get; set; }
///
/// 头像
///
[Comment("头像")]
public string Avatar { get; set; }
///
/// 生日
///
[Comment("生日")]
public DateTimeOffset? Birthday { get; set; }
///
/// 性别-男_1、女_2
///
[Comment("性别-男_1、女_2")]
public Gender Sex { get; set; }
///
/// 邮箱
///
[Comment("邮箱")]
[MaxLength(50)]
public string Email { get; set; }
///
/// 手机
///
[Comment("手机")]
[MaxLength(20)]
public string Phone { get; set; }
///
/// 电话
///
[Comment("电话")]
[MaxLength(20)]
public string Tel { get; set; }
///
/// 最后登录IP
///
[Comment("最后登录IP")]
[MaxLength(20)]
public string LastLoginIp { get; set; }
///
/// 最后登录时间
///
[Comment("最后登录时间")]
public DateTimeOffset? LastLoginTime { get; set; }
///
/// 管理员类型-超级管理员_1、管理员_2、普通账号_3
///
[Comment("管理员类型-超级管理员_1、管理员_2、普通账号_3")]
public AdminType AdminType { get; set; }
///
/// 状态-正常_0、停用_1、删除_2
///
[Comment("状态-正常_0、停用_1、删除_2")]
public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
///
/// 多对多(角色)
///
public ICollection SysRoles { get; set; }
///
/// 多对多中间表(用户-角色)
///
public List SysUserRoles { get; set; }
///
/// 多对多(机构)
///
public ICollection SysOrgs { get; set; }
///
/// 多对多中间表(用户-机构 数据范围)
///
public List SysUserDataScopes { get; set; }
///
/// 配置多对多关系
///
///
///
///
public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
{
entityBuilder.HasMany(p => p.SysRoles).WithMany(p => p.SysUsers).UsingEntity(
u => u.HasOne(c => c.SysRole).WithMany(c => c.SysUserRoles).HasForeignKey(c => c.SysRoleId),
u => u.HasOne(c => c.SysUser).WithMany(c => c.SysUserRoles).HasForeignKey(c => c.SysUserId),
u =>
{
u.HasKey(c => new { c.SysUserId, c.SysRoleId });
});
entityBuilder.HasMany(p => p.SysOrgs).WithMany(p => p.SysUsers).UsingEntity(
u => u.HasOne(c => c.SysOrg).WithMany(c => c.SysUserDataScopes).HasForeignKey(c => c.SysOrgId),
u => u.HasOne(c => c.SysUser).WithMany(c => c.SysUserDataScopes).HasForeignKey(c => c.SysUserId),
u =>
{
u.HasKey(c => new { c.SysUserId, c.SysOrgId });
});
}
}
}