using Furion.DatabaseAccessor;
using Mapster;
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 Enterprise : CommonEntity, IEntityTypeBuilder
{
public Enterprise()
{
Users = [];
Departments = [];
ContractTemplates = [];
ElectronSignSettings = [];
}
///
/// 企业认证
///
public EnterpriseAuth EnterpriseAuth { get; set; }
///
/// 园区Id
///
public Guid? IndustrialParkId { get; set; }
///
/// 企业全称
///
[Required]
[MaxLength(128)]
public string EnterpriseName { get; set; }
///
/// 统一社会信用代码
///
[Required]
[MaxLength(18)]
public string SocietyCreditCode { get; set; }
///
/// 营业执照照片
///
public string LicenseImage { get; set; }
///
/// 法人姓名
///
[MaxLength(32)]
public string LegalPerson { get; set; }
///
/// 法人身份证号
///
[MaxLength(18)]
public string LegalIdentity { get; set; }
///
/// 所在省份编号
///
public string ProvinceCode { get; set; }
///
/// 所在省份
///
public DictionaryData Province { get; set; }
///
/// 所在城市编号
///
public string CityCode { get; set; }
///
/// 所在城市
///
public DictionaryData City { get; set; }
///
/// 所属行业编号
///
public string IndustryTypeCode { get; set; }
///
/// 所属行业
///
public DictionaryData IndustryType { get; set; }
///
/// 企业类型
///
public string EnterpriseType { get; set; }
///
/// 注册资本
///
public string RegisteredCapital { get; set; }
///
/// 成立日期
///
public string EstablishmentDate { get; set; }
///
/// 企业地址
///
public string Address { get; set; }
///
/// 经营范围
///
public string MainBusiness { get; set; }
///
/// 联系人
///
[MaxLength(32)]
public string Contacts { get; set; }
///
/// 联系电话
///
[MaxLength(11)]
public string ContactPhoneNumber { get; set; }
///
/// 联系邮箱
///
public string ContactEmail { get; set; }
///
/// 支付通道
///
public EnumPayAccess? PayAccess { get; set; }
///
/// 开户总行
///
public string BankName { get; set; }
///
/// 开户支行
///
public string BankBranchName { get; set; }
///
/// 银行账户
///
[MaxLength(32)]
public string BankCard { get; set; }
///
/// 是否已校验银行账户
///
public bool IsCheckedBankCard { get; set; }
///
/// 短信通道
///
public EnumSmsAccess? SmsAccess { get; set; }
///
/// 短信费用
///
public decimal SmsCost { get; set; }
///
/// 实名通道
///
public EnumRealAccess? RealAccess { get; set; }
///
/// 是否实名
///
public bool IsReal { get; set; }
///
/// 部门
///
public List Departments { get; set; }
///
/// 用户信息
///
public List Users { get; set; }
///
/// 合同模板
///
public List ContractTemplates { get; set; }
///
/// 电子签配置
///
public List ElectronSignSettings { get; set; }
public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
{
entityBuilder
.HasOne(it => it.EnterpriseAuth)
.WithOne(it => it.Enterprise)
.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.IndustryType)
.WithMany()
.HasForeignKey(it => it.IndustryTypeCode)
.HasPrincipalKey(it => it.Code)
.OnDelete(DeleteBehavior.Restrict);
}
}
}