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

230 lines
7.9 KiB

using CA_Platform_Linker.Models.Coss;
using CA_Platform_Linker.Models.DTO;
using CA_Platform_Linker.Services.Interfaces;
using CA_Platform_Linker.Tools;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
namespace CA_Platform_Linker.Controllers
{
[Route("[controller]/[action]")]
[ApiController]
public class ClientController : ControllerBase
{
private readonly IClientService _clientService;
public ClientController(IClientService clientService)
{
_clientService = clientService;
}
[HttpPost]
public async Task<IActionResult> Login([FromQuery] string clientType = "LIS")
{
try
{
var result = await _clientService.StartAutoSignAsync(clientType, 3600 * 24);
LogHelper.Log.Info(result.ToString());
if (result.status == "200")
{
return Ok(new ApiLoginResponse
{
Success = true,
Message = "二维码生成成功,请扫码登录",
SignDataId = result.data.signDataId,
QrCode = result.data.qrCode
});
}
else
{
return BadRequest(new ApiLoginResponse
{
Success = false,
Message = $"二维码生成失败: {result.message}"
});
}
}
catch (Exception ex)
{
LogHelper.Log.Error($"二维码生成失败: {ex.Message}");
return BadRequest(new ApiLoginResponse
{
Success = false,
Message = $"二维码生成失败: {ex.Message}"
});
}
}
[HttpPost]
public async Task<IActionResult> AddSignJob([FromBody] ApiSignRequest request, [FromQuery] string clientType = "LIS")
{
return BadRequest(new ApiSignResponse
{
Success = false,
Message = "接口已停用,请使用 AutoSign 接口"
});
try
{
var result = await _clientService.AddSignJobAsync(
clientType,
request.Title,
request.Data,
request.UserId,
request.Algo,
request.ExpiryDate
);
if (result.status == "200")
{
return Ok(new ApiSignResponse
{
Success = true,
Message = "添加签名任务成功",
SignDataId = result.data.signDataId,
QrCode = result.data.qrCode
});
}
else
{
return BadRequest(new ApiSignResponse
{
Success = false,
Message = $"添加签名任务失败: {result.message}"
});
}
}
catch (Exception ex)
{
LogHelper.Log.Error($"添加签名任务失败: {ex.Message}");
return BadRequest(new ApiSignResponse
{
Success = false,
Message = $"添加签名任务失败: {ex.Message}"
});
}
}
[HttpPost]
public async Task<IActionResult> AutoSign([FromBody] ApiAutoSignRequest request, [FromQuery] string clientType = "LIS", [FromQuery] int clientOper = 0)
{
try
{
if (clientOper < 0 || clientOper > 99)
{
return BadRequest(new ApiAutoSignResponse
{
Success = false,
Message = "clientOper 参数值必须在 0-99 范围内"
});
}
var result = await _clientService.AutoSignAsync(
clientType,
request.UserId,
request.SignToken,
request.Data,
request.Algo,
request.ExpiryDate,
request.MZNum,
request.ZYNum,
request.SignID,
clientOper
);
if (result.status == "200")
{
return Ok(new ApiAutoSignResponse
{
Success = true,
Message = "自动签名成功",
SignResult = result.data.signResult,
SignCert = result.data.signCert,
SignDataId = result.data.signDataId
});
}
else
{
LogHelper.Log.Error($"自动签名失败: {result.message}");
return BadRequest(new ApiAutoSignResponse
{
Success = false,
Message = $"自动签名失败: {result.message}"
});
}
}
catch (Exception ex)
{
LogHelper.Log.Error($"自动签名失败: {ex.Message}");
return BadRequest(new ApiAutoSignResponse
{
Success = false,
Message = $"自动签名失败: {ex.Message}"
});
}
}
[HttpPost]
public async Task<IActionResult> GetSignResult([FromBody] ApiGetSignResultRequest request, [FromQuery] string clientType = "LIS")
{
try
{
var result = await _clientService.GetSignResultAsync(clientType, request.SignDataId);
if (result.status == "200")
{
string message = "查询中";
bool isLoginSuccess = false;
if (result.data.jobStatus == "FINISH")
{
message = "登录成功";
isLoginSuccess = true;
}
else if (result.data.jobStatus == "PROCESSING")
{
message = "等待扫码";
}
else if (result.data.jobStatus == "FAIL")
{
message = "签名失败";
}
else if (result.data.jobStatus == "TIMEOUT")
{
message = "登录超时";
}
return Ok(new ApiGetSignResultResponse
{
Success = true,
Message = message,
JobStatus = result.data.jobStatus,
SignResult = result.data.signResult,
SignCert = result.data.signCert,
UserId = result.data.msspId,
IsLoginSuccess = isLoginSuccess
});
}
else
{
return BadRequest(new ApiGetSignResultResponse
{
Success = false,
Message = $"获取签名结果失败: {result.message}"
});
}
}
catch (Exception ex)
{
LogHelper.Log.Error($"获取签名结果失败: {ex.Message}");
return BadRequest(new ApiGetSignResultResponse
{
Success = false,
Message = $"获取签名结果失败: {ex.Message}"
});
}
}
}
}