From c20c3c10635ce78db4a86ce9c0bb1d02e90f525d Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 08 八月 2023 17:40:42 +0800
Subject: [PATCH] 单例+缓存优化

---
 server.py |  307 ++++++++++++---------------------------------------
 1 files changed, 73 insertions(+), 234 deletions(-)

diff --git a/server.py b/server.py
index 61d52e2..eb8eff7 100644
--- a/server.py
+++ b/server.py
@@ -10,19 +10,19 @@
 import threading
 import time
 
-from utils import alert_util, data_process, global_util, ths_industry_util, tool, import_util
+from utils import alert_util, data_process, global_util, ths_industry_util, tool, import_util, socket_util
 from code_attribute import code_volumn_manager, code_nature_analyse, global_data_loader, gpcode_manager, \
-    gpcode_first_screen_manager
+    gpcode_first_screen_manager, first_target_code_data_processor
 import constant
 from user import authority
 import inited_data
 from l2 import l2_data_manager_new, l2_data_manager, l2_data_log, l2_log, code_price_manager
 import l2_data_util
-from l2.cancel_buy_strategy import HourCancelBigNumComputer, L2LimitUpMoneyStatisticUtil, LCancelBigNumComputer
+from l2.cancel_buy_strategy import HourCancelBigNumComputer, LCancelBigNumComputer
 import l2.l2_data_util
 
 from output import code_info_output
-from third_data import hot_block_data_process, block_info, kpl_api
+from third_data import block_info, kpl_api
 from third_data.code_plate_key_manager import CodesHisReasonAndBlocksManager
 from third_data.history_k_data_util import HistoryKDatasUtils
 from third_data.kpl_data_manager import KPLCodeLimitUpReasonManager, KPLLimitUpDataRecordManager
@@ -32,7 +32,7 @@
 from code_attribute.code_data_util import ZYLTGBUtil
 import l2.transaction_progress
 
-from logs_.log import logger_l2_error, logger_device, logger_trade_delegate, logger_buy_1_volumn_record, \
+from log_module.log import logger_l2_error, logger_device, logger_trade_delegate, logger_buy_1_volumn_record, \
     logger_l2_trade_queue, logger_l2_latest_data, logger_l2_trade_buy_queue, logger_first_code_record, logger_debug
 from trade.huaxin import huaxin_trade_record_manager
 from trade.trade_manager import TradeTargetCodeModeManager
@@ -43,9 +43,11 @@
 
 
 class MyTCPServer(socketserver.TCPServer):
-    def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True, pipe_juejin=None, pipe_ui=None):
-        self.pipe_juejin = pipe_juejin  # 澧炲姞鐨勫弬鏁�
+    def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True, pipe_trade=None, pipe_ui=None):
+        self.pipe_trade = pipe_trade  # 澧炲姞鐨勫弬鏁�
         self.pipe_ui = pipe_ui
+        # 鍒濆鍖栨暟鎹�
+        block_info.init()
         socketserver.TCPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate=bind_and_activate)
 
 
@@ -79,8 +81,12 @@
     def setup(self):
         super().setup()  # 鍙互涓嶈皟鐢ㄧ埗绫荤殑setup()鏂规硶锛岀埗绫荤殑setup鏂规硶浠�涔堥兘娌″仛
         # print("----setup鏂规硶琚墽琛�-----")
-        # print("鎵撳嵃浼犲叆鐨勫弬鏁帮細", self.server.pipe)
+        # print("鎵撳嵃浼犲叆鐨勫弬鏁帮細", self.server.pipe_trade)
         self.l2CodeOperate = l2_code_operate.L2CodeOperate.get_instance()
+
+    def __notify_trade(self, type_):
+        if self.server.pipe_trade:
+            self.server.pipe_trade.send(json.dumps({"type": type_}))
 
     def handle(self):
         host = self.client_address[0]
@@ -106,7 +112,6 @@
                 try:
                     # 濡傛灉甯︽湁澶�
                     if _str.startswith("##"):
-
                         total_length = int(_str[2:10])
                         _str = _str[10:]
                         # 闃叉socket鏁版嵁鍙戠敓绮樿繛
@@ -268,199 +273,21 @@
                         # if limit_up_time_manager.get_limit_up_time(d["code"]) is None:
                         #     limit_up_time_manager.save_limit_up_time(d["code"], d["time"])
                 elif type == 22:
