回收站中的简历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. 20
      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")] [HttpPost("Recovery")]
public async Task<ServiceResult> Recovery([FromBody] List<long> ids) public async Task<ServiceResult> Recovery([FromBody] List<long> ids)
{ {
bool result = await _service.UpdateStatus(ids, "Recycled"); bool result = await _service.Recovery(ids);
if (result) if (result)
return ServiceResult.OprateSuccess("回收成功!"); return ServiceResult.OprateSuccess("回收成功!");
return ServiceResult.OprateFailed("回收失败!"); return ServiceResult.OprateFailed("回收失败!");

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

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

@ -14,14 +14,14 @@
* SimonHsiao * SimonHsiao
* *
*/ */
namespace Tiobon.Core.Model.Models namespace Tiobon.Core.Model.Models;
{
/// <summary>
/// 个人简历 (Dto.Base) /// <summary>
/// </summary> /// 个人简历 (Dto.Base)
public class Ghrh_ResumeBase /// </summary>
{ public class Ghrh_ResumeBase
{
/// <summary> /// <summary>
/// 姓名 /// 姓名
@ -439,5 +439,9 @@ namespace Tiobon.Core.Model.Models
/// 预留字段12 /// 预留字段12
/// </summary> /// </summary>
public int? ReverseI2 { get; set; } public int? ReverseI2 { get; set; }
}
/// <summary>
/// 加入回收站时间
/// </summary>
public DateTime? RecycledTime { get; set; }
} }

@ -440,4 +440,9 @@ public class Ghrh_Resume : BasePoco
/// 预留字段12 /// 预留字段12
/// </summary> /// </summary>
public int? ReverseI2 { get; set; } 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 != 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()) if (toolbarRoles.Where(x => x.RoleNo == "RecruitResumeTag").Any())
result.JM_PageControlT1.Toolbar.Add(new Toolbar() 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; namespace Tiobon.Core.Services;
@ -469,6 +470,24 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
Status = status, Status = status,
UpdateBy = App.User.ID, UpdateBy = App.User.ID,
UpdateTime = DateTime.Now, 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(); .Where(it => ids.Contains(it.Id)).ExecuteCommandAsync();
return result > 0 ? true : false; return result > 0 ? true : false;
@ -2208,6 +2227,26 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1";
} }
#endregion #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 通用方法 #region 通用方法
/// <summary> /// <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 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeBase.RecycledTime">
<summary>
加入回收站时间
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBGBase"> <member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBGBase">
<summary> <summary>
教育背景 (Dto.Base) 教育背景 (Dto.Base)
@ -17556,6 +17561,11 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_Resume.RecycledTime">
<summary>
加入回收站时间
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBG"> <member name="T:Tiobon.Core.Model.Models.Ghrh_ResumeEduBG">
<summary> <summary>
教育背景 (Model) 教育背景 (Model)

Loading…
Cancel
Save