Selaa lähdekoodia

Merge branch 'dev'

ck 4 vuotta sitten
vanhempi
commit
0063e5bb38
4 muutettua tiedostoa jossa 91 lisäystä ja 11 poistoa
  1. 56 3
      data_manage/public_analysis.py
  2. 2 4
      handlers/HandlerBase.py
  3. 30 3
      handlers/PublicAnalysisHandler.py
  4. 3 1
      urls.py

+ 56 - 3
data_manage/public_analysis.py

@@ -402,11 +402,64 @@ def image_rank(start, end, type,book, page, page_size, order_by, order):
 
 
     db = MysqlUtils().quchen_text
     db = MysqlUtils().quchen_text
 
 
-    sql =f"""select image_id,preview_url,
+    sql =f"""select preview_url,
             sum(cost),
             sum(cost),
             round(sum(click_count)/sum(view_count),4) ctr,
             round(sum(click_count)/sum(view_count),4) ctr,
             round(sum(cost)/sum(click_count),2) cpc
             round(sum(cost)/sum(click_count),2) cpc
-            from dm_image_cost_day where 1=1 {op1} {op2} {op3} {op4} GROUP BY image_id,preview_url 
+            from dm_image_cost_day where preview_url!='' {op1} {op2} {op3} {op4} GROUP BY signature,preview_url
             {op5} """
             {op5} """
 
 
-    return getLimitData(db, sql, page, page_size)
+    return getLimitData(db, sql, page, page_size)
+
+
+"""广告排行榜"""
+def advertisement_rank(start,end,ad_id,channel,pitcher,stage,site,type,page,page_size,order,order_by):
+    op1=f" and ad_id='{ad_id}' " if ad_id else ''
+    op2=f" and dt>='{start}' " if start else ''
+    op3=f" and dt<='{end}' " if end else ''
+    op4=f" and channel='{channel}' " if channel else ''
+    op5=f" and pitcher='{pitcher}' " if pitcher else ''
+    op6=f" and stage='{stage}'" if stage else ''
+    op7=f" and site='{site}'" if site else ''
+    op8=f" and type='{type}'" if type else ''
+    op9=f" order by {order_by} {order}" if order_by and order else ''
+    db =MysqlUtils().dm
+
+    sql=f"""select 
+    dt,channel,pitcher,stage,platform,book,ad_name,ad_id,`type`,site, cost,
+    view_count,
+    click_count,
+    follow_count,
+    round((cost/view_count)*1000,4) cpm, 
+    round(click_count/view_count,4) ctr,
+    round(cost/click_count,2) cpc,
+    order_count,
+    order_amount,
+    round(order_count/click_count,4)  order_rate,
+    round(order_amount/order_count,2) unit_price,
+    round(cost/order_count,2) order_cost,
+    round(order_amount/cost,4) roi,
+    title,
+    description,
+    image_id,
+    preview_url
+    from dw_ad_day
+    where 1=1 {op1} {op2} {op3} {op4} {op5} {op6} {op7} {op8} {op9}  
+    """
+    sum_sql = f"""select '总计' as pitcher,
+                      sum(cost) cost,
+                      sum(view_count) view_count,
+                      sum(click_count) click_count,
+                      sum(follow_count) follow_count,
+                      round((sum(cost)/sum(view_count))*1000,4) cpm,
+                      round(sum(click_count)/sum(view_count),4) ctr,
+                      round(sum(cost)/sum(click_count),2) cpc,
+                      sum(order_count),
+                      sum(order_amount),
+                      round(sum(order_count)/sum(click_count),4) order_rate,
+                      round(sum(order_amount)/sum(order_count),2) unit_price,
+                      round(sum(cost)/sum(order_count),2) order_cost,
+                      round(sum(order_amount)/sum(cost),4) ROI
+                      from ({sql}) a 
+      """
+    return getLimitSumData(db,sql,sum_sql, page, page_size)

+ 2 - 4
handlers/HandlerBase.py

@@ -111,10 +111,8 @@ class BaseHandler(RequestHandler,DateUtils):
                 origStr = Authorization.split(' ')[1][::-1]
                 origStr = Authorization.split(' ')[1][::-1]
             except:
             except:
                 return False
                 return False
