using Dlhis.Basic.MealUser.Response; using Dlhis.Entity.Basic.Entity; using Kurisu.AspNetCore.Authentication.Abstractions; using Kurisu.AspNetCore.DataAccess.Dto; using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; using Kurisu.AspNetCore.Utils.Extensions; namespace Dlhis.Basic.MealUser.Services.Implements; public class MealUserService : IMealUserService { private readonly IDbContext _dbContext; private readonly ICurrentUser _currentUser; public MealUserService(IDbContext dbContext, ICurrentUser currentUser) { _dbContext = dbContext; _currentUser = currentUser; } public async Task> GetPageAsync(PageDto request) { var tenantId = _currentUser.GetStringTenantId(); var page = await _dbContext.Queryable() .LeftJoin((x, meal) => x.Code == meal.UserCode) .LeftJoin((x, meal, dept) => dept.No == x.DepartmentNo) .WhereIF(request.Search.IsPresent(), (x, meal) => x.Code == request.Search || x.Name == request.Search) .Where(x => x.Factory == tenantId) .Select((x, meal, dept) => new MealUserResponse { Balance = meal.Balance, BalanceOfRecharge = meal.BalanceOfRecharge, BalanceOfSubsidies = meal.BalanceOfSubsidies, UserCode = x.Code, UserName = x.Name, UserNo = x.No, DepartmentName = dept.Name, }) .ToPageListAsync(request); return page; } }