回收站中的简历30天后自动删除

master
xiaochanghai 7 months ago
parent bbf4267ba1
commit 55ae028ab6
  1. 1275
      Model/Tiobon.Web.pdm
  2. 2
      Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs
  3. 10
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  4. 4
      Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs
  5. 850
      Tiobon.Core.Model/Base/Ghrh/Ghrh_Resume.Dto.Base.cs
  6. 5
      Tiobon.Core.Model/Models/Ghrh/Ghrh_Resume.cs
  7. 10
      Tiobon.Core.Services/CommonServices.cs
  8. 41
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  9. 27
      Tiobon.Core.Tasks/QuartzNet/Jobs/Job_OverTimeDeleteResume_Quartz.cs
  10. 10
      Tiobon.Core/Tiobon.Core.Model.xml

File diff suppressed because it is too large Load Diff

@ -81,7 +81,7 @@ public class Ghrh_ResumeController : BaseController<IGhrh_ResumeServices, Ghrh_R
[HttpPost("Recovery")]
public async Task<ServiceResult> Recovery([FromBody] List<long> ids)
{
bool result = await _service.UpdateStatus(ids, "Recycled");
bool result = await _service.Recovery(ids);
if (result)
return ServiceResult.OprateSuccess("回收成功!");
return ServiceResult.OprateFailed("回收失败!");

@ -6915,6 +6915,11 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeBase.RecycledTime">
<summary>
加入回收站时间
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBGBase">
<summary>
教育背景 (Dto.Base)
@ -17556,6 +17561,11 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_Resume.RecycledTime">
<summary>
加入回收站时间
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBG">
<summary>
教育背景 (Model)

@ -19,6 +19,8 @@ public interface IGhrh_ResumeServices : IBaseServices<Ghrh_Resume, Ghrh_ResumeDt
Task<bool> UpdateStatus(List<long> ids, string status);
Task<bool> Recovery(List<long> ids);
Task<bool> MarkTags(List<long> ids, List<long> tags);
Task<ServiceResult<dynamic>> CheckIsExist(EditGhrh_ResumeInput input);
@ -65,4 +67,6 @@ public interface IGhrh_ResumeServices : IBaseServices<Ghrh_Resume, Ghrh_ResumeDt
Task<ServiceResult> CancelInterview(long id, ResumeCancelInterviewForm input);
Task<ServiceResult> ApplyOfferApproval(List<long> ids);
Task<ServiceResult> OverTimeDeleteResume();
}

