فهرست منبع

完善ks的数据迭代机制,构建部分API模板

Your Name 2 سال پیش
والد
کامیت
86f60a30e0
40فایلهای تغییر یافته به همراه1090 افزوده شده و 160 حذف شده
  1. 12 1
      .vscode/settings.json
  2. 1 3
      framework/dataType/include/ApolloAppConfig.hpp
  3. 40 0
      framework/dataType/include/HttpNull.hpp
  4. 159 0
      framework/dataType/include/HttpResultMsg.hpp
  5. 60 0
      framework/dataType/include/HttpToken.hpp
  6. 16 2
      framework/dataType/include/K8sServerBase.hpp
  7. 8 1
      framework/dataType/include/K8sServerPods.hpp
  8. 16 3
      framework/dataType/include/KubeSphereNodes.hpp
  9. 21 0
      framework/dataType/include/KubeSpherePods.hpp
  10. 20 2
      framework/dataType/include/KubeSphereResourcesMsg.hpp
  11. 15 2
      framework/dataType/include/KubeSphereServers.hpp
  12. 5 1
      framework/dataType/include/dataTypeList.hpp
  13. 51 4
      framework/dataType/src/KubeSphereNodes.cpp
  14. 50 4
      framework/dataType/src/KubeSpherePods.cpp
  15. 48 4
      framework/dataType/src/KubeSphereServers.cpp
  16. BIN
      lib/libins_core.so.1.0.0
  17. BIN
      lib/libins_va.so.1.0.0
  18. 0 1
      modules/CMakeLists.txt
  19. 1 1
      modules/Disposition/src/inifile.cpp
  20. 2 2
      modules/GetCenter/src/GetCenter.cpp
  21. 6 3
      modules/ProcessingIt/include/ParserJson.hpp
  22. 7 3
      modules/Sectorpower/src/Sectorpower.cpp
  23. 1 1
      source/CMakeLists.txt
  24. 2 2
      source/UserApp/src/UserApp.cpp
  25. 37 0
      source/config/config.json
  26. 37 0
      source/controllers/include/api_v1_AI.hpp
  27. 53 0
      source/controllers/include/api_v1_K8s.hpp
  28. 39 0
      source/controllers/include/api_v1_User.hpp
  29. 0 15
      source/controllers/include/test1.hpp
  30. 39 0
      source/controllers/src/api_v1_AI.cpp
  31. 235 0
      source/controllers/src/api_v1_K8s.cpp
  32. 42 0
      source/controllers/src/api_v1_User.cpp
  33. 0 10
      source/controllers/src/test1.cpp
  34. 28 0
      source/filters/include/LoginFilter.hpp
  35. 0 21
      source/filters/include/test2.hpp
  36. 34 0
      source/filters/src/LoginFilter.cpp
  37. 0 26
      source/filters/src/test2.cpp
  38. 0 24
      source/plugins/include/test3.hpp
  39. 0 19
      source/plugins/src/test3.cpp
  40. 5 5
      tooks/create.sh

+ 12 - 1
.vscode/settings.json

@@ -63,6 +63,17 @@
         "string_view": "cpp",
         "queue": "cpp",
         "future": "cpp",
-        "optional": "cpp"
+        "optional": "cpp",
+        "any": "cpp",
+        "shared_mutex": "cpp",
+        "bit": "cpp",
+        "map": "cpp",
+        "set": "cpp",
+        "iterator": "cpp",
+        "memory_resource": "cpp",
+        "random": "cpp",
+        "variant": "cpp",
+        "codecvt": "cpp",
+        "filesystem": "cpp"
     }
 }

+ 1 - 3
framework/dataType/include/ApolloAppConfig.hpp

@@ -4,7 +4,7 @@
  * @Autor: lishengyin
  * @Date: 2022-04-07 15:23:27
  * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-28 15:23:27
+ * @LastEditTime: 2022-06-16 14:31:25
  */
 #ifndef __APOLLOAPPCONFIG_HPP_
 #define __APOLLOAPPCONFIG_HPP_
@@ -55,6 +55,4 @@ public:
 };
 
 
-
-
 #endif

+ 40 - 0
framework/dataType/include/HttpNull.hpp

@@ -0,0 +1,40 @@
+/*
+ * @Description: 
+ * @Version: 1.0
+ * @Autor: lishengyin
+ * @Date: 2021-11-09 16:31:01
+ * @LastEditors: lishengyin
+ * @LastEditTime: 2022-06-16 14:57:38
+ */
+#pragma once
+
+#include <iostream>
+using namespace std;
+#include <rapidjson/document.h>
+#include <rapidjson/rapidjson.h>
+#include <rapidjson/stringbuffer.h>
+#include <rapidjson/writer.h>
+
+class HttpNull
+{
+private:
+    
+public:
+    HttpNull() {}
+    ~HttpNull() {}
+
+    /**
+     * @description: json转换为Object
+     * @param {Value&} object
+     * @return {*}
+     */    
+    bool jsonToObject(const rapidjson::Value& object){
+        
+        return true;
+    }
+
+    void ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer){
+        writer.StartObject();
+        writer.EndObject();
+    }
+};

+ 159 - 0
framework/dataType/include/HttpResultMsg.hpp

