SwaggerStudy/SwaggerStudy/Controllers/StudentController.cs

346 lines
9.2 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using SwaggerStudy.Models;
using SwaggerStudy.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace SwaggerStudy.Controllers
{
/// <summary>
/// 学生操作接口
/// </summary>
[ApiController]
[Route("api/[controller]/[action]")]
public class StudentController : ControllerBase
{
private readonly ILogger<StudentController> _logger;
private readonly StudentServer _studentServer;
public StudentController(ILogger<StudentController> logger, StudentServer studentServer)
{
_logger = logger;
_studentServer = studentServer;
}
[AllowAnonymous]
[HttpGet]
public ResultBase GetAll()
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "获取所有学生",
Data = _studentServer.GetAll(),
};
return apiResult;
}
[HttpGet]
[ActionName("GetAllAsync")]
public async Task<IActionResult> GetAllAsync()
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "获取所有学生成功",
Data = _studentServer.GetAll(),
};
return await Task.FromResult(Ok(apiResult));
}
/// <summary>
/// 按学号获取学生
/// </summary>
/// <example>
/// 示例
/// ```
/// sfdfsdafsadfsaf
/// ```
/// </example>
/// <remarks>我是Remark注释</remarks>
/// <param name="studentId" example="1">学生Id(变量在路由中时example才有用)</param>
[AllowAnonymous]
[HttpGet("{studentId:int}")]
public IActionResult Get([FromRoute]int studentId)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "操作成功",
Data = _studentServer.Get(studentId),
};
return Ok(apiResult);
}
[AllowAnonymous]
[HttpGet]
[ActionName("GetAsync")]
public async Task<IActionResult> GetAsync(int studentId)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "操作成功",
Data = _studentServer.Get(studentId),
};
return await Task.FromResult(Ok(apiResult));
}
[HttpGet]
public IActionResult GetByName(string studentName)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "操作成功",
Data = _studentServer.Get(studentName),
};
return Ok(apiResult);
}
[HttpGet]
[ActionName("GetByNameAsync")]
public async Task<IActionResult> GetByNameAsync(string studentName)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "操作成功",
Data = _studentServer.Get(studentName),
};
return await Task.FromResult(Ok(apiResult));
}
[HttpPost]
public IActionResult Add(StudentVModel vm)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "",
};
if (!ModelState.IsValid)
{
apiResult.Code = -1;
apiResult.Message = "模型验证错误";
return BadRequest(apiResult);
}
var addResult = _studentServer.Add(ModelConvert(vm));
if (addResult)
{
apiResult.Code = 0;
apiResult.Message = "添加成功";
apiResult.Data = vm;
}
else
{
apiResult.Code = -2;
apiResult.Message = "添加失败";
apiResult.Data = null;
}
return Ok(apiResult);
}
[HttpPost]
[ActionName("AddAsync")]
public async Task<IActionResult> AddAsync(StudentVModel vm)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "",
};
if (!ModelState.IsValid)
{
apiResult.Code = -1;
apiResult.Message = "模型验证错误";
return await Task.FromResult(BadRequest(apiResult));
}
var addResult = _studentServer.Add(ModelConvert(vm));
if (addResult)
{
apiResult.Code = 0;
apiResult.Message = "添加成功";
apiResult.Data = vm;
}
else
{
apiResult.Code = -2;
apiResult.Message = "添加失败";
apiResult.Data = null;
}
return await Task.FromResult(new JsonResult(apiResult));
}
[HttpPost]
public IActionResult Update(StudentVModel vm)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "",
};
if (!ModelState.IsValid)
{
apiResult.Code = -1;
apiResult.Message = "模型验证错误";
return BadRequest(apiResult);
}
var updateResult = _studentServer.Update(ModelConvert(vm));
if (updateResult)
{
apiResult.Code = 0;
apiResult.Message = "更新成功";
apiResult.Data = vm;
}
else
{
apiResult.Code = -2;
apiResult.Message = "更新失败";
apiResult.Data = null;
}
return Ok(apiResult);
}
[HttpPost]
[ActionName("UpdateAsync")]
public async Task<IActionResult> UpdateAsync(StudentVModel vm)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "",
};
if (!ModelState.IsValid)
{
apiResult.Code = -1;
apiResult.Message = "模型验证错误";
return await Task.FromResult(BadRequest(apiResult));
}
var updateResult = _studentServer.Update(ModelConvert(vm));
if (updateResult)
{
apiResult.Code = 0;
apiResult.Message = "更新成功";
apiResult.Data = vm;
}
else
{
apiResult.Code = -2;
apiResult.Message = "更新失败";
apiResult.Data = null;
}
return await Task.FromResult(new JsonResult(apiResult));
}
[HttpPost]
public IActionResult Delete(int studentId)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "",
};
var operationResults = _studentServer.Delete(studentId);
if (operationResults)
{
apiResult.Code = 0;
apiResult.Message = "删除成功";
apiResult.Data = true;
}
else
{
apiResult.Code = -2;
apiResult.Message = "删除失败";
apiResult.Data = false;
}
return Ok(apiResult);
}
[HttpPost]
[ActionName("DeleteAsync")]
public async Task<IActionResult> DeleteAsync(int studentId)
{
var apiResult = new ResultBase()
{
Code = 0,
Message = "",
};
var operationResults = _studentServer.Delete(studentId);
if (operationResults)
{
apiResult.Code = 0;
apiResult.Message = "删除成功";
apiResult.Data = true;
}
else
{
apiResult.Code = -2;
apiResult.Message = "删除失败";
apiResult.Data = false;
}
return await Task.FromResult(new JsonResult(apiResult));
}
private StudentVModel ModelConvert(Student student)
{
var vm = new StudentVModel()
{
Id = student.Id,
Name = student.Name,
Age = student.Age,
Address = student.Address,
School = student.School,
};
return vm;
}
private Student ModelConvert(StudentVModel vm)
{
var model = new Student()
{
Id = vm.Id,
Name = vm.Name,
Age = vm.Age,
Address = vm.Address,
School = vm.School,
};
return model;
}
}
}