@ -14,430 +14,434 @@
* SimonHsiao
*
*/
namespace Tiobon.Core.Model.Models
namespace Tiobon.Core.Model.Models;
/// <summary>
/// 个人简历 (Dto.Base)
/// </summary>
public class Ghrh_ResumeBase
{
/// <summary>
/// 个人简历 (Dto.Base)
/// </summary>
public class Ghrh_ResumeBase
{
/// <summary>
/// 姓名
/// </summary>
[Display(Name = "StaffName"), Description("姓名"), MaxLength(32, ErrorMessage = "姓名 不能超过 32 个字符")]
public string StaffName { get; set; }
/// <summary>
/// 英文名
/// </summary>
[Display(Name = "StaffEname"), Description("英文名"), MaxLength(32, ErrorMessage = "英文名 不能超过 32 个字符")]
public string StaffEname { get; set; }
/// <summary>
/// 头像
/// </summary>
[Display(Name = "PhotoUrl"), Description("头像"), MaxLength(1000, ErrorMessage = "头像 不能超过 1000 个字符")]
public string PhotoUrl { get; set; }
/// <summary>
/// 民族
/// </summary>
[Display(Name = "Nation"), Description("民族"), MaxLength(32, ErrorMessage = "民族 不能超过 32 个字符")]
public string Nation { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime? Birthday { get; set; }
/// <summary>
/// 籍贯
/// </summary>
[Display(Name = "NativePlace"), Description("籍贯"), MaxLength(32, ErrorMessage = "籍贯 不能超过 32 个字符")]
public string NativePlace { get; set; }
/// <summary>
/// 性别
/// </summary>
[Display(Name = "Gender"), Description("性别"), MaxLength(32, ErrorMessage = "性别 不能超过 32 个字符")]
public string Gender { get; set; }
/// <summary>
/// 年龄
/// </summary>
[Display(Name = "Age"), Description("年龄"), Column(TypeName = "decimal(3,1)")]
public decimal? Age { get; set; }
/// <summary>
/// 学历
/// </summary>
[Display(Name = "Education"), Description("学历"), MaxLength(1000, ErrorMessage = "学历 不能超过 1000 个字符")]
public string Education { get; set; }
/// <summary>
/// 毕业院校
/// </summary>
[Display(Name = "School"), Description("毕业院校"), MaxLength(128, ErrorMessage = "毕业院校 不能超过 128 个字符")]
public string School { get; set; }
/// <summary>
/// 毕业日期
/// </summary>
public DateTime? GraduateDate { get; set; }
/// <summary>
/// 求职状态
/// </summary>
[Display(Name = "ApplyStatus"), Description("求职状态"), MaxLength(32, ErrorMessage = "求职状态 不能超过 32 个字符")]
public string ApplyStatus { get; set; }
/// <summary>
/// 岗位ID
/// </summary>
public int? TitleId { get; set; }
/// <summary>
/// 婚姻状况
/// </summary>
[Display(Name = "MaritalStatus"), Description("婚姻状况"), MaxLength(32, ErrorMessage = "婚姻状况 不能超过 32 个字符")]
public string MaritalStatus { get; set; }
/// <summary>
/// 政治面貌
/// </summary>
[Display(Name = "PoliticStatus"), Description("政治面貌"), MaxLength(32, ErrorMessage = "政治面貌 不能超过 32 个字符")]
public string PoliticStatus { get; set; }
/// <summary>
/// 联系电话
/// </summary>
[Display(Name = "Mobile"), Description("联系电话"), MaxLength(32, ErrorMessage = "联系电话 不能超过 32 个字符")]
public string Mobile { get; set; }
/// <summary>
/// 邮箱
/// </summary>
[Display(Name = "Email"), Description("邮箱"), MaxLength(64, ErrorMessage = "邮箱 不能超过 64 个字符")]
public string Email { get; set; }
/// <summary>
/// 入职日期
/// </summary>
public DateTime? Indate { get; set; }
/// <summary>
/// 紧急联系人关系
/// </summary>
[Display(Name = "UrgentRelation"), Description("紧急联系人关系"), MaxLength(32, ErrorMessage = "紧急联系人关系 不能超过 32 个字符")]
public string UrgentRelation { get; set; }
/// <summary>
/// 紧急联系人
/// </summary>
[Display(Name = "UrgentContact"), Description("紧急联系人"), MaxLength(32, ErrorMessage = "紧急联系人 不能超过 32 个字符")]
public string UrgentContact { get; set; }
/// <summary>
/// 紧急联系人电话
/// </summary>
[Display(Name = "UrgentContactTel"), Description("紧急联系人电话"), MaxLength(32, ErrorMessage = "紧急联系人电话 不能超过 32 个字符")]
public string UrgentContactTel { get; set; }
/// <summary>
/// 紧急联系人地址
/// </summary>
[Display(Name = "UrgentContactAddress"), Description("紧急联系人地址"), MaxLength(128, ErrorMessage = "紧急联系人地址 不能超过 128 个字符")]
public string UrgentContactAddress { get; set; }
/// <summary>
/// 紧急联系人关系2
/// </summary>
[Display(Name = "Urgent2Relation"), Description("紧急联系人关系2"), MaxLength(32, ErrorMessage = "紧急联系人关系2 不能超过 32 个字符")]
public string Urgent2Relation { get; set; }
/// <summary>
/// 紧急联系人2
/// </summary>
[Display(Name = "Urgent2Contact"), Description("紧急联系人2"), MaxLength(32, ErrorMessage = "紧急联系人2 不能超过 32 个字符")]
public string Urgent2Contact { get; set; }
/// <summary>
/// 紧急联系人电话2
/// </summary>
[Display(Name = "Urgent2ContactTel"), Description("紧急联系人电话2"), MaxLength(32, ErrorMessage = "紧急联系人电话2 不能超过 32 个字符")]
public string Urgent2ContactTel { get; set; }
/// <summary>
/// 紧急联系人地址2
/// </summary>
[Display(Name = "Urgent2ContactAddress"), Description("紧急联系人地址2"), MaxLength(128, ErrorMessage = "紧急联系人地址2 不能超过 128 个字符")]
public string Urgent2ContactAddress { get; set; }
/// <summary>
/// 职前年资
/// </summary>
[Display(Name = "PreJobSeniority"), Description("职前年资"), MaxLength(32, ErrorMessage = "职前年资 不能超过 32 个字符")]
public string PreJobSeniority { get; set; }
/// <summary>
/// 最高学历
/// </summary>
[Display(Name = "EduDegree"), Description("最高学历"), MaxLength(32, ErrorMessage = "最高学历 不能超过 32 个字符")]
public string EduDegree { get; set; }
/// <summary>
/// 证照类型
/// </summary>
[Display(Name = "CertificateType"), Description("证照类型"), MaxLength(32, ErrorMessage = "证照类型 不能超过 32 个字符")]
public string CertificateType { get; set; }
/// <summary>
/// 身份证号
/// </summary>
[Display(Name = "IdCardNo"), Description("身份证号"), MaxLength(64, ErrorMessage = "身份证号 不能超过 64 个字符")]
public string IdCardNo { get; set; }
/// <summary>
/// 身份证开始有效期
/// </summary>
public DateTime? IDCardBegin { get; set; }
/// <summary>
/// 身份证结束有效期
/// </summary>
public DateTime? IDCardEnd { get; set; }
/// <summary>
/// 户口性质
/// </summary>
[Display(Name = "RegisteredType"), Description("户口性质"), MaxLength(32, ErrorMessage = "户口性质 不能超过 32 个字符")]
public string RegisteredType { get; set; }
/// <summary>
/// 发证机关
/// </summary>
[Display(Name = "IDCardOrg"), Description("发证机关"), MaxLength(256, ErrorMessage = "发证机关 不能超过 256 个字符")]
public string IDCardOrg { get; set; }
/// <summary>
/// 家庭住址
/// </summary>
[Display(Name = "RegisteredAddress"), Description("家庭住址"), MaxLength(256, ErrorMessage = "家庭住址 不能超过 256 个字符")]
public string RegisteredAddress { get; set; }
/// <summary>
/// 现居住地
/// </summary>
[Display(Name = "NowAddress"), Description("现居住地"), MaxLength(256, ErrorMessage = "现居住地 不能超过 256 个字符")]
public string NowAddress { get; set; }
/// <summary>
/// 介绍人
/// </summary>
[Display(Name = "Introducer"), Description("介绍人"), MaxLength(32, ErrorMessage = "介绍人 不能超过 32 个字符")]
public string Introducer { get; set; }
/// <summary>
/// 国籍
/// </summary>
[Display(Name = "NationNo"), Description("国籍"), MaxLength(32, ErrorMessage = "国籍 不能超过 32 个字符")]
public string NationNo { get; set; }
/// <summary>
/// 公积金账号
/// </summary>
[Display(Name = "FundAccountID"), Description("公积金账号"), MaxLength(128, ErrorMessage = "公积金账号 不能超过 128 个字符")]
public string FundAccountID { get; set; }
/// <summary>
/// 公积金基数
/// </summary>
[Display(Name = "FundBase"), Description("公积金基数"), Column(TypeName = "decimal(20,2)")]
public decimal? FundBase { get; set; }
/// <summary>
/// 社保帐套
/// </summary>
[Display(Name = "InInsureAccountNo"), Description("社保帐套"), MaxLength(32, ErrorMessage = "社保帐套 不能超过 32 个字符")]
public string InInsureAccountNo { get; set; }
/// <summary>
/// 社保账号
/// </summary>
[Display(Name = "InsureAccountID"), Description("社保账号"), MaxLength(128, ErrorMessage = "社保账号 不能超过 128 个字符")]
public string InsureAccountID { get; set; }
/// <summary>
/// 社保基数
/// </summary>
[Display(Name = "InsureBase"), Description("社保基数"), Column(TypeName = "decimal(20,2)")]
public decimal? InsureBase { get; set; }
/// <summary>
/// 是否缴纳社保
/// </summary>
public bool? IsInsure { get; set; }
/// <summary>
/// 是否缴纳公积金
/// </summary>
public bool? IsFund { get; set; }
/// <summary>
/// 是否推荐
/// </summary>
public bool? IsRecommend { get; set; }
/// <summary>
/// 是否住宿
/// </summary>
public bool? IsStay { get; set; }
/// <summary>
/// 车牌号
/// </summary>
[Display(Name = "CarNo"), Description("车牌号"), MaxLength(32, ErrorMessage = "车牌号 不能超过 32 个字符")]
public string CarNo { get; set; }
/// <summary>
/// 标签
/// </summary>
[Display(Name = "Tags"), Description("标签"), MaxLength(2000, ErrorMessage = "标签 不能超过 2000 个字符")]
public string Tags { get; set; }
/// <summary>
/// 状态
/// </summary>
[Display(Name = "Status"), Description("状态"), MaxLength(32, ErrorMessage = "状态 不能超过 32 个字符")]
public string Status { get; set; }
/// <summary>
/// 工作年限
/// </summary>
[Display(Name = "WorkYears"), Description("工作年限"), Column(TypeName = "decimal(3,1)")]
public decimal? WorkYears { get; set; }
/// <summary>
/// 薪资区间
/// </summary>
[Display(Name = "SalaryPeriod"), Description("薪资区间"), MaxLength(32, ErrorMessage = "薪资区间 不能超过 32 个字符")]
public string SalaryPeriod { get; set; }
/// <summary>
/// 申请状态
/// </summary>
[Display(Name = "ApplicationStatus"), Description("申请状态"), MaxLength(32, ErrorMessage = "申请状态 不能超过 32 个字符")]
public string ApplicationStatus { get; set; }
/// <summary>
/// 申请时间
/// </summary>
public DateTime? ApplicationTime { get; set; }
/// <summary>
/// 职称类型/级别
/// </summary>
[Display(Name = "TitleType"), Description("职称类型/级别"), MaxLength(32, ErrorMessage = "职称类型/级别 不能超过 32 个字符")]
public string TitleType { get; set; }
/// <summary>
/// 直间接
/// </summary>
[Display(Name = "StaffType1"), Description("直间接"), MaxLength(32, ErrorMessage = "直间接 不能超过 32 个字符")]
public string StaffType1 { get; set; }
/// <summary>
/// 面试结果
/// </summary>
public bool? InterviewResult { get; set; }
/// <summary>
/// 不合适原因
/// </summary>
[Display(Name = "FailInterviewReason"), Description("不合适原因"), MaxLength(256, ErrorMessage = "不合适原因 不能超过 256 个字符")]
public string FailInterviewReason { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "RemarkSz"), Description("备注"), MaxLength(2000, ErrorMessage = "备注 不能超过 2000 个字符")]
public string RemarkSz { get; set; }
/// <summary>
/// 默认标志
/// </summary>
public int? IsDefault { get; set; }
/// <summary>
/// 预留字段1
/// </summary>
[Display(Name = "Reverse1"), Description("预留字段1"), MaxLength(1000, ErrorMessage = "预留字段1 不能超过 1000 个字符")]
public string Reverse1 { get; set; }
/// <summary>
/// 预留字段2
/// </summary>
[Display(Name = "Reverse2"), Description("预留字段2"), MaxLength(1000, ErrorMessage = "预留字段2 不能超过 1000 个字符")]
public string Reverse2 { get; set; }
/// <summary>
/// 预留字段3
/// </summary>
[Display(Name = "Reverse3"), Description("预留字段3"), MaxLength(1000, ErrorMessage = "预留字段3 不能超过 1000 个字符")]
public string Reverse3 { get; set; }
/// <summary>
/// 预留字段4
/// </summary>
[Display(Name = "Reverse4"), Description("预留字段4"), MaxLength(1000, ErrorMessage = "预留字段4 不能超过 1000 个字符")]
public string Reverse4 { get; set; }
/// <summary>
/// 预留字段5
/// </summary>
[Display(Name = "Reverse5"), Description("预留字段5"), MaxLength(1000, ErrorMessage = "预留字段5 不能超过 1000 个字符")]
public string Reverse5 { get; set; }
/// <summary>
/// 预留字段6
/// </summary>
[Display(Name = "Reverse6"), Description("预留字段6"), MaxLength(1000, ErrorMessage = "预留字段6 不能超过 1000 个字符")]
public string Reverse6 { get; set; }
/// <summary>
/// 预留字段7
/// </summary>
[Display(Name = "Reverse7"), Description("预留字段7"), MaxLength(1000, ErrorMessage = "预留字段7 不能超过 1000 个字符")]
public string Reverse7 { get; set; }
/// <summary>
/// 预留字段8
/// </summary>
[Display(Name = "Reverse8"), Description("预留字段8"), MaxLength(1000, ErrorMessage = "预留字段8 不能超过 1000 个字符")]
public string Reverse8 { get; set; }
/// <summary>
/// 预留字段9
/// </summary>
[Display(Name = "Reverse9"), Description("预留字段9"), MaxLength(1000, ErrorMessage = "预留字段9 不能超过 1000 个字符")]
public string Reverse9 { get; set; }
/// <summary>
/// 预留字段10
/// </summary>
[Display(Name = "Reverse10"), Description("预留字段10"), MaxLength(1000, ErrorMessage = "预留字段10 不能超过 1000 个字符")]
public string Reverse10 { get; set; }
/// <summary>
/// 预留字段11
/// </summary>
public int? ReverseI1 { get; set; }
/// <summary>
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
}
/// 姓名
/// </summary>
[Display(Name = "StaffName"), Description("姓名"), MaxLength(32, ErrorMessage = "姓名 不能超过 32 个字符")]
public string StaffName { get; set; }
/// <summary>
/// 英文名
/// </summary>
[Display(Name = "StaffEname"), Description("英文名"), MaxLength(32, ErrorMessage = "英文名 不能超过 32 个字符")]
public string StaffEname { get; set; }
/// <summary>
/// 头像
/// </summary>
[Display(Name = "PhotoUrl"), Description("头像"), MaxLength(1000, ErrorMessage = "头像 不能超过 1000 个字符")]
public string PhotoUrl { get; set; }
/// <summary>
/// 民族
/// </summary>
[Display(Name = "Nation"), Description("民族"), MaxLength(32, ErrorMessage = "民族 不能超过 32 个字符")]
public string Nation { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime? Birthday { get; set; }
/// <summary>
/// 籍贯
/// </summary>
[Display(Name = "NativePlace"), Description("籍贯"), MaxLength(32, ErrorMessage = "籍贯 不能超过 32 个字符")]
public string NativePlace { get; set; }
/// <summary>
/// 性别
/// </summary>
[Display(Name = "Gender"), Description("性别"), MaxLength(32, ErrorMessage = "性别 不能超过 32 个字符")]
public string Gender { get; set; }
/// <summary>
/// 年龄
/// </summary>
[Display(Name = "Age"), Description("年龄"), Column(TypeName = "decimal(3,1)")]
public decimal? Age { get; set; }
/// <summary>
/// 学历
/// </summary>
[Display(Name = "Education"), Description("学历"), MaxLength(1000, ErrorMessage = "学历 不能超过 1000 个字符")]
public string Education { get; set; }
/// <summary>
/// 毕业院校
/// </summary>
[Display(Name = "School"), Description("毕业院校"), MaxLength(128, ErrorMessage = "毕业院校 不能超过 128 个字符")]
public string School { get; set; }
/// <summary>
/// 毕业日期
/// </summary>
public DateTime? GraduateDate { get; set; }
/// <summary>
/// 求职状态
/// </summary>
[Display(Name = "ApplyStatus"), Description("求职状态"), MaxLength(32, ErrorMessage = "求职状态 不能超过 32 个字符")]
public string ApplyStatus { get; set; }
/// <summary>
/// 岗位ID
/// </summary>
public int? TitleId { get; set; }
/// <summary>
/// 婚姻状况
/// </summary>
[Display(Name = "MaritalStatus"), Description("婚姻状况"), MaxLength(32, ErrorMessage = "婚姻状况 不能超过 32 个字符")]
public string MaritalStatus { get; set; }
/// <summary>
/// 政治面貌
/// </summary>
[Display(Name = "PoliticStatus"), Description("政治面貌"), MaxLength(32, ErrorMessage = "政治面貌 不能超过 32 个字符")]
public string PoliticStatus { get; set; }
/// <summary>
/// 联系电话
/// </summary>
[Display(Name = "Mobile"), Description("联系电话"), MaxLength(32, ErrorMessage = "联系电话 不能超过 32 个字符")]
public string Mobile { get; set; }
/// <summary>
/// 邮箱
/// </summary>
[Display(Name = "Email"), Description("邮箱"), MaxLength(64, ErrorMessage = "邮箱 不能超过 64 个字符")]
public string Email { get; set; }
/// <summary>
/// 入职日期
/// </summary>
public DateTime? Indate { get; set; }
/// <summary>
/// 紧急联系人关系
/// </summary>
[Display(Name = "UrgentRelation"), Description("紧急联系人关系"), MaxLength(32, ErrorMessage = "紧急联系人关系 不能超过 32 个字符")]
public string UrgentRelation { get; set; }
/// <summary>
/// 紧急联系人
/// </summary>
[Display(Name = "UrgentContact"), Description("紧急联系人"), MaxLength(32, ErrorMessage = "紧急联系人 不能超过 32 个字符")]
public string UrgentContact { get; set; }
/// <summary>
/// 紧急联系人电话
/// </summary>
[Display(Name = "UrgentContactTel"), Description("紧急联系人电话"), MaxLength(32, ErrorMessage = "紧急联系人电话 不能超过 32 个字符")]
public string UrgentContactTel { get; set; }
/// <summary>
/// 紧急联系人地址
/// </summary>
[Display(Name = "UrgentContactAddress"), Description("紧急联系人地址"), MaxLength(128, ErrorMessage = "紧急联系人地址 不能超过 128 个字符")]
public string UrgentContactAddress { get; set; }
/// <summary>
/// 紧急联系人关系2
/// </summary>
[Display(Name = "Urgent2Relation"), Description("紧急联系人关系2"), MaxLength(32, ErrorMessage = "紧急联系人关系2 不能超过 32 个字符")]
public string Urgent2Relation { get; set; }
/// <summary>
/// 紧急联系人2
/// </summary>
[Display(Name = "Urgent2Contact"), Description("紧急联系人2"), MaxLength(32, ErrorMessage = "紧急联系人2 不能超过 32 个字符")]
public string Urgent2Contact { get; set; }
/// <summary>
/// 紧急联系人电话2
/// </summary>
[Display(Name = "Urgent2ContactTel"), Description("紧急联系人电话2"), MaxLength(32, ErrorMessage = "紧急联系人电话2 不能超过 32 个字符")]
public string Urgent2ContactTel { get; set; }
/// <summary>
/// 紧急联系人地址2
/// </summary>
[Display(Name = "Urgent2ContactAddress"), Description("紧急联系人地址2"), MaxLength(128, ErrorMessage = "紧急联系人地址2 不能超过 128 个字符")]
public string Urgent2ContactAddress { get; set; }
/// <summary>
/// 职前年资
/// </summary>
[Display(Name = "PreJobSeniority"), Description("职前年资"), MaxLength(32, ErrorMessage = "职前年资 不能超过 32 个字符")]
public string PreJobSeniority { get; set; }
/// <summary>
/// 最高学历
/// </summary>
[Display(Name = "EduDegree"), Description("最高学历"), MaxLength(32, ErrorMessage = "最高学历 不能超过 32 个字符")]
public string EduDegree { get; set; }
/// <summary>
/// 证照类型
/// </summary>
[Display(Name = "CertificateType"), Description("证照类型"), MaxLength(32, ErrorMessage = "证照类型 不能超过 32 个字符")]
public string CertificateType { get; set; }
/// <summary>
/// 身份证号
/// </summary>
[Display(Name = "IdCardNo"), Description("身份证号"), MaxLength(64, ErrorMessage = "身份证号 不能超过 64 个字符")]
public string IdCardNo { get; set; }
/// <summary>
/// 身份证开始有效期
/// </summary>
public DateTime? IDCardBegin { get; set; }
/// <summary>
/// 身份证结束有效期
/// </summary>
public DateTime? IDCardEnd { get; set; }
/// <summary>
/// 户口性质
/// </summary>
[Display(Name = "RegisteredType"), Description("户口性质"), MaxLength(32, ErrorMessage = "户口性质 不能超过 32 个字符")]
public string RegisteredType { get; set; }
/// <summary>
/// 发证机关
/// </summary>
[Display(Name = "IDCardOrg"), Description("发证机关"), MaxLength(256, ErrorMessage = "发证机关 不能超过 256 个字符")]
public string IDCardOrg { get; set; }
/// <summary>
/// 家庭住址
/// </summary>
[Display(Name = "RegisteredAddress"), Description("家庭住址"), MaxLength(256, ErrorMessage = "家庭住址 不能超过 256 个字符")]
public string RegisteredAddress { get; set; }
/// <summary>
/// 现居住地
/// </summary>
[Display(Name = "NowAddress"), Description("现居住地"), MaxLength(256, ErrorMessage = "现居住地 不能超过 256 个字符")]
public string NowAddress { get; set; }
/// <summary>
/// 介绍人
/// </summary>
[Display(Name = "Introducer"), Description("介绍人"), MaxLength(32, ErrorMessage = "介绍人 不能超过 32 个字符")]
public string Introducer { get; set; }
/// <summary>
/// 国籍
/// </summary>
[Display(Name = "NationNo"), Description("国籍"), MaxLength(32, ErrorMessage = "国籍 不能超过 32 个字符")]
public string NationNo { get; set; }
/// <summary>
/// 公积金账号
/// </summary>
[Display(Name = "FundAccountID"), Description("公积金账号"), MaxLength(128, ErrorMessage = "公积金账号 不能超过 128 个字符")]
public string FundAccountID { get; set; }
/// <summary>
/// 公积金基数
/// </summary>
[Display(Name = "FundBase"), Description("公积金基数"), Column(TypeName = "decimal(20,2)")]
public decimal? FundBase { get; set; }
/// <summary>
/// 社保帐套
/// </summary>
[Display(Name = "InInsureAccountNo"), Description("社保帐套"), MaxLength(32, ErrorMessage = "社保帐套 不能超过 32 个字符")]
public string InInsureAccountNo { get; set; }
/// <summary>
/// 社保账号
/// </summary>
[Display(Name = "InsureAccountID"), Description("社保账号"), MaxLength(128, ErrorMessage = "社保账号 不能超过 128 个字符")]
public string InsureAccountID { get; set; }
/// <summary>
/// 社保基数
/// </summary>
[Display(Name = "InsureBase"), Description("社保基数"), Column(TypeName = "decimal(20,2)")]
public decimal? InsureBase { get; set; }
/// <summary>
/// 是否缴纳社保
/// </summary>
public bool? IsInsure { get; set; }
/// <summary>
/// 是否缴纳公积金
/// </summary>
public bool? IsFund { get; set; }
/// <summary>
/// 是否推荐
/// </summary>
public bool? IsRecommend { get; set; }
/// <summary>
/// 是否住宿
/// </summary>
public bool? IsStay { get; set; }
/// <summary>
/// 车牌号
/// </summary>
[Display(Name = "CarNo"), Description("车牌号"), MaxLength(32, ErrorMessage = "车牌号 不能超过 32 个字符")]
public string CarNo { get; set; }
/// <summary>
/// 标签
/// </summary>
[Display(Name = "Tags"), Description("标签"), MaxLength(2000, ErrorMessage = "标签 不能超过 2000 个字符")]
public string Tags { get; set; }
/// <summary>
/// 状态
/// </summary>
[Display(Name = "Status"), Description("状态"), MaxLength(32, ErrorMessage = "状态 不能超过 32 个字符")]
public string Status { get; set; }
/// <summary>
/// 工作年限
/// </summary>
[Display(Name = "WorkYears"), Description("工作年限"), Column(TypeName = "decimal(3,1)")]
public decimal? WorkYears { get; set; }
/// <summary>
/// 薪资区间
/// </summary>
[Display(Name = "SalaryPeriod"), Description("薪资区间"), MaxLength(32, ErrorMessage = "薪资区间 不能超过 32 个字符")]
public string SalaryPeriod { get; set; }
/// <summary>
/// 申请状态
/// </summary>
[Display(Name = "ApplicationStatus"), Description("申请状态"), MaxLength(32, ErrorMessage = "申请状态 不能超过 32 个字符")]
public string ApplicationStatus { get; set; }
/// <summary>
/// 申请时间
/// </summary>
public DateTime? ApplicationTime { get; set; }
/// <summary>
/// 职称类型/级别
/// </summary>
[Display(Name = "TitleType"), Description("职称类型/级别"), MaxLength(32, ErrorMessage = "职称类型/级别 不能超过 32 个字符")]
public string TitleType { get; set; }
/// <summary>
/// 直间接
/// </summary>
[Display(Name = "StaffType1"), Description("直间接"), MaxLength(32, ErrorMessage = "直间接 不能超过 32 个字符")]
public string StaffType1 { get; set; }
/// <summary>
/// 面试结果
/// </summary>
public bool? InterviewResult { get; set; }
/// <summary>
/// 不合适原因
/// </summary>
[Display(Name = "FailInterviewReason"), Description("不合适原因"), MaxLength(256, ErrorMessage = "不合适原因 不能超过 256 个字符")]
public string FailInterviewReason { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "RemarkSz"), Description("备注"), MaxLength(2000, ErrorMessage = "备注 不能超过 2000 个字符")]
public string RemarkSz { get; set; }
/// <summary>
/// 默认标志
/// </summary>
public int? IsDefault { get; set; }
/// <summary>
/// 预留字段1
/// </summary>
[Display(Name = "Reverse1"), Description("预留字段1"), MaxLength(1000, ErrorMessage = "预留字段1 不能超过 1000 个字符")]
public string Reverse1 { get; set; }
/// <summary>
/// 预留字段2
/// </summary>
[Display(Name = "Reverse2"), Description("预留字段2"), MaxLength(1000, ErrorMessage = "预留字段2 不能超过 1000 个字符")]
public string Reverse2 { get; set; }
/// <summary>
/// 预留字段3
/// </summary>
[Display(Name = "Reverse3"), Description("预留字段3"), MaxLength(1000, ErrorMessage = "预留字段3 不能超过 1000 个字符")]
public string Reverse3 { get; set; }
/// <summary>
/// 预留字段4
/// </summary>
[Display(Name = "Reverse4"), Description("预留字段4"), MaxLength(1000, ErrorMessage = "预留字段4 不能超过 1000 个字符")]
public string Reverse4 { get; set; }
/// <summary>
/// 预留字段5
/// </summary>
[Display(Name = "Reverse5"), Description("预留字段5"), MaxLength(1000, ErrorMessage = "预留字段5 不能超过 1000 个字符")]
public string Reverse5 { get; set; }
/// <summary>
/// 预留字段6
/// </summary>
[Display(Name = "Reverse6"), Description("预留字段6"), MaxLength(1000, ErrorMessage = "预留字段6 不能超过 1000 个字符")]
public string Reverse6 { get; set; }
/// <summary>
/// 预留字段7
/// </summary>
[Display(Name = "Reverse7"), Description("预留字段7"), MaxLength(1000, ErrorMessage = "预留字段7 不能超过 1000 个字符")]
public string Reverse7 { get; set; }
/// <summary>
/// 预留字段8
/// </summary>
[Display(Name = "Reverse8"), Description("预留字段8"), MaxLength(1000, ErrorMessage = "预留字段8 不能超过 1000 个字符")]
public string Reverse8 { get; set; }
/// <summary>
/// 预留字段9
/// </summary>
[Display(Name = "Reverse9"), Description("预留字段9"), MaxLength(1000, ErrorMessage = "预留字段9 不能超过 1000 个字符")]
public string Reverse9 { get; set; }
/// <summary>
/// 预留字段10
/// </summary>
[Display(Name = "Reverse10"), Description("预留字段10"), MaxLength(1000, ErrorMessage = "预留字段10 不能超过 1000 个字符")]
public string Reverse10 { get; set; }
/// <summary>
/// 预留字段11
/// </summary>
public int? ReverseI1 { get; set; }
/// <summary>
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
/// <summary>
/// 加入回收站时间
/// </summary>
public DateTime? RecycledTime { get; set; }
}

