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
|
{
|
/// <summary>
|
/// $ChinaComment$·þÎñ½Ó¿ÚʵÏÖ
|
/// </summary>
|
[ApiDescriptionSettings("$GroupName$", Name = "$ChinaComment$", Order = 100)]
|
public class $EntityName$Service : ControllerBase, I$EntityName$Service, IDynamicApiController, ITransient
|
{
|
private readonly IRepository<$EntityName$, MasterDbContextLocator> _$EntityName_FirstLetterLower$Rep;
|
/// <summary>
|
/// $ChinaComment$·þÎñ¹¹Ô캯Êý
|
/// </summary>
|
/// <param name="$EntityName_FirstLetterLower$Rep">$ChinaComment$·þÎñ²Ö´¢¶ÔÏó</param>
|
public $EntityName$Service(IRepository<$EntityName$, MasterDbContextLocator> $EntityName_FirstLetterLower$Rep)
|
{
|
_$EntityName_FirstLetterLower$Rep = $EntityName_FirstLetterLower$Rep;
|
}
|
|
/// <summary>
|
/// ·ÖÒ³²éѯ$ChinaComment$
|
/// </summary>
|
/// <param name="input">·ÖÒ³²éѯ²ÎÊý</param>
|
/// <returns></returns>
|
[HttpGet("/$EntityName$/page")]
|
[DisableOpLog]
|
public async Task<PageResult<$EntityName$Output>> 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;
|
}
|
|
/// <summary>
|
/// Ôö¼Ó$ChinaComment$
|
/// </summary>
|
/// <param name="input">Ôö¼Ó²ÎÊý</param>
|
/// <returns></returns>
|
[HttpPost("/$EntityName$/add")]
|
public async Task<long> 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;
|
}
|
|
/// <summary>
|
/// ¸üÐÂ$ChinaComment$
|
/// </summary>
|
/// <param name="input">¸üвÎÊý</param>
|
/// <returns></returns>
|
[HttpPost("/$EntityName$/update")]
|
public async Task<long> 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;
|
}
|
|
/// <summary>
|
/// ɾ³ý$ChinaComment$
|
/// </summary>
|
/// <param name="input">ɾ³ý²ÎÊý</param>
|
/// <returns></returns>
|
[HttpPost("/$EntityName$/delete")]
|
public async Task<int> 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;
|
}
|
|
/// <summary>
|
/// »ñÈ¡$ChinaComment$
|
/// </summary>
|
/// <param name="input">»ñÈ¡¶ÔÏó²ÎÊý</param>
|
/// <returns></returns>
|
[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>();
|
}
|
|
/// <summary>
|
/// µ¼³ö$ChinaComment$Excel
|
/// </summary>
|
/// <param name="input">ɸѡÌõ¼þ</param>
|
/// <returns></returns>
|
[HttpPost("/$EntityName$/export")]
|
[DisableOpLog]
|
public async Task<ActionResult> 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<Export$EntityName$Output>()
|
.ToListAsync();
|
var excelBaseResult = new Excel2003Result<Export$EntityName$Output>(deliveryOrderExportExcel, "$ChinaComment$¼Ç¼" + DateTime.Now.ToString("yyyyMMdd"), false, "$ChinaComment$¼Ç¼");
|
return File(excelBaseResult.GetExcelStream(), "application/vnd.ms-excel");
|
}
|
|
/// <summary>
|
/// ¶¯Ì¬¹¹Ôì²éѯÌõ¼þ
|
/// </summary>
|
/// <param name="input">ÊäÈë²ÎÊý</param>
|
/// <returns></returns>
|
private FunReturnResultModel<Expression<Func<$EntityName$, bool>>> DynamicGetQueryParams($EntityName$PageInput input)
|
{
|
//¶¯Ì¬¹¹Ôì²éѯÌõ¼þ
|
var whereConditions = WhereConditionsExtensions.GetWhereConditions<$EntityName$, $EntityName$PageInput>(input);
|
if (!whereConditions.IsSuccess)
|
{
|
throw Oops.Oh("¶¯Ì¬¹¹Ôì²éѯÌõ¼þʧ°Ü:" + whereConditions.ErrMsg);
|
}
|
|
//Ò²¿ÉÔÙ´Î×Ô¶¨Òå¹¹½¨²éѯÌõ¼þ
|
Expression<Func<$EntityName$, bool>> extendExpression = a => a.IsDeleted == false;
|
whereConditions.data = whereConditions.data.And(extendExpression);
|
|
return whereConditions;
|
}
|
}
|
}
|