using Dlhis.Basic.BusinessPlace.Request; using Dlhis.Basic.BusinessPlace.Response; using Dlhis.Entity.Canteen.Entities; using Dlhis.Entity.Canteen.Enums; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.DataAccess.Dto; using Kurisu.SqlSugar.Attributes; using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Services; using Mapster; namespace Dlhis.Basic.BusinessPlace.Services.Implements; public class BusinessPlaceService : IBusinessPlaceService { private readonly IDbContext _dbContext; public BusinessPlaceService(IDbContext dbContext) { _dbContext = dbContext; } [IgnoreTenant] public async Task> GetPageAsync(BusinessPlacePageRequest request) { var page = await _dbContext.Queryable() .WhereIF(request.Search.IsPresent(), x => x.CustomCode.Contains(request.Search)) .WhereIF(request.Catalog.HasValue, x => x.Catalog == request.Catalog) .WhereIF(request.Status.HasValue, x => x.Status == request.Status) .WhereIF(request.Source.HasValue, x => x.Source == request.Source) .Select() .ToPageListAsync(request); return page; } public async Task> GetOpenedListAsync() { return await _dbContext.Queryable() .Where(x => x.Status == CanteenBusinessPlaceStatusEnumType.Opened) .Select() .ToListAsync(); } public async Task SaveAsync(BusinessPlaceSaveRequest request) { await CheckExistsCustomCodeAsync(request); if (!request.Id.HasValue) { var entity = request.Adapt(); entity.Code = Guid.NewGuid(); await _dbContext.InsertAsync(entity); } else { var entity = await _dbContext.Queryable().FirstAsync(x => x.Id == request.Id); request.Adapt(entity); await _dbContext.UpdateAsync(entity); } } //*********************************************** help methods ***************************************************// /// /// 检查重复手工号 /// /// /// private async Task CheckExistsCustomCodeAsync(BusinessPlaceSaveRequest request) { var existsSameCustomCode = await _dbContext.Queryable() .Where(x => x.CustomCode == request.CustomCode) .WhereIF(request.Id.HasValue, x => x.Id != request.Id) .AnyAsync(); existsSameCustomCode.ThrowIfTrue($"自定义手工号[{request.CustomCode}]存在重复,请检查."); } }