查询语句优化

This commit is contained in:
马梓彭 2026-06-17 16:32:49 +08:00
parent 3efa40ce08
commit 2705da9b72
2 changed files with 23 additions and 14 deletions

View File

@ -184,12 +184,15 @@ public class AppUserService : BaseService<AppUserEntity>, ITransient
// 身份证/户口本认证时检查身份证号是否重复
if ((input.AuthType == 1 || input.AuthType == 3) && !string.IsNullOrWhiteSpace(input.IdCardNumber))
{
var duplicateIdCard = await _appUserRep.AsQueryable()
var q1 = _appUserRep.AsQueryable()
.Where(x => x.IdCardNumber == input.IdCardNumber
&& x.PersonType == input.PersonType
&& !x.DeleteMark
&& (!input.Id.HasValue || x.Id != input.Id.Value))
.FirstAsync();
&& !x.DeleteMark);
if (input.Id.HasValue)
{
q1 = q1.Where(x => x.Id != input.Id.Value);
}
var duplicateIdCard = await q1.FirstAsync();
if (duplicateIdCard != null)
{
@ -200,12 +203,15 @@ public class AppUserService : BaseService<AppUserEntity>, ITransient
// 护照认证时检查护照号是否重复
if (input.AuthType == 2 && !string.IsNullOrWhiteSpace(input.PassportNumber))
{
var duplicatePassport = await _appUserRep.AsQueryable()
var q2 = _appUserRep.AsQueryable()
.Where(x => x.PassportNumber == input.PassportNumber
&& x.PersonType == input.PersonType
&& !x.DeleteMark
&& (!input.Id.HasValue || x.Id != input.Id.Value))
.FirstAsync();
&& !x.DeleteMark);
if (input.Id.HasValue)
{
q2 = q2.Where(x => x.Id != input.Id.Value);
}
var duplicatePassport = await q2.FirstAsync();
if (duplicatePassport != null)
{

View File

@ -175,8 +175,9 @@ public class MyController : IDynamicApiController
if (string.IsNullOrEmpty(input.IdCardBackImageUrl)) throw Oops.Bah("身份证背面图片不能为空");
// 身份证号查重
var duplicateIdCard = await _appUserRepository.GetFirstAsync(u =>
u.IdCardNumber == input.IdCardNumber && u.Id != userId && !u.DeleteMark);
var duplicateIdCard = await _appUserRepository.AsQueryable()
.Where(u => u.IdCardNumber == input.IdCardNumber && u.Id != userId && !u.DeleteMark)
.FirstAsync();
if (duplicateIdCard != null) throw Oops.Bah("该身份证号已被其他用户使用");
}
else if (input.AuthType == 2)
@ -187,8 +188,9 @@ public class MyController : IDynamicApiController
if (!input.BirthDate.HasValue) throw Oops.Bah("出生日期不能为空");
// 护照号查重
var duplicatePassport = await _appUserRepository.GetFirstAsync(u =>
u.PassportNumber == input.PassportNumber && u.Id != userId && !u.DeleteMark);
var duplicatePassport = await _appUserRepository.AsQueryable()
.Where(u => u.PassportNumber == input.PassportNumber && u.Id != userId && !u.DeleteMark)
.FirstAsync();
if (duplicatePassport != null) throw Oops.Bah("该护照号码已被其他用户使用");
}
else if (input.AuthType == 3)
@ -197,8 +199,9 @@ public class MyController : IDynamicApiController
if (string.IsNullOrEmpty(input.IdCardNumber)) throw Oops.Bah("身份证号不能为空");
// 身份证号查重
var duplicateIdCard = await _appUserRepository.GetFirstAsync(u =>
u.IdCardNumber == input.IdCardNumber && u.Id != userId && !u.DeleteMark);
var duplicateIdCard = await _appUserRepository.AsQueryable()
.Where(u => u.IdCardNumber == input.IdCardNumber && u.Id != userId && !u.DeleteMark)
.FirstAsync();
if (duplicateIdCard != null) throw Oops.Bah("该身份证号已被其他用户使用");
}
else