Browse Source

完善 SmallFunController. GetTranslate
SmallFunController. GetLuaguages

leiy 1 year ago
parent
commit
9cb4e762cf

+ 1 - 1
OASystem/OASystem.Api/Controllers/AuthController.cs

@@ -61,7 +61,7 @@ namespace OASystem.API.Controllers
             var view = new LoginView
             {
                 UserInfo = userData == null ? null : userData.Data,
-                AuthData = authData == null ? null : authData,
+                AuthData = authData == null ? null : authData.Data,
             };
 
             DateTime createZebraTime = DateTime.Now;

+ 39 - 5
OASystem/OASystem.Api/Controllers/SmallFunController.cs

@@ -7,6 +7,7 @@ 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;
@@ -84,21 +85,54 @@ namespace OASystem.API.Controllers
         #endregion
 
         #region 有道API 文本翻译
+
+        /// <summary>
+        /// 有道翻译 所有语种
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetLuaguages()
+        {
+            var luaguages = new GetYouDaoLanguages().Luanguages;
+            return Ok(JsonView(luaguages));
+        }
+
         /// <summary>
         /// 有道翻译
         /// </summary>
-        /// <param name="q">准备翻译的文本 目前只支持 中转英</param>
+        /// <param name="dto">待翻译的文本 目前只支持 中转英</param>
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> GeTranslate(string q)
+        public async Task<IActionResult> GetTranslate(YouDaoDto dto)
         {
-            if (string.IsNullOrEmpty(q))
+            if (string.IsNullOrEmpty(dto.Txt))
+            {
+                return Ok(JsonView("待翻译的文本不能为空!"));
+            }
+            string from = "zh-CHS", to = "en";
+            if (!string.IsNullOrEmpty(dto.From) && !string.IsNullOrEmpty(dto.To))
             {
-                return Ok(JsonView("翻译的文本不能为空!"));
+                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(q);
+
+            var translateData = await YouDaoApiTools.GetReTrans(dto.Txt, from, to);
 
             if (translateData == null || translateData.Code != 0) 
             {

+ 0 - 9
OASystem/OASystem.Api/OAMethodLib/YouDaoAPI/IYouDaoApiService.cs

@@ -1,9 +0,0 @@
-namespace OASystem.API.OAMethodLib.YouDaoAPI
-{
-    /// <summary>
-    /// 有道api 接口
-    /// </summary>
-    public interface IYouDaoApiService
-    {
-    }
-}

+ 0 - 19
OASystem/OASystem.Api/OAMethodLib/YouDaoAPI/YouDaoApiService.cs

@@ -1,19 +0,0 @@
-namespace OASystem.API.OAMethodLib.YouDaoAPI
-{
-    /// <summary>
-    /// 有道api
-    /// </summary>
-    public class YouDaoApiService:IYouDaoApiService
-    {
-        
-
-        ///// <summary>
-        ///// 获取翻译结果
-        ///// </summary>
-        ///// <returns></returns>
-        //public Task<Result> GetTranslate()
-        //{ 
-        //    return 
-        //}
-    }
-}

+ 12 - 10
OASystem/OASystem.Api/OAMethodLib/YouDaoAPI/YouDaoApiTools.cs

@@ -15,46 +15,48 @@ namespace OASystem.API.OAMethodLib.YouDaoAPI
 
         /// <summary>
         /// 有道翻译
+        /// 默认 中=>英
         /// </summary>
-        /// <param name="str"></param>
-        /// <param name="aimLanguage"></param>
+        /// <param name="txt">待翻译的文本</param>
+        /// <param name="from">源语言</param>
+        /// <param name="to">目标语言</param>
         /// <returns></returns>
-        public static async Task<Result> GetReTrans(string str, string from = "zh-CHS", string to = "en")
+        public static async Task<Result> GetReTrans(string txt, string from = "zh-CHS", string to = "en")
         {
             var result = new Result();
             #region MyRegion
-            if (string.IsNullOrEmpty(str))
+            if (string.IsNullOrEmpty(txt))
             {
-                result.Msg = "翻译文本为空!";
+                result.Msg = "翻译文本为空!";
                 return result;
             }
 
-            
             #endregion
 
             string url = string.Format("/api");
 
             #region 请求参数处理
 
-            string q = System.Web.HttpUtility.UrlEncode(str, Encoding.UTF8);
+            string q = txt;
             //input的计算方式为:input=q前10个字符 + q长度 + q后10个字符(当q长度大于20)或 input=q字符串(当q长度小于等于20);
             string input = q.Length <= 20 ? q : q.Substring(0, 10) + q.Length + q.Substring(q.Length - 10, 10);
             string salt = DateTime.Now.Millisecond.ToString();
-            string curtime = GetUTCTime(true).ToString(); //UTC秒时间戳
+            string curtime = GetUTCTime(true).ToString(); //UTC秒时间戳
             //sign = sha256(应用ID + input + salt + curtime + 应用密钥);
-            string signStr = _appKey + input + salt + curtime + _appSecret;
+            string signStr = string.Format("{0}{1}{2}{3}{4}", _appKey, input, salt, curtime, _appSecret);
             string sign = SHA256EncryptString(signStr);
             #endregion
 
             var reqData = new FormUrlEncodedContent(
                             new List<KeyValuePair<string, string>>()
                             {
+                                //new KeyValuePair<string, string>("q",System.Web.HttpUtility.UrlEncode(q, Encoding.UTF8)),//待翻译文本  必须是UTF-8编码
                                 new KeyValuePair<string, string>("q",q),             //待翻译文本  必须是UTF-8编码
                                 new KeyValuePair<string, string>("from",from),       //源语言
                                 new KeyValuePair<string, string>("to",to),           //目标语言
                                 new KeyValuePair<string, string>("appKey",_appKey),  //应用ID
                                 new KeyValuePair<string, string>("salt",salt),       //UUID
-                                new KeyValuePair<string, string>("sign",sign),       //签名 sha256(应用ID+input+salt+curtime+应用密钥)
+                                new KeyValuePair<string, string>("sign",sign),       //签名 
                                 new KeyValuePair<string, string>("signType","v3"),   //签名类型
                                 new KeyValuePair<string, string>("curtime",curtime), //TUC 时间戳
                             });

+ 3 - 3
OASystem/OASystem.Api/Program.cs

@@ -240,9 +240,9 @@ builder.Services.AddHttpClient("PublicJuHeApi", c => c.BaseAddress = new Uri("ht
 #endregion
 
 #region ÓеÀAPI ·þÎñ
-builder.Services.AddControllersWithViews();
-builder.Services.AddSingleton<IYouDaoApiService, YouDaoApiService>();
-builder.Services.AddHttpClient("PublicYouDaoApi", c => c.BaseAddress = new Uri("https://openapi.youdao.com"));
+//builder.Services.AddControllersWithViews();
+//builder.Services.AddSingleton<IYouDaoApiService, YouDaoApiService>();
+//builder.Services.AddHttpClient("PublicYouDaoApi", c => c.BaseAddress = new Uri("https://openapi.youdao.com"));
 #endregion
 
 var app = builder.Build();

+ 30 - 0
OASystem/OASystem.Domain/Dtos/SmallFun/YouDaoDto.cs

@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.SmallFun
+{
+    /// <summary>
+    /// 有道API翻译
+    /// 请求dto
+    /// </summary>
+    public class YouDaoDto:DtoBase
+    {
+        /// <summary>
+        /// 源语言 Code
+        /// </summary>
+        public string? From { get; set; }
+
+        /// <summary>
+        /// 目标语言 Code
+        /// </summary>
+        public string? To { get; set; }
+
+        /// <summary>
+        /// 待翻译的文本
+        /// </summary>
+        public string? Txt { get; set; }
+    }
+}

+ 158 - 0
OASystem/OASystem.Domain/ViewModels/SmallFun/YouDaoLanguageView.cs

@@ -0,0 +1,158 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.SmallFun
+{
+    /// <summary>
+    /// 有道api支持支持语言
+    /// </summary>
+    public class YouDaoLanguageView
+    {
+        /// <summary>
+        /// 语言名称
+        /// </summary>
+        public string? Name { get; set; }
+
+        /// <summary>
+        /// 语言code
+        /// </summary>
+        public string? Code { get; set; }
+    }
+
+
+    /// <summary>
+    /// 有道API语言
+    /// </summary>
+    public class GetYouDaoLanguages
+    {
+        /// <summary>
+        /// 获取所有语言
+        /// </summary>
+        public List<YouDaoLanguageView> Luanguages
+        {
+            get
+            {
+                List<YouDaoLanguageView> _languages = new List<YouDaoLanguageView>() {
+                   //new YouDaoLanguageView { Name = "自动识别",Code = "auto" },
+                   new YouDaoLanguageView { Name = "中文",Code = "zh-CHS" },
+                   new YouDaoLanguageView { Name = "中文繁体",Code = "zh-CHT" },
+                   new YouDaoLanguageView { Name = "英文",Code = "en" },
+                   new YouDaoLanguageView { Name = "日文",Code = "ja" },
+                   new YouDaoLanguageView { Name = "韩文",Code = "ko" },
+                   new YouDaoLanguageView { Name = "法文",Code = "fr" },
+                   new YouDaoLanguageView { Name = "西班牙文",Code = "es" },
+                   new YouDaoLanguageView { Name = "葡萄牙文",Code = "pt" },
+                   new YouDaoLanguageView { Name = "意大利文",Code = "it" },
+                   new YouDaoLanguageView { Name = "俄文",Code = "ru" },
+                   new YouDaoLanguageView { Name = "越南文",Code = "vi" },
+                   new YouDaoLanguageView { Name = "德文",Code = "de" },
+                   new YouDaoLanguageView { Name = "阿拉伯文",Code = "ar" },
+                   new YouDaoLanguageView { Name = "印尼文",Code = "id" },
+                   new YouDaoLanguageView { Name = "南非荷兰语",Code = "af" },
+                   new YouDaoLanguageView { Name = "波斯尼亚语",Code = "bs" },
+                   new YouDaoLanguageView { Name = "保加利亚语",Code = "bg" },
+                   new YouDaoLanguageView { Name = "粤语",Code = "yue" },
+                   new YouDaoLanguageView { Name = "加泰隆语",Code = "ca" },
+                   new YouDaoLanguageView { Name = "克罗地亚语",Code = "hr" },
+                   new YouDaoLanguageView { Name = "捷克语",Code = "cs" },
+                   new YouDaoLanguageView { Name = "丹麦语",Code = "da" },
+                   new YouDaoLanguageView { Name = "荷兰语",Code = "nl" },
+                   new YouDaoLanguageView { Name = "爱沙尼亚语",Code = "et" },
+                   new YouDaoLanguageView { Name = "斐济语",Code = "fj" },
+                   new YouDaoLanguageView { Name = "芬兰语",Code = "fi" },
+                   new YouDaoLanguageView { Name = "希腊语",Code = "el" },
+                   new YouDaoLanguageView { Name = "海地克里奥尔语",Code = "ht" },
+                   new YouDaoLanguageView { Name = "希伯来语",Code = "he" },
+                   new YouDaoLanguageView { Name = "印地语",Code = "hi" },
+                   new YouDaoLanguageView { Name = "白苗语",Code = "mww" },
+                   new YouDaoLanguageView { Name = "匈牙利语",Code = "hu" },
+                   new YouDaoLanguageView { Name = "斯瓦希里语",Code = "sw" },
+                   new YouDaoLanguageView { Name = "克林贡语",Code = "tlh" },
+                   new YouDaoLanguageView { Name = "拉脱维亚语",Code = "lv" },
+                   new YouDaoLanguageView { Name = "立陶宛语",Code = "lt" },
+                   new YouDaoLanguageView { Name = "马来语",Code = "ms" },
+                   new YouDaoLanguageView { Name = "马耳他语",Code = "mt" },
+                   new YouDaoLanguageView { Name = "挪威语",Code = "no" },
+                   new YouDaoLanguageView { Name = "波斯语",Code = "fa" },
+                   new YouDaoLanguageView { Name = "波兰语",Code = "pl" },
+                   new YouDaoLanguageView { Name = "克雷塔罗奥托米语",Code = "otq" },
+                   new YouDaoLanguageView { Name = "罗马尼亚语",Code = "ro" },
+                   new YouDaoLanguageView { Name = "塞尔维亚语(西里尔文)",Code = "sr-Cyrl" },
+                   new YouDaoLanguageView { Name = "塞尔维亚语(拉丁文)",Code = "sr-Latn" },
+                   new YouDaoLanguageView { Name = "斯洛伐克语",Code = "sk" },
+                   new YouDaoLanguageView { Name = "斯洛文尼亚语",Code = "sl" },
+                   new YouDaoLanguageView { Name = "瑞典语",Code = "sv" },
+                   new YouDaoLanguageView { Name = "塔希提语",Code = "ty" },
+                   new YouDaoLanguageView { Name = "泰语",Code = "th" },
+                   new YouDaoLanguageView { Name = "汤加语",Code = "to" },
+                   new YouDaoLanguageView { Name = "土耳其语",Code = "tr" },
+                   new YouDaoLanguageView { Name = "乌克兰语",Code = "uk" },
+                   new YouDaoLanguageView { Name = "乌尔都语",Code = "ur" },
+                   new YouDaoLanguageView { Name = "威尔士语",Code = "cy" },
+                   new YouDaoLanguageView { Name = "尤卡坦玛雅语",Code = "yua" },
+                   new YouDaoLanguageView { Name = "阿尔巴尼亚语",Code = "sq" },
+                   new YouDaoLanguageView { Name = "阿姆哈拉语",Code = "am" },
+                   new YouDaoLanguageView { Name = "亚美尼亚语",Code = "hy" },
+                   new YouDaoLanguageView { Name = "阿塞拜疆语",Code = "az" },
+                   new YouDaoLanguageView { Name = "孟加拉语",Code = "bn" },
+                   new YouDaoLanguageView { Name = "巴斯克语",Code = "eu" },
+                   new YouDaoLanguageView { Name = "白俄罗斯语",Code = "be" },
+                   new YouDaoLanguageView { Name = "宿务语",Code = "ceb" },
+                   new YouDaoLanguageView { Name = "科西嘉语",Code = "co" },
+                   new YouDaoLanguageView { Name = "世界语",Code = "eo" },
+                   new YouDaoLanguageView { Name = "菲律宾语",Code = "tl" },
+                   new YouDaoLanguageView { Name = "弗里西语",Code = "fy" },
+                   new YouDaoLanguageView { Name = "加利西亚语",Code = "gl" },
+                   new YouDaoLanguageView { Name = "格鲁吉亚语",Code = "ka" },
+                   new YouDaoLanguageView { Name = "古吉拉特语",Code = "gu" },
+                   new YouDaoLanguageView { Name = "豪萨语",Code = "ha" },
+                   new YouDaoLanguageView { Name = "夏威夷语",Code = "haw" },
+                   new YouDaoLanguageView { Name = "冰岛语",Code = "is" },
+                   new YouDaoLanguageView { Name = "伊博语",Code = "ig" },
+                   new YouDaoLanguageView { Name = "爱尔兰语",Code = "ga" },
+                   new YouDaoLanguageView { Name = "爪哇语",Code = "jw" },
+                   new YouDaoLanguageView { Name = "卡纳达语",Code = "kn" },
+                   new YouDaoLanguageView { Name = "哈萨克语",Code = "kk" },
+                   new YouDaoLanguageView { Name = "高棉语",Code = "km" },
+                   new YouDaoLanguageView { Name = "库尔德语",Code = "ku" },
+                   new YouDaoLanguageView { Name = "柯尔克孜语",Code = "ky" },
+                   new YouDaoLanguageView { Name = "老挝语",Code = "lo" },
+                   new YouDaoLanguageView { Name = "拉丁语",Code = "la" },
+                   new YouDaoLanguageView { Name = "卢森堡语",Code = "lb" },
+                   new YouDaoLanguageView { Name = "马其顿语",Code = "mk" },
+                   new YouDaoLanguageView { Name = "马尔加什语",Code = "mg" },
+                   new YouDaoLanguageView { Name = "马拉雅拉姆语",Code = "ml" },
+                   new YouDaoLanguageView { Name = "毛利语",Code = "mi" },
+                   new YouDaoLanguageView { Name = "马拉地语",Code = "mr" },
+                   new YouDaoLanguageView { Name = "蒙古语",Code = "mn" },
+                   new YouDaoLanguageView { Name = "缅甸语",Code = "my" },
+                   new YouDaoLanguageView { Name = "尼泊尔语",Code = "ne" },
+                   new YouDaoLanguageView { Name = "齐切瓦语",Code = "ny" },
+                   new YouDaoLanguageView { Name = "普什图语",Code = "ps" },
+                   new YouDaoLanguageView { Name = "旁遮普语",Code = "pa" },
+                   new YouDaoLanguageView { Name = "萨摩亚语",Code = "sm" },
+                   new YouDaoLanguageView { Name = "苏格兰盖尔语",Code = "gd" },
+                   new YouDaoLanguageView { Name = "塞索托语",Code = "st" },
+                   new YouDaoLanguageView { Name = "修纳语",Code = "sn" },
+                   new YouDaoLanguageView { Name = "信德语",Code = "sd" },
+                   new YouDaoLanguageView { Name = "僧伽罗语",Code = "si" },
+                   new YouDaoLanguageView { Name = "索马里语",Code = "so" },
+                   new YouDaoLanguageView { Name = "巽他语",Code = "su" },
+                   new YouDaoLanguageView { Name = "塔吉克语",Code = "tg" },
+                   new YouDaoLanguageView { Name = "泰米尔语",Code = "ta" },
+                   new YouDaoLanguageView { Name = "泰卢固语",Code = "te" },
+                   new YouDaoLanguageView { Name = "乌兹别克语",Code = "uz" },
+                   new YouDaoLanguageView { Name = "南非科萨语",Code = "xh" },
+                   new YouDaoLanguageView { Name = "意第绪语",Code = "yi" },
+                   new YouDaoLanguageView { Name = "约鲁巴语",Code = "yo" },
+                   new YouDaoLanguageView { Name = "南非祖鲁语",Code = "zu" },
+                };
+
+                return _languages;
+            }
+        }
+    }
+}