ck hace 4 años
padre
commit
a4956197a9
Se han modificado 3 ficheros con 51 adiciones y 21 borrados
  1. 29 2
      handlers/HandlerBase.py
  2. 21 18
      handlers/PublicAnalysisHandler.py
  3. 1 1
      model/CommonUtils.py

+ 29 - 2
handlers/HandlerBase.py

@@ -6,7 +6,9 @@ from tornado.web import RequestHandler
 from model.log import logger
 from model.log import logger
 from model.common import errors
 from model.common import errors
 import time
 import time
+import base64
 import pandas as pd
 import pandas as pd
+from config.config import auth,port
 log = logger()
 log = logger()
 from model.DateUtils import DateUtils
 from model.DateUtils import DateUtils
 
 
@@ -16,7 +18,9 @@ class BaseHandler(RequestHandler,DateUtils):
         self._status_code = 200
         self._status_code = 200
         self.executor = ThreadPoolExecutor(200)
         self.executor = ThreadPoolExecutor(200)
         self.set_default_headers()
         self.set_default_headers()
-
+        self._au = True
+        if auth:
+            self._au = self._auth()
 
 
     def options(self):
     def options(self):
         # 返回方法1
         # 返回方法1
@@ -40,6 +44,9 @@ class BaseHandler(RequestHandler,DateUtils):
     def write_json(self, data, status_code=200, msg='success',total=1,total_data={}):
     def write_json(self, data, status_code=200, msg='success',total=1,total_data={}):
         self.write(json.dumps({'status': {'msg': msg, "RetCode": status_code},'total':total,'data': data,"total_data":total_data}))
         self.write(json.dumps({'status': {'msg': msg, "RetCode": status_code},'total':total,'data': data,"total_data":total_data}))
 
 
+    def write_fail(self,code=400,msg='error'):
+        self.write(json.dumps({'status': {'msg': msg, "RetCode": code}}))
+
     def write_download(self, filename, data):
     def write_download(self, filename, data):
         self.set_header('Content-Type', 'application/octet-stream')
         self.set_header('Content-Type', 'application/octet-stream')
         self.set_header('Content-Disposition', f'attachment; filename={filename}.csv')
         self.set_header('Content-Disposition', f'attachment; filename={filename}.csv')
@@ -54,7 +61,7 @@ class BaseHandler(RequestHandler,DateUtils):
     def get_args(self):
     def get_args(self):
         di=json.loads(self.request.body.decode(encoding='utf-8'))
         di=json.loads(self.request.body.decode(encoding='utf-8'))
         if isinstance(di,str):
         if isinstance(di,str):
-            di=json.loads(di)
+            di = json.loads(di)
         return di
         return di
 
 
     def write_error(self, status_code, msg=None, **kwargs):
     def write_error(self, status_code, msg=None, **kwargs):
@@ -92,5 +99,25 @@ class BaseHandler(RequestHandler,DateUtils):
             # return True if ur.r.get(key) else False
             # return True if ur.r.get(key) else False
             return True
             return True
 
 
+    def _auth(self):
+        # 不需要验证的请求
+        authless = ['/api/get_yangguang_data', '/api/git_hook/data_center', '/api/git_hook/qc_web']
+        url = self.request.full_url().split(str(port)+'/')[1]
+        if url in authless:
+            return True
+        else:
+            Authorization = self.request.headers.get('Authorization')
+            b = str(float(str(base64.b64decode(Authorization[::-1].encode('utf-8')),'utf-8'))*int(self.now.day))[:10]
+            diff =int(time.mktime(time.localtime()))-int(b)
+            print(diff)
+            if diff < 60:
+                return True
+            else:
+                return False
+
+
+
+
+
 
 
 
 

+ 21 - 18
handlers/PublicAnalysisHandler.py

@@ -49,24 +49,27 @@ class BookTrend(BaseHandler):
 
 
 class BookOverview(BaseHandler):
 class BookOverview(BaseHandler):
     def post(self):
     def post(self):
-        arg = self.get_args()
-        print(arg)
-        start = arg.get("start")
-        end = arg.get("end",)
-        book = arg.get("book")
-        type = arg.get("type")
-        page = arg.get("page")
-        date_range = arg.get("date_range")
-        page_size = arg.get("page_size")
-        order_by = arg.get("order_by", 'cost')
-        order = arg.get("order", 'desc')
-        if date_range:
-            end = self.get_n_days(0)
-            start = self.get_n_days(-int(date_range)+1)
-        data, total = book_overview(start, end, book, type, page, page_size, order_by, order)
-        if arg.get("download"):
-            self.write_download('BookOver_'+str(int(time.time())), data)
-        self.write_json(data=data, total=total)
+        if not self._au:
+            self.write_fail(msg='auth error')
+        else:
+            arg = self.get_args()
+            print(arg)
+            start = arg.get("start")
+            end = arg.get("end",)
+            book = arg.get("book")
+            type = arg.get("type")
+            page = arg.get("page")
+            date_range = arg.get("date_range")
+            page_size = arg.get("page_size")
+            order_by = arg.get("order_by", 'cost')
+            order = arg.get("order", 'desc')
+            if date_range:
+                end = self.get_n_days(0)
+                start = self.get_n_days(-int(date_range)+1)
+            data, total = book_overview(start, end, book, type, page, page_size, order_by, order)
+            if arg.get("download"):
+                self.write_download('BookOver_'+str(int(time.time())), data)
+            self.write_json(data=data, total=total)
 
 
 
 
 class PitcherOverview(BaseHandler):
 class PitcherOverview(BaseHandler):

+ 1 - 1
model/CommonUtils.py

@@ -34,7 +34,7 @@ def getLimitData(DataBase,sql,page,page_size):
     total = DataBase.getData(f"select count(1) from ({sql}) a")[0][0]
     total = DataBase.getData(f"select count(1) from ({sql}) a")[0][0]
     if page and page_size:
     if page and page_size:
         sql += f" limit {(page - 1) * page_size},{page_size} "
         sql += f" limit {(page - 1) * page_size},{page_size} "
-    print(sql)
+    # print(sql)
     data = DataBase.getData_json(sql)
     data = DataBase.getData_json(sql)
     return data,total
     return data,total