diff --git a/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs index 1041a0b4..191c9239 100644 --- a/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs +++ b/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs @@ -24,7 +24,7 @@ public class OrderAddRequest : IValidatableObject /// /// 档案号/QrCode/学工号 /// - [Required(ErrorMessage = "人员档案号/QrCode/学工号不能为空/userId")] + [Required(ErrorMessage = "人员档案号/QrCode/学工号/userId 不能为空")] public string UserUniqueNo { get; set; } /// @@ -33,12 +33,6 @@ public class OrderAddRequest : IValidatableObject [EnumDataType(typeof(BalanceRecordSourceEnumType))] public BalanceRecordSourceEnumType Source { get; set; } - /// - /// 收入/支出 - /// - [EnumDataType(typeof(BalanceRecordTypeEnumType))] - public BalanceRecordTypeEnumType? Type { get; set; } = BalanceRecordTypeEnumType.Out; - /// /// 金额 /// @@ -54,8 +48,7 @@ public class OrderAddRequest : IValidatableObject public IEnumerable Validate(ValidationContext validationContext) { //处理金额 - Amount = Type == BalanceRecordTypeEnumType.In ? Math.Abs(Amount) : -Math.Abs(Amount); - + Amount = -Math.Abs(Amount); //在线就以API时间为准 if (!IsOffline) @@ -63,19 +56,9 @@ public class OrderAddRequest : IValidatableObject CostDateTime = DateTime.Now; } - if (Type == BalanceRecordTypeEnumType.Out) + if (DeviceUniqueNo.IsEmpty()) { - if (DeviceUniqueNo.IsEmpty()) - { - yield return new ValidationResult("设备唯一号不能为空", new[] { nameof(DeviceUniqueNo) }); - } - } - else if (Type == BalanceRecordTypeEnumType.In) - { - //if ((int)Source < (int)BalanceRecordSourceEnumType.Wechat) - //{ - // yield return new ValidationResult($"不支持来源{Source.GetDescription()}", new[] { nameof(Source) }); - //} + yield return new ValidationResult("设备号不能为空", new[] { nameof(DeviceUniqueNo) }); } yield break; diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs index 0e5ef3e5..de376b0f 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs @@ -94,18 +94,10 @@ public class OrderService : BaseOrderService, IOrderService try { - (await DbContext.Queryable().Where(x => x.UserNo == gainfo.No).AnyAsync()).ThrowIfFalse("余额不足,无法消费"); + (await DbContext.Queryable().Where(x => x.UserNo == gainfo.No).AnyAsync()) + .ThrowIfFalse("余额不足,无法消费"); - //消费 - if (request.Type == BalanceRecordTypeEnumType.Out) - { - await ConsumeAsync(request.Adapt(), gainfo); - } - //充值 - else - { - await RechargeAsync(request.Adapt(), gainfo); - } + await ConsumeAsync(request.Adapt(), gainfo); } catch (Exception ex) { @@ -408,70 +400,6 @@ public class OrderService : BaseOrderService, IOrderService .ExecuteCommandAsync(); } - /// - /// 充值 - /// - /// - /// - /// - private async Task RechargeAsync(RechargeRequest request, GainfoEntity gainfo) - { - var order = new CanteenOrderEntity - { - RequestJson = request.ToJson(), - IsOffline = false, - ThirdNo = request.ThirdNo, - Type = BalanceRecordTypeEnumType.In, - Name = gainfo.Name, - Source = request.Source, - UserNo = gainfo.No, - UserCode = gainfo.Code, - Amount = request.Amount, - BusinessPlaceCode = null, - BusinessShiftCode = null, - CostDate = DateTime.Now.Date, - CostId = gainfo.CostId, - DepartmentNo = gainfo.DepartmentNo, - DeviceUniqueNo = string.Empty, - - No = SnowFlakeHelper.Instance.NextId().ToString(), - SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"), - IsCostCrossTenant = false, - - OriginTenantId = gainfo.Factory,//人员可能跨基地消费 - - Status = BalanceRecordStatusEnumType.Valid, - - OrderStatus = CanteenOrderStatusEnumType.Wait, - - CostDateTime = request.CostDateTime, - - //标识当前消费的基地 - TenantId = gainfo.Factory, - }; - - var orderId = await DbContext.InsertReturnIdentityAsync(order); - try - { - await GenerateRechargeRecordAsync(orderId); - } - catch (Exception ex) - { - await DbContext.Updateable() - .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Failure) - .SetColumns(x => x.Result == ex.Message) - .Where(x => x.Id == orderId) - .ExecuteCommandAsync(); - - throw; - } - - await DbContext.Updateable() - .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Success) - .Where(x => x.Id == orderId) - .ExecuteCommandAsync(); - } - public async Task> GetOrdersAggregationAsync(PageDto page) { @@ -606,37 +534,6 @@ public class OrderService : BaseOrderService, IOrderService } - /// - /// 生成消费记录 - /// - /// - /// - /// - /// - private async Task GenerateRechargeRecordAsync(long orderId) - { - var order = await DbContext.Queryable().Where(x => x.Id == orderId).FirstAsync(); - - await CommonHelper.RetryAsync(async () => - { - var canteenUser = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync(); - //金额+- - canteenUser.Balance += order.Amount; - - await DbContext.Updateable() - .SetColumns(x => x.Balance == canteenUser.Balance) - .SetColumns(x => x.Version == x.Version + 1) - .SetColumns(x => x.ModifiedTime == DateTime.Now) - .Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version) - .ExecuteCommandThrowVersionAsync(); - - //写入记录 - var balanceRecord = order.Adapt(); - await DbContext.InsertAsync(balanceRecord); - - }, 5); - } - /// /// 生成充值记录 /// diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs index 264b0d41..c3e4bb5d 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs @@ -53,7 +53,7 @@ public class AssignmentService : IAssignmentService .WhereIF(request.Types.IsPresent(), deviceTask => request.Types.Contains(deviceTask.Type)) .WhereIF(!request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait) .WhereIF(request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process - && SqlFunc.DateDiff(DateType.Minute, deviceTask.CreateTime, DateTime.Now) > 30) + && SqlFunc.DateDiff(DateType.Minute, deviceTask.ModifiedTime, DateTime.Now) > 30) //.Where(deviceTask => heartbeatDeviceNos.Contains(deviceTask.DeviceUniqueNo)) .OrderBy(deviceTask => new { Priority = SqlFunc.Desc(deviceTask.Priority), deviceTask.CreateTime }) .Select((deviceTask, deivce, deivceTamplate, ga, galeave, department) => new @@ -142,8 +142,8 @@ public class AssignmentService : IAssignmentService var jobj = new JObject { - { "connectionInfo", JToken.Parse(dc) }, - { "function", JArray.Parse(func) } + { "connectionInfo", JToken.Parse(dc) }, + { "function", JArray.Parse(func) } }; return new DeviceTaskToDeviceByDeviceResponse