From 00c7f72bc3ce5be41a169c89560c736a87e68de8 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 06 六月 2024 17:31:54 +0800
Subject: [PATCH] 增加需求

---
 middle_l1_data_server.py |   53 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/middle_l1_data_server.py b/middle_l1_data_server.py
index 6af0133..c35c46f 100644
--- a/middle_l1_data_server.py
+++ b/middle_l1_data_server.py
@@ -2,12 +2,13 @@
 import hashlib
 import json
 import logging
+import os
 import queue
 import socket
 import socketserver
 import time
 
-
+import constant
 from log_module import log
 from utils import socket_util
 
@@ -93,7 +94,14 @@
                     try:
                         if data_json["type"] == 'l1_data':
                             datas = data_json["data"]
-                            L1DataManager.add_datas(datas)
+                            L1DataManager().add_datas(datas)
+                            break
+                        elif data_json["type"] == 'get_l1_target_codes':
+                            # 鑾峰彇鐩爣浠g爜
+                            codes = L1DataManager().get_target_codes()
+                            sk.sendall(socket_util.load_header(json.dumps(
+                                {"code": 0, "data": list(codes)}).encode(
+                                encoding='utf-8')))
                             break
                     except Exception as e:
                         log.logger_tuoguan_request_debug.exception(e)
@@ -117,8 +125,28 @@
 # L1鏁版嵁绠$悊
 class L1DataManager:
     __l1_datas_dict = {}
+    __target_codes = set()
+    __instance = None
+
+    def __new__(cls, *args, **kwargs):
+        if not cls.__instance:
+            cls.__instance = super(L1DataManager, cls).__new__(cls, *args, **kwargs)
+            cls.__load_datas()
+        return cls.__instance
 
     @classmethod
+    def __load_datas(cls):
+        try:
+            with open(f"{constant.LOG_DIR}/l1_codes.txt", 'r', encoding='utf-8') as f:
+                lines = f.readlines()
+                for line in lines:
+                    if line:
+                        line = line.strip()
+                        if line:
+                            cls.__target_codes.add(line)
+        except:
+            pass
+
     def add_datas(cls, datas):
         for data in datas:
             """
@@ -126,9 +154,22 @@
             """
             cls.__l1_datas_dict[data[0]] = data
 
-    @classmethod
-    def get_current_l1_data(cls):
-        return [cls.__l1_datas_dict[x] for x in cls.__l1_datas_dict]
+    def get_current_l1_data(self):
+        return [self.__l1_datas_dict[x] for x in self.__l1_datas_dict]
+
+    def save_target_codes(self, codes):
+        # 淇濆瓨鐩爣浠g爜
+        self.__target_codes = codes
+        # 灏嗕唬鐮佷繚瀛樺埌鏂囦欢
+        path = f"{constant.LOG_DIR}/l1_codes.txt"
+        if not os.path.exists(constant.LOG_DIR):
+            os.mkdir(constant.LOG_DIR)
+        with open(path, 'w', encoding='utf-8') as f:
+            for code in codes:
+                f.write(f"{code}\n")
+
+    def get_target_codes(self):
+        return  self.__target_codes
 
 
 def run(port):
@@ -140,4 +181,4 @@
 
 
 if __name__ == "__main__":
-    print(builtins.type("") == str)
+    print( L1DataManager().get_target_codes())

--
Gitblit v1.8.0