+                    print("---鎺ュ彈鍒伴鏉夸唬鐮�")
                     try:
                         if int(tool.get_now_time_str().replace(":", "")) < int("092500"):
                             raise Exception('鏈埌鎺ュ彈鏃堕棿')
                         # 棣栨澘浠g爜
                         dataList, is_add = data_process.parseGPCode(_str)
-                        limit_up_price_dict = {}
-                        temp_codes = []
-                        codes = []
-                        tick_datas = []
-                        if dataList:
-                            for data in dataList:
-                                code = data["code"]
-                                codes.append(code)
-
-                        # ---鏌ヨ鎯充拱鍗曪紝濡傛灉娌℃湁鍦ㄥ垪琛ㄤ腑灏遍渶瑕佸己琛屽姞鍏ュ垪琛�
-                        want_codes = gpcode_manager.WantBuyCodesManager.list_code()
-                        if want_codes:
-                            # 娌℃湁鍦ㄧ幇浠烽噰闆嗕腑鐨勬兂涔颁唬鐮�
-                            diff_codes = set(want_codes) - set(codes)
-                            if diff_codes:
-                                zyltgb_list = []
-                                for code in diff_codes:
-                                    # 鏌ヨ鏄惁鍦↙2鐜颁环涓�
-                                    if code in self.__l2_current_price_data:
-                                        item = self.__l2_current_price_data.get(code)
-                                        codes.append(code)
-                                        dataList.append(item)
-                                        # 淇濆瓨鑷敱娴侀�氳偂鏈�
-                                        zyltgb_list.append(
-                                            {"code": code, "zyltgb": item["zyltgb"], "zyltgb_unit": item["zyltgbUnit"]})
-                                    else:
-                                        # 鑾峰彇娑ㄥ仠浠�
-                                        _limit_up_price = gpcode_manager.get_limit_up_price(code)
-                                        if not _limit_up_price:
-                                            inited_data.re_set_price_pres([code], True)
-                                            # 鍐嶆鑾峰彇娑ㄥ仠浠�
-                                            _limit_up_price = gpcode_manager.get_limit_up_price(code)
-                                        if _limit_up_price:
-                                            # 鎴愬姛鑾峰彇鍒颁簡娑ㄥ仠浠凤紝鏋勯�犺櫄鎷熺殑鐜颁环淇℃伅
-                                            codes.append(code)
-                                            dataList.append({"code": code, "price": f"{_limit_up_price}", "volume": "0",
-                                                             "volumeUnit": 0, "time": "00:00:00", "zyltgb": "100",
-                                                             "zyltgbUnit": 0})
-                                # 寮哄埗鏇存柊鑷敱娴侀�氳偂鏈�
-                                if zyltgb_list:
-                                    ZYLTGBUtil.save_list(zyltgb_list)
-                                    # 灏嗕繚瀛樼殑鏁版嵁鏇存柊鍒板唴瀛樹腑
-                                    for z in zyltgb_list:
-                                        val = ZYLTGBUtil.get(z["code"])
-                                        if val:
-                                            global_util.zyltgb_map[z["code"]] = val
-
-                        # ---淇濆瓨鏈瓫閫夌殑棣栨澘浠g爜
-                        new_add_codes = gpcode_first_screen_manager.set_target_no_screen_codes(codes)
-                        # 淇濆瓨鑷敱娴侀�氳偂鏈�
-                        if dataList:
-                            zyltgb_list = []
-                            for data in dataList:
-                                code = data["code"]
-                                if code in global_util.zyltgb_map:
-                                    continue
-                                zyltgb_list.append(
-                                    {"code": code, "zyltgb": data["zyltgb"], "zyltgb_unit": data["zyltgbUnit"]})
-                            if zyltgb_list:
-                                ZYLTGBUtil.save_list(zyltgb_list)
-                                global_data_loader.load_zyltgb()
-
-                        bad_codes = set()
-
-                        # 鑾峰彇鏄ㄦ棩鏀剁洏浠�
-                        for code in codes:
-                            # 濡傛灉娑ㄥ仠浠锋槸绌哄�煎氨闇�瑕佽缃槰鏃ユ敹鐩樹环鏍�
-                            if gpcode_manager.get_limit_up_price(code) is None:
-                                inited_data.re_set_price_pres([code], True)
-
-                        # 鏉垮潡鍏抽敭瀛楀噯澶�
-                        for code in codes:
-                            if not self.__CodesPlateKeysManager.get_history_limit_up_reason(code) is None:
-                                self.__CodesPlateKeysManager.set_history_limit_up_reason(code,
-                                                                                         KPLLimitUpDataRecordManager.get_latest_blocks_set(
-                                                                                             code))
-                            if self.__CodesPlateKeysManager.get_blocks(code) is None:
-                                try:
-                                    results = kpl_api.getStockIDPlate(code)
-                                    bs = [r[1] for r in results]
-                                    self.__CodesPlateKeysManager.set_blocks(code, bs)
-                                except Exception as e:
-                                    logging.exception(e)
-                                    pass
-
-                        # 鑾峰彇60澶╂渶澶ц褰�
-                        for code in codes:
-                            need_get_volumn = False
-                            if code not in global_util.max60_volumn or global_util.max60_volumn.get(code) is None:
-                                need_get_volumn = True
-                            if not need_get_volumn and code_nature_analyse.CodeNatureRecordManager.get_nature(
-                                    code) is None:
-                                need_get_volumn = True
-                            if need_get_volumn:
-                                volumes_data = inited_data.get_volumns_by_code(code, 150)
-                                volumes = inited_data.parse_max_volume(volumes_data[:90],
-                                                                       code_nature_analyse.is_new_top(
-                                                                           gpcode_manager.get_limit_up_price(code),
-                                                                           volumes_data[:90]))
-                                logger_first_code_record.info("{} 鑾峰彇鍒伴鏉�60澶╂渶澶ч噺锛歿}", code, volumes)
-                                code_volumn_manager.set_histry_volumn(code, volumes[0], volumes[1], volumes[2])
-                                # 鍒ゆ柇K绾垮舰鎬�
-                                is_has_k_format, msg = code_nature_analyse.is_has_k_format(
-                                    gpcode_manager.get_limit_up_price(code), volumes_data)
-                                if not is_has_k_format:
-                                    logger_first_code_record.info("{}棣栨澘K绾垮舰鎬佷笉濂�,{}", code, msg)
-                                    # 鑲℃�т笉濂斤紝灏变笉瑕佸姞鍏�
-                                    bad_codes.add(code)
-                                    # 鍔犲叆绂佹浜ゆ槗浠g爜
-                                    l2_trade_util.forbidden_trade(code)
-                                code_nature_analyse.set_record_datas(code,
-                                                                     gpcode_manager.get_limit_up_price(code),
-                                                                     volumes_data)
-                        gpcode_manager.FirstCodeManager.add_record(codes)
-                        if new_add_codes:
-                            gpcode_manager.set_first_gp_codes_with_data(HistoryKDatasUtils.get_gp_latest_info(codes,
-                                                                                                              fields="symbol,sec_name,sec_type,sec_level"))
-                            # 鍔犲叆棣栨澘鍘嗗彶璁板綍
-
-                            logger_first_code_record.info("鏂板棣栨澘锛歿}", new_add_codes)
-
-                            # 绉婚櫎浠g爜
-                            listen_codes = gpcode_manager.get_listen_codes()
-                            for lc in listen_codes:
-                                if not gpcode_manager.is_in_gp_pool(lc):
-                                    # 绉婚櫎浠g爜
-                                    l2_code_operate.L2CodeOperate.get_instance().add_operate(0, lc, "浠g爜琚Щ闄�")
-
-                        # 淇濆瓨鐜颁环
-                        if dataList:
-                            for data in dataList:
-                                code = data["code"]
-                                codes.append(code)
-                                limit_up_price = gpcode_manager.get_limit_up_price(code)
-                                if limit_up_price is not None:
-                                    limit_up_price_dict[code] = limit_up_price
-                                else:
-                                    temp_codes.append(code)
-                                tick_datas.append({"code": code, "price": data["price"], "volume": data["volume"],
-                                                   "volumeUnit": data["volumeUnit"]})
-                        # 鑾峰彇娑ㄥ仠浠�
-                        if temp_codes:
-                            # 鑾峰彇娑ㄥ仠浠�
-                            inited_data.re_set_price_pres(temp_codes)
-                            # 閲嶆柊鑾峰彇娑ㄥ仠浠�
-                            for code in temp_codes:
-                                limit_up_price = gpcode_manager.get_limit_up_price(code)
-                                if limit_up_price is not None:
-                                    limit_up_price_dict[code] = limit_up_price
+                        tick_datas = first_target_code_data_processor.process_first_codes_datas(dataList)
                         # 淇濆瓨鐜颁环
                         self.first_tick_datas.clear()
                         self.first_tick_datas.extend(tick_datas)
