using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using MySqlX.XDevAPI; using OASystem.API.OAMethodLib.ChatGPT; using OASystem.API.OAMethodLib.GoogleMapAPI; using OASystem.API.OAMethodLib.JuHeAPI; using OASystem.API.OAMethodLib.YouDaoAPI; using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Dtos.SmallFun; using OASystem.Domain.ViewModels.JuHeExchangeRate; using OASystem.Domain.ViewModels.SmallFun; using SqlSugar; using System.Buffers; using System.Collections.Generic; using System.Collections.Immutable; using System.Collections.Specialized; using System.Diagnostics; using System.Text.Json; using System.Text.Json.Nodes; using System.Transactions; using System.Xml.Linq; namespace OASystem.API.Controllers { /// /// 小功能接口 /// [Route("api/[controller]/[action]")] [ApiController] public class SmallFunController : ControllerBase { private readonly IJuHeApiService _juHeApiService; private readonly IConfiguration _config; /// /// 初始化 /// /// public SmallFunController(IJuHeApiService juHeApiService, IConfiguration config) { this._juHeApiService = juHeApiService; this._config = config; } #region 聚合API 汇率相关 /// /// 获取汇率币种 /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetCurrencys() { var rateCurrencyData = AppSettingsHelper.Get("RateCurrency"); return Ok(JsonView(rateCurrencyData)); } /// /// 获取汇率费用 /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetCurrencyExchange(ExchangeRateDto rateDto) { #region 参数处理 if (string.IsNullOrEmpty(rateDto.CurrencyCodePer) || string.IsNullOrEmpty(rateDto.CurrencyCodeSuf)) { return Ok(JsonView(false, "币种参数为空!")); } if (rateDto.Money <= 0) { return Ok(JsonView(false, "转换金额 <= 0!")); } #endregion var result = await _juHeApiService.GetExchangeRateAsync(rateDto); if (result.Code != 0 || result == null) { return Ok(JsonView(false, result.Msg)); } return Ok(JsonView(result.Data)); } #endregion #region 有道API 文本翻译 /// /// 有道翻译 所有语种 /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetLuaguages() { var luaguages = new GetYouDaoLanguages().Luanguages; return Ok(JsonView(luaguages)); } /// /// 有道翻译 /// /// 待翻译的文本 目前只支持 中转英 /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetTranslate(YouDaoDto dto) { if (string.IsNullOrEmpty(dto.Txt)) { return Ok(JsonView("待翻译的文本不能为空!")); } string from = "zh-CHS", to = "en"; if (!string.IsNullOrEmpty(dto.From) && !string.IsNullOrEmpty(dto.To)) { var luaguuages = new GetYouDaoLanguages().Luanguages; var fromLuaguage = luaguuages.Where(a => a.Code == dto.From).FirstOrDefault(); var toLuaguage = luaguuages.Where(a => a.Code == dto.To).FirstOrDefault(); if (fromLuaguage == null) { return Ok(JsonView("源语言code不支持!")); } if (toLuaguage == null) { return Ok(JsonView("目标语言code不支持!")); } from = dto.From; to = dto.To; } var translateData = await YouDaoApiTools.GetReTrans(dto.Txt, from, to); if (translateData == null || translateData.Code != 0) { return Ok(JsonView(false, translateData.Msg)); } return Ok(JsonView( new { translation = translateData.Data })); } #endregion #region googleMapApi /// /// googleMapApi 获取距离And时间 /// /// /// 请求参数默认值 /// origin:"FERİT RECAİ ERTUĞRUL CAD. NO: 18 ORAN / ANKARA,Turkey"; /// destination : "Dudullu Mh. Imes Sanayi Sitesi 504. Sk. No:4/B1 Umraniye/Istanbul"; /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task GetGooglMapForeignAndTime(GoogleMapDirectionsDto dto) { var data = await GoogleMapTools.GetForeignAndTime(dto.origin,dto.destination); if (data == null || data.Code != 0) { return Ok(JsonView(false, data.Msg)); } return Ok(JsonView(data.Data)); } #endregion #region ChatGPT /// /// ChatGPT 自动补全 /// /// /// [HttpPost] [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)] public async Task ChatGptCompletions(CompletionsDto dto) { if (string.IsNullOrEmpty(dto.Prompt)) { return Ok(JsonView(false,"待自动补全的文本为空!")); } Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(999); Console.WriteLine($"程序耗时:{sw.ElapsedMilliseconds}ms."); var data = await ChatGPTTools.Completions(dto.Prompt); sw.Stop(); if (data == null || data.Code != 0) { return Ok(JsonView(false, data.Msg+"【耗时:"+ sw.ElapsedMilliseconds/1000+ "ms】")); } return Ok(JsonView(200, "【耗时:"+ sw.ElapsedMilliseconds/1000 + "s】", data.Data)); } #endregion } }