| | |
| | | using $ProjectNamePrefix$.Core.Common.HttpContextUser; |
| | | using $ProjectNamePrefix$.Core.Extensions.Others; |
| | | using $ProjectNamePrefix$.Core.IServices; |
| | | using $ProjectNamePrefix$.Core.Model; |
| | | using $ProjectNamePrefix$.Core.Model.CommonModel; |
| | | using $ProjectNamePrefix$.Core.Model.Models; |
| | | using $ProjectNamePrefix$.Core.Model.ParamModels; |
| | | using $ProjectNamePrefix$.Core.Utility; |
| | | using Ao.Lang; |
| | | using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; |
| | | 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 Microsoft.Extensions.Logging; |
| | | using Newtonsoft.Json; |
| | | using System.Collections.Generic; |
| | | using System.Threading.Tasks; |
| | | using System; |
| | | using MiniExcelLibs; |
| | | using System.Reflection; |
| | | using Volo.Abp; |
| | | using Volo.Abp.Application.Dtos; |
| | | |
| | | namespace $ProjectNamePrefix$.Core.Api.Controllers |
| | | namespace CMS.Plugin.$NameSpacePath$.Controller |
| | | { |
| | | /// <summary> |
| | | /// $ChinaComment$ |
| | | /// $ChinaComment$æå¡ |
| | | /// </summary> |
| | | [Route("api/[controller]/[action]")] |
| | | [ApiController] |
| | | [Authorize(Permissions.Name)] |
| | | [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$Services _$EntityName$Services; |
| | | private readonly IUser _user; |
| | | private readonly ILogger<$EntityName$Controller> _logger; |
| | | private readonly I$EntityName$AppService _$EntityInstanceName$AppService; |
| | | |
| | | public $EntityName$Controller(I$EntityName$Services $EntityName$Services, IUser user, ILogger<$EntityName$Controller> logger) |
| | | /// <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) |
| | | { |
| | | _$EntityName$Services = $EntityName$Services; |
| | | _user = user; |
| | | _logger = logger; |
| | | _$EntityInstanceName$AppService = $EntityInstanceName$AppService; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å页è·å$ChinaComment$å表 |
| | | /// è·å$ChinaComment$ |
| | | /// </summary> |
| | | /// <param name="param">ç鿡件</param> |
| | | /// <returns>è·åç»æ</returns> |
| | | [HttpPost] |
| | | public async Task<MessageModel<PageModel<$EntityName$>>> Get([FromBody] $EntityName$Param param) |
| | | { |
| | | if (string.IsNullOrEmpty(param.searchVal) || string.IsNullOrWhiteSpace(param.searchVal)) |
| | | { |
| | | param.searchVal = string.Empty; |
| | | } |
| | | |
| | | var whereConditions = WhereConditionsExtensions.GetWhereConditions<$EntityName$, $EntityName$Param>(param); |
| | | if (!whereConditions.IsSuccess) { |
| | | return new MessageModel<PageModel<$EntityName$>>() |
| | | { |
| | | msg = whereConditions.ErrMsg, |
| | | success = false, |
| | | response = null |
| | | }; |
| | | } |
| | | var data = await _$EntityName$Services.QueryPage(whereConditions.data, param.page, param.pageSize, " $OrderByName$ desc "); |
| | | return new MessageModel<PageModel<$EntityName$>>() |
| | | { |
| | | msg = "è·åæå", |
| | | success = true, |
| | | response = data |
| | | }; |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åå个$ChinaComment$ |
| | | /// </summary> |
| | | /// <param name="id">主é®</param> |
| | | /// <returns>è·åç»æ</returns> |
| | | [HttpGet] |
| | | public async Task<MessageModel<$EntityName$>> Get(int id = 0) |
| | | { |
| | | return new MessageModel<$EntityName$>() |
| | | { |
| | | msg = "è·åæå", |
| | | success = true, |
| | | response = await _$EntityName$Services.QueryById(id) |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ°å¢$ChinaComment$ |
| | | /// </summary> |
| | | /// <param name="request">è¦æ°å¢ç$ChinaComment$对象</param> |
| | | /// <param name="id">æ è¯ç¬¦.</param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public async Task<MessageModel<string>> Post([FromBody] $EntityName$ request) |
| | | [HttpGet] |
| | | [Route("{id}")] |
| | | public virtual Task<$EntityName$Dto> GetAsync(Guid id) |
| | | { |
| | | try |
| | | { |
| | | #region éªè¯ |
| | | MessageModel<string> retBody = null; |
| | | retBody = ValidateDataHelper.CommonValidateIsNULL<$EntityName$, string>(request); |
| | | if (retBody != null) |
| | | { |
| | | return retBody; |
| | | } |
| | | return _$EntityInstanceName$AppService.GetAsync(id); |
| | | } |
| | | |
| | | List<ValidateModel> columnsList = null; |
| | | columnsList = new List<ValidateModel>() { |
| | | $ValidateEmptyForInsert$ |
| | | }; |
| | | retBody = ValidateDataHelper.CommonValidate<$EntityName$, string>(request, columnsList); |
| | | if (retBody != null) |
| | | { |
| | | return retBody; |
| | | } |
| | | #endregion |
| | | /// <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); |
| | | } |
| | | |
| | | request.CreateTime = request.ModifyTime = DateTime.Now; |
| | | request.CreateBy = request.ModifyBy = _user.Name; |
| | | request.CreateId = request.ModifyId = _user.ID; |
| | | request.OperationRemark = "æ·»å "; |
| | | var id = await _$EntityName$Services.Add(request); |
| | | var success = id > 0; |
| | | |
| | | if (success) |
| | | { |
| | | return MessageModel<string>.Success("æ·»å æå", id.ObjToString()); |
| | | } |
| | | return MessageModel<string>.Fail("æ·»å 失败"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _logger.LogError(ex,"æ°å¢$ChinaComment$åºç°å¼å¸¸:" + ex.Message); |
| | | return MessageModel<string>.Fail("æ°å¢$ChinaComment$åºç°å¼å¸¸:" + ex.Message); |
| | | } |
| | | /// <summary> |
| | | /// å建$ChinaComment$ |
| | | /// </summary> |
| | | /// <param name="input">è¾å
¥.</param> |
| | | /// <returns></returns> |
| | | //[Authorize] |
| | | [HttpPost] |
| | | public virtual Task<$EntityName$Dto> CreateAsync($EntityName$CreateDto input) |
| | | { |
| | | return _$EntityInstanceName$AppService.CreateAsync(input); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°$ChinaComment$ |
| | | /// </summary> |
| | | /// <param name="request">è¦æ´æ°ç$ChinaComment$对象</param> |
| | | /// <returns>æ´æ°ç»æ</returns> |
| | | /// <param name="id">æ è¯ç¬¦.</param> |
| | | /// <param name="input">è¾å
¥.</param> |
| | | /// <returns></returns> |
| | | //[Authorize] |
| | | [HttpPut] |
| | | public async Task<MessageModel<string>> Put([FromBody] $EntityName$ request) |
| | | [Route("{id}")] |
| | | public virtual Task<$EntityName$Dto> UpdateAsync(Guid id, $EntityName$UpdateDto input) |
| | | { |
| | | try |
| | | { |
| | | #region éªè¯ |
| | | MessageModel<string> retBody = null; |
| | | retBody = ValidateDataHelper.CommonValidateIsNULL<$EntityName$, string>(request); |
| | | if (retBody != null) |
| | | { |
| | | return retBody; |
| | | } |
| | | return _$EntityInstanceName$AppService.UpdateAsync(id, input); |
| | | } |
| | | |
| | | List<ValidateModel> columnsList = null; |
| | | columnsList = new List<ValidateModel>() |
| | | { |
| | | $ValidateEmptyForUpdate$ |
| | | }; |
| | | retBody = ValidateDataHelper.CommonValidate<$EntityName$, string>(request, columnsList); |
| | | if (retBody != null) |
| | | { |
| | | return retBody; |
| | | } |
| | | #endregion |
| | | |
| | | var dbObj = await _$EntityName$Services.QueryById(request.Id); |
| | | if (dbObj == null) |
| | | { |
| | | return MessageModel<string>.Fail("æ°æ®ä¸åå¨!"); |
| | | } |
| | | |
| | | request.ModifyTime = DateTime.Now; |
| | | request.ModifyBy = _user.Name; |
| | | request.ModifyId = _user.ID; |
| | | request.OperationRemark = "æ´æ°"; |
| | | var success = await _$EntityName$Services.Update(request); |
| | | |
| | | if (success) |
| | | { |
| | | return MessageModel<string>.Success("æ´æ°æå", request.Id.ObjToString()); |
| | | } |
| | | return MessageModel<string>.Fail("æ´æ°å¤±è´¥"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _logger.LogError(ex,"æ´æ°$ChinaComment$åºç°å¼å¸¸:" + ex.Message); |
| | | return MessageModel<string>.Fail("æ´æ°$ChinaComment$åºç°å¼å¸¸:" + ex.Message); |
| | | } |
| | | /// <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) |
| | | { |
| | | return _$EntityInstanceName$AppService.CloneAsync(ids); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å é¤$ChinaComment$ |
| | | /// </summary> |
| | | /// <param name="id">主é®</param> |
| | | /// <returns>å é¤ç»æ</returns> |
| | | /// <param name="id">æ è¯ç¬¦.</param> |
| | | /// <returns></returns> |
| | | //[Authorize] |
| | | [HttpDelete] |
| | | public async Task<MessageModel<string>> Delete(int id = 0) |
| | | [Route("{id}")] |
| | | public virtual Task DeleteAsync(Guid id) |
| | | { |
| | | try |
| | | { |
| | | var data = new MessageModel<string>(); |
| | | if (id > 0) |
| | | { |
| | | var detail = await _$EntityName$Services.QueryById(id); |
| | | if (detail != null) |
| | | { |
| | | data.success = await _$EntityName$Services.DeleteById(detail.Id); |
| | | if (data.success) |
| | | { |
| | | data.msg = "å 餿å"; |
| | | data.response = detail?.Id.ObjToString(); |
| | | } |
| | | } |
| | | else { |
| | | return MessageModel<string>.Fail("æ°æ®ä¸åå¨!"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | data.success = false; |
| | | data.msg = "å é¤å¤±è´¥,$ChinaComment$ä¸åå¨"; |
| | | } |
| | | return data; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _logger.LogError(ex,"å é¤$ChinaComment$åºç°å¼å¸¸:" + ex.Message); |
| | | return MessageModel<string>.Fail("å é¤$ChinaComment$åºç°å¼å¸¸:" + ex.Message); |
| | | } |
| | | return _$EntityInstanceName$AppService.DeleteAsync(id); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// é»è¾å é¤$ChinaComment$ |
| | | /// <summary> |
| | | /// æ¹éå é¤$ChinaComment$ |
| | | /// </summary> |
| | | /// <param name="id">主é®</param> |
| | | /// <returns>å é¤ç»æ</returns> |
| | | /// <param name="ids">The ids.</param> |
| | | /// <returns></returns> |
| | | //[Authorize] |
| | | [HttpDelete] |
| | | public async Task<MessageModel<string>> LogicDelete(int id = 0) |
| | | public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) |
| | | { |
| | | try |
| | | return _$EntityInstanceName$AppService.DeleteManyAsync(ids); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è°æ´æåº$ChinaComment$ |
| | | /// </summary> |
| | | /// <param name="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()) |
| | | { |
| | | var data = new MessageModel<string>(); |
| | | if (id > 0) |
| | | { |
| | | var detail = await _$EntityName$Services.QueryById(id); |
| | | if (detail != null) |
| | | { |
| | | detail.ModifyTime = DateTime.Now; |
| | | detail.ModifyBy = _user.Name; |
| | | detail.ModifyId = _user.ID; |
| | | detail.IsDeleted = true; |
| | | detail.OperationRemark = "å é¤"; |
| | | data.success = await _$EntityName$Services.Update(detail); |
| | | if (data.success) |
| | | { |
| | | data.msg = "å 餿å"; |
| | | data.response = detail?.Id.ObjToString(); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | data.success = false; |
| | | data.msg = "å é¤å¤±è´¥,æ°æ®ä¸åå¨"; |
| | | } |
| | | return data; |
| | | throw new UserFriendlyException("è¯·æ£æ¥å¯¼å
¥çè¡¨æ ¼"); |
| | | } |
| | | catch (Exception ex) |
| | | |
| | | await _$EntityInstanceName$AppService.ImportAsync(new $EntityName$sImportModel |
| | | { |
| | | _logger.LogError(ex,"é»è¾å é¤$ChinaComment$åºç°å¼å¸¸:" + ex.Message); |
| | | return MessageModel<string>.Fail("é»è¾å é¤$ChinaComment$åºç°å¼å¸¸:" + ex.Message); |
| | | $EntityName$s = $EntityInstanceName$Rows, |
| | | }); |
| | | |
| | | 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" }; |
| | | } |
| | | } |
| | | } |
| | | } |