From 7093bbad9379116c432e4da278a40cc86303c76f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 02 十一月 2023 11:30:24 +0800
Subject: [PATCH] bug修复

---
 data_server.py |  190 ++---------------------------------------------
 1 files changed, 10 insertions(+), 180 deletions(-)

diff --git a/data_server.py b/data_server.py
index 98dfb29..4bb5715 100644
--- a/data_server.py
+++ b/data_server.py
@@ -16,13 +16,12 @@
 from third_data.kpl_util import KPLPlatManager, KPLDataType
 from trade import trade_manager
 from trade.l2_trade_util import BlackListCodeManager
-from utils import tool, global_util, kp_client_msg_manager
+from utils import tool, global_util, kp_client_msg_manager, hosting_api_util
 
 from utils.history_k_data_util import HistoryKDatasUtils
 
 import urllib.parse as urlparse
 from urllib.parse import parse_qs
-
 
 
 class DataServer(BaseHTTPRequestHandler):
@@ -39,7 +38,6 @@
     # 绮鹃��,琛屼笟鏁版嵁缂撳瓨
     __jingxuan_cache_dict = {}
     __industry_cache_dict = {}
-
 
     def __get_limit_up_list(self):
         # 缁熻鐩墠涓烘鐨勪唬鐮佹定鍋滄暟閲忥紙鍒嗘定鍋滃師鍥狅級
@@ -261,185 +259,17 @@
     def do_GET(self):
         path = self.path
         url = urlparse.urlparse(path)
-        response_data = ""
-        if url.path == "/get_kpl_data":
-            best_feng_kou = self.__kplDataManager.get_data(kpl_util.KPLDataType.BEST_FENG_KOU)
-            if not best_feng_kou:
-                best_feng_kou = []
-            best_feng_kou = best_feng_kou[:22]
-            feng_kou = self.__kplDataManager.get_data(kpl_util.KPLDataType.FENG_KOU)
-            if not feng_kou:
-                feng_kou = []
-            feng_kou = feng_kou[:22]
-            industry_rank = self.__kplDataManager.get_data(kpl_util.KPLDataType.INDUSTRY_RANK)
-            if not industry_rank:
-                industry_rank = []
-            industry_rank = industry_rank[:22]
-            feng_xiang = self.__kplDataManager.get_data(kpl_util.KPLDataType.FENG_XIANG)
-            if not feng_xiang:
-                feng_xiang = []
-            feng_xiang = feng_xiang[:22]
-            response_data = json.dumps({"code": 0, "data": {"best_feng_kou": best_feng_kou, "feng_kou": feng_kou,
-                                                            "industry_rank": industry_rank, "feng_xiang": feng_xiang}})
-        elif url.path == "/get_score_info":
-            start_time = time.time()
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            code = ps_dict['code']
-            name = ps_dict.get('name')
-
-            data = code_info_output.get_output_params(code, self.__jingxuan_cache_dict, self.__industry_cache_dict)
-            if data["code_name"].find("None") > -1 and name:
-                data["code_name"] = f"{name} {code}"
-
-            self.__history_plates_dict[code] = (time.time(), data["kpl_code_info"]["code_records"])
-            if "plate" in data["kpl_code_info"]:
-                self.__blocks_dict[code] = (time.time(), data["kpl_code_info"]["plate"])
-
-            response_data = json.dumps({"code": 0, "data": data})
-            print("get_score_info 鑰楁椂锛�", time.time() - start_time)
-
-            # 鑾峰彇璇勫垎淇℃伅
-            pass
-        elif url.path == "/kpl/get_limit_up_list":
+        if url.path == "/kpl/get_limit_up_list":
             response_data = self.__get_limit_up_list()
-
-        elif url.path == "/kpl/get_plate_info":
+            self.send_response(200)
+            # 鍙戠粰璇锋眰瀹㈡埛绔殑鍝嶅簲鏁版嵁
+            self.send_header('Content-type', 'application/json')
+            self.end_headers()
+            self.wfile.write(response_data.encode())
+        else:
             ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            response_data = self.__get_plate_info(ps_dict)
