using Ao.Lang;
|
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
|
using CMS.Framework.AspNetCore.Users;
|
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
|
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
|
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Mvc;
|
using MiniExcelLibs;
|
using System.Reflection;
|
using Volo.Abp;
|
using Volo.Abp.Application.Dtos;
|
using CmsQueryExtensions.Entitys;
|
|
namespace CMS.Plugin.$NameSpacePath$.Controller
|
{
|
/// <summary>
|
/// $ChinaComment$·þÎñ
|
/// </summary>
|
[ApiController]
|
[TypeFilter(typeof(CMSLanguageFilter))]
|
[TypeFilter(typeof(CMSUowActionFilter))]
|
[TypeFilter(typeof(CMSAuditActionFilter))]
|
[TypeFilter(typeof(CMSExceptionFilter))]
|
[Route("api/v{version:apiVersion}/$NameSpacePath$/[controller]")]
|
public class $EntityName$Controller : ControllerBase
|
{
|
private readonly I$EntityName$AppService _$EntityInstanceName$AppService;
|
private readonly ICurrentUser _currentUser;
|
|
/// <summary>
|
/// Initializes a new instance of the <see cref="$EntityName$Controller"/> class.
|
/// </summary>
|
/// <param name="$EntityInstanceName$AppService">The $EntityInstanceName$ application service.</param>
|
public $EntityName$Controller(I$EntityName$AppService $EntityInstanceName$AppService, ICurrentUser currentUser)
|
{
|
_$EntityInstanceName$AppService = $EntityInstanceName$AppService;
|
_currentUser = currentUser;
|
}
|
|
/// <summary>
|
/// »ñÈ¡$ChinaComment$
|
/// </summary>
|
/// <param name="id">Ö÷¼üID</param>
|
/// <returns></returns>
|
[HttpGet]
|
[Route("{id}")]
|
public virtual Task<$EntityName$Dto> GetAsync(Guid id)
|
{
|
return _$EntityInstanceName$AppService.GetAsync(id);
|
}
|
|
/// <summary>
|
/// ·ÖÒ³»ñÈ¡$ChinaComment$µÄÁбí.
|
/// </summary>
|
/// <param name="input">²éѯ²ÎÊý</param>
|
/// <returns></returns>
|
[HttpGet]
|
[Route("Page")]
|
public virtual Task<PagedResultDto<$EntityName$Dto>> GetListAsync([FromQuery] Get$EntityName$Input input)
|
{
|
return _$EntityInstanceName$AppService.GetListAsync(input);
|
}
|
|
/// <summary>
|
/// ¸ù¾ÝÌõ¼þ»ñÈ¡$ChinaComment$
|
/// </summary>
|
/// <param name="input">²éѯ²ÎÊý</param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("FindListByFilter")]
|
public virtual async Task<List<$EntityName$Dto>> FindListByFilterAsync(Get$EntityName$Input input)
|
{
|
return await _$EntityInstanceName$AppService.FindListByFilterAsync(input);
|
}
|
/// <summary>
|
/// ¸ù¾ÝÌõ¼þ»ñÈ¡µ¥¸ö$ChinaComment$
|
/// </summary>
|
/// <param name="input">²éѯ²ÎÊý</param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("FindSingleByFilter")]
|
public virtual async Task<$EntityName$Dto> FindSingleByFilterAsync(Get$EntityName$Input input)
|
{
|
|
return await _$EntityInstanceName$AppService.FindSingleByFilterAsync(input);
|
}
|
|
/// <summary>
|
/// ´´½¨$ChinaComment$
|
/// </summary>
|
/// <param name="input">´´½¨²ÎÊý</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpPost]
|
public virtual Task<$EntityName$Dto> CreateAsync($EntityName$CreateDto input)
|
{
|
input.CreatorName = _currentUser.UserAccount;//´´½¨ÈË
|
return _$EntityInstanceName$AppService.CreateAsync(input);
|
}
|
|
/// <summary>
|
/// ¸üÐÂ$ChinaComment$
|
/// </summary>
|
/// <param name="id">Ö÷¼üID</param>
|
/// <param name="input">¸üвÎÊý</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpPut]
|
[Route("{id}")]
|
public virtual Task<$EntityName$Dto> UpdateAsync(Guid id, $EntityName$UpdateDto input)
|
{
|
input.LastModifierName = _currentUser.UserAccount;//ÐÞ¸ÄÈË
|
return _$EntityInstanceName$AppService.UpdateAsync(id, input);
|
}
|
|
/// <summary>
|
/// ¿Ë¡$ChinaComment$
|
/// </summary>
|
/// <param name="ids">Id¼¯ºÏ</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpPost]
|
[Route("Clone")]
|
public virtual Task<List<$EntityName$Dto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
|
{
|
MyCurrentUser myCurrentUser = new MyCurrentUser()
|
{
|
UserAccount = _currentUser.UserAccount,
|
UserId = _currentUser.UserId
|
};
|
return _$EntityInstanceName$AppService.CloneAsync(ids, myCurrentUser);
|
}
|
|
/// <summary>
|
/// ɾ³ý$ChinaComment$
|
/// </summary>
|
/// <param name="id">Ö÷¼üID</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpDelete]
|
[Route("{id}")]
|
public virtual Task DeleteAsync(Guid id)
|
{
|
MyCurrentUser myCurrentUser = new MyCurrentUser()
|
{
|
UserAccount = _currentUser.UserAccount,
|
UserId = _currentUser.UserId
|
};
|
//return _wmsMaterialAppService.DeleteAsync(id,myCurrentUser);//Â߼ɾ³ý
|
return _$EntityInstanceName$AppService.DeletePermanentlyAsync(id, myCurrentUser);//ÎïÀíɾ³ý
|
}
|
|
/// <summary>
|
/// ÅúÁ¿É¾³ý$ChinaComment$
|
/// </summary>
|
/// <param name="ids">Ö÷¼üID¼¯ºÏ</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpDelete]
|
public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
|
{
|
MyCurrentUser myCurrentUser = new MyCurrentUser()
|
{
|
UserAccount = _currentUser.UserAccount,
|
UserId = _currentUser.UserId
|
};
|
// return _wmsMaterialAppService.DeleteManyAsync(ids,myCurrentUser);//Â߼ɾ³ý
|
return _$EntityInstanceName$AppService.BatchDeletePermanentlyAsync(ids, myCurrentUser);//ÎïÀíɾ³ý
|
}
|
|
/// <summary>
|
/// µ÷ÕûÅÅÐò$ChinaComment$
|
/// </summary>
|
/// <param name="id">Ö÷¼üID</param>
|
/// <returns></returns>
|
[HttpPut]
|
[Route("{id}/AdjustSort/{sort}")]
|
public virtual Task AdjustSortAsync(Guid id, int sort)
|
{
|
return _$EntityInstanceName$AppService.AdjustSortAsync(id, sort);
|
}
|
|
/// <summary>
|
/// µ¼Èë$ChinaComment$
|
/// </summary>
|
/// <returns></returns>
|
[Authorize]
|
[HttpPost]
|
[Route("Import")]
|
public virtual async Task<IActionResult> ImportAsync(IFormFile file)
|
{
|
using var stream = new MemoryStream();
|
await file.CopyToAsync(stream);
|
stream.Seek(0L, SeekOrigin.Begin);
|
|
var sheetNames = stream.GetSheetNames();
|
var $EntityInstanceName$Rows = sheetNames.Contains("ÅäÖÃ") ? MiniExcel.Query<$EntityName$sImportModel.$EntityName$ImportModel>(stream, sheetName: "ÅäÖÃ").ToList() : new();
|
|
if (!$EntityInstanceName$Rows.Any())
|
{
|
throw new UserFriendlyException("Çë¼ì²éµ¼ÈëµÄ±í¸ñ");
|
}
|
|
MyCurrentUser myCurrentUser = new MyCurrentUser()
|
{
|
UserAccount = _currentUser.UserAccount,
|
UserId = _currentUser.UserId
|
};
|
await _$EntityInstanceName$AppService.ImportAsync(new $EntityName$sImportModel
|
{
|
$EntityName$s = $EntityInstanceName$Rows,
|
},myCurrentUser);
|
|
return Ok();
|
}
|
|
/// <summary>
|
/// µ¼³ö$ChinaComment$
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
[Route("Export")]
|
public virtual async Task<IActionResult> ExportAsync([FromQuery] Get$EntityName$Input input)
|
{
|
input.MaxResultCount = int.MaxValue;
|
var exportData = await _$EntityInstanceName$AppService.ExportAsync(input);
|
var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/$EntityName$µ¼³öÄ£°å.xlsx");
|
if (!System.IO.File.Exists(templatePath))
|
{
|
templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/$EntityName$µ¼³öÄ£°å.xlsx");
|
}
|
|
var memoryStream = new MemoryStream();
|
await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets);
|
memoryStream.Seek(0L, SeekOrigin.Begin);
|
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" };
|
}
|
}
|
}
|