@@ -0,0 +1,159 @@
+/*
+ * @Description: 
+ * @Version: 1.0
+ * @Autor: lishengyin
+ * @Date: 2021-11-03 15:16:14
+ * @LastEditors: lishengyin
+ * @LastEditTime: 2022-06-16 14:57:09
+ */
+#pragma once
+
+#include <iostream>
+#include <rapidjson/document.h>
+#include <rapidjson/rapidjson.h>
+#include <rapidjson/stringbuffer.h>
+#include <rapidjson/writer.h>
+#include <vector>
+
+#include "Util/logger.h"
+#include "Util/NoticeCenter.h"
+#include "Poller/EventPoller.h"
+#include "Util/SqlPool.h"
+#include "Network/TcpClient.h"
+#include "Poller/Timer.h"
+
+using namespace std;
+
+template <class T1, class T2>
+class HttpResultMsg
+{
+public:
+    std::string code;
+    std::string msg;
+    
+    vector<T1> datas;
+    vector<T2> extendDatas;
+
+    bool notOk;
+    bool ok;
+
+public:
+    HttpResultMsg(){}
+    ~HttpResultMsg(){}
+
+    /**
+     * @description: json转码为对象
+     * @param {const std::string& json} json数据
+     * @return {*}
+     */    
+    bool jsonToObject(const std::string& json)
+    {
+        rapidjson::Document doc;
+        if (doc.Parse<rapidjson::kParseCommentsFlag>(json.c_str()).HasParseError()) {
+            return false;
+        }
+        // get members
+        const auto end = doc.MemberEnd();
+        if (end == doc.FindMember("code") || !doc["code"].IsString()) {
+            return false;
+        } else {
+            code = doc["code"].GetString();
+        }
+        if (end == doc.FindMember("notOk") || !doc["notOk"].IsBool()) {
+            return false;
+        } else {
+            notOk = doc["notOk"].GetBool();
+        }
+        if (end == doc.FindMember("ok") || !doc["ok"].IsBool()) {
+            return false;
+        } else {
+            ok = doc["ok"].GetBool();
+        }
+        
+        if (end != doc.FindMember("data")) {
+            if(doc["data"].IsObject()){
+                T1 data;
+                const rapidjson::Value& object = doc["data"];
+                if(!(data.jsonToObject(object))){
+                    return false;
+                }
+                datas.push_back(data);
+            }else if(doc["data"].IsArray()){
+                const rapidjson::Value& objs = doc["data"];
+                for (size_t i = 0; i < objs.Size(); i++) {
+                    const rapidjson::Value& obj = objs[i];
+                    T1 data;
+                    if(!(data.jsonToObject(obj))){
+                        return false;
+                    }
+                    datas.push_back(data);
+                }
+            }
+        }
+        
+        if (end != doc.FindMember("extendData")) {
+            if(doc["extendData"].IsObject()){
+                T2 extendData;
+                const rapidjson::Value& object = doc["extendData"];
+                if(!(extendData.jsonToObject(object))){
+                    return false;
+                }
+                extendDatas.push_back(extendData);
+            }else if(doc["extendData"].IsArray()){
+                const rapidjson::Value& objs = doc["extendData"];
+                for (size_t i = 0; i < objs.Size(); ++i) {
+                    const rapidjson::Value& obj = objs[i];
+                    T2 extendData;
+                    if(!(extendData.jsonToObject(obj))){
+                        return false;
+                    }
+                    extendDatas.push_back(extendData);
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * @description: objectToJson
+     * @param {string&} str
+     * @return {*}
+     */    
+    void objectToJson(std::string& str)
+    {
+        rapidjson::StringBuffer strBuf;
+        rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);
+        writer.StartObject();
+
+        writer.Key("code");
+        writer.String(code.c_str());
+
+        writer.Key("msg");
+        writer.String(msg.c_str());
+
+        writer.Key("datas");
+
+        writer.StartArray();
+        for(auto iter = datas.begin(); iter != datas.end(); iter++){
+            iter->ObjectToJson(writer);
+        }
+        writer.EndArray();
+
+        writer.Key("extendDatas");
+        writer.StartArray();
+        for(auto iter = extendDatas.begin(); iter != extendDatas.end(); iter++){
+            iter->ObjectToJson(writer);
+        }
+        writer.EndArray();
+    
+        writer.Key("notOk");
+        writer.Bool(notOk);
+
+        writer.Key("ok");
+        writer.Bool(ok);
+
+        writer.EndObject();
+        str = strBuf.GetString();
+    }
+
+};

+ 60 - 0
framework/dataType/include/HttpToken.hpp

@@ -0,0 +1,60 @@
+/*
+ * @Description: 
+ * @Version: 1.0
+ * @Autor: lishengyin
+ * @Date: 2021-11-04 09:39:46
+ * @LastEditors: lishengyin
+ * @LastEditTime: 2022-06-16 14:57:44
+ */
+
+#include <iostream>
+using namespace std;
+
+#include <rapidjson/document.h>
+#include <rapidjson/rapidjson.h>
+#include <rapidjson/stringbuffer.h>
+#include <rapidjson/writer.h>
+
+class HttpToken
+{
+public:
+    std::string authToken = "";
+    std::string expiration = "";
+    std::string refreshToken = "";
+    
+public:
+    HttpToken() {}
+    ~HttpToken() {}
+    
+    /**
+     * @description: json反序列为对象
+     * @param {*}
+     * @return {*}
+     */    
+    bool jsonToObject(const rapidjson::Value& object){
+        const auto end = object.MemberEnd();
+        if(end == object.FindMember("authToken") || !object["authToken"].IsString()){
+            return false;
+        }else{
+            authToken = object["authToken"].GetString();
+        }
+        if(end == object.FindMember("expiration") || !object["expiration"].IsString()){
+            return false;
+        }else{
+            expiration = object["expiration"].GetString();
+        }
+        if(end == object.FindMember("refreshToken") || !object["refreshToken"].IsString()){
+            return false;
+        }else{
+            refreshToken = object["refreshToken"].GetString();
+        }
+        return true;
+    }
+
+    void ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer){
+        writer.StartObject();
+        writer.EndObject();
+    }
+};
+
+

+ 16 - 2
framework/dataType/include/K8sServerBase.hpp

@@ -3,8 +3,8 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-06 10:03:42
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-28 16:29:57
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 21:53:23
  */
 #ifndef __K8sServerBase_HPP_
 #define __K8sServerBase_HPP_
@@ -38,6 +38,7 @@ class MsgBase
 public:
     int USERID;
     int ID;
+    std::string DATATIME;
 public:
     using Ptr = std::shared_ptr<MsgBase>;
 
@@ -63,6 +64,12 @@ public:
      * @return {*}
      */    
     virtual void ObjectToJson(std::string& str) {}
+
+    /**
+     * @description: objectToJson
+     * @return {*}
+     */    
+    virtual void ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer){}
     
     /**
      * @description: jsonToObject
@@ -86,6 +93,13 @@ public:
     virtual bool ObjectToSql(std::string& sql){return true;}
 
     /**
+     * @description: objectToSql后处理
+     * @param {string&} sql
+     * @return {*}
+     */    
+    virtual bool ObjectToSqlBack(std::string & sql) {return true;} 
+
+    /**
      * @description: 获取时间
      * @param {*}
      * @return {*}

+ 8 - 1
framework/dataType/include/K8sServerPods.hpp

@@ -4,7 +4,7 @@
  * @Autor: lishengyin
  * @Date: 2022-04-06 10:40:01
  * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-28 15:22:12
+ * @LastEditTime: 2022-06-16 14:46:07
  */
 #ifndef __K8SSERVERPODS_HPP_
 #define __K8SSERVERPODS_HPP_
@@ -21,6 +21,13 @@ public:
     K8sServerPods(){}
     ~K8sServerPods(){}
 
+
+    /**
+     * @description: objectTojson
+     * @return {*}
+     */    
+    void ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer) override;
+    
     /**
      * @description: objectToJson
      * @param {string&} str

+ 16 - 3
framework/dataType/include/KubeSphereNodes.hpp

@@ -3,8 +3,8 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-26 11:17:58
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-28 15:22:20
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 21:57:05
  */
 
 #ifndef __KUBESPHERENODES_HPP_
