FlexJobApi.Core/Entities/FlexJobServer/Tasks/TaskUserCollect.cs
File was renamed from FlexJobApi.Core/Entities/FlexJobServer/Tasks/UserTaskCollect.cs @@ -9,7 +9,7 @@ /// <summary> /// 用户任务收藏 /// </summary> public class UserTaskCollect : CommonEntity public class TaskUserCollect : CommonEntity { /// <summary> /// 用户Id FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseUserCollect.cs
New file @@ -0,0 +1,54 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 企业收藏用户 /// </summary> public class EnterpriseUserCollect : CommonEntity { /// <summary> /// 企业Id /// </summary> public Guid EnterpriseId { get; set; } /// <summary> /// 企业 /// </summary> public Enterprise Enterprise { get; set; } /// <summary> /// 用户信息Id /// </summary> public Guid UserId { get; set; } /// <summary> /// 用户信息 /// </summary> public User User { get; set; } /// <summary> /// 是否已收藏 /// </summary> public bool IsCollected { get; set; } /// <summary> /// 收藏时间 /// </summary> public DateTime? CollectedTime { get; set; } /// <summary> /// 是否已联系 /// </summary> public bool IsContacted { get; set; } /// <summary> /// 联系时间 /// </summary> public DateTime? ContactedTime { get; set; } } } FlexJobApi.Core/FlexJobApi.Core.xml
@@ -1034,27 +1034,27 @@ 附件 </summary> </member> <member name="T:FlexJobApi.Core.UserTaskCollect"> <member name="T:FlexJobApi.Core.TaskUserCollect"> <summary> 用户任务收藏 </summary> </member> <member name="P:FlexJobApi.Core.UserTaskCollect.UserId"> <member name="P:FlexJobApi.Core.TaskUserCollect.UserId"> <summary> 用户Id </summary> </member> <member name="P:FlexJobApi.Core.UserTaskCollect.User"> <member name="P:FlexJobApi.Core.TaskUserCollect.User"> <summary> 用户 </summary> </member> <member name="P:FlexJobApi.Core.UserTaskCollect.TaskInfoId"> <member name="P:FlexJobApi.Core.TaskUserCollect.TaskInfoId"> <summary> 任务Id </summary> </member> <member name="P:FlexJobApi.Core.UserTaskCollect.TaskInfo"> <member name="P:FlexJobApi.Core.TaskUserCollect.TaskInfo"> <summary> 任务 </summary> @@ -1503,6 +1503,51 @@ <member name="P:FlexJobApi.Core.EnterpriseEmployee.TaskInfoUsers"> <summary> 任务人员信息 </summary> </member> <member name="T:FlexJobApi.Core.EnterpriseUserCollect"> <summary> 企业收藏用户 </summary> </member> <member name="P:FlexJobApi.Core.EnterpriseUserCollect.EnterpriseId"> <summary> 企业Id </summary> </member> <member name="P:FlexJobApi.Core.EnterpriseUserCollect.Enterprise"> <summary> 企业 </summary> </member> <member name="P:FlexJobApi.Core.EnterpriseUserCollect.UserId"> <summary> 用户信息Id </summary> </member> <member name="P:FlexJobApi.Core.EnterpriseUserCollect.User"> <summary> 用户信息 </summary> </member> <member name="P:FlexJobApi.Core.EnterpriseUserCollect.IsCollected"> <summary> 是否已收藏 </summary> </member> <member name="P:FlexJobApi.Core.EnterpriseUserCollect.CollectedTime"> <summary> 收藏时间 </summary> </member> <member name="P:FlexJobApi.Core.EnterpriseUserCollect.IsContacted"> <summary> 是否已联系 </summary> </member> <member name="P:FlexJobApi.Core.EnterpriseUserCollect.ContactedTime"> <summary> 联系时间 </summary> </member> <member name="T:FlexJobApi.Core.Menu"> @@ -4666,6 +4711,11 @@ 任务名称 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.Code"> <summary> 任务单号 </summary> </member> <member name="P:FlexJobApi.Core.GetTaskInfoQueryResult.BillingMethod"> <summary> 结算周期 @@ -7154,6 +7204,31 @@ 是否选中 </summary> </member> <member name="T:FlexJobApi.Core.CollectUserResumeCommand"> <summary> 收藏灵工 </summary> </member> <member name="P:FlexJobApi.Core.CollectUserResumeCommand.Id"> <summary> 用户Id </summary> </member> <member name="P:FlexJobApi.Core.CollectUserResumeCommand.IsCollected"> <summary> 是否已收藏 </summary> </member> <member name="T:FlexJobApi.Core.ContactUserResumeCommand"> <summary> 联系灵工 </summary> </member> <member name="P:FlexJobApi.Core.ContactUserResumeCommand.Id"> <summary> 用户Id </summary> </member> <member name="T:FlexJobApi.Core.DeleteUserResumeCredentialCommand"> <summary> 删除用户简历-资格证书 FlexJobApi.Core/Models/FlexJobServer/Tasks/Queries/GetTaskInfoQuery.cs
@@ -71,6 +71,11 @@ public string Name { get; set; } /// <summary> /// 任务单号 /// </summary> public string Code { get; set; } /// <summary> /// 结算周期 /// </summary> public EnumBillingMethod BillingMethod { get; set; } FlexJobApi.Core/Models/UserServer/UserResumes/Commands/CollectUserResumeCommand.cs
New file @@ -0,0 +1,26 @@ using MediatR; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 收藏灵工 /// </summary> [Resource([EnumResourceController.UserResume])] public class CollectUserResumeCommand : IRequest<Guid> { /// <summary> /// 用户Id /// </summary> public Guid Id { get; set; } /// <summary> /// 是否已收藏 /// </summary> public bool IsCollected { get; set; } } } FlexJobApi.Core/Models/UserServer/UserResumes/Commands/ContactUserResumeCommand.cs
New file @@ -0,0 +1,21 @@ using MediatR; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// <summary> /// 联系灵工 /// </summary> [Resource([EnumResourceController.UserResume])] public class ContactUserResumeCommand : IRequest<Guid> { /// <summary> /// 用户Id /// </summary> public Guid Id { get; set; } } } FlexJobApi.FlexJobServer.Application/FlexJobApi.FlexJobServer.Application.xml
@@ -196,7 +196,7 @@ 任务人员命令处理器 </summary> </member> <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.UserTaskCollect})"> <member name="M:FlexJobApi.FlexJobServer.Application.TaskUserCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfoUser},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskUserCollect})"> <summary> 任务人员命令处理器 </summary> FlexJobApi.FlexJobServer.Application/TaskUsers/Commands/TaskUserCommandHandler.cs
@@ -16,14 +16,14 @@ /// </summary> public class TaskUserCommandHandler( IRepository<TaskInfoUser> rep, IRepository<UserTaskCollect> repUserTaskCollect IRepository<TaskUserCollect> repTaskUserCollect ) : IRequestHandler<CollectTaskCommand, int>, IRequestHandler<SetTaskUserHireCommand, Guid>, IRequestHandler<SetTaskUserArrangeCommand, Guid> { private readonly IRepository<TaskInfoUser> rep = rep; private readonly IRepository<UserTaskCollect> repUserTaskCollect = repUserTaskCollect; private readonly IRepository<TaskUserCollect> repTaskUserCollect = repTaskUserCollect; /// <summary> /// 收藏任务 @@ -34,7 +34,7 @@ public async Task<int> Handle(CollectTaskCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); var collects = await repUserTaskCollect.AsQueryable().AsNoTracking() var collects = await repTaskUserCollect.AsQueryable().AsNoTracking() .Where(it => request.Ids.Contains(it.TaskInfoId) && it.UserId == logier.Id) .ToListAsync(cancellationToken); if (request.IsCollect) @@ -42,18 +42,18 @@ var addIds = request.Ids.Where(it => !collects.Any(c => c.TaskInfoId == it)).ToList(); foreach (var addId in addIds) { var entity = new UserTaskCollect var entity = new TaskUserCollect { TaskInfoId = addId, UserId = logier.Id }; await repUserTaskCollect.InsertAsync(entity); await repTaskUserCollect.InsertAsync(entity); } return addIds.Count; } else { await repUserTaskCollect.DeleteAsync(collects); await repTaskUserCollect.DeleteAsync(collects); return collects.Count; } } FlexJobApi.FlexJobServer.Application/Tasks/Queries/TaskInfoQueryHandler.cs
@@ -81,7 +81,7 @@ } } } model.IsCollected = await rep.Change<UserTaskCollect>().AsQueryable().AsNoTracking() model.IsCollected = await rep.Change<TaskUserCollect>().AsQueryable().AsNoTracking() .AnyAsync(it => it.TaskInfoId == request.Id && it.UserId == logier.Id); } return model; FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -502,7 +502,7 @@ 用户简历命令处理器 </summary> </member> <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})"> <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseUserCollect})"> <summary> 用户简历命令处理器 </summary> @@ -555,6 +555,22 @@ <param name="cancellationToken"></param> <returns></returns> </member> <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.CollectUserResumeCommand,System.Threading.CancellationToken)"> <summary> 收藏灵工 </summary> <param name="request"></param> <param name="cancellationToken"></param> <returns></returns> </member> <member name="M:FlexJobApi.UserServer.Application.UserResumeCommandHandler.Handle(FlexJobApi.Core.ContactUserResumeCommand,System.Threading.CancellationToken)"> <summary> 联系灵工 </summary> <param name="request"></param> <param name="cancellationToken"></param> <returns></returns> </member> <member name="T:FlexJobApi.UserServer.Application.UserResumeQueryHandler"> <summary> 用户简历查询处理器 FlexJobApi.UserServer.Application/UserResumes/Commands/UserResumeCommandHandler.cs
@@ -16,16 +16,20 @@ /// 用户简历命令处理器 /// </summary> public class UserResumeCommandHandler( IRepository<User> rep IRepository<User> rep, IRepository<EnterpriseUserCollect> repEnterpriseUserCollect ) : IRequestHandler<SaveUserResumePersonalCommand, Guid>, IRequestHandler<SaveUserResumeJobSeekingCommand, Guid>, IRequestHandler<SaveUserResumeCredentialCommand, Guid>, IRequestHandler<DeleteUserResumeCredentialCommand, int>, IRequestHandler<SaveUserResumeWorkExperienceCommand, Guid>, IRequestHandler<SaveUserResumeDetailCommand, Guid> IRequestHandler<SaveUserResumeDetailCommand, Guid>, IRequestHandler<CollectUserResumeCommand, Guid>, IRequestHandler<ContactUserResumeCommand, Guid> { private readonly IRepository<User> rep = rep; private readonly IRepository<EnterpriseUserCollect> repEnterpriseUserCollect = repEnterpriseUserCollect; /// <summary> /// 保存用户简历-个人信息 @@ -114,5 +118,73 @@ .Include(it => it.Photos) .UpdateData(request, cancellationToken: cancellationToken); } /// <summary> /// 收藏灵工 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<Guid> Handle(CollectUserResumeCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); if (logier.Type != EnumUserType.Enterprise) throw Oops.Oh(EnumErrorCodeType.s400, "需企业用户方可联系"); var entity = await repEnterpriseUserCollect.AsQueryable() .FirstOrDefaultAsync(it => it.EnterpriseId == logier.EnterpriseId && it.UserId == request.Id); if (entity == null) { entity = new EnterpriseUserCollect { EnterpriseId = logier.EnterpriseId!.Value, UserId = request.Id, IsCollected = true, CollectedTime = request.IsCollected ? DateTime.Now : null }; await repEnterpriseUserCollect.InsertAsync(entity); } else if (entity.IsCollected != request.IsCollected) { entity.IsCollected = request.IsCollected; entity.CollectedTime = request.IsCollected ? DateTime.Now : null; await repEnterpriseUserCollect.UpdateAsync(entity); } return entity.Id; } /// <summary> /// 联系灵工 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task<Guid> Handle(ContactUserResumeCommand request, CancellationToken cancellationToken) { var logier = JwtUtils.GetCurrentLogier(); if (logier.Type != EnumUserType.Enterprise) throw Oops.Oh(EnumErrorCodeType.s400, "需企业用户方可联系"); var entity = await repEnterpriseUserCollect.AsQueryable() .FirstOrDefaultAsync(it => it.EnterpriseId == logier.EnterpriseId && it.UserId == request.Id); if (entity == null) { entity = new EnterpriseUserCollect { EnterpriseId = logier.EnterpriseId!.Value, UserId = request.Id, IsContacted = true, ContactedTime = DateTime.Now }; await repEnterpriseUserCollect.InsertAsync(entity); } else if (entity.IsContacted == false) { entity.IsContacted = true; entity.ContactedTime = DateTime.Now; await repEnterpriseUserCollect.UpdateAsync(entity); } return entity.Id; } } }