using Furion.DatabaseAccessor;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
///
/// 用户信息
///
public class User : CommonEntity, IEntitySeedData, IEntityTypeBuilder
{
public User()
{
UserRoles = [];
UserDepartments = [];
BankCards = [];
UserExpectJobs = [];
UserCredentials = [];
Photos = [];
EnterpriseEmployees = [];
EnterpriseUserCollects = [];
UserManageIndustrialParks = [];
}
///
/// 用户认证
///
public UserAuth UserAuth { get; set; }
///
/// 用户类型
///
public EnumUserType Type { get; set; }
///
/// 企业Id
///
public Guid? EnterpriseId { get; set; }
///
/// 企业
///
public Enterprise Enterprise { get; set; }
///
/// 头像
///
public string Avatar { get; set; }
///
/// 姓名
///
[MaxLength(32)]
public string Name { get; set; }
///
/// 用户名
///
[Required]
[MaxLength(32)]
public string UserName { get; set; }
///
/// 手机号
///
/// 登录手机号
[MaxLength(11)]
public string PhoneNumber { get; set; }
///
/// 是否已校验手机号
///
public bool IsCheckPhoneNumber { get; set; }
///
/// 身份证号
///
public string Identity { get; set; }
///
/// 性别
///
public EnumUserGender? Gender { get; set; }
///
/// 生日
///
public DateTime? Birthday { get; set; }
///
/// 年龄
///
public int? Age { get; set; }
///
/// 密码
///
public string Password { get; set; }
///
/// 微信开放Id
///
[MaxLength(32)]
public string WxmpOpenId { get; set; }
///
/// 级别
///
public int Level { get; set; }
///
/// 是否实名
///
public bool IsReal { get; set; }
///
/// 实名时间
///
public DateTime? RealTime { get; set; }
///
/// 实名方式
///
public EnumUserRealMethod? RealMethod { get; set; }
///
/// 手机号
///
/// 联系电话
[MaxLength(11)]
public string ContactPhoneNumber { get; set; }
///
/// 常驻省份编号
///
public string ProvinceCode { get; set; }
///
/// 常驻省份
///
public DictionaryData Province { get; set; }
///
/// 常驻城市编号
///
public string CityCode { get; set; }
///
/// 常驻城市
///
public DictionaryData City { get; set; }
///
/// 身份编号
///
public string PersonalIdentityCode { get; set; }
///
/// 身份
///
public DictionaryData PersonalIdentity { get; set; }
///
/// 学历编号
///
public string EducationalBackgroundCode { get; set; }
///
/// 学历
///
public DictionaryData EducationalBackground { get; set; }
///
/// 空闲时间
///
public EnumPersonalFreeTime? FreeTime { get; set; }
///
/// 求职状态
///
public EnumPersonalJobSeekingStatus? JobSeekingStatus { get; set; }
///
/// 工作资历
///
public string WorkSeniority { get; set; }
///
/// 工作经验
///
public string WorkExperience { get; set; }
///
/// 身高
///
public int? Height { get; set; }
///
/// 体重
///
public int? Weight { get; set; }
///
/// 数据来源
///
public EnumDataSource? DataSource { get; set; }
///
/// 数据来源Id
///
public Guid? DataSourceId { get; set; }
///
/// 备注
///
public string Remark { get; set; }
///
/// 状态
///
public EnumUserStatus Status { get; set; }
///
/// 用户信息角色
///
public List UserRoles { get; set; }
///
/// 用户信息部门
///
public List UserDepartments { get; set; }
///
/// 银行卡
///
public List BankCards { get; set; }
///
/// 用户信息期望岗位
///
public List UserExpectJobs { get; set; }
///
/// 用户信息资格证书
///
public List UserCredentials { get; set; }
///
/// 生活照
///
public List Photos { get; set; }
///
/// 灵工
///
public List EnterpriseEmployees { get; set; }
///
/// 谁家企业收藏/联系我
///
public List EnterpriseUserCollects { get; set; }
///
/// 管理园区
///
public List UserManageIndustrialParks { get; set; }
public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
{
entityBuilder
.HasOne(it => it.UserAuth)
.WithOne(it => it.User)
.HasForeignKey(it => it.Id);
entityBuilder
.HasOne(it => it.Province)
.WithMany()
.HasForeignKey(it => it.ProvinceCode)
.HasPrincipalKey(it => it.Code)
.OnDelete(DeleteBehavior.Restrict);
entityBuilder
.HasOne(it => it.City)
.WithMany()
.HasForeignKey(it => it.CityCode)
.HasPrincipalKey(it => it.Code)
.OnDelete(DeleteBehavior.Restrict);
entityBuilder
.HasOne(it => it.PersonalIdentity)
.WithMany()
.HasForeignKey(it => it.PersonalIdentityCode)
.HasPrincipalKey(it => it.Code)
.OnDelete(DeleteBehavior.Restrict);
entityBuilder
.HasOne(it => it.EducationalBackground)
.WithMany()
.HasForeignKey(it => it.EducationalBackgroundCode)
.HasPrincipalKey(it => it.Code)
.OnDelete(DeleteBehavior.Restrict);
}
public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)
{
return new List
{
new User
{
Id = new Guid("11111111-1111-1111-1111-111111111111"),
Name = "管理员",
UserName = "system",
Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=",
Type = EnumUserType.Operation,
Level = 999,
Status = EnumUserStatus.Normal,
CreatedTime = new DateTime(2000, 1, 1)
}
};
}
}
}