-
-                        # 棣栨澘鏁版嵁鍔犲伐
-                        prices = []
-                        for data in dataList:
-                            code = data["code"]
-                            price = data["price"]
-                            limit_up_time = data["time"]
-                            if limit_up_time == "00:00:00":
-                                limit_up_time = None
-                            if code not in limit_up_price_dict:
-                                continue
-                            is_limit_up = abs(float(limit_up_price_dict[code]) - float(price)) < 0.01
-                            # 绾犳鏁版嵁
-                            if is_limit_up and limit_up_time is None:
-                                limit_up_time = tool.get_now_time_str()
-                            if is_limit_up:
-                                # 鍔犲叆棣栨澘娑ㄥ仠
-                                gpcode_manager.FirstCodeManager.add_limited_up_record([code])
-                            pricePre = gpcode_manager.get_price_pre(code)
-                            if pricePre is None:
-                                inited_data.re_set_price_pres([code])
-
-                            rate = round((float(price) - pricePre) * 100 / pricePre, 1)
-                            prices.append(
-                                {"code": code, "time": limit_up_time, "rate": rate,
-                                 "limit_up": is_limit_up})
-                            if code in new_add_codes:
-                                if is_limit_up:
-                                    place_order_count = trade_data_manager.placeordercountmanager.get_place_order_count(
-                                        code)
-                                    if place_order_count == 0:
-                                        trade_data_manager.placeordercountmanager.place_order(code)
-
-                        gpcode_first_screen_manager.process_ticks(prices)
                     except Exception as e:
                         logging.exception(e)