-            if (len(origStr) % 3 == 1):
-                origStr += "=="
-            elif (len(origStr) % 3 == 2):
-                origStr += "="
+
+            origStr += (4-len(origStr)%4)*"="
             print(origStr)
             print(origStr)
             print(float(base64.b64decode(origStr.encode('utf-8')).decode(encoding='utf-8',errors='ignore')))
             print(float(base64.b64decode(origStr.encode('utf-8')).decode(encoding='utf-8',errors='ignore')))
             b = str(float(base64.b64decode(origStr.encode('utf-8')).decode(encoding='utf-8',errors='ignore')) * int(self.now.day))[:10]
             b = str(float(base64.b64decode(origStr.encode('utf-8')).decode(encoding='utf-8',errors='ignore')) * int(self.now.day))[:10]

+ 30 - 3
handlers/PublicAnalysisHandler.py

@@ -108,13 +108,15 @@ class BossPanelSummary(BaseHandler):
         if not self._au:
         if not self._au:
             self.write_fail(msg='auth error')
             self.write_fail(msg='auth error')
         else:
         else:
+
             arg = self.get_args()
             arg = self.get_args()
+            print(arg)
             start = arg.get("start")
             start = arg.get("start")
             end = arg.get("end")
             end = arg.get("end")
             page = arg.get("page")
             page = arg.get("page")
             page_size = arg.get("page_size")
             page_size = arg.get("page_size")
-            order_by = arg.get("order_by")
-            order = arg.get("order")
+            order_by = arg.get("order_by",'dt')
+            order = arg.get("order",'desc')
             pitcher = arg.get("pitcher")
             pitcher = arg.get("pitcher")
             date_range = arg.get("date_range")
             date_range = arg.get("date_range")
             type = arg.get("type")
             type = arg.get("type")
@@ -122,7 +124,7 @@ class BossPanelSummary(BaseHandler):
             download = arg.get("download")
             download = arg.get("download")
             if date_range:
             if date_range:
                 end = self.get_n_days(0)
                 end = self.get_n_days(0)
-                start = self.get_n_days(-int(self.date_range) + 1)
+                start = self.get_n_days(-int(date_range) + 1)
 
 
 
 
             data, total = boss_panel_summary(start, end, pitcher, type,
             data, total = boss_panel_summary(start, end, pitcher, type,
@@ -147,3 +149,28 @@ class ImageRank(BaseHandler):
             book = arg.get('book')
             book = arg.get('book')
             data, total = image_rank(start, end, type,book, page, page_size, order_by, order)
             data, total = image_rank(start, end, type,book, page, page_size, order_by, order)
             self.write_json(data=data, total=total)
             self.write_json(data=data, total=total)
+
+
+
+
+"""广告排行榜"""
+class AdvertisementRank(BaseHandler):
+    def post(self):
+        if not self._au:
+            self.write_fial(msg='auth error')
+        else:
+            arg = self.get_args()
+            start = arg.get("start")
+            end = arg.get("end")
+            ad_id = arg.get("ad_id")
+            page = arg.get("page",1)
+            page_size = arg.get("page_size")
+            order_by = arg.get("order_by", 'dt')
+            order = arg.get("order", 'desc')
+            channel = arg.get("channel")
+            pitcher = arg.get("pitcher")
+            stage = arg.get("stage")
+            site =arg.get("site")
+            type =arg.get("type")
+            data, total,total_data = advertisement_rank(start, end, ad_id, channel, pitcher, stage,site,type,page,page_size,order,order_by)
+            self.write_json(data=data, total=total,total_data=total_data)

+ 3 - 1
urls.py

@@ -40,6 +40,8 @@ urls = [
 
 
     # web hook
     # web hook
     (r'/api/git_hook/data_center', DataCenerHook),
     (r'/api/git_hook/data_center', DataCenerHook),
-    (r'/api/git_hook/qc_web', QcWebHook)
+    (r'/api/git_hook/qc_web', QcWebHook),
 
 
+    #广告排行榜
+    (r'/data/advertisement/ad_rank',AdvertisementRank), #广告点击数
 ]
 ]