@@ -12,7 +12,6 @@
 
 #include "K8sServerBase.hpp"
 
-
 class KubeSphereNodes:public MsgBase
 {
 public:
@@ -29,6 +28,13 @@ public:
     KubeSphereNodes(){}
     ~KubeSphereNodes(){}
 
+
+    /**
+     * @description: objectTojson
+     * @return {*}
+     */    
+    void ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer) override;
+    
     /**
      * @description: objectToJson
      * @param {string&} str
@@ -56,6 +62,13 @@ public:
      * @return {*}
      */    
     virtual bool ObjectToSql(std::string& sql) override;
+
+    /**
+     * @description: ObjectToSql后处理
+     * @param {string&} sql
+     * @return {*}
+     */ 
+    virtual bool ObjectToSqlBack(std::string & sql) override;
 };
 
 

+ 21 - 0
framework/dataType/include/KubeSpherePods.hpp

@@ -1,3 +1,11 @@
+/*
+ * @Author: Your Name lishengyin@sz-sunwin.com
+ * @Date: 2022-04-26 15:33:34
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 21:57:40
+ * @FilePath: /ins/framework/dataType/include/KubeSpherePods.hpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
 
 #ifndef __KUBESPHEREPODS_HPP_
 #define __KUBESPHEREPODS_HPP_
@@ -28,6 +36,12 @@ public:
     void ObjectToJson(std::string& str) override;
 
     /**
+     * @description: objectTojson
+     * @return {*}
+     */    
+    void ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer) override;
+
+    /**
      * @description: jsonToObject
      * @param {string&} json
      * @return {*}
@@ -47,6 +61,13 @@ public:
      * @return {*}
      */    
     virtual bool ObjectToSql(std::string& sql) override;
+
+    /**
+     * @description: ObjectToSql后处理
+     * @param {string&} sql
+     * @return {*}
+     */ 
+    virtual bool ObjectToSqlBack(std::string & sql) override;
 };
 
 

+ 20 - 2
framework/dataType/include/KubeSphereResourcesMsg.hpp

@@ -3,8 +3,8 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-26 11:50:14
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-28 15:22:28
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:05:53
  */
 #ifndef _KUBESPHERERESOURCESMSG_HPP_
 #define _KUBESPHERERESOURCESMSG_HPP_
@@ -78,12 +78,30 @@ public:
         if(this->items.empty()) return false;
         for(auto iter = this->items.begin(); iter != this->items.end(); iter++){
             iter->USERID = this->USERID;
+            iter->DATATIME = this->DATATIME;
             std::string isql;
             if(!iter->ObjectToSql(isql)) return false;
             sql = isql + ";\r\n";
         }
         return true;
     }
+
+     /**
+     * @description: objectToSql后处理
+     * @param {string&} sql
+     * @return {*}
+     */    
+    virtual bool ObjectToSqlBack(std::string & sql) {
+        if(this->items.empty()) return false;
+        for(auto iter = this->items.begin(); iter != this->items.end(); iter++){
+            iter->USERID = this->USERID;
+            iter->DATATIME = this->DATATIME;
+            std::string isql;
+            if(!iter->ObjectToSqlBack(isql)) return false;
+            sql = isql + ";\r\n";
+        }
+        return true;
+    } 
 };
 
 

+ 15 - 2
framework/dataType/include/KubeSphereServers.hpp

@@ -3,8 +3,8 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-26 16:41:31
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-28 15:22:31
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 21:59:17
  */
 #ifndef __KUBESPHERESERVERS_HPP_
 #define __KUBESPHERESERVERS_HPP_
@@ -29,6 +29,12 @@ public:
 
 
     /**
+     * @description: ObjectToJson
+     * @return {*}
+     */    
+    void ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer) override;
+
+    /**
      * @description: objectToJson
      * @param {string&} str
      * @return {*}
@@ -55,6 +61,13 @@ public:
      * @return {*}
      */    
     virtual bool ObjectToSql(std::string& sql) override;
+
+    /**
+     * @description: ObjectToSql后处理
+     * @param {string&} sql
+     * @return {*}
+     */ 
+    virtual bool ObjectToSqlBack(std::string & sql) override;
 };
 
 

+ 5 - 1
framework/dataType/include/dataTypeList.hpp

@@ -4,7 +4,7 @@
  * @Autor: lishengyin
  * @Date: 2022-04-07 15:29:26
  * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-27 15:07:30
+ * @LastEditTime: 2022-06-16 14:15:04
  */
 #ifndef __DATATYPELIST_HPP_
 #define __DATATYPELIST_HPP_
@@ -21,5 +21,9 @@
 #include "KubeSphereResourcesMsg.hpp"
 #include "KubeSpherePods.hpp"
 #include "KubeSphereServers.hpp"
+#include "HttpResultMsg.hpp"
+#include "HttpNull.hpp"
+#include "HttpToken.hpp"
+
 
 #endif

+ 51 - 4
framework/dataType/src/KubeSphereNodes.cpp

@@ -3,11 +3,45 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-26 11:19:06
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-28 16:08:04
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:11:41
  */
 #include "KubeSphereNodes.hpp"
 