+                    finally:
+                        print("棣栨澘浠g爜澶勭悊瀹屾瘯锛�")
+                        return_str = socket_util.load_header(json.dumps({"code": 0}).encode("utf-8")).decode("utf-8")
 
                 elif type == 3:
                     # 浜ゆ槗鎴愬姛淇℃伅
@@ -487,7 +314,7 @@
                                 apply_time = item["apply_time"]
                                 if apply_time and len(apply_time) >= 8:
                                     code = item["code"]
-                                    trade_state = trade_manager.get_trade_state(code)
+                                    trade_state = trade_manager.CodesTradeStateManager().get_trade_state(code)
                                     # 璁剧疆涓嬪崟鐘舵�佺殑浠g爜涓哄凡濮旀墭
                                     if trade_state == trade_manager.TRADE_STATE_BUY_PLACE_ORDER:
                                         origin_apply_time = apply_time
@@ -534,7 +361,7 @@
                     client = datas["client"]
                     money = datas["money"]
                     # TODO瀛樺叆缂撳瓨鏂囦欢
-                    trade_manager.set_available_money(client, money)
+                    trade_manager.AccountAvailableMoneyManager().set_available_money(client, money)
                 # l2浜ゆ槗闃熷垪
                 elif type == 10:
                     # 鍙敤閲戦
@@ -562,8 +389,8 @@
                         limit_up_price = gpcode_manager.get_limit_up_price(code)
 
                         if limit_up_price is not None:
-                            code_price_manager.Buy1PriceManager.process(code, buy_one_price, buy_time, limit_up_price,
-                                                                        sell_one_price, sell_one_volumn)
+                            code_price_manager.Buy1PriceManager().process(code, buy_one_price, buy_time, limit_up_price,
+                                                                          sell_one_price, sell_one_volumn)
                             _start_time = time.time()
                             msg += "涔�1浠锋牸澶勭悊锛�" + f"{_start_time - __start_time} "
 
@@ -581,7 +408,7 @@
                                         decimal.Decimal("0.00"))
                                     # 鑾峰彇鎵ц浣嶆椂闂�
 
