using Admin.NET.Core.BasicInformation.Entity; using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.Extras.Admin.NET; using Furion.Extras.Admin.NET.Extension; using Furion.FriendlyException; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using PandaWork.Infrastructure; using System.Data; using System.Linq.Dynamic.Core; using Furion.LinqBuilder; using System.Linq.Expressions; using Admin.NET.Core.Helper.ExcelHelper; namespace Admin.NET.Application { /// /// $ChinaComment$·þÎñ½Ó¿ÚʵÏÖ /// [ApiDescriptionSettings("$GroupName$", Name = "$ChinaComment$", Order = 100)] public class $EntityName$Service : ControllerBase, I$EntityName$Service, IDynamicApiController, ITransient { private readonly IRepository<$EntityName$, MasterDbContextLocator> _$EntityName_FirstLetterLower$Rep; /// /// $ChinaComment$·þÎñ¹¹Ô캯Êý /// /// $ChinaComment$·þÎñ²Ö´¢¶ÔÏó public $EntityName$Service(IRepository<$EntityName$, MasterDbContextLocator> $EntityName_FirstLetterLower$Rep) { _$EntityName_FirstLetterLower$Rep = $EntityName_FirstLetterLower$Rep; } /// /// ·ÖÒ³²éѯ$ChinaComment$ /// /// ·ÖÒ³²éѯ²ÎÊý /// [HttpGet("/$EntityName$/page")] [DisableOpLog] public async Task> Page([FromQuery] $EntityName$PageInput input) { if (input == null) { throw Oops.Oh(ErrorCode.D4008); } #region ¶¯Ì¬¹¹Ôì²éѯÌõ¼þ //¶¯Ì¬¹¹Ôì²éѯÌõ¼þ var whereConditions = DynamicGetQueryParams(input); #endregion var pageList= await _$EntityName_FirstLetterLower$Rep.DetachedEntities .Where(whereConditions.data) .OrderBy(PageInputOrder.OrderBuilder<$EntityName$PageInput>(input)) .ProjectToType<$EntityName$Output>() .ToADPagedListAsync(input.PageNo, input.PageSize); return pageList; } /// /// Ôö¼Ó$ChinaComment$ /// /// Ôö¼Ó²ÎÊý /// [HttpPost("/$EntityName$/add")] public async Task Add([FromBody] Add$EntityName$Input input) { if (input == null) { throw Oops.Oh(ErrorCode.D4008); } var $EntityName_FirstLetterLower$ = input.Adapt<$EntityName$>(); EntityEntry<$EntityName$> entityEntry = await _$EntityName_FirstLetterLower$Rep.InsertAsync($EntityName_FirstLetterLower$); return entityEntry.Entity.Id; } /// /// ¸üÐÂ$ChinaComment$ /// /// ¸üвÎÊý /// [HttpPost("/$EntityName$/update")] public async Task Update([FromBody] Update$EntityName$Input input) { if (input == null || (input.Id) <= 0) { throw Oops.Oh(ErrorCode.D1012); } var isExist = await _$EntityName_FirstLetterLower$Rep.AnyAsync(u => u.Id == input.Id, false); if (!isExist) { throw Oops.Oh(ErrorCode.D1002); } var $EntityName_FirstLetterLower$ = input.Adapt<$EntityName$>(); await _$EntityName_FirstLetterLower$Rep.UpdateAsync($EntityName_FirstLetterLower$, ignoreNullValues: true); return input.Id; } /// /// ɾ³ý$ChinaComment$ /// /// ɾ³ý²ÎÊý /// [HttpPost("/$EntityName$/delete")] public async Task Delete([FromBody] Delete$EntityName$Input input) { if (input == null || input.Id.Count == 0) { throw Oops.Oh(ErrorCode.D4008); } List<$EntityName$> list = new(); foreach (var item in input.Id) { list.Add(new $EntityName$() { Id = item }); } await _$EntityName_FirstLetterLower$Rep.DeleteAsync(list); return input.Id.Count; } /// /// »ñÈ¡$ChinaComment$ /// /// »ñÈ¡¶ÔÏó²ÎÊý /// [HttpGet("/$EntityName$/detail")] [DisableOpLog] public async Task<$EntityName$Output> Get([FromQuery] Query$EntityName$Input input) { if (input == null || input.Id <= 0) { throw Oops.Oh(ErrorCode.D1012); } return (await _$EntityName_FirstLetterLower$Rep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<$EntityName$Output>(); } /// /// µ¼³ö$ChinaComment$Excel /// /// ɸѡÌõ¼þ /// [HttpPost("/$EntityName$/export")] [DisableOpLog] public async Task Export([FromQuery] $EntityName$PageInput input) { if (input == null) { throw Oops.Oh(ErrorCode.D4008); } #region ¶¯Ì¬¹¹Ôì²éѯÌõ¼þ //¶¯Ì¬¹¹Ôì²éѯÌõ¼þ var whereConditions = DynamicGetQueryParams(input); #endregion var deliveryOrderExportExcel = await _$EntityName_FirstLetterLower$Rep.DetachedEntities .Where(whereConditions.data) .ProjectToType() .ToListAsync(); var excelBaseResult = new Excel2003Result(deliveryOrderExportExcel, "$ChinaComment$¼Ç¼" + DateTime.Now.ToString("yyyyMMdd"), false, "$ChinaComment$¼Ç¼"); return File(excelBaseResult.GetExcelStream(), "application/vnd.ms-excel"); } /// /// ¶¯Ì¬¹¹Ôì²éѯÌõ¼þ /// /// ÊäÈë²ÎÊý /// private FunReturnResultModel>> DynamicGetQueryParams($EntityName$PageInput input) { //¶¯Ì¬¹¹Ôì²éѯÌõ¼þ var whereConditions = WhereConditionsExtensions.GetWhereConditions<$EntityName$, $EntityName$PageInput>(input); if (!whereConditions.IsSuccess) { throw Oops.Oh("¶¯Ì¬¹¹Ôì²éѯÌõ¼þʧ°Ü:" + whereConditions.ErrMsg); } //Ò²¿ÉÔÙ´Î×Ô¶¨Òå¹¹½¨²éѯÌõ¼þ Expression> extendExpression = a => a.IsDeleted == false; whereConditions.data = whereConditions.data.And(extendExpression); return whereConditions; } } }