+/**
+ * @description: ObjectToJson
+ * @return {*}
+ */
+void KubeSphereNodes::ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer){
+    writer.StartObject();
+
+    writer.Key("UID");
+    writer.String(UID.c_str());
+
+    writer.Key("NAME");
+    writer.String(NAME.c_str());
+
+    writer.Key("CREATIONTIMESTAMP");
+    writer.String(CREATIONTIMESTAMP.c_str());
+
+    writer.Key("LABELS");
+    writer.String(LABELS.c_str());
+
+    writer.Key("CAPACITY");
+    writer.String(CAPACITY.c_str());
+
+    writer.Key("ALLOCATABLE");
+    writer.String(ALLOCATABLE.c_str());
+
+    writer.Key("CONDITIONS");
+    writer.String(CONDITIONS.c_str());
+
+    writer.Key("ADDRESSES");
+    writer.String(ADDRESSES.c_str());
+
+    writer.EndObject();
+}
+
 
 /**
  * @description: objectToJson
@@ -70,8 +104,21 @@ bool KubeSphereNodes::ObjectToSql(std::string& sql){
         ADDRESSES=VALUES(ADDRESSES),ISDELETE=VALUES(ISDELETE), UPDATED_TIME=VALUES(UPDATED_TIME)");
     
     sqlStream << UID << USERID << NAME << CREATIONTIMESTAMP << LABELS << CAPACITY << ALLOCATABLE << CONDITIONS \
-        << ADDRESSES << getDataTime();
+        << ADDRESSES << DATATIME;
         
     sql = (std::string)sqlStream;
     return true;
-}
+}
+
+/**
+ * @description: ObjectToSql后处理
+ * @param {string&} sql
+ * @return {*}
+ */ 
+bool KubeSphereNodes::ObjectToSqlBack(std::string & sql){
+    SqlStream sqlStream("UPDATE InsServerDB.`InsKsNodes` SET ISDELETE = 1 WHERE UPDATED_TIME != '?'");
+    sqlStream << DATATIME;
+    sql = (std::string)sqlStream;
+    return true;
+}
+

+ 50 - 4
framework/dataType/src/KubeSpherePods.cpp

@@ -3,12 +3,45 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-26 15:35:49
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-29 16:29:56
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:11:35
  */
 #include "KubeSpherePods.hpp"
 
+/**
+ * @description: objectToJson
+ * @return {*}
+ */
+void KubeSpherePods::ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer){
+
+    writer.StartObject();
+
+    writer.Key("NAME");
+    writer.String(NAME.c_str());
+
+    writer.Key("NAMESPACE");
+    writer.String(NAMESPACE.c_str());
+
+    writer.Key("UID");
+    writer.String(UID.c_str());
+
+    writer.Key("LABELS");
+    writer.String(LABELS.c_str());
+
+    writer.Key("CONTAINERS");
+    writer.String(CONTAINERS.c_str());
+
+    writer.Key("PHASE");
+    writer.String(PHASE.c_str());
+
+    writer.Key("CONDITIONS");
+    writer.String(CONDITIONS.c_str());
 
+    writer.Key("CONDITIONS");
+    writer.String(CONDITIONS.c_str());
+
+    writer.EndObject();
+}
 
 /**
  * @description: objectToJson
@@ -25,6 +58,7 @@ void KubeSpherePods::ObjectToJson(std::string& str){
  * @return {*}
  */    
 bool KubeSpherePods::jsonToObject(const std::string& json){
+
     return true;
 }
 
@@ -73,7 +107,19 @@ bool KubeSpherePods::ObjectToSql(std::string& sql){
         LABELS=VALUES(LABELS) ,CONTAINERS=VALUES(CONTAINERS), PHASE=VALUES(PHASE),\
         CONDITIONS=VALUES(CONDITIONS), ISDELETE=VALUES(ISDELETE), UPDATED_TIME=VALUES(UPDATED_TIME)");
 
-    sqlStream << UID  << USERID << NAME << NAMESPACE << LABELS << CONTAINERS << PHASE << CONDITIONS << getDataTime();
+    sqlStream << UID  << USERID << NAME << NAMESPACE << LABELS << CONTAINERS << PHASE << CONDITIONS << DATATIME;
     sql = (std::string)sqlStream;
     return true;
-}
+}
+
+/**
+ * @description: ObjectToSql后处理
+ * @param {string&} sql
+ * @return {*}
+ */ 
+bool KubeSpherePods::ObjectToSqlBack(std::string & sql){
+    SqlStream sqlStream("UPDATE InsServerDB.`InsKsPods` SET ISDELETE = 1 WHERE UPDATED_TIME != '?'");
+    sqlStream << DATATIME;
+    sql = (std::string)sqlStream;
+    return true;
+}

+ 48 - 4
framework/dataType/src/KubeSphereServers.cpp

@@ -3,12 +3,44 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-26 16:42:14
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-29 11:13:48
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:14:08
  */
 #include "KubeSphereServers.hpp"
 
 /**
+ * @description: ObjectToJson
+ * @return {*}
+ */
+void KubeSphereServers::ObjectToJson(rapidjson::Writer<rapidjson::StringBuffer>& writer){
+    
+    writer.StartObject();
+
+    writer.Key("UID");
+    writer.String(UID.c_str());
+
+    writer.Key("NAME");
+    writer.String(NAME.c_str());
+
+    writer.Key("NAMESPACE");
+    writer.String(NAMESPACE.c_str());
+
+    writer.Key("LABELS");
+    writer.String(LABELS.c_str());
+
+    writer.Key("PORTS");
+    writer.String(PORTS.c_str());
+
+    writer.Key("CLUSTERIP");
+    writer.String(CLUSTERIP.c_str());
+
+    writer.Key("TYPE");
+    writer.String(TYPE.c_str());
+
+    writer.EndObject();
+}
+
+/**
  * @description: objectToJson
  * @param {string&} str
  * @return {*}
@@ -63,8 +95,20 @@ bool KubeSphereServers::ObjectToSql(std::string& sql) {
         on duplicate key update UID=VALUES(UID), USERID=VALUES(USERID),NAME=VALUES(NAME), NAMESPACE=VALUES(NAMESPACE),\
         LABELS=VALUES(LABELS) ,PORTS=VALUES(PORTS), CLUSTERIP=VALUES(CLUSTERIP),\
         TYPE=VALUES(TYPE), ISDELETE=VALUES(ISDELETE), UPDATED_TIME=VALUES(UPDATED_TIME)");
-        
-    sqlStream << UID  << USERID << NAME << NAMESPACE << LABELS << PORTS << CLUSTERIP << TYPE << getDataTime();
+    
+    sqlStream << UID  << USERID << NAME << NAMESPACE << LABELS << PORTS << CLUSTERIP << TYPE << DATATIME;
     sql = (std::string)sqlStream;
     return true;
 }
+
+/**
+ * @description: ObjectToSql后处理
+ * @param {string&} sql
+ * @return {*}
+ */ 
+bool KubeSphereServers::ObjectToSqlBack(std::string & sql){
+    SqlStream sqlStream("UPDATE InsServerDB.`InsKsServers` SET ISDELETE = 1 WHERE UPDATED_TIME != '?'");
+    sqlStream << DATATIME;
+    sql = (std::string)sqlStream;
+    return true;
+}