-                                    buy_single_index, buy_exec_index, compute_index, num, count, max_num_set, volume_rate = l2_data_manager.TradePointManager.get_buy_compute_start_data(
+                                    buy_single_index, buy_exec_index, compute_index, num, count, max_num_set, volume_rate = l2_data_manager.TradePointManager().get_buy_compute_start_data(
                                         code)
                                     if True:
                                         # 鍙湁涓嬪崟杩囧悗鎵嶈幏鍙栦氦鏄撹繘搴�
@@ -598,15 +425,16 @@
                                                                                                      buy_queue_result_list,
                                                                                                      exec_time)
                                         if buy_progress_index is not None:
-                                            HourCancelBigNumComputer.set_trade_progress(code, buy_time, buy_exec_index,
-                                                                                        buy_progress_index,
-                                                                                        l2.l2_data_util.local_today_datas.get(
-                                                                                            code),
-                                                                                        l2.l2_data_util.local_today_num_operate_map.get(
-                                                                                            code))
-                                            LCancelBigNumComputer.set_trade_progress(code, buy_progress_index,
-                                                                                     l2.l2_data_util.local_today_datas.get(
-                                                                                         code))
+                                            HourCancelBigNumComputer().set_trade_progress(code, buy_time,
+                                                                                          buy_exec_index,
+                                                                                          buy_progress_index,
+                                                                                          l2.l2_data_util.local_today_datas.get(
+                                                                                              code),
+                                                                                          l2.l2_data_util.local_today_num_operate_map.get(
+                                                                                              code))
+                                            LCancelBigNumComputer().set_trade_progress(code, buy_progress_index,
+                                                                                       l2.l2_data_util.local_today_datas.get(
+                                                                                           code))
 
                                             logger_l2_trade_buy_queue.info("鑾峰彇鎴愪氦浣嶇疆鎴愬姛锛� code-{} index-{}  鏁版嵁-{}", code,
                                                                            buy_progress_index,
@@ -718,9 +546,9 @@
                                                                                                price)
                             # if need_cancel:
                             #    l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, cancel_msg, "trade_queue")
-                            if need_sync:
-                                # 鍚屾鏁版嵁
-                                L2LimitUpMoneyStatisticUtil.verify_num(code, volumn, time_)
+                            # if need_sync:
+                            #     # 鍚屾鏁版嵁
+                            #     L2LimitUpMoneyStatisticUtil.verify_num(code, volumn, time_)
                 elif type == 30:
                     # 蹇冭烦淇℃伅
                     data = data_process.parse(_str)["data"]
@@ -776,8 +604,8 @@
                     data_json = data_process.parse(_str)
                     day = data_json["day"]
                     datas = data_json["data"]
-                    if datas:
-                        hot_block_data_process.save_datas(day, datas)
+                    # if datas:
+                    #     hot_block_data_process.save_datas(day, datas)
                     print(datas)
                 elif type == 71:
                     # 鏍规嵁浠g爜鑾峰彇閫夎偂瀹濈儹闂ㄦ蹇�
@@ -807,7 +635,7 @@
                     data = json.loads(_str)
                     code = data["data"]["code"]
                     if code:
-                        state = trade_manager.get_trade_state(code)
+                        state = trade_manager.CodesTradeStateManager().get_trade_state(code)
                         if state == trade_manager.TRADE_STATE_BUY_PLACE_ORDER or state == trade_manager.TRADE_STATE_BUY_DELEGATED or state == trade_manager.TRADE_STATE_BUY_CANCEL_ING:
                             try:
                                 l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, "鎵嬪姩鎾ら攢")
@@ -841,6 +669,7 @@
                                 gpcode_manager.CodesNameManager.add_first_code_name(code, results[code])
 
                     return_str = json.dumps({"code": 0})
+                    self.__notify_trade("black_list")
                 elif type == 202:
                     # 鍔犲叆鐧藉悕鍗�
                     data = json.loads(_str)
@@ -848,9 +677,9 @@
                     try:
                         for code in codes:
                             # 鑷敱娴侀�氬競鍊�>50浜�,鑲′环楂樹簬30鍧楃殑涓嶈兘鍔犵櫧鍚嶅崟
-                            limit_up_price = gpcode_manager.get_limit_up_price(code)
-                            if float(limit_up_price) > 30:
-                                raise Exception("鑲′环楂樹簬30鍏�")
+                            # limit_up_price = gpcode_manager.get_limit_up_price(code)
+                            # if float(limit_up_price) > 30:
+                            #     raise Exception("鑲′环楂樹簬30鍏�")
                             # zyltgb = global_util.zyltgb_map.get(code)
                             # if zyltgb is None:
                             #     global_data_loader.load_zyltgb()
