From 09f84c4ecae2a71e07f6dd64e6066563599a62b6 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 17 六月 2025 17:59:40 +0800
Subject: [PATCH] ‘功能完善

---
 third_data/kpl_block_manager.py |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/third_data/kpl_block_manager.py b/third_data/kpl_block_manager.py
new file mode 100644
index 0000000..8d48f9a
--- /dev/null
+++ b/third_data/kpl_block_manager.py
@@ -0,0 +1,55 @@
+"""
+寮�鐩樺暒鏉垮潡绠$悊
+"""
+import json
+
+import constant
+
+from db.mysql_data_delegate import Mysqldb
+from third_data import kpl_api, kpl_util
+from utils import tool
+
+
+class KPLCodeJXBlocksManager:
+    """
+    寮�鐩樺暒绮鹃�夋澘鍧楃鐞�
+    """
+
+    def __init__(self, day, target_codes):
+        self.day = day
+        self.mysql_db = Mysqldb()
+        self.target_codes = target_codes
+
+    def __download_blocks(self, code):
+        datas = kpl_api.getCodeJingXuanBlocks(code)
+        blocks = json.dumps([kpl_util.filter_block(x[1]) for x in datas], ensure_ascii=False)
+        block_ids = json.dumps([x[0] for x in datas], ensure_ascii=False)
+        block_details = json.dumps(datas, ensure_ascii=False)
+        id = f"{self.day}_{code}"
+        self.mysql_db.execute(
+            f"insert into kpl_code_blocks(id,code, day,jx_blocks, jx_block_ids, jx_blocks_detail, create_time) values('{id}','{code}','{self.day}','{blocks}', '{block_ids}','{block_details}', now())")
+
+    def start_download_blocks(self):
+        codes = self.mysql_db.select_all(f"select code from kpl_code_blocks where day='{self.day}'")
+        codes = set([x[0] for x in codes])
+        need_update_codes = set(self.target_codes) - codes
+        for code in need_update_codes:
+            self.__download_blocks(code)
+
+    def get_all_code_blocks(self):
+        """
+        鑾峰彇鎵�鏈変唬鐮佺殑鏉垮潡
+        @return:
+        """
+        sql = f"select code, jx_blocks from kpl_code_blocks where day = '{self.day}'"
+        results = self.mysql_db.select_all(sql)
+        return {x[0]: set(json.loads(x[1])) - constant.KPL_INVALID_BLOCKS for x in results}
+
+    def get_all_code_blocks_count(self):
+        """
+        鑾峰彇鎵�鏈変唬鐮佺殑鏉垮潡鐨勬暟閲�
+        @return:
+        """
+        sql = f"select count(*) from kpl_code_blocks where day = '{self.day}'"
+        results = self.mysql_db.select_one(sql)
+        return int(results[0])

--
Gitblit v1.8.0