From e7f8c6013d777dd5ba10b8d548d2d3db6158d37a Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 08 九月 2022 17:04:27 +0800
Subject: [PATCH] '完善'

---
 l2_code_operate.py |   65 ++++++++++++++++++++++++++++----
 1 files changed, 57 insertions(+), 8 deletions(-)

diff --git a/l2_code_operate.py b/l2_code_operate.py
index f5e59b3..6e647c4 100644
--- a/l2_code_operate.py
+++ b/l2_code_operate.py
@@ -5,6 +5,7 @@
 import queue
 import threading
 
+import data_process
 import gpcode_manager
 import l2_data_manager
 
@@ -105,20 +106,30 @@
                         L2CodeOperate.setGPCode(client_id, pos, code)
                     # 淇l2鐨勬暟鎹敊璇�
                     elif type == 3:
+                        if tool.is_trade_time():
+                            client = data["client"]
+                            data = data["data"]
+                            result = server.send_msg(client, data)
+                            print("L2鏁告摎淇京绲愭灉锛�", result)
+                        else:
+                            print("闈炰氦鏄撴椂闂达紝鏀惧純淇L2")
+                    elif type == 4:
+                        # 娓呯悊鐩戝惉浣嶇疆
                         client = data["client"]
-                        data=data["data"]
-                        result = server.send_msg(client, data)
-                        print("L2鏁告摎淇京绲愭灉锛�",result)
+                        pos = data["pos"]
+                        L2CodeOperate.setGPCode(client, pos, "")
+
+
                 else:
                     time.sleep(1)
             except Exception as e:
                 logging.exception(e)
-                print("鍙戦�佹搷浣滃紓甯�:",str(e))
+                print("鍙戦�佹搷浣滃紓甯�:", str(e))
 
-    def add_operate(self, type, code):
+    def add_operate(self, type, code, client=None, pos=None):
         redis = self.redis_manager_.getRedis()
         print("add_operate", type, code)
-        redis.rpush("code_operate_queue", json.dumps({"type": type, "code": code}))
+        redis.rpush("code_operate_queue", json.dumps({"type": type, "code": code, "client": client, "pos": pos}))
 
     def repaire_operate(self, client, pos, code):
         # 濡傛灉鏈潵璇ヤ綅缃唬鐮佷负绌哄垯涓嶇敤淇
@@ -141,8 +152,8 @@
             data = {"action": "repairL2Data",
                     "data": {"index": int(pos), "code": code, "min_price": float(min_price),
                              "max_price": float(max_price)}}
-        redis = self.redis_manager_.getRedis()
-        redis.rpush("code_operate_queue", json.dumps({"type": 3,"code":code, "client": client_id, "data": data}))
+            redis = self.redis_manager_.getRedis()
+            redis.rpush("code_operate_queue", json.dumps({"type": 3, "code": code, "client": client_id, "data": data}))
 
     # 绉婚櫎鐩戞帶
     def remove_l2_listen(self, code):
@@ -160,3 +171,41 @@
         if value is not None:
             return int(value)
         return value
+
+
+# 鑾峰彇瀹㈡埛绔鍦ㄧ洃鍚殑浠g爜
+def get_listen_codes_from_client(client_id):
+    data = {"action": "getL2Codes"}
+    result = server.send_msg(client_id, data)
+    result = json.loads(result)
+    if result["code"] == 0:
+        data = json.loads(result["data"])
+        codes = data["data"]
+        result_list = {}
+        for d in codes:
+            result_list[d["index"]]=d["code"]
+        return result_list
+    else:
+        raise Exception("鑾峰彇瀹㈡埛绔洃鍚唬鐮佸嚭閿�")
+
+
+# 鐭瀹㈡埛绔唬鐮�
+def correct_client_codes():
+    client_ids = data_process.getValidL2Clients()
+    for client_id in client_ids:
+        try:
+            index_codes = get_listen_codes_from_client(client_id)
+            for index in range(0, 8):
+                code = gpcode_manager.get_listen_code_by_pos(client_id, index)
+                if code is not None and len(code) > 0 and index_codes.get(index) != code:
+                    # 淇浠g爜
+                    L2CodeOperate().repaire_operate(client_id, index, code)
+                elif code is None or len(code) == 0 and index_codes.get(index) is not None:
+                    # 鍒犻櫎鍓嶇浠g爜浣�
+                    L2CodeOperate().add_operate(4, "", client_id, index)
+        except Exception as e:
+            logger_code_operate.error("client:{} msg:{}".format(client_id, str(e)))
+
+
+if __name__ == "__main__":
+    correct_client_codes()

--
Gitblit v1.8.0