using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Threading.Tasks; using SqlSugar; using Infrastructure; using Infrastructure.Attribute; using Infrastructure.Enums; using Infrastructure.Model; using Mapster; using ${options.ModelsNamespace}.Dto; using ${options.ModelsNamespace}.Models; using ${options.IServicsNamespace}.${options.SubNamespace}.I${options.SubNamespace}Service; using ${options.ApiControllerNamespace}.Extensions; using ${options.ApiControllerNamespace}.Filters; using ZR.Common; using Infrastructure.Extensions; using System.Linq; namespace ${options.ApiControllerNamespace}.Controllers { /// /// ${genTable.functionName}Controller /// /// @author ${replaceDto.Author} /// @date ${replaceDto.AddTime} /// [Verify] [Route("${genTable.ModuleName}/${genTable.BusinessName}")] public class ${replaceDto.ModelTypeName}Controller : BaseController { /// /// ${genTable.FunctionName}接口 /// private readonly I${replaceDto.ModelTypeName}Service _${replaceDto.ModelTypeName}Service; public ${replaceDto.ModelTypeName}Controller(I${replaceDto.ModelTypeName}Service ${replaceDto.ModelTypeName}Service) { _${replaceDto.ModelTypeName}Service = ${replaceDto.ModelTypeName}Service; } /// /// 查询${genTable.FunctionName}列表 /// /// /// [HttpGet("list")] [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:list")] public IActionResult Query${replaceDto.ModelTypeName}([FromQuery] ${replaceDto.ModelTypeName}QueryDto parm) { //开始拼装查询条件 var predicate = Expressionable.Create<${replaceDto.ModelTypeName}>(); //搜索条件查询语法参考Sqlsugar $foreach(column in genTable.Columns) $if(column.IsQuery) $if(column.CsharpType == "string") predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.${column.CsharpField}), ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; $elseif(column.CsharpType == "DateTime") predicate = predicate.AndIF(parm.Begin${column.CsharpField} == null, it => it.${column.CsharpField} >= DateTime.Now.AddDays(-1)); predicate = predicate.AndIF(parm.Begin${column.CsharpField} != null, it => it.${column.CsharpField} >= parm.Begin${column.CsharpField}); predicate = predicate.AndIF(parm.End${column.CsharpField} != null, it => it.${column.CsharpField} <= parm.End${column.CsharpField}); $elseif(column.CsharpType == "int" || column.CsharpType == "long") predicate = predicate.AndIF(parm.${column.CsharpField} != null, ${codeTool.QueryExp(column.CsharpField, column.QueryType)}; $end $end $end $if(genTable.SortField != "" && genTable.SortField != null) var response = _${replaceDto.ModelTypeName}Service.GetPages(predicate.ToExpression(), parm, x => x.${genTable.SortField}, "${genTable.SortType}"); $else var response = _${replaceDto.ModelTypeName}Service.GetPages(predicate.ToExpression(), parm); $end return SUCCESS(response); } /// /// 查询${genTable.FunctionName}详情 /// /// /// [HttpGet("{${replaceDto.PKName}}")] [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:query")] public IActionResult Get${replaceDto.ModelTypeName}(${replaceDto.PKType} ${replaceDto.PKName}) { var response = _${replaceDto.ModelTypeName}Service.GetFirst(x => x.${replaceDto.PKName} == ${replaceDto.PKName}); return SUCCESS(response); } /// /// 添加${genTable.FunctionName} /// /// [HttpPost] [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:add")] [Log(Title = "${genTable.FunctionName}", BusinessType = BusinessType.INSERT)] public IActionResult Add${replaceDto.ModelTypeName}([FromBody] ${replaceDto.ModelTypeName}Dto parm) { if (parm == null) { throw new CustomException("请求参数错误"); } //从 Dto 映射到 实体 var model = parm.Adapt<${replaceDto.ModelTypeName}>().ToCreate(HttpContext); var response = _${replaceDto.ModelTypeName}Service.Insert(model, it => new { $foreach(item in genTable.Columns) $if((item.IsInsert)) it.$item.CsharpField, $end ${end} }); return ToResponse(response); } /// /// 更新${genTable.FunctionName} /// /// [HttpPut] [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:update")] [Log(Title = "${genTable.FunctionName}", BusinessType = BusinessType.UPDATE)] public IActionResult Update${replaceDto.ModelTypeName}([FromBody] ${replaceDto.ModelTypeName}Dto parm) { if (parm == null) { throw new CustomException("请求实体不能为空"); } //从 Dto 映射到 实体 var model = parm.Adapt<${replaceDto.ModelTypeName}>().ToUpdate(HttpContext); var response = _${replaceDto.ModelTypeName}Service.Update(w => w.${replaceDto.PKName} == model.${replaceDto.PKName}, it => new ${replaceDto.ModelTypeName}() { //Update 字段映射 $foreach(item in genTable.Columns) $if((item.IsEdit)) $item.CsharpField = model.$item.CsharpField, $end ${end} }); return ToResponse(response); } /// /// 删除${genTable.FunctionName} /// /// [HttpDelete("{ids}")] [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:delete")] [Log(Title = "${genTable.FunctionName}", BusinessType = BusinessType.DELETE)] public IActionResult Delete${replaceDto.ModelTypeName}(string ids) { int[] idsArr = Tools.SpitIntArrary(ids); if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } var response = _${replaceDto.ModelTypeName}Service.Delete(idsArr); return ToResponse(response); } /// /// ${genTable.FunctionName}导出 /// /// [Log(BusinessType = BusinessType.EXPORT, IsSaveResponseData = false, Title = "${genTable.FunctionName}")] [HttpGet("export")] [ActionPermissionFilter(Permission = "${replaceDto.PermissionPrefix}:export")] public IActionResult Export() { var list = _${replaceDto.ModelTypeName}Service.GetAll(); string sFileName = ExportExcel(list, "${replaceDto.ModelTypeName}", "${genTable.FunctionName}"); return SUCCESS(new { path = "/export/" + sFileName, fileName = sFileName }); } } }