using AutoMapper; using IRaCIS.Application.Services.BusinessFilter; using IRaCIS.Core.Infra.EFCore; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Localization; using Panda.DynamicWebApi; using Panda.DynamicWebApi.Attributes; using System.Diagnostics.CodeAnalysis; using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Application { #pragma warning disable CS8618 #region 非泛型版本 [Authorize, DynamicWebApi, UnifiedApiResultFilter] public class BaseService : IBaseService, IDynamicWebApi { public IMapper _mapper { get; set; } public IUserInfo _userInfo { get; set; } public IRepository _repository { get; set; } public IStringLocalizer _localizer { get; set; } public IWebHostEnvironment _hostEnvironment { get; set; } public static IResponseOutput Null404NotFound(TEntity? businessObject) where TEntity : class { return new ResponseOutput() .NotOk($"The query object {typeof(TEntity).Name} does not exist , or was deleted by someone else, or an incorrect parameter query caused", code: ApiResponseCodeEnum.DataNotExist); } } public interface IBaseService { [MemberNotNull(nameof(_mapper))] public IMapper _mapper { get; set; } [MemberNotNull(nameof(_userInfo))] public IUserInfo _userInfo { get; set; } [MemberNotNull(nameof(_repository))] public IRepository _repository { get; set; } [MemberNotNull(nameof(_localizer))] public IStringLocalizer _localizer { get; set; } [MemberNotNull(nameof(_hostEnvironment))] public IWebHostEnvironment _hostEnvironment { get; set; } } #endregion #region 泛型版本测试 public interface IBaseServiceTest where T : Entity { [MemberNotNull(nameof(_mapper))] public IMapper _mapper { get; set; } [MemberNotNull(nameof(_userInfo))] public IUserInfo _userInfo { get; set; } [MemberNotNull(nameof(_repository))] public IRepository _repository { get; set; } [MemberNotNull(nameof(_localizer))] public IStringLocalizer _localizer { get; set; } } [Authorize, DynamicWebApi, UnifiedApiResultFilter] public class BaseServiceTest : IBaseServiceTest, IDynamicWebApi where T : Entity { public IMapper _mapper { get; set; } public IUserInfo _userInfo { get; set; } public IRepository _repository { get; set; } public IStringLocalizer _localizer { get; set; } public static IResponseOutput Null404NotFound(TEntity? businessObject) where TEntity : class { return new ResponseOutput() .NotOk($"The query object {typeof(TEntity).Name} does not exist , or was deleted by someone else, or an incorrect parameter query caused", code: ApiResponseCodeEnum.DataNotExist); } } #endregion }