119 lines
3.7 KiB
C#
119 lines
3.7 KiB
C#
using Infrastructure.Controllers;
|
|
using Infrastructure.Model;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using ZR.Common;
|
|
using ZR.Model.Business.Dto;
|
|
|
|
namespace ZR.Admin.WebApi.Controllers
|
|
{
|
|
/// <summary>
|
|
/// 腾讯云COS接口
|
|
/// </summary>
|
|
[Route("api/[controller]")]
|
|
[ApiExplorerSettings(GroupName = "sys")]
|
|
public class CosController : BaseController
|
|
{
|
|
private readonly NLog.Logger _logger = NLog.LogManager.GetCurrentClassLogger();
|
|
|
|
/// <summary>
|
|
/// 获取上传预签名URL
|
|
/// </summary>
|
|
/// <param name="request">上传请求参数</param>
|
|
/// <returns>预签名URL列表</returns>
|
|
/// <remarks>
|
|
/// 请求示例:
|
|
/// POST /api/cos/getUploadUrls
|
|
/// {
|
|
/// "recordTime": "2025-01-05T10:00:00",
|
|
/// "deptName": "技术部",
|
|
/// "content": "设备检修",
|
|
/// "workers": ["张三", "李四"],
|
|
/// "fileExt": ".jpg",
|
|
/// "imageCount": 3
|
|
/// }
|
|
/// </remarks>
|
|
[HttpPost("getUploadUrls")]
|
|
[AllowAnonymous]
|
|
public IActionResult GetUploadUrls([FromBody] CosUploadUrlsRequest request)
|
|
{
|
|
// 参数验证
|
|
if (request == null)
|
|
{
|
|
return ToResponse(ResultCode.PARAM_ERROR, "请求参数不能为空");
|
|
}
|
|
|
|
if (request.ImageCount <= 0)
|
|
{
|
|
return ToResponse(ResultCode.PARAM_ERROR, "图片数量必须大于0");
|
|
}
|
|
|
|
if (request.ImageCount > 15)
|
|
{
|
|
return ToResponse(ResultCode.PARAM_ERROR, "单次最多支持15张图片");
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(request.DeptName))
|
|
{
|
|
return ToResponse(ResultCode.PARAM_ERROR, "部门名称不能为空");
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(request.Content))
|
|
{
|
|
return ToResponse(ResultCode.PARAM_ERROR, "工作内容不能为空");
|
|
}
|
|
|
|
if (request.Workers == null || request.Workers.Count == 0)
|
|
{
|
|
return ToResponse(ResultCode.PARAM_ERROR, "参与人员不能为空");
|
|
}
|
|
|
|
// 设置默认记录时间
|
|
if (request.RecordTime == default)
|
|
{
|
|
request.RecordTime = DateTime.Now;
|
|
}
|
|
|
|
// 设置默认文件扩展名
|
|
if (string.IsNullOrWhiteSpace(request.FileExt))
|
|
{
|
|
request.FileExt = ".jpg";
|
|
}
|
|
|
|
try
|
|
{
|
|
var response = CosService.GetUploadUrls(request);
|
|
return SUCCESS(response);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.Error(ex, "获取COS上传URL失败");
|
|
return ToResponse(ResultCode.CUSTOM_ERROR, "获取上传URL失败: " + ex.Message);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取临时密钥
|
|
/// </summary>
|
|
/// <returns>临时密钥信息</returns>
|
|
/// <remarks>
|
|
/// 用于CS客户端迁移历史数据时直接上传到COS
|
|
/// </remarks>
|
|
[HttpGet("getTempCredentials")]
|
|
[AllowAnonymous]
|
|
public IActionResult GetTempCredentials()
|
|
{
|
|
try
|
|
{
|
|
var credentials = CosService.GetTempCredentials();
|
|
return SUCCESS(credentials);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.Error(ex, "获取COS临时密钥失败");
|
|
return ToResponse(ResultCode.CUSTOM_ERROR, "获取临时密钥失败: " + ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|