You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

346 lines
9.2 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}
}