From 34491829675033e41715648b1e92f339bf2f35d1 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 25 八月 2022 17:51:10 +0800
Subject: [PATCH] Changes

---
 server.py |   68 ++++++++++++++++++++++++++-------
 1 files changed, 53 insertions(+), 15 deletions(-)

diff --git a/server.py b/server.py
index 9e09707..2978180 100644
--- a/server.py
+++ b/server.py
@@ -7,11 +7,13 @@
 import data_process
 import gpcode_manager
 import authority
+import juejin
 import l2_data_manager
+import tool
 import trade_manager
 import l2_code_operate
 
-from log import logger_l2_error, logger_l2_process, logger_device
+from log import logger_l2_error, logger_l2_process, logger_device, logger_trade_delegate
 
 
 class MyTCPServer(socketserver.TCPServer):
@@ -28,6 +30,7 @@
     reset_code_dict = {}
     set_operate_code_state_dict = {}
     l2_data_error_dict = {}
+    last_trade_delegate_data = None
 
     def setup(self):
         super().setup()  # 鍙互涓嶈皟鐢ㄧ埗绫荤殑setup()鏂规硶锛岀埗绫荤殑setup鏂规硶浠�涔堥兘娌″仛
@@ -74,11 +77,13 @@
                                 # 闂撮殧2s
                                 if key not in self.reset_code_dict or round(
                                         time.time() * 1000) - self.reset_code_dict[key] > 2000:
+
                                     self.l2CodeOperate.set_operate_code_state(client, channel, 0)
                                     self.reset_code_dict[key] = round(time.time() * 1000)
                                     if code_ is None:
                                         code_ = ""
-                                    self.l2CodeOperate.repaire_operate(int(client), int(channel), code_)
+                                    if tool.is_trade_time():
+                                        self.l2CodeOperate.repaire_operate(int(client), int(channel), code_)
                             else:
                                 key = "{}-{}".format(client, channel)
                                 if key not in self.set_operate_code_state_dict or round(
@@ -132,7 +137,8 @@
 
                     gpcode_manager.set_gp_list(code_list)
                     # 閲嶆柊璁㈤槄
-                    self.server.pipe.send("resub")
+                    self.server.pipe.send(json.dumps({"type": "resub"}))
+                    sync_target_codes_to_ths()
                 elif type == 2:
                     # 娑ㄥ仠浠g爜
                     codeList = data_process.parseGPCode(_str)
@@ -149,6 +155,10 @@
                 elif type == 5:
                     # 浜ゆ槗濮旀墭淇℃伅
                     dataList = data_process.parseList(_str)
+                    if self.last_trade_delegate_data != _str:
+                        self.last_trade_delegate_data = _str
+                        # 淇濆瓨濮旀墭淇℃伅
+                        logger_trade_delegate.info(dataList)
                     try:
                         trade_manager.process_trade_delegate_data(dataList)
                     except Exception as e:
@@ -175,6 +185,11 @@
                             {"code": 0, "data": {"client": int(client_id), "authoritys": json.loads(_authoritys)}})
                     except Exception as e:
                         return_str = data_process.toJson({"code": 1, "msg": str(e)})
+                elif type == 40:
+                    data = data_process.parse(_str)["data"]
+                    for item in data:
+                        juejin.accpt_price(item["code"], float(item["price"]))
+
                 elif type == 30:
                     data = data_process.parse(_str)["data"]
                     client_id = data["client"]
@@ -195,6 +210,7 @@
 
 def send_msg(client_id, data):
     _ip = data_process.getActiveClientIP(client_id)
+    print("ip", client_id, _ip)
     if _ip is None or len(_ip) <= 0:
         raise Exception("瀹㈡埛绔疘P涓虹┖")
     socketClient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
@@ -223,16 +239,38 @@
         time.sleep(5)
 
 
+# 鑾峰彇閲囬泦瀹㈡埛绔殑鐘舵��
+def get_client_env_state(client):
+    result = send_msg(client, {"action": "getEnvState"})
+    result = json.loads(result)
+    if result["code"] == 0:
+        return json.loads(result["data"])
+    else:
+        raise Exception(result["msg"])
+
+
+# 淇閲囬泦瀹㈡埛绔�
+def repair_client_env(client):
+    result = send_msg(client, {"action": "repairEnv"})
+    result = json.loads(result)
+    if result["code"] != 0:
+        raise Exception(result["msg"])
+
+
+# 鍚屾鐩爣鏍囩殑鍒板悓鑺遍『
+def sync_target_codes_to_ths():
+    codes = gpcode_manager.get_gp_list()
+    code_list = []
+    for code in codes:
+        code_list.append(code)
+    client = authority._get_client_ids_by_rule("client-industry")
+    result = send_msg(client[0], {"action": "syncTargetCodes", "data": code_list})
+    return result
+
+
 if __name__ == "__main__":
-    code = "000503"
-    client_id, pos = gpcode_manager.get_listen_code_pos(code)
-    if client_id is not None and pos is not None:
-        # 鑾峰彇娑ㄥ仠浠蜂笌璺屽仠浠�
-        max_price = gpcode_manager.get_limit_up_price(code)
-        min_price = gpcode_manager.get_limit_down_price(code)
-        data = {"action": "repairL2Data",
-                "data": {"index": int(pos), "code": code, "min_price": float(min_price),
-                         "max_price": float(max_price)}}
-        send_msg(client_id, data)
-        # 鏈夊��
-        pass
+    try:
+        result = get_client_env_state(3)
+        print(result)
+    except Exception as e:
+        print(str(e))

--
Gitblit v1.8.0