@ -440,4 +440,9 @@ public class Ghrh_Resume : BasePoco
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
/// <summary>
/// 加入回收站时间
/// </summary>
public DateTime? RecycledTime { get; set; }
}

@ -1515,6 +1515,16 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
if (toolbarRoles != null && toolbarRoles.Any())
{
if (toolbarRoles.Where(x => x.RoleNo == "RecruitResumeRecommend").Any())
result.JM_PageControlT1.Toolbar.Add(new Toolbar()
{
display = true,
fnKey = "TBD5YN",
fnTitle = "推荐",
fnType = "row",
icon = "ess-icon-reject",
position = "left"
});
if (toolbarRoles.Where(x => x.RoleNo == "RecruitResumeTag").Any())
result.JM_PageControlT1.Toolbar.Add(new Toolbar()
{

@ -1,4 +1,5 @@
using static Tiobon.Core.Model.Consts;
using Org.BouncyCastle.Crypto;
using static Tiobon.Core.Model.Consts;
namespace Tiobon.Core.Services;
@ -469,6 +470,24 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
Status = status,
UpdateBy = App.User.ID,
UpdateTime = DateTime.Now,
RecycledTime = null,
})
.Where(it => ids.Contains(it.Id)).ExecuteCommandAsync();
return result > 0 ? true : false;
}
#endregion
#region 回收简历
public async Task<bool> Recovery(List<long> ids)
{
var result = await Db.Updateable<Ghrh_Resume>()
.SetColumns(it => new Ghrh_Resume()
{
Status = "Recycled",
UpdateBy = App.User.ID,
UpdateTime = DateTime.Now,
RecycledTime = DateTime.Now,
})
.Where(it => ids.Contains(it.Id)).ExecuteCommandAsync();
return result > 0 ? true : false;
@ -2208,6 +2227,26 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1";
}
#endregion
#region 回收站中的简历30天后自动删除
public async Task<ServiceResult> OverTimeDeleteResume()
{
var dt = Db.GetDate().AddDays(-30);
var list = await base.Query(x => x.Status == "Recycled" && x.RecycledTime <= dt);
var ids = list.Select(x => x.Id).ToList();
if (ids.Any())
await Db.Updateable<Ghrh_Resume>()
.SetColumns(it => new Ghrh_Resume()
{
IsEnable = 0,
UpdateBy = App.User.ID,
UpdateTime = DateTime.Now,
})
.Where(it => ids.Contains(it.Id)).ExecuteCommandAsync();
return ServiceResult.OprateSuccess();
}
#endregion
#region 通用方法
/// <summary>
/// 记录日志

