From 07af91d1cb4e317065b8dc1db09f337f2014e8c7 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 29 二月 2024 17:34:22 +0800
Subject: [PATCH] 添加外部接口

---
 middle_api_server.py                 |   36 ++++++++++++-----
 utils/huaxin_trade_record_manager.py |   33 +++++++++++++---
 2 files changed, 52 insertions(+), 17 deletions(-)

diff --git a/middle_api_server.py b/middle_api_server.py
index 6eb1064..a83f3ce 100644
--- a/middle_api_server.py
+++ b/middle_api_server.py
@@ -90,15 +90,14 @@
                                 if not volume:
                                     raise Exception("璇蜂笂浼爒olume")
 
-                                if round(float(price), 2) <= 0:
-                                    prices = HistoryKDatasUtils.get_now_price([code])
-                                    if not prices:
-                                        raise Exception("鐜颁环鑾峰彇澶辫触")
-                                    price = prices[0][1]
+                                # if round(float(price), 2) <= 0:
+                                #     prices = HistoryKDatasUtils.get_now_price([code])
+                                #     if not prices:
+                                #         raise Exception("鐜颁环鑾峰彇澶辫触")
+                                #     price = prices[0][1]
                                 # 涓嬪崟
                                 result = hosting_api_util.trade_order(hosting_api_util.TRADE_DIRECTION_BUY, code,
-                                                                      volume,
-                                                                      round(float(price), 2))
+                                                                      volume, price)
                                 if result:
                                     resultJSON = result
                                     print("涓嬪崟缁撴灉锛�", resultJSON)
@@ -353,14 +352,29 @@
                             sk.sendall(socket_util.load_header(return_str.encode(encoding='utf-8')))
                             while True:
                                 try:
-                                    sk.recv(1024)
+                                    buf = sk.recv(1024)
+                                    print(f"鏀跺埌鏁版嵁锛歿buf.decode(encoding='utf-8')}")
                                     time.sleep(1)
                                 except:
                                     print("鏁版嵁鏂紑")
                                     break
-
-
-
+                        elif type_ == "get_latest_cancel_orders":
+                            # 鑾峰彇鏈�杩戠殑鎾ゅ崟
+                            results = huaxin_trade_record_manager.DelegateRecordManager.list_latest_cancel_records(10)
+                            fresults = []
+                            for result in results:
+                                temp = {}
+                                for key in result:
+                                    if key in ["securityID", "securityName", "direction", "orderSysID", "acceptTime",
+                                               "cancelTime", "limitPrice", "volume"]:
+                                        temp[key] = result[key]
+                                # 杩囨护铏氭嫙鍗曚笌鍗栧崟
+                                if int(temp["volume"] <= 100):
+                                    continue
+                                if int(temp["direction"] != 0):
+                                    continue
+                                fresults.append(temp)
+                                return_str = json.dumps(json.dumps({"code": 0, "data": fresults}))
                     finally:
                         log.request_info("middle_api_server", f"璇锋眰缁撴潫锛歿type_}")
                 break
diff --git a/utils/huaxin_trade_record_manager.py b/utils/huaxin_trade_record_manager.py
index 53c8069..8400653 100644
--- a/utils/huaxin_trade_record_manager.py
+++ b/utils/huaxin_trade_record_manager.py
@@ -15,6 +15,10 @@
 
 
 class DelegateRecordManager:
+    key_list = ["id", "orderLocalID", "securityID", "securityName", "direction", "orderSysID", "insertTime",
+                "insertDate", "acceptTime", "cancelTime", "limitPrice", "turnover", "volume", "volumeTraded",
+                "orderStatus", "orderSubmitStatus", "statusMsg", "createTime", "updateTime", "accountID"]
+
     @classmethod
     def add(cls, datas):
         mysqldb = mysql_data.Mysqldb()
@@ -82,9 +86,6 @@
             results = mysqldb.select_all(
                 f"select * from hx_trade_delegate_record r where {' and '.join(where_list)} order by createTime")
             # 杞琩ict
-            key_list = ["id", "orderLocalID", "securityID", "securityName", "direction", "orderSysID", "insertTime",
-                        "insertDate", "acceptTime", "cancelTime", "limitPrice", "turnover", "volume", "volumeTraded",
-                        "orderStatus", "orderSubmitStatus", "statusMsg", "createTime", "updateTime", "accountID"]
             fresults = []
             max_update_time = None
             if results:
@@ -96,13 +97,33 @@
                     temp = {}
                     for i in range(len(r)):
                         if type(r[i]) == datetime.datetime:
-                            temp[key_list[i]] = r[i].strftime("%Y-%m-%d %H:%M:%S")
+                            temp[cls.key_list[i]] = r[i].strftime("%Y-%m-%d %H:%M:%S")
                         else:
-                            temp[key_list[i]] = r[i]
+                            temp[cls.key_list[i]] = r[i]
                     fresults.append(temp)
             return fresults, max_update_time.strftime("%Y-%m-%d %H:%M:%S") if max_update_time else None
         finally:
             pass
+
+    # 鑾峰彇鏈�杩戠殑鎾ゅ崟璁板綍
+    @classmethod
+    def list_latest_cancel_records(cls, count, day=tool.get_now_date_str("%Y%m%d")):
+        mysqldb = mysql_data.Mysqldb()
+        where_list = [f"r.insertDate='{day}'", "r.cancelTime!=''"]
+        results = mysqldb.select_many(
+            f"select * from hx_trade_delegate_record r where {' and '.join(where_list)} order by r.cancelTime desc",
+            count)
+        fresults = []
+        if results:
+            for r in results:
+                temp = {}
+                for i in range(len(r)):
+                    if type(r[i]) == datetime.datetime:
+                        temp[cls.key_list[i]] = r[i].strftime("%Y-%m-%d %H:%M:%S")
+                    else:
+                        temp[cls.key_list[i]] = r[i]
+                fresults.append(temp)
+        return fresults
 
 
 # 鎸佷粨璁板綍
@@ -316,5 +337,5 @@
 
 
 if __name__ == "__main__":
-    results = DelegateRecordManager.list_by_day('20230704', '1970-01-01')
+    results = DelegateRecordManager.list_latest_cancel_records(10)
     print(results)

--
Gitblit v1.8.0