cylsg/cylsg.Application/Orders/Dtos/OrderDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cylsg/cylsg.Application/Timers/TimedBackgroundService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cylsg/cylsg.Application/Users/UserAppService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cylsg/cylsg.Model/OrderModel/Order.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
cylsg/cylsg.Web.Core/Startup.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
cylsg/cylsg.Application/Orders/Dtos/OrderDto.cs
@@ -29,14 +29,106 @@ public string OrderName { get; set; } /// <summary> /// 工作开始时间 /// 工作开始日期 /// </summary> public DateTime? WordStartTime { get; set; } /// <summary> /// 工作结束时间 /// 工作开始日期名称 /// </summary> public string WordStartTimeName { get { if (this.WordStartTime.HasValue) { // 可以添加自己的逻辑 return this.WordStartTime.Value.ToString("yyyy-MM-dd"); } else { return ""; } }} /// <summary> /// 工作结束日期 /// </summary> public DateTime? WordEndTime { get; set; } /// <summary> /// 工作结束日期名称 /// </summary> public string WordEndTimeName { get { if (this.WordEndTime.HasValue) { // 可以添加自己的逻辑 return this.WordEndTime.Value.ToString("yyyy-MM-dd"); } else { return ""; } } } /// <summary> /// 工作开始时间 /// </summary> public DateTime? StartTime { get; set; } /// <summary> /// 工作开始时间名称 /// </summary> public string StartTimeName { get { if (this.StartTime.HasValue) { // 可以添加自己的逻辑 return this.StartTime.Value.ToString("HH:mm"); } else { return ""; } } } /// <summary> /// 工作结束时间 /// </summary> public DateTime? EndTime { get; set; } /// <summary> /// 工作结束日期名称 /// </summary> public string EndTimeName { get { if (this.EndTime.HasValue) { // 可以添加自己的逻辑 return this.EndTime.Value.ToString("HH:mm"); } else { return ""; } } } /// <summary> /// 需求 @@ -214,9 +306,9 @@ { /// <summary> /// 招工明细OrderBiddingId /// 招工OrderId /// </summary> public int OrderBiddingId { get; set; } public int OrderId { get; set; } /// <summary> @@ -290,6 +382,17 @@ /// <summary> /// 用户id /// </summary> public int WorkerUserId { get; set; } /// <summary> /// 用户昵称 /// </summary> public string WorkerName { get; set; } /// <summary> /// 打卡明细 /// </summary> public List<OrderBiddingDetailCheckDto> orderBiddingDetailCheck { get; set; } cylsg/cylsg.Application/Orders/OrderCompanyAppService.cs
@@ -159,6 +159,8 @@ order.OrderName = orderDto.OrderName; order.WordStartTime = orderDto.WordStartTime; order.WordEndTime = orderDto.WordEndTime; order.StartTime = orderDto.StartTime; order.EndTime = orderDto.EndTime; order.Demand = orderDto.Demand; order.WorderCount = orderDto.WorderCount; order.WorderAddress = orderDto.WorderAddress; cylsg/cylsg.Application/Orders/OrderWorkerAppService.cs
@@ -359,6 +359,7 @@ var orderRes = new BaseRepository<Order>(); var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); var userWorkerRes = new BaseRepository<UserWorker>(); var order = await orderRes.GetByIdAsync(baoMingDto.OrderId); if (order == null || order.OrderStatus > 1) { @@ -378,6 +379,11 @@ throw Oops.Oh("当天的打卡已经提交,不能打卡!"); } orderBiddingDetailDto = _mapper.Map<OrderBiddingDetailDto>(orderBiddingDetail); orderBiddingDetailDto.WorkerUserId = orderBidding.WorkerUserId; var worker = await userWorkerRes.GetFirstAsync(x => x.UserId == orderBidding.WorkerUserId); if(worker != null) orderBiddingDetailDto.WorkerName = worker.name; var orderBiddingDetailChecks = await OrderBiddingDetailCheckRes.GetListAsync(x => x.OrderBiddingDetailId == orderBiddingDetail.Id && x.IsDeleted == false && x.IsEn == true); orderBiddingDetailDto.orderBiddingDetailCheck = _mapper.Map<List<OrderBiddingDetailCheckDto>>(orderBiddingDetailChecks); } @@ -407,19 +413,25 @@ var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); var orderBidding = await orderBiddingRes.GetByIdAsync(dakaDto.OrderBiddingId); var order = await orderRes.GetByIdAsync(dakaDto.OrderId); if (order == null || order.OrderStatus > 1) { throw Oops.Oh("该招工状态已无法打卡!"); } var orderBidding = await orderBiddingRes.GetFirstAsync(x => x.OrderId == dakaDto.OrderId && x.WorkerUserId == userid && x.IsSelected == true && x.IsEn == true && x.IsDeleted == false );//GetByIdAsync(dakaDto.OrderBiddingId); if (orderBidding == null || orderBidding.IsDeleted ==true || orderBidding.IsEn == false || orderBidding.IsSelected !=true ) { throw Oops.Oh("该投递状态无法打卡!"); } var order = await orderRes.GetByIdAsync(orderBidding.OrderId); if (order == null || order.OrderStatus > 1) { throw Oops.Oh("该招工状态已无法打卡!"); } bool res; var dateTime = DateTime.Now.Date; if ( dateTime < order.WordStartTime.Value && dateTime > order.WordEndTime.Value ) { throw Oops.Oh("不在允许打卡的时间范围!"); } var orderBiddingDetail = await orderBiddingDetailRes.GetFirstAsync(x => x.OrderBiddingId == orderBidding.Id && x.WorkDate == dateTime && x.IsDeleted == false && x.IsEn == true); if (orderBiddingDetail!=null && orderBiddingDetail.IsShenPi>0) { @@ -438,7 +450,7 @@ { throw Oops.Oh("员工未注册成工人"); } var faseres = _tencentCloudService.VerifyFace(dakaDto.FaceImg, UserWorkRes.IAIPersonId); var faseres = _tencentCloudService.VerifyFace(dakaDto.FaceImg, UserWorkRes.IdCode); if (faseres.IsMatch != true) { @@ -740,21 +752,23 @@ //var OrderBiddingDetailCheckRes = new BaseRepository<OrderBiddingDetailCheck>(); var orderBiddingDetail = await orderBiddingDetailRes.GetByIdAsync(dakaDto.OrderBiddingDetailId); if (orderBiddingDetail == null || orderBiddingDetail.IsShenPi > 1 || orderBiddingDetail.IsDeleted == true || orderBiddingDetail.IsEn == false) { throw Oops.Oh("该打卡状态已无法打卡确认!"); } var orderBidding = await orderBiddingRes.GetByIdAsync(orderBiddingDetail.OrderBiddingId); var order = await orderRes.GetByIdAsync(orderBidding.OrderId); if (orderBidding == null || orderBidding.IsDeleted == true || orderBidding.IsEn == false || orderBidding.IsSelected != true) { throw Oops.Oh("该投递状态无法打卡确认!"); } if (order == null || order.OrderStatus > 1) var order = await orderRes.GetByIdAsync(orderBidding.OrderId); if (order == null || order.OrderStatus > 1 || order.IsDeleted == true || order.IsEn == false ) { throw Oops.Oh("该招工状态已无法打卡确认!"); } if (orderBiddingDetail == null || orderBiddingDetail.IsShenPi > 1) { throw Oops.Oh("该打卡状态已无法打卡确认!"); } orderBiddingDetail.WorkTime = dakaDto.WorkTime; cylsg/cylsg.Application/Timers/TimedBackgroundService.cs
New file @@ -0,0 +1,59 @@ using cylsg.Core; using cylsg.Model.OrderModel; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace cylsg.Application.Timers { public class TimedBackgroundService : IHostedService, IDisposable { private Timer _timer; public Task StartAsync(CancellationToken cancellationToken) { _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(60*60)); return Task.CompletedTask; } private async void DoWork(object? state) { var orderBiddingRes = new BaseRepository<OrderBidding>(); var orderRes = new BaseRepository<Order>(); var orderBiddingDetailRes = new BaseRepository<OrderBiddingDetail>(); var orders = await orderRes.GetListAsync(x => x.OrderStatus < 2 && x.IsEn == true && x.IsDeleted == false && x.WordEndTime <= DateTime.Now.AddDays(-1)); foreach (var order in orders) { var sss = await orderBiddingRes.GetListAsync(x => x.OrderId == order.Id && x.IsEn == true && x.IsDeleted == false && x.IsSelected == true); var bbb = sss.Select(x => x.Id).ToList(); var oCount = await orderBiddingDetailRes.CountAsync(x => bbb.Contains(x.OrderBiddingId) && x.IsEn == true && x.IsDeleted == false && x.IsShenPi != (int)IsShenPis.yishenpi); if (oCount == 0) { order.OrderStatus = (int)OrderStatuses.jiesuanwanbi; var res = await orderRes.UpdateAsync(order); } } } public Task StopAsync(CancellationToken cancellationToken) { Console.WriteLine("StopAsync"); return Task.CompletedTask; } public void Dispose() { _timer?.Dispose(); } } } cylsg/cylsg.Application/Users/UserAppService.cs
@@ -285,6 +285,60 @@ } /// <summary> /// 保存用户信息 /// </summary> /// <returns></returns> public async Task<bool> saveUser(UserDto userDto) { var UserID = App.User?.FindFirstValue("UserID"); int userid = 0; string NickName = App.User?.FindFirstValue("NickName"); if (!string.IsNullOrEmpty(UserID)) { userid = int.Parse(UserID); } if (!string.IsNullOrEmpty(userDto.Nickname) && userDto.Nickname.Length > 100) { throw Oops.Oh("昵称长度过长!"); } if (!string.IsNullOrEmpty(userDto.Avatar) && userDto.Avatar.Length > 500) { throw Oops.Oh("头像长度过长!"); } var userRes = new BaseRepository<User>(); bool res; var user = await userRes.GetByIdAsync(userid); if (!string.IsNullOrEmpty(userDto.Nickname)) user.Nickname = userDto.Nickname; if (!string.IsNullOrEmpty(userDto.Avatar)) user.Avatar = userDto.Avatar; user.UpDataBy = NickName; user.UpDataTime = DateTime.Now; res = await userRes.UpdateAsync(user); return res; } } } cylsg/cylsg.Model/OrderModel/Order.cs
@@ -37,18 +37,33 @@ public string OrderName { get; set; } /// <summary> /// 工作开始日期 /// </summary> [Display(Name = "工作开始日期")] [SugarColumn(ColumnDescription = "工作开始日期", IsNullable = true)] public DateTime? WordStartTime { get; set; } /// <summary> /// 工作结束时间 /// </summary> [Display(Name = "工作结束日期")] [SugarColumn(ColumnDescription = "工作结束日期", IsNullable = true)] public DateTime? WordEndTime { get; set; } /// <summary> /// 工作开始时间 /// </summary> [Display(Name = "工作开始时间")] [SugarColumn(ColumnDescription = "工作开始时间", IsNullable = true)] public DateTime? WordStartTime { get; set; } public DateTime? StartTime { get; set; } /// <summary> /// 工作结束时间 /// </summary> [Display(Name = "工作结束时间")] [SugarColumn(ColumnDescription = "工作结束时间", IsNullable = true)] public DateTime? WordEndTime { get; set; } public DateTime? EndTime { get; set; } /// <summary> /// 需求 cylsg/cylsg.Web.Core/Startup.cs
@@ -1,7 +1,9 @@ using cylsg.Core; using cylsg.Application.Timers; using cylsg.Core; using cylsg.Web.Core.Handlers; using Furion; using Furion.VirtualFileServer; using InitQ; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; @@ -28,6 +30,7 @@ return DbContext.Instance; } ); services.AddHostedService<TimedBackgroundService>(); services.AddJsonOptions(options => { //更改输出输入枚举属性为 字段名