-
-        elif url.path == "/kpl/get_market_data":
-            # 鑾峰彇鏉垮潡淇℃伅
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            type_ = int(ps_dict['type'])
-            result = []
-            if type_ == 0:
-                # 琛屼笟锛屼富鍔涘噣棰濆�掑簭
-                result = kpl_api.getMarketIndustryRealRankingInfo(True)
-                result = kpl_util.parseMarketIndustry(result)
-            elif type_ == 1:
-                # 琛屼笟锛屼富鍔涘噣棰濋『搴�
-                result = kpl_api.getMarketIndustryRealRankingInfo(False)
-                result = kpl_util.parseMarketIndustry(result)
-            elif type_ == 2:
-                # 绮鹃�夛紝涓诲姏鍑�棰濆�掑簭
-                result = kpl_api.getMarketJingXuanRealRankingInfo(True)
-                result = kpl_util.parseMarketJingXuan(result)
-            elif type_ == 3:
-                # 绮鹃�夛紝涓诲姏鍑�棰濋『搴�
-                result = kpl_api.getMarketJingXuanRealRankingInfo(False)
-                result = kpl_util.parseMarketJingXuan(result)
-            forbidden_plates = self.__KPLPlateForbiddenManager.list_all()
-            fresult = []
-            for d in result:
-                if type_ == 2 or type_ == 3:
-                    self.__jingxuan_cache_dict[d[1]] = d
-                elif type_ == 0 or type_ == 1:
-                    self.__industry_cache_dict[d[1]] = d
-                d = list(d)
-                d.append(1 if d[1] in forbidden_plates else 0)
-                fresult.append(d)
-            response_data = json.dumps({"code": 0, "data": fresult})
-        elif url.path == "/kpl/add_ignore_code":
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            code = ps_dict['code']
-            type_ = ps_dict['type']
-            self.__IgnoreCodeManager.ignore_code(type_, code)
-            response_data = json.dumps({"code": 0})
-        elif url.path == "/kpl/forbidden_plate":
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            plate = ps_dict["plate"]
-            # 鍔犲叆绂佹
-            self.__KPLPlateForbiddenManager.save_plate(plate)
-            response_data = json.dumps({"code": 0})
-        elif url.path == "/kpl/get_plate_codes":
-            # 鑾峰彇娑ㄥ仠鍘熷洜涓嬮潰鐨勪唬鐮�
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            plate = ps_dict["plate"]
-            # 鑾峰彇鏉垮潡涓嬬殑浠g爜
-            # 缁熻鐩墠涓烘鐨勪唬鐮佹定鍋滄暟閲忥紙鍒嗘定鍋滃師鍥狅級
-            now_limit_up_codes_info = self.__kplDataManager.get_data(KPLDataType.LIMIT_UP)
-            now_limit_up_codes = set([d[0] for d in now_limit_up_codes_info])
-            # 鑾峰彇鍘嗗彶娑ㄥ仠
-            record_limit_up_datas = KPLLimitUpDataRecordManager.total_datas
-            if not record_limit_up_datas:
-                KPLLimitUpDataRecordManager.load_total_datas()
-                record_limit_up_datas = KPLLimitUpDataRecordManager.total_datas
-
-            codes_info = []
-            for d in record_limit_up_datas:
-                if d[2] != plate:
-                    continue
-                # 浠g爜,鍚嶇О,娑ㄥ仠鏃堕棿,鏄惁鐐告澘,鏄惁鎯充拱,鏄惁宸茬粡涓嬭繃鍗�
-                codes_info.append(
-                    [d[3], d[4], tool.to_time_str(int(d[5])), 1 if d[3] not in now_limit_up_codes else 0, 0, 0])
-            codes_info.sort(key=lambda x: x[2])
-            # 鏌ヨ鏄惁涓烘兂涔板崟
-            want_codes = gpcode_manager.WantBuyCodesManager().list_code()
-            for code_info in codes_info:
-                code_info[4] = 1 if code_info[0] in want_codes else 0
-                # 鑾峰彇浠g爜鐘舵��
-                if trade_manager.CodesTradeStateManager().get_trade_state(code_info[0]) != trade_manager.TRADE_STATE_NOT_TRADE:
-                    code_info[5] = 1
-
-            response_data = json.dumps({"code": 0, "data": codes_info})
-        elif url.path == "/get_h_cancel_data":
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            code = ps_dict["code"]
-            if code:
-                trade_state = trade_manager.CodesTradeStateManager().get_trade_state(code)
-                if trade_state == trade_manager.TRADE_STATE_BUY_PLACE_ORDER or trade_state == trade_manager.TRADE_STATE_BUY_DELEGATED or trade_state == trade_manager.TRADE_STATE_BUY_SUCCESS:
-                    # TODO 鑾峰彇H鎾ゆ暟鎹�
-                    response_data = json.dumps({"code": 1, "msg": "鏃燞鎾ゆ暟鎹�"})
-                else:
-                    response_data = json.dumps({"code": 1, "msg": "鏃燞鎾ゆ暟鎹�"})
-            else:
-                response_data = json.dumps({"code": 1, "msg": "璇蜂笂浼燾ode"})
-
-        elif url.path == "/get_last_trade_day_reasons":
-            # 鑾峰彇涓婁釜浜ゆ槗鏃ョ殑鐩稿悓娑ㄥ仠鍘熷洜鐨勪唬鐮佷俊鎭�
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            code = ps_dict["code"]
-            day = HistoryKDatasUtils.get_previous_trading_date(tool.get_now_date_str())
-            # 鑾峰彇娑ㄥ仠鏁版嵁
-
-            # 鑾峰彇浠g爜鐨勫師鍥�
-            reasons = kpl_data_manager.KPLLimitUpDataRecordManager.list_by_code(code, day)
-            if reasons:
-                reasons = list(reasons)
-                reasons.sort(key=lambda x: x[9])
-                reason = reasons[-1][2]
-                datas = self.__kplDataManager.get_from_file(kpl_util.KPLDataType.LIMIT_UP, day)
-                # (浠g爜,鍚嶇О,棣栨娑ㄥ仠鏃堕棿,鏈�杩戞定鍋滄椂闂�,鍑犳澘,娑ㄥ仠鍘熷洜,鏉垮潡,瀹為檯娴侀��,涓诲姏鍑�棰�,娑ㄥ仠鍘熷洜浠g爜,娑ㄥ仠鍘熷洜浠g爜鏁伴噺)
-                result_list = []
-                if datas:
-                    for d in datas:
-                        if d[5] == reason and d[0] != code:
-                            # (浠g爜,鍚嶇О)
-                            result_list.append((d[0], d[1]))
-                response_data = json.dumps({"code": 0, "data": {"reason": reason, "data": result_list}})
-            else:
-                response_data = json.dumps({"code": 1, "msg": "鏄ㄦ棩鏈定鍋�"})
-
-        elif url.path == "/pull_kp_client_msg":
-            # 鎷夊彇瀹㈡埛绔秷鎭�
-            ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()])
-            client = ps_dict["client"]
-            msg = kp_client_msg_manager.read_msg(client)
-            if msg:
-                response_data = json.dumps({"code": 0, "data": msg})
-            else:
-                response_data = json.dumps({"code": 1, "msg": "鏆傛棤娑堟伅"})
-        elif url.path == "/list_kp_client_msg":
-            msg_list = kp_client_msg_manager.list_msg_from_local()
-            msg_list.reverse()
-            msg_list = [f"{msg.split('|')[0]}{msg.split('|')[-1].split('-')[1].strip()}" for msg in msg_list]
-            response_data = json.dumps({"code": 0, "data": msg_list})
-
-        self.send_response(200)
-        # 鍙戠粰璇锋眰瀹㈡埛绔殑鍝嶅簲鏁版嵁
-        self.send_header('Content-type', 'application/json')
-        self.end_headers()
-        self.wfile.write(response_data.encode())
+            result = hosting_api_util.get_from_data_server(url.path, ps_dict)
+            self.__send_response(result)
 
     def do_POST(self):
         path = self.path

--
Gitblit v1.8.0