@@ -858,7 +687,7 @@
                             # if zyltgb > 50 * 100000000:
                             #     raise Exception("鑷敱娴侀�氳偂鏈ぇ浜�50浜�")
 
-                            l2_trade_util.WhiteListCodeManager.add_code(code)
+                            l2_trade_util.WhiteListCodeManager().add_code(code)
                             name = gpcode_manager.get_code_name(code)
                             if not name:
                                 results = HistoryKDatasUtils.get_gp_codes_names([code])
@@ -867,6 +696,7 @@
                         return_str = json.dumps({"code": 0})
                     except Exception as e:
                         return_str = json.dumps({"code": 1, "msg": str(e)})
+                    self.__notify_trade("white_list")
 
                 elif type == 203:
                     # 绉婚櫎榛戝悕鍗�
@@ -875,16 +705,18 @@
                     for code in codes:
                         l2_trade_util.remove_from_forbidden_trade_codes(code)
                     return_str = json.dumps({"code": 0})
+                    self.__notify_trade("black_list")
                 elif type == 204:
                     # 绉婚櫎鐧藉悕鍗�
                     data = json.loads(_str)
                     codes = data["data"]["codes"]
                     for code in codes:
-                        l2_trade_util.WhiteListCodeManager.remove_code(code)
+                        l2_trade_util.WhiteListCodeManager().remove_code(code)
                     return_str = json.dumps({"code": 0})
+                    self.__notify_trade("white_list")
                 elif type == 301:
                     # 榛戝悕鍗曞垪琛�
-                    codes = l2_trade_util.BlackListCodeManager.list_codes()
+                    codes = l2_trade_util.BlackListCodeManager().list_codes()
                     datas = []
                     for code in codes:
                         name = gpcode_manager.get_code_name(code)
@@ -892,18 +724,19 @@
                     return_str = json.dumps({"code": 0, "data": datas})
                 elif type == 302:
                     # 榛戝悕鍗曞垪琛�
-                    codes = l2_trade_util.WhiteListCodeManager.list_codes()
+                    codes = l2_trade_util.WhiteListCodeManager().list_codes()
                     datas = []
                     for code in codes:
                         name = gpcode_manager.get_code_name(code)
                         datas.append(f"{name}:{code}")
                     return_str = json.dumps({"code": 0, "data": datas})
+
                 elif type == 401:
                     # 鍔犲叆鎯宠涔�
                     data = json.loads(_str)
                     codes = data["data"]["codes"]
                     for code in codes:
-                        gpcode_manager.WantBuyCodesManager.add_code(code)
+                        gpcode_manager.WantBuyCodesManager().add_code(code)
                         name = gpcode_manager.get_code_name(code)
                         if not name:
                             results = HistoryKDatasUtils.get_gp_codes_names([code])
@@ -914,12 +747,14 @@
                             self.__KPLCodeLimitUpReasonManager.save_reason(codes[i], data["data"]["plates"][i])
 
                     return_str = json.dumps({"code": 0})
+                    self.__notify_trade("want_list")
                 elif type == 402:
                     data = json.loads(_str)
                     codes = data["data"]["codes"]
                     for code in codes:
-                        gpcode_manager.WantBuyCodesManager.remove_code(code)
+                        gpcode_manager.WantBuyCodesManager().remove_code(code)
                     return_str = json.dumps({"code": 0})
+                    self.__notify_trade("want_list")
                 elif type == 403:
                     plate = None
                     include_codes = set()
@@ -932,7 +767,7 @@
                                 if code_map[k] == plate:
                                     include_codes.add(k)
 
-                    codes = gpcode_manager.WantBuyCodesManager.list_code()
+                    codes = gpcode_manager.WantBuyCodesManager().list_code_cache()
                     datas = []
                     for code in codes:
                         if plate and plate != '鍏朵粬' and code not in include_codes:
@@ -945,25 +780,27 @@
                     data = json.loads(_str)
                     codes = data["data"]["codes"]
                     for code in codes:
-                        gpcode_manager.PauseBuyCodesManager.add_code(code)
+                        gpcode_manager.PauseBuyCodesManager().add_code(code)
                         name = gpcode_manager.get_code_name(code)
                         if not name:
                             results = HistoryKDatasUtils.get_gp_codes_names([code])
                             if results:
                                 gpcode_manager.CodesNameManager.add_first_code_name(code, results[code])
                     return_str = json.dumps({"code": 0})
