diff --git a/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs b/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs index 6b4cb63a..ce30868d 100644 --- a/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs +++ b/Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs @@ -240,10 +240,10 @@ public class Ghrh_ResumeController : BaseController /// 简历Id - /// 时间段列表,["2024/10/12 10:00~2024/10/12 11:00"],最多三个,超过三个取前三 + /// /// [HttpPost, Route("SubscribeInterview/{id}")] - public async Task SubscribeInterview(long id, [FromBody] List times) => await _service.SubscribeInterview(id, times); + public async Task SubscribeInterview(long id, [FromBody] ResumeSubscribeInterviewForm form) => await _service.SubscribeInterview(id, form); #endregion diff --git a/Tiobon.Core.Api/Tiobon.Core.Model.xml b/Tiobon.Core.Api/Tiobon.Core.Model.xml index 1d3f0dc9..9b550d94 100644 --- a/Tiobon.Core.Api/Tiobon.Core.Model.xml +++ b/Tiobon.Core.Api/Tiobon.Core.Model.xml @@ -23147,6 +23147,16 @@ 评估内容 + + + 时间段列表,["2024/10/12 10:00~2024/10/12 11:00"],最多三个,超过三个取前三 + + + + + 备注 + + 取消原因 diff --git a/Tiobon.Core.Api/Tiobon.Core.xml b/Tiobon.Core.Api/Tiobon.Core.xml index ca6abb4e..668eff65 100644 --- a/Tiobon.Core.Api/Tiobon.Core.xml +++ b/Tiobon.Core.Api/Tiobon.Core.xml @@ -1357,12 +1357,12 @@ 简历Id - + 面试官约面 简历Id - 时间段列表,["2024/10/12 10:00~2024/10/12 11:00"],最多三个,超过三个取前三 + diff --git a/Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs b/Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs index 1f0cf9d4..310c11db 100644 --- a/Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs +++ b/Tiobon.Core.IServices/Ghrh/IGhrh_ResumeServices.cs @@ -37,7 +37,7 @@ public interface IGhrh_ResumeServices : IBaseServices RemindHasRecommend(List id); - Task SubscribeInterview(long id, List times); + Task SubscribeInterview(long id, ResumeSubscribeInterviewForm form); Task ScheduleInterview(long id, ResumeScheduleInterviewForm body); Task ModifyInterviewTime(long id, string time); diff --git a/Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs b/Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs index 4940cadb..ff8d6a9a 100644 --- a/Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs +++ b/Tiobon.Core.Model/ViewModels/Extend/ResumeViewTab.cs @@ -209,8 +209,23 @@ public class ResumeAssessInterviewForm } +public class ResumeSubscribeInterviewForm +{ + + /// + /// 时间段列表,["2024/10/12 10:00~2024/10/12 11:00"],最多三个,超过三个取前三 + /// + public List Times { get; set; } + + /// + /// 备注 + /// + + public string Remark { get; set; } + +} public class ResumeCancelInterviewForm -{ +{ /// /// 取消原因 diff --git a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs index 43dd12a3..1e537f82 100644 --- a/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs +++ b/Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs @@ -1304,13 +1304,7 @@ END"; if (records[i].FirstViewTime.IsNotEmptyOrNull()) await SendMessage([records[i].StaffId.Value], "简历提醒", "您有个简历推荐,请及时查看!"); } - - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】发送简历推荐提醒!" - }); + await LogRecord(order.Id, $"发送简历推荐提醒"); } } @@ -1319,7 +1313,7 @@ END"; #endregion #region 面试官约面 - public async Task SubscribeInterview(long id, List times) + public async Task SubscribeInterview(long id, ResumeSubscribeInterviewForm form) { var entity = await base.QueryById(id); if (entity == null) @@ -1328,7 +1322,7 @@ END"; if (entity.Status != DIC_INTERVIEW_ORDER_STATUS.HasRecommended) return ServiceResult.OprateFailed("【已推荐】状态下才能约面!"); - times.ForEach(x => + form.Times.ForEach(x => { if (x.IndexOf("~") < 0) throw new Exception($"传入时间【{x}】无效,请检查格式!"); @@ -1352,25 +1346,24 @@ END"; await _ghrh_InterviewOrderServices.Update(order, ["Status"]); var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id); - for (int i = 0; i < times.Count; i++) + for (int i = 0; i < form.Times.Count; i++) { if (i == 0) - records.ForEach(record => record.PlanInterviewTime1 = times[i]); + records.ForEach(record => record.PlanInterviewTime1 = form.Times[i]); else if (i == 1) - records.ForEach(record => record.PlanInterviewTime2 = times[i]); + records.ForEach(record => record.PlanInterviewTime2 = form.Times[i]); else if (i == 2) - records.ForEach(record => record.PlanInterviewTime3 = times[i]); + records.ForEach(record => record.PlanInterviewTime3 = form.Times[i]); } - records.ForEach(record => record.Status = DIC_INTERVIEW_ORDER_STATUS.WaitAppointment); + records.ForEach(record => + { + record.Status = DIC_INTERVIEW_ORDER_STATUS.WaitAppointment; + record.RemarkSz = form.Remark; + }); await _ghrh_InterviewRecordServices.Update(records[0], ["PlanInterviewTime1", "PlanInterviewTime2", "PlanInterviewTime3", "Status"]); - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】预约面试,面试时间:{string.Join("、", times)}!" - }); + await LogRecord(order.Id, $"预约面试,面试时间:{string.Join("、", form.Times)}"); entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitAppointment; await Update(entity, ["Status"]); @@ -1419,12 +1412,7 @@ END"; }); await _ghrh_InterviewRecordServices.Update(records, ["InterviewTime", "InterviewBeginTime", "InterviewEndTime", "Status"]); - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】安排面试,面试时间:{body.Time}!" - }); + await LogRecord(order.Id, $"安排面试,面试时间:{body.Time}"); entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; await Update(entity, ["Status"]); @@ -1477,14 +1465,8 @@ END"; //{ // var staffs = JsonHelper.JsonToObj>(record.ReceiverIds); // await SendMessage(staffs.Select(x => x.StaffId).ToList(), "简历提醒", "您有个简历【待面试】,请及时查看面试时间!"); - //} - - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】变更面试时间,面试时间:{time}!" - }); + //} + await LogRecord(order.Id, $"变更面试时间,面试时间:{time}"); entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; await Update(entity, ["Status"]); @@ -1517,13 +1499,7 @@ END"; if (records[i].FirstViewTime.IsNotEmptyOrNull()) await SendMessage([records[i].StaffId.Value], "简历提醒", "您有个简历【待面试】,请及时查看面试时间!"); } - - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】发送待面试提醒!" - }); + await LogRecord(order.Id, $"发送待面试提醒"); } } @@ -1578,13 +1554,7 @@ END"; }); } - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】发起一个新的面试,面试时间:{input.Time}!" - }); - + await LogRecord(order.Id, $"发起一个新的面试,面试时间:{input.Time}"); entity.Status = DIC_INTERVIEW_ORDER_STATUS.WaitInterview; await Update(entity, ["Status"]); @@ -1643,12 +1613,8 @@ END"; record.Status = DIC_INTERVIEW_ORDER_STATUS.HasInterview; await _ghrh_InterviewRecordServices.Update(record, ["AssessTime", "Status", "IsPass", "InterviewResult"]); - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】填写了面试评估,轮数:{order.Round},是否通过:{(input.IsPass == true ? "通过" : "不通过")},内容:{input.Content}!" - }); + + await LogRecord(order.Id, "填写了面试评估,轮数:{order.Round},是否通过:{(input.IsPass == true ? \"通过\" : \"不通过\")},内容:{input.Content}!"); return ServiceResult.OprateSuccess(); } @@ -1673,12 +1639,7 @@ END"; await _ghrh_InterviewRecordServices.Add(insertRecord); } - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】变更面试官!" - }); + await LogRecord(order.Id, "变更状态为:变更面试官!"); return ServiceResult.OprateSuccess(); } #endregion @@ -1692,24 +1653,13 @@ END"; var entity = await base.QueryById(id); if (entity == null) return ServiceResult.OprateFailed("无效的简历ID!"); + + await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.HasSendOffer); + var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); + await UpdateInterviewOrderStatus(order, DIC_INTERVIEW_ORDER_STATUS.HasSendOffer); + await UpdateInterviewRecordStatus(order, DIC_INTERVIEW_ORDER_STATUS.HasSendOffer); - entity.Status = DIC_INTERVIEW_ORDER_STATUS.HasSendOffer; - await Update(entity, ["Status"]); - - var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); - order.Status = DIC_INTERVIEW_ORDER_STATUS.HasSendOffer; - await _ghrh_InterviewOrderServices.Update(order, ["Status"]); - - var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id); - records.ForEach(record => record.Status = DIC_INTERVIEW_ORDER_STATUS.HasSendOffer); - await _ghrh_InterviewRecordServices.Update(records, ["Status"]); - - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】变更状态为:已发offer!" - }); + await LogRecord(order.Id, "变更状态为:已发offer!"); } return ServiceResult.OprateSuccess(); } @@ -1737,14 +1687,9 @@ END"; //{ // var staffs = JsonHelper.JsonToObj>(record.ReceiverIds); // await SendMessage(staffs.Select(x => x.StaffId).ToList(), "简历提醒", "您有个简历【待面试】,请及时查看面试时间!"); - //} + //} + await LogRecord(order.Id, "发送待已发offer提醒!"); - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】发送待已发offer提醒!" - }); } } @@ -1779,13 +1724,7 @@ END"; await Update(entity, ["Status"]); await _ghrh_InterviewOrderServices.Update(order, ["Status"]); await _ghrh_InterviewRecordServices.Update(records, ["Status"]); - - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】变更是否报道!" - }); + await LogRecord(order.Id, "变更是否报道!"); } } @@ -1800,23 +1739,13 @@ END"; if (entity == null) return ServiceResult.OprateFailed("无效的简历ID!"); - entity.Status = DIC_INTERVIEW_ORDER_STATUS.Fail; - await Update(entity, ["Status"]); + await UpdateResumeStatus(entity, DIC_INTERVIEW_ORDER_STATUS.Fail); var order = await _ghrh_InterviewOrderServices.QuerySingle(x => x.ResumeId == id); - order.Status = DIC_INTERVIEW_ORDER_STATUS.Fail; - await _ghrh_InterviewOrderServices.Update(order, ["Status"]); + await UpdateInterviewOrderStatus(order, DIC_INTERVIEW_ORDER_STATUS.Fail); + await UpdateInterviewRecordStatus(order, DIC_INTERVIEW_ORDER_STATUS.Fail); - var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id); - records.ForEach(record => record.Status = DIC_INTERVIEW_ORDER_STATUS.Fail); - await _ghrh_InterviewRecordServices.Update(records, ["Status"]); - - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】变更状态为:不合适!" - }); + await LogRecord(order.Id, "变更状态为:不合适!"); return ServiceResult.OprateSuccess(); } #endregion @@ -1836,12 +1765,8 @@ END"; record.IsCancel = true; record.CancelReason = input.CancelReason; - var usser = await GetUser(); - await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() - { - OrderId = order.Id, - RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】取消面试!" - }); + await LogRecord(order.Id, "取消面试!"); + return ServiceResult.OprateSuccess(); } #endregion @@ -2124,4 +2049,44 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1"; return ServiceResult.OprateSuccess("查询成功", result); } #endregion + + #region 通用方法 + /// + /// 记录日志 + /// + /// 面试单ID + /// 内容 + /// + public async Task LogRecord(long orderId, string content) + { + var usser = await GetUser(); + await _ghrh_InterviewLogServices.Add(new InsertGhrh_InterviewLogInput() + { + OrderId = orderId, + RemarkSz = $"用户【{usser?.UserName ?? App.User.ID.ToString()}】" + content + }); + } + public async Task UpdateResumeStatus(Ghrh_Resume entity, string Status) + { + entity.Status = Status; + await Update(entity, ["Status"]); + } + public async Task UpdateInterviewOrderStatus(Ghrh_InterviewOrder order, string Status) + { + order.Status = Status; + await _ghrh_InterviewOrderServices.Update(order, ["Status"]); + } + /// + /// 修改面试记录状态 + /// + /// + /// + /// + public async Task UpdateInterviewRecordStatus(Ghrh_InterviewOrder order, string Status) + { + var records = await _ghrh_InterviewRecordServices.Query(x => x.Round == order.Round && x.OrderId == order.Id); + records.ForEach(record => record.Status = Status); + await _ghrh_InterviewRecordServices.Update(records, ["Status"]); + } + #endregion } \ No newline at end of file diff --git a/Tiobon.Core/Tiobon.Core.Model.xml b/Tiobon.Core/Tiobon.Core.Model.xml index 2e80f2e0..9b550d94 100644 --- a/Tiobon.Core/Tiobon.Core.Model.xml +++ b/Tiobon.Core/Tiobon.Core.Model.xml @@ -23147,6 +23147,21 @@ 评估内容 + + + 时间段列表,["2024/10/12 10:00~2024/10/12 11:00"],最多三个,超过三个取前三 + + + + + 备注 + + + + + 取消原因 + + 留言信息展示类 diff --git a/Tiobon.Core/Tiobon.Core.xml b/Tiobon.Core/Tiobon.Core.xml index 5c953887..668eff65 100644 --- a/Tiobon.Core/Tiobon.Core.xml +++ b/Tiobon.Core/Tiobon.Core.xml @@ -1357,12 +1357,12 @@ 简历Id - + 面试官约面 简历Id - 时间段列表,["2024/10/12 10:00~2024/10/12 11:00"],最多三个,超过三个取前三 + @@ -1464,6 +1464,14 @@ 简历ID + + + 取消面试 + + 简历ID + body + + 教育背景(Controller)