fix: 🐛 take count

[skip ci]
This commit is contained in:
tk 2024-04-30 11:27:26 +08:00
parent 4860299959
commit c08ea62064
5 changed files with 35 additions and 25 deletions

View File

@ -127,14 +127,14 @@ public sealed class JobService(DefaultRepository<Sys_Job> rpo, IJobRecordService
} }
] ]
}; };
var job var job = await QueryInternal(new QueryReq<QueryJobReq> { DynamicFilter = df, Order = Orders.Random })
= await QueryInternal(new QueryReq<QueryJobReq> { DynamicFilter = df, Count = 1, Order = Orders.Random }) .Take(1)
.Where(a => !Rpo.Orm.Select<Sys_JobRecord>() .Where(a => !Rpo.Orm.Select<Sys_JobRecord>()
.As("b") .As("b")
.Where(b => b.JobId == a.Id && b.TimeId == a.NextTimeId) .Where(b => b.JobId == a.Id && b.TimeId == a.NextTimeId)
.Any()) .Any())
.ToOneAsync() .ToOneAsync()
.ConfigureAwait(false); .ConfigureAwait(false);
return job == null return job == null
? null ? null
: await UpdateAsync(job.Adapt<UpdateJobReq>() with { : await UpdateAsync(job.Adapt<UpdateJobReq>() with {

View File

@ -131,11 +131,15 @@ public sealed class MenuService(DefaultRepository<Sys_Menu> rpo, IUserService us
private ISelect<Sys_Menu> QueryInternal(QueryReq<QueryMenuReq> req) private ISelect<Sys_Menu> QueryInternal(QueryReq<QueryMenuReq> req)
{ {
var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter); var ret = Rpo.Select.WhereDynamicFilter(req.DynamicFilter).WhereDynamic(req.Filter);
return req.Order == Orders.Random #pragma warning disable IDE0072
? ret.OrderByRandom() return req.Order switch {
: ret.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending) Orders.None => ret
.OrderByDescending(a => a.Sort) , Orders.Random => ret.OrderByRandom()
.OrderBy(a => a.Name) , _ => ret.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending)
.OrderBy(a => a.Id); .OrderByDescending(a => a.Sort)
.OrderBy(a => a.Name)
.OrderBy(a => a.Id)
};
#pragma warning restore IDE0072
} }
} }

View File

@ -124,8 +124,11 @@ public sealed class RoleService(DefaultRepository<Sys_Role> rpo) //
req.Keywords?.Length > 0 req.Keywords?.Length > 0
, a => a.Id == req.Keywords.Int64Try(0) || a.Name.Contains(req.Keywords) || , a => a.Id == req.Keywords.Int64Try(0) || a.Name.Contains(req.Keywords) ||
a.Summary.Contains(req.Keywords)); a.Summary.Contains(req.Keywords));
if (req.Order == Orders.Random) { switch (req.Order) {
return ret.OrderByRandom(); case Orders.None:
return ret;
case Orders.Random:
return ret.OrderByRandom();
} }
ret = ret.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending); ret = ret.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending);

View File

@ -152,7 +152,7 @@ public sealed class UserProfileService(DefaultRepository<Sys_UserProfile> rpo) /
private ISelect<Sys_UserProfile, Sys_DicContent, Sys_DicContent, Sys_DicContent, Sys_DicContent> QueryInternal( private ISelect<Sys_UserProfile, Sys_DicContent, Sys_DicContent, Sys_DicContent, Sys_DicContent> QueryInternal(
QueryReq<QueryUserProfileReq> req) QueryReq<QueryUserProfileReq> req)
{ {
#pragma warning disable CA1305 #pragma warning disable CA1305,IDE0072
var ret = Rpo.Orm.Select<Sys_UserProfile, Sys_DicContent, Sys_DicContent, Sys_DicContent, Sys_DicContent>() var ret = Rpo.Orm.Select<Sys_UserProfile, Sys_DicContent, Sys_DicContent, Sys_DicContent, Sys_DicContent>()
.LeftJoin((a, b, _, __, ___) => .LeftJoin((a, b, _, __, ___) =>
a.NationArea.ToString() == b.Value && b.CatalogId == Numbers.ID_DIC_CATALOG_GEO_AREA) a.NationArea.ToString() == b.Value && b.CatalogId == Numbers.ID_DIC_CATALOG_GEO_AREA)
@ -164,10 +164,13 @@ public sealed class UserProfileService(DefaultRepository<Sys_UserProfile> rpo) /
.LeftJoin((a, _, __, ___, e) => a.EmergencyContactArea.ToString() == e.Value && .LeftJoin((a, _, __, ___, e) => a.EmergencyContactArea.ToString() == e.Value &&
e.CatalogId == Numbers.ID_DIC_CATALOG_GEO_AREA) e.CatalogId == Numbers.ID_DIC_CATALOG_GEO_AREA)
.WhereDynamicFilter(req.DynamicFilter); .WhereDynamicFilter(req.DynamicFilter);
return req.Order == Orders.Random
? ret.OrderByRandom() return req.Order switch {
: ret.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending) Orders.None => ret
.OrderByDescending((a, _, __, ___, ____) => a.Id); , Orders.Random => ret.OrderByRandom()
#pragma warning restore CA1305 , _ => ret.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending)
.OrderByDescending((a, _, __, ___, ____) => a.Id)
};
#pragma warning restore CA1305,IDE0072
} }
} }

View File

@ -173,8 +173,7 @@ public sealed class VerifyCodeService(DefaultRepository<Sys_VerifyCode> rpo, IEv
private Task<Sys_VerifyCode> GetLastSentAsync(string destDevice) private Task<Sys_VerifyCode> GetLastSentAsync(string destDevice)
{ {
return QueryInternal(new QueryReq<QueryVerifyCodeReq> { return QueryInternal(new QueryReq<QueryVerifyCodeReq> {
Count = 1 DynamicFilter
, DynamicFilter
= new DynamicFilterInfo { = new DynamicFilterInfo {
Field = nameof( Field = nameof(
Sys_VerifyCode.DestDevice) Sys_VerifyCode.DestDevice)
@ -182,7 +181,8 @@ public sealed class VerifyCodeService(DefaultRepository<Sys_VerifyCode> rpo, IEv
, Value = destDevice , Value = destDevice
} }
}) })
.ToOneAsync(); .Take(1)
.ToOneAsync();
} }
private ISelect<Sys_VerifyCode> QueryInternal(QueryReq<QueryVerifyCodeReq> req) private ISelect<Sys_VerifyCode> QueryInternal(QueryReq<QueryVerifyCodeReq> req)