+                    self.__notify_trade("pause_buy_list")
                     # 鍔犲叆鏆傚仠涔板叆鍒楄〃
                 elif type == 412:
                     # 绉婚櫎鏆傚仠涔板叆鍒楄〃
                     data = json.loads(_str)
                     codes = data["data"]["codes"]
                     for code in codes:
-                        gpcode_manager.PauseBuyCodesManager.remove_code(code)
+                        gpcode_manager.PauseBuyCodesManager().remove_code(code)
                     return_str = json.dumps({"code": 0})
+                    self.__notify_trade("pause_buy_list")
 
                 elif type == 413:
                     # 鏆傚仠涔板叆鍒楄〃
-                    codes = gpcode_manager.PauseBuyCodesManager.list_code()
+                    codes = gpcode_manager.PauseBuyCodesManager().list_code()
                     datas = []
                     for code in codes:
                         name = gpcode_manager.get_code_name(code)
@@ -975,7 +812,7 @@
                     data = json.loads(_str)
                     codes = data["data"]["codes"]
                     code = codes[0]
-                    state = trade_manager.get_trade_state(code)
+                    state = trade_manager.CodesTradeStateManager().get_trade_state(code)
                     if state != trade_manager.TRADE_STATE_BUY_CANCEL_SUCCESS and state != trade_manager.TRADE_STATE_BUY_SUCCESS:
                         return_str = json.dumps({"code": 0, "msg": "鍙互鍙栨秷"})
                     else:
@@ -987,10 +824,10 @@
                     code = data["data"]["code"]
                     # 鏌ヨ鏄惁鎯充拱鍗�/鐧藉悕鍗�/榛戝悕鍗�/鏆備笉涔�
                     code_name = gpcode_manager.get_code_name(code)
-                    want = gpcode_manager.WantBuyCodesManager.is_in(code)
-                    white = l2_trade_util.WhiteListCodeManager.is_in(code)
+                    want = gpcode_manager.WantBuyCodesManager().is_in_cache(code)
+                    white = l2_trade_util.WhiteListCodeManager().is_in_cache(code)
                     black = l2_trade_util.is_in_forbidden_trade_codes(code)
-                    pause_buy = gpcode_manager.PauseBuyCodesManager.is_in(code)
+                    pause_buy = gpcode_manager.PauseBuyCodesManager().is_in_cache(code)
 
                     desc_list = []
                     if want:
@@ -1009,25 +846,27 @@
                     data = json.loads(_str)
                     is_open = data["data"]["open"]
                     if is_open:
-                        trade_manager.TradeStateManager.open_buy()
+                        trade_manager.TradeStateManager().open_buy()
                     else:
-                        trade_manager.TradeStateManager.close_buy()
+                        trade_manager.TradeStateManager().close_buy()
                     return_str = json.dumps({"code": 0, "msg": ("寮�鍚垚鍔�" if is_open else "鍏抽棴鎴愬姛")})
+                    self.__notify_trade("trade_state")
                 elif type == 502:
-                    can_buy = trade_manager.TradeStateManager.is_can_buy()
+                    can_buy = trade_manager.TradeStateManager().is_can_buy_cache()
                     return_str = json.dumps({"code": 0, "data": {"can_buy": can_buy}})
                 elif type == 503:
                     # 璁剧疆浜ゆ槗鐩爣浠g爜鐨勬ā寮�
                     data = json.loads(_str)
                     mode = data["data"]["mode"]
                     try:
-                        TradeTargetCodeModeManager.set_mode(mode)
+                        TradeTargetCodeModeManager().set_mode(mode)
                         return_str = json.dumps({"code": 0, "data": {"mode": mode}})
                     except Exception as e:
                         return_str = json.dumps({"code": 1, "msg": str(e)})
+                    self.__notify_trade("trade_mode")
                 elif type == 504:
                     # 鑾峰彇浜ゆ槗鐩爣浠g爜妯″紡
-                    mode = TradeTargetCodeModeManager.get_mode()
+                    mode = TradeTargetCodeModeManager().get_mode_cache()
                     return_str = json.dumps({"code": 0, "data": {"mode": mode}})
                 elif type == 601:
                     pass

--
Gitblit v1.8.0