diff --git a/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs
index 977de91e..5328d7fd 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/学工号不能为空")]
public string UserUniqueNo { get; set; }
///
@@ -44,6 +44,9 @@ public class OrderAddRequest : IValidatableObject
///
public DateTime? CostDateTime { get; set; }
+
+ public bool IsUserId { get; set; }
+
public string Image { get; set; }
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
index 4f6c6b1d..7db4ffa0 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
@@ -46,20 +46,19 @@ public class OrderService : BaseOrderService, IOrderService
//尝试匹配userId
var s = long.TryParse(request.UserUniqueNo, out var userId);
- // if (request.Source == BalanceRecordSourceEnumType.QrCode)
- // {
- // request.UserUniqueNo = await GetUserNoByQrCodeAsync(request.UserUniqueNo);
- // }
-
//根据档案号
var gainfo = await DbContext.Queryable()
- .Where(x => x.Code == request.UserUniqueNo || x.Id == userId || x.CardNo == request.UserUniqueNo)
+ .WhereIF(request.Source == BalanceRecordSourceEnumType.Card, x => x.CardNo == request.UserUniqueNo)
+ .WhereIF(request.Source != BalanceRecordSourceEnumType.Card && !request.IsUserId, x => x.Code == request.UserUniqueNo)
+ .WhereIF(request.Source != BalanceRecordSourceEnumType.Card && request.IsUserId && s, x => x.Id == userId)
.FirstAsync();
- if (gainfo == null && s && request.IsOffline)
+ if (gainfo == null && request.IsOffline)
{
- await DbContext.Queryable().AS("GainfoLeave")
- .Where(x => x.Code == request.UserUniqueNo || x.Id == userId || x.CardNo == request.UserUniqueNo)
+ gainfo = await DbContext.Queryable().AS("GainfoLeave")
+ .WhereIF(request.Source == BalanceRecordSourceEnumType.Card, x => x.CardNo == request.UserUniqueNo)
+ .WhereIF(request.Source != BalanceRecordSourceEnumType.Card && !request.IsUserId, x => x.Code == request.UserUniqueNo)
+ .WhereIF(request.Source != BalanceRecordSourceEnumType.Card && request.IsUserId && s, x => x.IdentityUserId == userId)
.FirstAsync();
}