Learn.VideoAnalysis/VideoAnalysisCore/Controllers/PublicController.cs

108 lines
3.6 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Hosting;
using System.Diagnostics;
using System.Security.Claims;
using UserCenter.Model;
using VideoAnalysisCore.Common;
using VideoAnalysisCore.Controllers.Dto;
namespace VideoAnalysisCore.Controllers
{
/// <summary>
/// 通用接口
/// </summary>
[Authorize(AuthenticationSchemes = Authentication.vdAdmin)]
[Route("api/[controller]")]
public class PublicController : ControllerBase
{
private readonly IHostEnvironment _environment;
public PublicController(Repository<School> baseService, IHostEnvironment environment)
{
_environment = environment;
}
/// <summary>
/// App.EntityDto.Enum 枚举转下拉列表
/// </summary>
/// <param name="type">枚举名称 例子type='ExamStatusEnum'</param>
/// <returns></returns>
[HttpGet, Route("enum/{type}")]
[ResponseCache(Duration = 5)]
public IActionResult GetExamStatusData(string type)
{
if (!AppCommon.EnumType.ContainsKey(type))
return BadRequest("无效类型");
return Ok( Enum.GetValues(AppCommon.EnumType[type]).Cast<object>()
.Select(enumValue => new ComboModel() { Text = enumValue.ToString(), Value = (int)enumValue }).ToList());
}
/// <summary>
/// App.EntityDto.Enum 枚举转下拉列表
/// </summary>
/// <param name="type">枚举名称 例子type='ExamStatusEnum'</param>
/// <returns></returns>
[HttpGet, Route("enum/{type}/Dic")]
[ResponseCache(Duration = 5)]
public IActionResult GetExamStatusDictionary(string type)
{
if (!AppCommon.EnumType.ContainsKey(type))
return BadRequest("无效类型");
return Ok(Enum.GetValues(AppCommon.EnumType[type]).Cast<object>()
.ToDictionary(s => (int)s, s => s.ToString()));
}
# if DEBUG
/// <summary>
/// 获取当前环境变量,配置文件
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult NewENV()
{
var envName = _environment.EnvironmentName;
var env = "无配置";
if (_environment.IsDevelopment())
env = "开发环境";
else if (_environment.IsStaging())
env = "测试/预发布环境";
else if (_environment.IsProduction())
env = "生产环境";
return Ok(new
{
envName,
env,
AppCommon.Config
});
}
#endif
/// <summary>
/// 视频处理
/// </summary>
/// <param name="req">请求体</param>
/// <returns></returns>
[HttpPost, AllowAnonymous]
public async Task<ActionResult<object>> Login(AdminLoginReq req)
{
if (!ModelState.IsValid) return BadRequest(ModelState);
if (string.IsNullOrWhiteSpace(req.Account)
|| string.IsNullOrWhiteSpace(req.Password))
return BadRequest("无效的登录信息");
return Ok(new
{
//按钮权限
Permissions = "*",
//用户名
UserName = "管理员",
NickName = "管理员",
AccessToken = JwtHelper.GetToken(AppCommon.Config.AuthKey,
[
new Claim("Id","999"),
])
});
}
}
}