BIN
lib/libins_core.so.1.0.0


BIN
lib/libins_va.so.1.0.0


+ 0 - 1
modules/CMakeLists.txt

@@ -116,7 +116,6 @@ include_directories(${INS_ROOT_DIR}/framework/dataType/include)
 include_directories(${PROJECT_SOURCE_DIR}/3rdparty/)
 include_directories(${PROJECT_SOURCE_DIR}/3rdparty/rapidjson/include/)
 
-
 foreach(module ${module_list})
   include_directories(${CMAKE_CURRENT_SOURCE_DIR}/${module}/include)
   file(GLOB_RECURSE module_src ${CMAKE_CURRENT_SOURCE_DIR}/${module}/*.cpp)

+ 1 - 1
modules/Disposition/src/inifile.cpp

@@ -33,7 +33,7 @@ bool IniFile::parse(const string &content, string &key, string &value, char c/*=
         trim(value);
         return true;
     }
-
+    
     return false;
 }
 

+ 2 - 2
modules/GetCenter/src/GetCenter.cpp

@@ -3,8 +3,8 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-02 13:58:50
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-06-15 15:24:18
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 21:46:49
  */
 #include "GetCenter.hpp"
 #include "Disposition.hpp"

+ 6 - 3
modules/ProcessingIt/include/ParserJson.hpp

@@ -3,8 +3,8 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-12 15:40:03
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-04-28 10:28:45
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:04:04
  */
 #ifndef __PARSERJSON_HPP_
 #define __PARSERJSON_HPP_
@@ -48,7 +48,7 @@ namespace ins
          * @return {*}
          */        
         bool ParseKsTemplate(std::shared_ptr<InsPacket> packet){
-
+            
             return false;
         }
 
@@ -87,10 +87,13 @@ namespace ins
             if(msg == nullptr) return false;
             if(msg->jsonToObject(packet->getData()->data)){
                 InsUniversalData::Ptr toData = std::make_shared<InsUniversalData>();
+                msg->DATATIME = packet->getCreateTime();
                 msg->USERID = Disposition::getPtr()->getUserId();
                 msg->ID = std::atoi(packet->getData()->attr1.c_str());
+                msg->DATATIME = packet->getCreateTime();
                 if(packet->getBournType() == InsPacketTypes::INS_MYSQL_PACKET){
                     if(!msg->ObjectToSql(toData->data)) return false;
+                    msg->ObjectToSqlBack(toData->attr2);
                     toData->format = InsDataFormat::INS_DATA_FORMAT_SQL;
                 }
                 packet->setToData(toData);

+ 7 - 3
modules/Sectorpower/src/Sectorpower.cpp

@@ -3,8 +3,8 @@
  * @Version: 1.0
  * @Autor: lishengyin
  * @Date: 2022-04-02 14:19:21
- * @LastEditors: lishengyin
- * @LastEditTime: 2022-06-15 17:00:44
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:07:00
  */
 #include "Sectorpower.hpp"
 #include "Disposition.hpp"
@@ -126,7 +126,11 @@ namespace ins
                 // 解析数据
                 if(ProcessingIt::getPtr()->ParserData(pack)){
                     if(pack->getBournType() == InsPacketTypes::INS_MYSQL_PACKET){
-                        if(pack->getToData()->format == InsDataFormat::INS_DATA_FORMAT_SQL) pack->setSqlResult(GetCenter::getPtr()->ExecuteSql(pack->getToData()->data));
+                        if(pack->getToData()->format == InsDataFormat::INS_DATA_FORMAT_SQL) {
+                            pack->setSqlResult(GetCenter::getPtr()->ExecuteSql(pack->getToData()->data));
+                            // 后处理
+                            GetCenter::getPtr()->ExecuteSql(pack->getToData()->attr2);
+                        }
                         else WarnL << "The parsed data is not in line with the target requirements" << endl;
                     }
                     if(pack->IsInsPackTask()){

+ 1 - 1
source/CMakeLists.txt

@@ -118,7 +118,7 @@ aux_source_directory(${INS_ROOT_DIR}/source/src DIR_SRCS)
 add_compile_options(-Wall -std=c++17 -O2 -g)
 link_directories(${PROJECT_SOURCE_DIR}/lib)
 
-list(APPEND ALL_LINKER_LIBS mk_api ZLToolKit dl ${3RDPARTY_LIBS}  ${OpenCV_LIBS} pthread hv ins_core ins_va)
+list(APPEND ALL_LINKER_LIBS mk_api ZLToolKit dl ${3RDPARTY_LIBS}  ${OpenCV_LIBS} pthread hv ins_core ins_va mariadbclient)
 # 指定生成的目标
 add_executable(main ${DIR_SRCS} ${srcs})
 # 链接

+ 2 - 2
source/UserApp/src/UserApp.cpp

@@ -4,7 +4,7 @@
  * @Autor: lishengyin
  * @Date: 2022-04-06 08:46:28
  * @LastEditors: lishengyin
- * @LastEditTime: 2022-06-15 17:56:06
+ * @LastEditTime: 2022-06-16 13:48:19
  */
 #include "UserApp.hpp"
 #include <drogon/drogon.h>
@@ -83,8 +83,8 @@ namespace ins{
      * @return {*}
      */    
     int8_t userApp::StartTask(){
+        // drogon::app().loadConfigFile("../source/config/config.json");
         drogon::app().addListener("0.0.0.0",8036);
-
         drogon::app().run();
         return OK;
     }

+ 37 - 0
source/config/config.json

@@ -0,0 +1,37 @@
+{
+    "db_clients": [
+    {
+        //name: Name of the client,'default' by default
+        //"name":"",
+        //rdbms: Server type, postgresql,mysql or sqlite3, "postgresql" by default
+        "rdbms": "mysql",
+        //filename: Sqlite3 db file name
+        //"filename":"",
+        //host: Server address,localhost by default
+        "host": "127.0.0.1",
+        //port: Server port, 5432 by default
+        "port": 13306,
+        //dbname: Database name
+        "dbname": "InsServerDB",
+        //user: 'postgres' by default
+        "user": "root",
+        //passwd: '' by default
+        "passwd": "",
+        //is_fast: false by default, if it is true, the client is faster but user can't call
+        //any synchronous interface of it.
+        "is_fast": false,
+        //client_encoding: The character set used by the client. it is empty string by default which 
+        //means use the default character set.
+        //"client_encoding": "",
+        //number_of_connections: 1 by default, if the 'is_fast' is true, the number is the number of  
+        //connections per IO thread, otherwise it is the total number of all connections.  
+        "number_of_connections": 1,
+        //timeout: -1.0 by default, in seconds, the timeout for executing a SQL query.
+        //zero or negative value means no timeout.
+        "timeout": -1.0,
+        //"auto_batch": this feature is only available for the PostgreSQL driver(version >= 14.0), see
+        // the wiki for more details.
+        "auto_batch": false
+    }
+    ]
+}

+ 37 - 0
source/controllers/include/api_v1_AI.hpp

@@ -0,0 +1,37 @@
+/*
+ * @Author: Your Name lishengyin@sz-sunwin.com
+ * @Date: 2022-06-16 22:16:06
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:40:30
+ * @FilePath: /ins/source/controllers/include/api_v1_AI.hpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+#pragma once
+
+#include <drogon/HttpController.h>
+
+using namespace drogon;
+
+namespace api
+{
+namespace v1
+{
+class AI : public drogon::HttpController<AI>
+{
+  public:
+    METHOD_LIST_BEGIN
+      // use METHOD_ADD to add your custom processing function here;
+      METHOD_ADD(AI::getAIList, "/AIList?token={1}",Get, "LoginFilter");
+
+      METHOD_ADD(AI::getAI, "/AI?token={1}&uuid={2}", Get, "LoginFilter");
+      METHOD_ADD(AI::postAI, "/AI?token={1}&url={2}", Post, "LoginFilter");
+      
+
+    METHOD_LIST_END
+    // your declaration of processing function maybe like this:
+    void getAIList(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token);
+    void getAI(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token, std::string uuid);
+    void postAI(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token, std::string url);
+};
+}
+}

+ 53 - 0
source/controllers/include/api_v1_K8s.hpp

@@ -0,0 +1,53 @@
+#pragma once
+
+#include <drogon/HttpController.h>
+#include "Util/logger.h"
+#include "Util/NoticeCenter.h"
+#include "Poller/EventPoller.h"
+#include "Util/SqlPool.h"
+
+using namespace toolkit;
+using namespace drogon;
+
+namespace api
+{
+namespace v1
+{
+class K8s : public drogon::HttpController<K8s>
+{
+  public:
+    METHOD_LIST_BEGIN
+      METHOD_ADD(K8s::getNodes, "/nodes?token={1}",Get, "LoginFilter");
+      
+      METHOD_ADD(K8s::getServers, "/Servers?token={1}", Get, "LoginFilter");
+      METHOD_ADD(K8s::postServers, "/Servers?token={1}", Post, "LoginFilter");
+      METHOD_ADD(K8s::putServers, "/Servers?token={1}", Put, "LoginFilter");
+      METHOD_ADD(K8s::patchServers, "/Servers?token={1}", Patch, "LoginFilter");
+      METHOD_ADD(K8s::deleteServers, "/Servers?token={1}", Delete, "LoginFilter");
+
+      METHOD_ADD(K8s::getPods, "/Pods?token={1}", Get, "LoginFilter");
+      METHOD_ADD(K8s::postPods, "/Pods?token={1}", Post, "LoginFilter");
+      METHOD_ADD(K8s::putPods, "/Pods?token={1}", Put, "LoginFilter");
+      METHOD_ADD(K8s::patchPods, "/Pods?token={1}", Patch, "LoginFilter");
+      METHOD_ADD(K8s::deletePods, "/Pods?token={1}",Delete, "LoginFilter");
+
+    METHOD_LIST_END
+    // your declaration of processing function maybe like this:
+    void getNodes(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token);
+    
+    // Servers
+    void getServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token) const;
+    void postServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token);
+    void putServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token);
+    void patchServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token);
+    void deleteServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token);
+
+    // Pods  
+    void getPods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token);
+    void postPods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token);
+    void putPods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token);
+    void patchPods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token);
+    void deletePods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token);
+};
+}
+}

+ 39 - 0
source/controllers/include/api_v1_User.hpp

@@ -0,0 +1,39 @@
+/*
+ * @Author: Your Name lishengyin@sz-sunwin.com
+ * @Date: 2022-06-15 22:08:07
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:40:11
+ * @FilePath: /ins/source/controllers/include/api_v1_User.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+#pragma once
+
+#include <drogon/HttpController.h>
+
+using namespace drogon;
+
+namespace api
+{
+namespace v1
+{
+class User : public drogon::HttpController<User>
+{
+  public:
+    METHOD_LIST_BEGIN
+    // use METHOD_ADD to add your custom processing function here;
+      METHOD_ADD(User::login,"/token?userId={1}&passwd={2}",Post);
+      METHOD_ADD(User::getInfo,"/{1}/info?token={2}",Get, "LoginFilter");
+    METHOD_LIST_END
+    // your declaration of processing function maybe like this:
+    void login(const HttpRequestPtr &req,
+                std::function<void (const HttpResponsePtr &)> &&callback,
+                std::string &&userId,
+                const std::string &password);
+                
+    void getInfo(const HttpRequestPtr &req,
+                  std::function<void (const HttpResponsePtr &)> &&callback,
+                  std::string userId,
+                  const std::string &token) const;
+};
+}
+}

+ 0 - 15
source/controllers/include/test1.hpp

@@ -1,15 +0,0 @@
-#pragma once
-
-#include <drogon/HttpSimpleController.h>
-
-using namespace drogon;
-
-class test1 : public drogon::HttpSimpleController<test1>
-{
-  public:
-    virtual void asyncHandleHttpRequest(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback) override;
-    PATH_LIST_BEGIN
-    // list path definitions here;
-    PATH_ADD("/path", Get, "test2");
-    PATH_LIST_END
-};

+ 39 - 0
source/controllers/src/api_v1_AI.cpp

@@ -0,0 +1,39 @@
+/*
+ * @Author: Your Name lishengyin@sz-sunwin.com
+ * @Date: 2022-06-16 22:16:06
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-16 22:39:17
+ * @FilePath: /ins/source/controllers/src/api_v1_AI.cpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+#include "api_v1_AI.hpp"
+
+using namespace api::v1;
+
+// Add definition of your processing function here
+
+void AI::getAIList(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("getAIList");
+    callback(resp);
+}
+
+void AI::getAI(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token, std::string uuid){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("getAIList");
+    callback(resp);
+}
+
+void AI::postAI(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token, std::string url){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("PostAI");
+    callback(resp);
+}
+
+
+
+
+

+ 235 - 0
source/controllers/src/api_v1_K8s.cpp

@@ -0,0 +1,235 @@
+#include "api_v1_K8s.hpp"
+#include "dataTypeList.hpp"
+#include "Disposition.hpp"
+
+using namespace api::v1;
+
+/**
+ * @description: 获取Nodes
+ * @param {HttpRequestPtr&} req
+ * @param {HttpResponsePtr} &
+ * @return {*}
+ */
+void K8s::getNodes(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, 
+    std::string token){
+
+    SqlWriter SqlSelect("SELECT UID,NAME,CREATIONTIMESTAMP,LABELS,CAPACITY,ALLOCATABLE,CONDITIONS,ADDRESSES \
+         FROM InsServerDB.`InsKsNodes` WHERE USERID = '?' and ISDELETE = 0");
+
+    vector<vector<std::string>> result;
+
+    SqlSelect << ins::Disposition::getPtr()->getUserId() << result;
+    HttpResultMsg<KubeSphereNodes, HttpNull> request;
+    for(auto& line: result){
+        KubeSphereNodes data;
+        data.UID = line[0];
+        data.NAME = line[1];
+        data.CREATIONTIMESTAMP = line[2];
+        data.LABELS = line[3];
+        data.CAPACITY = line[4];
+        data.ALLOCATABLE = line[5];
+        data.CONDITIONS = line[6];
+        data.ADDRESSES = line[7];
+        request.datas.push_back(data);
+    }
+    std::string json;
+    request.code = "200";
+    request.msg = "成功";
+    request.ok = true;
+
+    request.objectToJson(json);
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody(json);
+    callback(resp);
+}
+
+/**
+ * @description: 获取Serviers
+ * @param {HttpRequestPtr&} req
+ * @param {HttpResponsePtr} &
+ * @return {*}
+ */
+void K8s::getServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, 
+     std::string token) const{
+
+    SqlWriter SqlSelect("SELECT UID,NAME,NAMESPACE,LABELS,PORTS,CLUSTERIP,TYPE \
+         FROM InsServerDB.`InsKsServers` WHERE USERID = '?' and ISDELETE = 0");
+
+    vector<vector<std::string>> result;
+
+    SqlSelect << ins::Disposition::getPtr()->getUserId() << result;
+    HttpResultMsg<KubeSphereServers, HttpNull> request;
+    for(auto& line: result){
+        KubeSphereServers data;
+        data.UID = line[0];
+        data.NAME = line[1];
+        data.NAMESPACE = line[2];
+        data.LABELS = line[3];
+        data.PORTS = line[4];
+        data.CLUSTERIP = line[5];
+        data.TYPE = line[6];
+        request.datas.push_back(data);
+    }
+    std::string json;
+    request.code = "200";
+    request.msg = "成功";
+    request.ok = true;
+
+    request.objectToJson(json);
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody(json);
+    callback(resp);
+}
+
+/**
+ * @description: 
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::postServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("postServers");
+    callback(resp);
+}
+
+/**
+ * @description: 更新Servers
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::putServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("putServers");
+    callback(resp);
+}
+
+/**
+ * @description: 更新Servers
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::patchServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("patchServers");
+    callback(resp);
+}
+
+/**
+ * @description: 删除Servers
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::deleteServers(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback,  std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("deleteServers");
+    callback(resp);
+}
+
+/**
+ * @description: 获取Pods
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::getPods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token){
+
+    SqlWriter SqlSelect("SELECT UID,NAME,NAMESPACE,LABELS,CONTAINERS,PHASE,CONDITIONS \
+         FROM InsServerDB.`InsKsPods` WHERE USERID = '?' and ISDELETE = 0");
+
+    vector<vector<std::string>> result;
+
+    SqlSelect << ins::Disposition::getPtr()->getUserId() << result;
+    HttpResultMsg<KubeSpherePods, HttpNull> request;
+    for(auto& line: result){
+        KubeSpherePods data;
+        data.UID = line[0];
+        data.NAME = line[1];
+        data.NAMESPACE = line[2];
+        data.LABELS = line[3];
+        data.CONTAINERS = line[4];
+        data.PHASE = line[5];
+        data.CONDITIONS = line[6];
+        request.datas.push_back(data);
+    }
+    std::string json;
+    request.code = "200";
+    request.msg = "成功";
+    request.ok = true;
+
+    request.objectToJson(json);
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody(json);
+    callback(resp);
+}
+
+/**
+ * @description: postPods
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::postPods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("postPods");
+    callback(resp);
+}
+
+/**
+ * @description: 
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::putPods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("putPods");
+    callback(resp);
+}
+
+/**
+ * @description: 
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::patchPods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("patchPods");
+    callback(resp);
+}
+
+/**
+ * @description: 
+ * @param {HttpRequestPtr&} req
+ * @param {function<void (HttpResponsePtr &)>} &
+ * @param {string} token
+ * @return {*}
+ */
+void K8s::deletePods(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback, std::string token){
+    HttpResponsePtr resp;
+    resp = HttpResponse::newHttpResponse();
+    resp->setBody("deletePods");
+    callback(resp);
+}

+ 42 - 0
source/controllers/src/api_v1_User.cpp

@@ -0,0 +1,42 @@
+/*
+ * @Author: Your Name lishengyin@sz-sunwin.com
+ * @Date: 2022-06-15 22:08:07
+ * @LastEditors: lishengyin
+ * @LastEditTime: 2022-06-16 08:54:25
+ * @FilePath: /ins/source/controllers/src/api_v1_User.cpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+#include "api_v1_User.hpp"
+
+using namespace api::v1;
+
+// Add definition of your processing function here
+void User::login(const HttpRequestPtr &req,std::function<void (const HttpResponsePtr &)> &&callback,
+    std::string &&userId, const std::string &password){
+    Json::Value ret;
+    if(userId == "1" && password == "123456"){
+        ret["result"]="ok";
+        ret["token"]=drogon::utils::getUuid();
+        auto resp=HttpResponse::newHttpJsonResponse(ret);
+        callback(resp);
+        return;
+    }
+    ret["result"]="ok";
+    ret["msg"] = "Account password is incorrect";
+    auto resp=HttpResponse::newHttpJsonResponse(ret);
+    callback(resp);
+}
+
+void User::getInfo(const HttpRequestPtr &req, std::function<void (const HttpResponsePtr &)> &&callback, 
+    std::string userId, const std::string &token)const{
+    
+    //验证token有效性等
+    //读数据库或缓存获取用户信息
+    Json::Value ret;
+    ret["result"]="ok";
+    ret["user_name"]="Jack";
+    ret["user_id"]=userId;
+    ret["gender"]=1;
+    auto resp=HttpResponse::newHttpJsonResponse(ret);
+    callback(resp);
+}

+ 0 - 10
source/controllers/src/test1.cpp

@@ -1,10 +0,0 @@
-#include "test1.hpp"
-
-void test1::asyncHandleHttpRequest(const HttpRequestPtr& req, std::function<void (const HttpResponsePtr &)> &&callback)
-{
-    // write your application logic here
-    HttpResponsePtr resp;
-    resp = HttpResponse::newHttpResponse();
-    resp->setBody("1111");
-    callback(resp);
-}

+ 28 - 0
source/filters/include/LoginFilter.hpp

@@ -0,0 +1,28 @@
+/*
+ * @Author: Your Name lishengyin@sz-sunwin.com
+ * @Date: 2022-06-15 22:40:47
+ * @LastEditors: Your Name lishengyin@sz-sunwin.com
+ * @LastEditTime: 2022-06-15 22:42:04
+ * @FilePath: /ins/source/filters/include/LoginFilter.hpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+/**
+ *
+ *  LoginFilter.h
+ *
+ */
+
+#pragma once
+
+#include <drogon/HttpFilter.h>
+using namespace drogon;
+
+class LoginFilter : public HttpFilter<LoginFilter>
+{
+  public:
+    LoginFilter() {}
+    virtual void doFilter(const HttpRequestPtr &req,
+                          FilterCallback &&fcb,
+                          FilterChainCallback &&fccb) override;
+};
+

+ 0 - 21
source/filters/include/test2.hpp

@@ -1,21 +0,0 @@
-/**
- *
- *  test2.h
- *
- */
-
-#pragma once
-
-#include <drogon/HttpFilter.h>
-using namespace drogon;
-
-
-class test2 : public HttpFilter<test2>
-{
-  public:
-    test2() {}
-    virtual void doFilter(const HttpRequestPtr &req,
-                          FilterCallback &&fcb,
-                          FilterChainCallback &&fccb) override;
-};
-

+ 34 - 0
source/filters/src/LoginFilter.cpp

@@ -0,0 +1,34 @@
+/*
+ * @Author: Your Name lishengyin@sz-sunwin.com
+ * @Date: 2022-06-15 22:40:47
+ * @LastEditors: lishengyin
+ * @LastEditTime: 2022-06-16 08:51:42
+ * @FilePath: /ins/source/filters/src/LoginFilter.cc
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+/**
+ *
+ *  LoginFilter.cc
+ *
+ */
+
+#include "LoginFilter.hpp"
+
+using namespace drogon;
+
+void LoginFilter::doFilter(const HttpRequestPtr &req,
+                         FilterCallback &&fcb,
+                         FilterChainCallback &&fccb)
+{
+    //Edit your logic here
+    if (1)
+    {
+        //Passed
+        fccb();
+        return;
+    }
+    //Check failed
+    auto res = drogon::HttpResponse::newHttpResponse();
+    res->setStatusCode(k500InternalServerError);
+    fcb(res);
+}

+ 0 - 26
source/filters/src/test2.cpp

@@ -1,26 +0,0 @@
-/**
- *
- *  test2.cc
- *
- */
-
-#include "test2.hpp"
-
-using namespace drogon;
-
-void test2::doFilter(const HttpRequestPtr &req,
-                         FilterCallback &&fcb,
-                         FilterChainCallback &&fccb)
-{
-    //Edit your logic here
-    if (req->getParameter("admin") == "12")
-    {
-        //Passed
-        fccb();
-        return;
-    }
-    //Check failed
-    auto res = drogon::HttpResponse::newHttpResponse();
-    res->setStatusCode(k500InternalServerError);
-    fcb(res);
-}

+ 0 - 24
source/plugins/include/test3.hpp

@@ -1,24 +0,0 @@
-/**
- *
- *  test3.h
- *
- */
-
-#pragma once
-
-#include <drogon/plugins/Plugin.h>
-
-
-class test3 : public drogon::Plugin<test3>
-{
-  public:
-    test3() {}
-    /// This method must be called by drogon to initialize and start the plugin.
-    /// It must be implemented by the user.
-    virtual void initAndStart(const Json::Value &config) override;
-
-    /// This method must be called by drogon to shutdown the plugin.
-    /// It must be implemented by the user.
-    virtual void shutdown() override;
-};
-

+ 0 - 19
source/plugins/src/test3.cpp

@@ -1,19 +0,0 @@
-/**
- *
- *  test3.cc
- *
- */
-
-#include "test3.hpp"
-
-using namespace drogon;
-
-void test3::initAndStart(const Json::Value &config)
-{
-    /// Initialize and start the plugin
-}
-
-void test3::shutdown() 
-{
-    /// Shutdown the plugin
-}

+ 5 - 5
tooks/create.sh

@@ -4,16 +4,16 @@ read -p "请输入需要文件的类型(1.controller, 2.filters,3.plugins):" TYP
 case $TYPE in
     1) echo "Create controller"
        read -p "请输入controller的名字:" NAME
-       drogon_ctl create controller $NAME
-       mv $NAME.h ../source/controllers/include/$NAME.hpp
-       mv $NAME.cc ../source/controllers/src/$NAME.cpp
+       drogon_ctl create controller -h api::v1::$NAME
+       mv *$NAME*.h ../source/controllers/include/
+       mv *$NAME*.cc ../source/controllers/src/
        echo "Create $NAME complete!"
     ;;
     2) echo "Create filters"
        read -p "请输入filters的名字:" NAME
        dg_ctl create filter $NAME
-       mv $NAME.h ../source/filters/include/$NAME.hpp
-       mv $NAME.cc ../source/filters/src/$NAME.cpp
+       mv *.h ../source/filters/include/
+       mv *.cc ../source/filters/src/
        echo "Create $NAME complete!"
     ;;
     3) echo "Create plugin"