@ -0,0 +1,27 @@
using Tiobon.Core.IServices;
using Quartz;
/// <summary>
/// 这里要注意下,命名空间和程序集是一样的,不然反射不到
/// </summary>
namespace Tiobon.Core.Tasks;
public class Job_OverTimeDeleteResume_Quartz : JobBase, IJob
{
private readonly IGhrh_ResumeServices _ghrh_ResumeServices;
public Job_OverTimeDeleteResume_Quartz(IGhrh_ResumeServices ghrh_ResumeServices, ITasksQzServices tasksQzServices, ITasksLogServices tasksLogServices)
: base(tasksQzServices, tasksLogServices)
{
_ghrh_ResumeServices = ghrh_ResumeServices;
}
public async Task Execute(IJobExecutionContext context)
{
var executeLog = await ExecuteJob(context, async () => await Run(context));
}
public async Task Run(IJobExecutionContext context)
{
Console.WriteLine($"Job_OverTimeDeleteResume_Quartz 执行 {DateTime.Now.ToShortTimeString()}");
await _ghrh_ResumeServices.OverTimeDeleteResume();
}
}

@ -6915,6 +6915,11 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeBase.RecycledTime">
<summary>
加入回收站时间
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBGBase">
<summary>
教育背景 (Dto.Base)
@ -17556,6 +17561,11 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_Resume.RecycledTime">
<summary>
加入回收站时间
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBG">
<summary>
教育背景 (Model)

Loading…
Cancel
Save