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
{
///
/// $ChinaComment$·þÎñ
///
[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;
///
/// Initializes a new instance of the class.
///
/// The $EntityInstanceName$ application service.
public $EntityName$Controller(I$EntityName$AppService $EntityInstanceName$AppService, ICurrentUser currentUser)
{
_$EntityInstanceName$AppService = $EntityInstanceName$AppService;
_currentUser = currentUser;
}
///
/// »ñÈ¡$ChinaComment$
///
/// Ö÷¼üID
///
[HttpGet]
[Route("{id}")]
public virtual Task<$EntityName$Dto> GetAsync(Guid id)
{
return _$EntityInstanceName$AppService.GetAsync(id);
}
///
/// ·ÖÒ³»ñÈ¡$ChinaComment$µÄÁбí.
///
/// ²éѯ²ÎÊý
///
[HttpGet]
[Route("Page")]
public virtual Task> GetListAsync([FromQuery] Get$EntityName$Input input)
{
return _$EntityInstanceName$AppService.GetListAsync(input);
}
///
/// ´´½¨$ChinaComment$
///
/// ´´½¨²ÎÊý
///
[Authorize]
[HttpPost]
public virtual Task<$EntityName$Dto> CreateAsync($EntityName$CreateDto input)
{
input.CreatorName = _currentUser.UserAccount;//´´½¨ÈË
return _$EntityInstanceName$AppService.CreateAsync(input);
}
///
/// ¸üÐÂ$ChinaComment$
///
/// Ö÷¼üID
/// ¸üвÎÊý
///
[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);
}
///
/// ¿Ë¡$ChinaComment$
///
/// Id¼¯ºÏ
///
[Authorize]
[HttpPost]
[Route("Clone")]
public virtual Task> CloneAsync([FromBody] IEnumerable ids)
{
MyCurrentUser myCurrentUser = new MyCurrentUser()
{
UserAccount = _currentUser.UserAccount,
UserId = _currentUser.UserId
};
return _$EntityInstanceName$AppService.CloneAsync(ids, myCurrentUser);
}
///
/// ɾ³ý$ChinaComment$
///
/// Ö÷¼üID
///
[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 _wmsMaterialAppService.DeletePermanentlyAsync(id, myCurrentUser);//ÎïÀíɾ³ý
}
///
/// ÅúÁ¿É¾³ý$ChinaComment$
///
/// Ö÷¼üID¼¯ºÏ
///
[Authorize]
[HttpDelete]
public virtual Task DeleteAsync([FromBody] IEnumerable ids)
{
MyCurrentUser myCurrentUser = new MyCurrentUser()
{
UserAccount = _currentUser.UserAccount,
UserId = _currentUser.UserId
};
// return _wmsMaterialAppService.DeleteManyAsync(ids,myCurrentUser);//Â߼ɾ³ý
return _wmsMaterialAppService.BatchDeletePermanentlyAsync(ids, myCurrentUser);//ÎïÀíɾ³ý
}
///
/// µ÷ÕûÅÅÐò$ChinaComment$
///
/// Ö÷¼üID
///
[HttpPut]
[Route("{id}/AdjustSort/{sort}")]
public virtual Task AdjustSortAsync(Guid id, int sort)
{
return _$EntityInstanceName$AppService.AdjustSortAsync(id, sort);
}
///
/// µ¼Èë$ChinaComment$
///
///
[Authorize]
[HttpPost]
[Route("Import")]
public virtual async Task 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();
}
///
/// µ¼³ö$ChinaComment$
///
///
[HttpGet]
[Route("Export")]
public virtual async Task 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" };
}
}
}