浏览代码

apilist通用接口

lcl 7 月之前
父节点
当前提交
e4a0ec9186
共有 1 个文件被更改,包括 179 次插入18 次删除
  1. 179 18
      Controllers/Base/ApiPubController.cs

+ 179 - 18
Controllers/Base/ApiPubController.cs

@@ -15,6 +15,7 @@ using Model.Base;
 using Microsoft.AspNetCore.Authorization;
 using Model.Customer;
 using Base;
+using LitJson;
 
 namespace Controllers
 {
@@ -25,9 +26,6 @@ namespace Controllers
     // [ApiExplorerSettings(GroupName = "ApiInfo")]
     public class ApiPubController : BaseController
     {
-        /// <summary>
-        /// api分组接口
-        /// </summary>
         private readonly IApiInfoService _ApiInfoService;
         private readonly IApiGroupService _ApiGroupService;
 
@@ -39,28 +37,170 @@ namespace Controllers
 
         }
 
-
-        [AllowAnonymous]
+        #region 通用-接收接口数据通知
         [HttpPost]
-        [Route("/noauth/apiinfo/groupsforadmin")]
-        public IActionResult GroupsForAdmin(string value)
+        [Route("/noauth/api/notice")]
+        public string notice(string value)
         {
-            var response = _ApiGroupService.GroupsForAdmin(value);
-            return SUCCESS(response);
+            JsonData data = JsonMapper.ToObject(value);
+            Dictionary<string, object> obj = new Dictionary<string, object>();
+            for (int i = 0; i < data.Count; i++)
+            {
+                string id = data[i]["id"].ToString();
+                string groupName = data[i]["group_name"].ToString();
+                string groupRemark = data[i]["group_remark"].ToString();
+                int groupKind = int.Parse(data[i]["group_kind"].ToString());
+                int groupId = 0;
+                ApiGroup group = _ApiGroupService.GetFirst(m => m.groupName == groupName && m.groupKind == groupKind);
+                if(group == null)
+                {
+                    groupId = _ApiGroupService.Add(new ApiGroup()
+                    {
+                        createDate = DateTime.Now,
+                        groupName = groupName,
+                        groupRemark = groupRemark,
+                        groupKind = groupKind,
+                        groupVersion = "1",
+                    });
+                }
+                else
+                {
+                    groupId = group.id;
+                    group.updateDate = DateTime.Now;
+                    group.groupRemark = groupRemark;
+                    int groupVersion = int.Parse(group.groupVersion) + 1;
+                    group.groupVersion = groupVersion.ToString();
+                    _ApiGroupService.Update(group, true);
+                }
+                JsonData apiList = data[i]["child"];
+                for (int j = 0; j < apiList.Count; j++)
+                {
+                    string ApiRouter = apiList[j]["api_router"].ToString();
+                    string ApiPort = apiList[j]["api_port"].ToString();
+                    string ApiHost = apiList[j]["api_host"].ToString();
+                    string ApiKey = apiList[j]["api_key"].ToString();
+                    string ApiName = apiList[j]["api_name"].ToString();
+                    string ApiMethod = apiList[j]["api_method"].ToString();
+
+                    ApiInfo apiInfo = _ApiInfoService.GetFirst(m => m.groupId == groupId && m.apiKey == ApiKey);
+                    if(apiInfo == null)
+                    {
+                        _ApiInfoService.Add(new ApiInfo()
+                        {
+                            createDate = DateTime.Now,
+                            apiKey = ApiKey,
+                            apiRouter = ApiRouter,
+                            apiPort = int.Parse(Function.CheckInt(ApiPort)),
+                            apiHost = ApiHost,
+                            apiName = ApiName,
+                            apiMethod = ApiMethod,
+                            groupId = groupId,
+                        });
+                    }
+                    else
+                    {
+                        apiInfo.apiRouter = ApiRouter;
+                        apiInfo.apiPort = int.Parse(Function.CheckInt(ApiPort));
+                        apiInfo.apiHost = ApiHost;
+                        apiInfo.apiName = ApiName;
+                        apiInfo.apiMethod = ApiMethod;
+                        _ApiInfoService.Update(apiInfo, true);
+                    }
+                }
+            }
+            return "success";
         }
+        #endregion
 
-        [AllowAnonymous]
-        [HttpPost]
-        [Route("/noauth/apiinfo/listforadmin")]
-        public IActionResult ListForAdmin(string value)
+
+        #region 通用-获取接口列表
+        [Route("/noauth/api/list")]
+        public JsonResult list(string value)
         {
-            string jsonString = Dbconn.DesDecrypt(value, "&L^kg4N9");
-            Dictionary<string, object> data = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonString);
+            if(string.IsNullOrEmpty(value))
+            {
+                return Json(new AppResultJson() { Status = "-1", Info = "" });
+            }
+            value = DesDecrypt(value);
+            JsonData data = JsonMapper.ToObject(value);
             Dictionary<string, int> groupobj = new Dictionary<string, int>();
             Dictionary<string, object> obj = new Dictionary<string, object>();
-            if(jsonString.Contains("\"groups\""))
+            if(value.Contains("\"groups\""))
             {
-                List<Dictionary<string, object>> groupJson = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(data["groups"].ToString());
+                JsonData groupJson = data["groups"];
+                for(int i = 0; i < groupJson.Count; i ++)
+                {
+                    string name = groupJson[i]["name"].ToString();
+                    int version = int.Parse(groupJson[i]["version"].ToString());
+                    groupobj.Add(name, version);
+                }
+            }
+            var groups = _ApiGroupService.GetList(m => m.groupKind == 0);
+            foreach(var group in groups)
+            {
+                int curVersion = int.Parse(Function.CheckInt(group.groupVersion));
+                if(groupobj.Any(m => m.Key == group.groupName && m.Value < curVersion))
+                {
+                    Dictionary<string, object> groupData = new Dictionary<string, object>();
+                    var apis = _ApiInfoService.GetList(m => m.groupId == group.id).ToList();
+                    foreach(var api in apis)
+                    {
+                        Dictionary<string, object> apiData = new Dictionary<string, object>();
+                        string url = api.apiHost;
+                        if(api.apiPort != 80 && api.apiPort != 443)
+                        {
+                            url += ":" + api.apiPort;
+                        }
+                        url += api.apiRouter;
+                        apiData.Add("name", api.apiName);
+                        apiData.Add("url", url);
+                        apiData.Add("method", api.apiMethod);
+                        groupData.Add(api.apiKey, apiData);
+                    }
+                    groupData.Add("groupVersion", group.groupVersion);
+                    groupData.Add("groupInfo", group.groupRemark);
+                    obj.Add(group.groupName, groupData);
+                }
+            }
+            return Json(new AppResultJson() { Status = "1", Info = "", Data = obj });
+        }
+        #endregion
+
+        #region 通用-获取接口列表
+        [Route("/noauth/api/groups")]
+        public JsonResult groups(string value)
+        {
+            if(string.IsNullOrEmpty(value))
+            {
+                return Json(new AppResultJson() { Status = "-1", Info = "" });
+            }
+            value = DesDecrypt(value);
+            JsonData data = JsonMapper.ToObject(value);
+            string key = data["key"].ToString();
+            if(key != "tel#2024")
+            {
+                return Json(new AppResultJson() { Status = "-1", Info = "无权限" });
+            }
+            var groups = _ApiGroupService.GetList(m => m.groupKind == 0).Select(m => m.groupName).ToList();            
+            return Json(new AppResultJson() { Status = "1", Info = "", Data = groups });
+        }
+        #endregion
+
+        #region 通用-获取接口列表(后台)
+        [Route("/noauth/api/listforadmin")]
+        public JsonResult listForAdmin(string value)
+        {
+            if(string.IsNullOrEmpty(value))
+            {
+                return Json(new AppResultJson() { Status = "-1", Info = "" });
+            }
+            value = DesDecrypt(value);
+            JsonData data = JsonMapper.ToObject(value);
+            Dictionary<string, int> groupobj = new Dictionary<string, int>();
+            Dictionary<string, object> obj = new Dictionary<string, object>();
+            if(value.Contains("\"groups\""))
+            {
+                JsonData groupJson = data["groups"];
                 for(int i = 0; i < groupJson.Count; i ++)
                 {
                     string name = groupJson[i]["name"].ToString();
@@ -95,8 +235,29 @@ namespace Controllers
                     obj.Add(group.groupName, groupData);
                 }
             }
-            return SUCCESS(obj);
+            return Json(new AppResultJson() { Status = "1", Info = "", Data = obj });
+        }
+        #endregion
+
+        #region 通用-获取接口列表(后台)
+        [Route("/noauth/api/groupsforadmin")]
+        public JsonResult groupsForAdmin(string value)
+        {
+            if(string.IsNullOrEmpty(value))
+            {
+                return Json(new AppResultJson() { Status = "-1", Info = "" });
+            }
+            value = DesDecrypt(value);
+            JsonData data = JsonMapper.ToObject(value);
+            string key = data["key"].ToString();
+            if(key != "tel#2024")
+            {
+                return Json(new AppResultJson() { Status = "-1", Info = "无权限" });
+            }
+            var groups = _ApiGroupService.GetList(m => m.groupKind == 1).Select(m => m.groupName).ToList();            
+            return Json(new AppResultJson() { Status = "1", Info = "", Data = groups });
         }
+        #endregion
 
         #region 获取OSS参数
         [Route("/noauth/api/ossparam")]