namespace YY.Admin.Core; /// /// 系统用户表 /// [SugarTable("sys_user", "系统用户表")] [SysTable] [SugarIndex("index_{table}_A", nameof(Account), OrderByType.Asc)] [SugarIndex("index_{table}_P", nameof(Phone), OrderByType.Asc)] public partial class SysUser : EntityBaseTenantOrg { /// /// 账号 /// [SugarColumn(ColumnDescription = "账号", Length = 32)] [Required, MaxLength(32)] public virtual string Account { get; set; } /// /// 密码 /// [SugarColumn(ColumnDescription = "密码", Length = 512)] [MaxLength(512)] [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] public virtual string Password { get; set; } /// /// Jeecg 用户表中的 salt,用于 PBEWithMD5AndDES 与后台密码字段一致;从 Jeecg 同步时写入 /// [SugarColumn(ColumnDescription = "Jeecg密码盐", Length = 64, IsNullable = true)] [MaxLength(64)] public string? JeecgPasswordSalt { get; set; } /// /// 真实姓名 /// [SugarColumn(ColumnDescription = "真实姓名", Length = 32)] [MaxLength(32)] public virtual string RealName { get; set; } /// /// 昵称 /// [SugarColumn(ColumnDescription = "昵称", Length = 32)] [MaxLength(32)] public string? NickName { get; set; } /// /// 头像 /// [SugarColumn(ColumnDescription = "头像", Length = 512)] [MaxLength(512)] public string? Avatar { get; set; } /// /// Jeecg 侧用户更新时间(用于增量同步时跳过未变化记录) /// [SugarColumn(ColumnDescription = "Jeecg更新时间", IsNullable = true)] public DateTime? JeecgUpdateTime { get; set; } /// /// Jeecg/业务后台用户主键(雪花 ID 等,以字符串保存避免溢出) /// [SugarColumn(ColumnDescription = "Jeecg用户ID", Length = 64, IsNullable = true)] [MaxLength(64)] public string? JeecgBizUserId { get; set; } /// /// Jeecg 机构编码 orgCode /// [SugarColumn(ColumnDescription = "Jeecg机构编码", Length = 64, IsNullable = true)] [MaxLength(64)] public string? JeecgOrgCode { get; set; } /// /// Jeecg 部门 id 列表(逗号分隔的 departIds) /// [SugarColumn(ColumnDescription = "Jeecg部门IDs", Length = 512, IsNullable = true)] [MaxLength(512)] public string? JeecgDepartIds { get; set; } /// /// 性别-男_1、女_2 /// [SugarColumn(ColumnDescription = "性别")] public GenderEnum? Sex { get; set; } /// /// 年龄 /// [SugarColumn(ColumnDescription = "年龄")] public int Age { get; set; } /// /// 出生日期 /// [SugarColumn(ColumnDescription = "出生日期")] public DateTime? Birthday { get; set; } /// /// 民族 /// [SugarColumn(ColumnDescription = "民族", Length = 32)] [MaxLength(32)] public string? Nation { get; set; } /// /// 手机号码 /// [SugarColumn(ColumnDescription = "手机号码", Length = 16)] [MaxLength(16)] public string? Phone { get; set; } /// /// 证件类型 /// [SugarColumn(ColumnDescription = "证件类型")] public CardTypeEnum CardType { get; set; } /// /// 身份证号 /// [SugarColumn(ColumnDescription = "身份证号", Length = 32)] [MaxLength(32)] public string? IdCardNum { get; set; } /// /// 邮箱 /// [SugarColumn(ColumnDescription = "邮箱", Length = 64)] [MaxLength(64)] public string? Email { get; set; } /// /// 地址 /// [SugarColumn(ColumnDescription = "地址", Length = 256)] [MaxLength(256)] public string? Address { get; set; } /// /// 文化程度 /// [SugarColumn(ColumnDescription = "文化程度")] public CultureLevelEnum CultureLevel { get; set; } /// /// 政治面貌 /// [SugarColumn(ColumnDescription = "政治面貌", Length = 16)] [MaxLength(16)] public string? PoliticalOutlook { get; set; } /// /// 毕业院校 /// [SugarColumn(ColumnDescription = "毕业院校", Length = 128)] [MaxLength(128)] public string? College { get; set; } /// /// 办公电话 /// [SugarColumn(ColumnDescription = "办公电话", Length = 16)] [MaxLength(16)] public string? OfficePhone { get; set; } /// /// 紧急联系人 /// [SugarColumn(ColumnDescription = "紧急联系人", Length = 32)] [MaxLength(32)] public string? EmergencyContact { get; set; } /// /// 紧急联系人电话 /// [SugarColumn(ColumnDescription = "紧急联系人电话", Length = 16)] [MaxLength(16)] public string? EmergencyPhone { get; set; } /// /// 紧急联系人地址 /// [SugarColumn(ColumnDescription = "紧急联系人地址", Length = 256)] [MaxLength(256)] public string? EmergencyAddress { get; set; } /// /// 个人简介 /// [SugarColumn(ColumnDescription = "个人简介", Length = 512)] [MaxLength(512)] public string? Introduction { get; set; } /// /// 排序 /// [SugarColumn(ColumnDescription = "排序")] public int OrderNo { get; set; } = 100; /// /// 状态 /// [SugarColumn(ColumnDescription = "状态")] public StatusEnum Status { get; set; } = StatusEnum.Enable; /// /// 备注 /// [SugarColumn(ColumnDescription = "备注", Length = 256)] [MaxLength(256)] public string? Remark { get; set; } /// /// 账号类型 /// [SugarColumn(ColumnDescription = "账号类型")] public AccountTypeEnum AccountType { get; set; } = AccountTypeEnum.NormalUser; ///// ///// 直属机构Id ///// //[SugarColumn(ColumnDescription = "直属机构Id")] //public long OrgId { get; set; } /// /// 直属机构 /// [Navigate(NavigateType.OneToOne, nameof(OrgId))] public SysOrg SysOrg { get; set; } /// /// 直属主管Id /// [SugarColumn(ColumnDescription = "直属主管Id")] public long? ManagerUserId { get; set; } /// /// 直属主管 /// [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [Navigate(NavigateType.OneToOne, nameof(ManagerUserId))] public SysUser ManagerUser { get; set; } /// /// 职位Id /// [SugarColumn(ColumnDescription = "职位Id")] public long PosId { get; set; } /// /// 职位 /// [Newtonsoft.Json.JsonIgnore] [System.Text.Json.Serialization.JsonIgnore] [Navigate(NavigateType.OneToOne, nameof(PosId))] public SysPos SysPos { get; set; } /// /// 工号 /// [SugarColumn(ColumnDescription = "工号", Length = 32)] [MaxLength(32)] public string? JobNum { get; set; } /// /// 职级 /// [SugarColumn(ColumnDescription = "职级", Length = 32)] [MaxLength(32)] public string? PosLevel { get; set; } /// /// 职称 /// [SugarColumn(ColumnDescription = "职称", Length = 32)] [MaxLength(32)] public string? PosTitle { get; set; } /// /// 擅长领域 /// [SugarColumn(ColumnDescription = "擅长领域", Length = 32)] [MaxLength(32)] public string? Expertise { get; set; } /// /// 办公区域 /// [SugarColumn(ColumnDescription = "办公区域", Length = 32)] [MaxLength(32)] public string? OfficeZone { get; set; } /// /// 办公室 /// [SugarColumn(ColumnDescription = "办公室", Length = 32)] [MaxLength(32)] public string? Office { get; set; } /// /// 入职日期 /// [SugarColumn(ColumnDescription = "入职日期")] public DateTime? JoinDate { get; set; } /// /// 最新登录Ip /// [SugarColumn(ColumnDescription = "最新登录Ip", Length = 256)] [MaxLength(256)] public string? LastLoginIp { get; set; } /// /// 最新登录地点 /// [SugarColumn(ColumnDescription = "最新登录地点", Length = 128)] [MaxLength(128)] public string? LastLoginAddress { get; set; } /// /// 最新登录时间 /// [SugarColumn(ColumnDescription = "最新登录时间")] public DateTime? LastLoginTime { get; set; } /// /// 最新登录设备 /// [SugarColumn(ColumnDescription = "最新登录设备", Length = 128)] [MaxLength(128)] public string? LastLoginDevice { get; set; } /// /// 电子签名 /// [SugarColumn(ColumnDescription = "电子签名", Length = 512)] [MaxLength(512)] public string? Signature { get; set; } [SugarColumn(IsIgnore = true)] public string? AccountTypeZh { get { return this.AccountType.GetDescription(); } } [SugarColumn(IsIgnore = true)] public bool IsSuperAdmin { get { return this.AccountType== AccountTypeEnum.SuperAdmin; } } [SugarColumn(IsIgnore = true)] public bool IsSysAdmin { get { return this.AccountType == AccountTypeEnum.SysAdmin; } } /// /// 验证超级管理员类型,若账号类型为超级管理员则报错 /// /// 自定义错误消息 public void ValidateIsSuperAdminAccountType(ErrorCodeEnum? errorMsg = ErrorCodeEnum.D1014) { if (AccountType == AccountTypeEnum.SuperAdmin) { throw new Exception(errorMsg.GetDescription()); } } /// /// 验证用户Id是否相同,若用户Id相同则报错 /// /// 用户Id /// 自定义错误消息 public void ValidateIsUserId(long userId, ErrorCodeEnum? errorMsg = ErrorCodeEnum.D1001) { if (Id == userId) { throw new Exception(errorMsg.GetDescription()); } } }