Bläddra i källkod

MOD:添加万读书城

cxyu 3 år sedan
förälder
incheckning
0bc2653ce0

+ 18 - 0
app/api_data/platform_order/get_order.py

@@ -8,6 +8,7 @@ from app.api_data.platform_order.yuewen import get_yuewen_order_task
 from app.api_data.platform_order.yuewen_fast_app import get_yuewen_fast_app_order_task
 from app.api_data.platform_order.yangguang import yangguang
 from app.api_data.platform_order.QiYue import get_qiyue_order_task
+from app.api_data.platform_order.wandu import get_wandu_order, get_all_channel
 import logging
 
 db = MysqlUtils()
@@ -53,6 +54,22 @@ def qiyue(start=None, end=None, new=None):
     logging.info('七悦订单数据拉取,结束')
 
 
+@DingTalkDecorators("万读")
+def wandu(start=None, end=None, new=None):
+    logging.info('万读订单数据拉取,开始')
+    if start is None:
+        start = end = du.getNow()
+    accounts = get_account("万读")
+    if len(accounts) == 0:
+        return
+    else:
+        logging.info(f'万读有账号{len(accounts)}个')
+    channel_info = get_all_channel()
+    for account in accounts:
+        get_wandu_order(start, end, account, channel_info)
+    logging.info('万读订单数据拉取,结束')
+
+
 @DingTalkDecorators("文鼎")
 def wending(start=None, end=None, new=None):
     logging.info('文鼎订单数据拉取,开始')
@@ -140,6 +157,7 @@ def yueweng(start=None, end=None):
     executor.shutdown()
     logging.info('阅文订单数据拉取,结束')
 
+
 @DingTalkDecorators("阅文快应用")
 def yueweng_fastapp(start=None, end=None):
     logging.info('阅文快应用订单数据拉取,开始')

+ 95 - 0
app/api_data/platform_order/wandu.py

@@ -0,0 +1,95 @@
+import time
+from model.ComUtils import md5, split_int
+import json
+from model.DateUtils import DateUtils
+from model.DataBaseUtils import MysqlUtils
+import requests
+from app.api_data.platform_order.order_util import save_order
+
+ut = DateUtils()
+db = MysqlUtils()
+
+
+def get_all_channel():
+    sql = '''
+    select name,wechat_account_id from advertiser_vx av 
+    '''
+    vx_list = db.quchen_text.get_data_list(sql)
+    res = {}
+    for channel, account_id in vx_list:
+        res[account_id] = channel
+    return res
+
+
+def get_wandu_order(st, et, account, channel_info):
+    print('get in ')
+    baseurl = 'http://vipzeus.666shuwu.cn/api/vipoutput/getorder'
+    api_secret, uid, stage = account
+    print(account)
+    start_time = DateUtils.str_to_stamp(st)
+    # 结束时间不能超过当前的时间戳
+    if et == ut.getNow():
+        end_time = DateUtils.str_to_stamp(ut.get_n_minutes_ago(), "%Y-%m-%d %H:%M:%S")
+    else:
+        end_time = DateUtils.str_to_stamp(et) + 86399
+    params = {}
+    page = 1
+    li = []
+
+    while True:
+        # 时间
+        params['starttime'] = start_time
+        params['endtime'] = end_time
+        # 基础信息
+        params['uid'] = uid
+        timestamp = int(time.time())
+        params['timestamp'] = timestamp
+        sign = md5(uid + api_secret + str(timestamp))
+        print(sign)
+        params['sign'] = sign
+        params['page'] = page
+        rsp = requests.get(baseurl, params=params)
+        print(rsp.text)
+        print(json.dumps(rsp.json(), ensure_ascii=False))
+
+        print(rsp.text)
+        rsp_json = rsp.json()
+        page = int(rsp_json['data']['page'])
+        page_size = int(rsp_json['data']['count_page'])
+        # 存入数据
+        rsp_info = rsp_json['data']['list']
+        for _ in rsp_info:
+            struct_time = time.localtime(_['ctime'])  # 得到结构化时间格式
+            order_time = time.strftime("%Y-%m-%d", struct_time)
+            order_time_detail = time.strftime('%Y-%m-%d %H:%M:%S', struct_time)
+
+            struct_time_reg = time.localtime(_['regtime'])  # 得到结构化时间格式
+            reg_time_detail = time.strftime('%Y-%m-%d %H:%M:%S', struct_time_reg)
+            # print(_['status'],type(_['status']))
+            order_status = 2 if _['status'] == 3 else 1
+
+            li.append((order_time,
+                       stage,
+                       '万读',
+                       channel_info[_['appid']],
+                       0,
+                       _['openid'],
+                       order_time_detail,
+                       reg_time_detail,
+                       _['amount'],
+                       '',
+                       _['orderno'],
+                       order_status
+
+                       ))
+            # 外出
+        if page > page_size or page == page_size:
+            break
+        page = page + 1
+    save_order(li)
+
+
+if __name__ == '__main__':
+    channel_info = get_all_channel()
+    get_wandu_order('2019-08-01', '2021-10-20', '7ffedfa36431ca09c231bbdc8ca12217,6121,趣程43期', channel_info)
+    # get_yuewen_order_task('2021-08-01', '2021-08-02', a.split(','))

+ 9 - 1
app/crontab_task/task.py

@@ -20,6 +20,7 @@ def hourly():
     t10 = threading.Thread(target=guofeng)
     t11 = threading.Thread(target=old_cost_hourly)
     t12 = threading.Thread(target=yueweng_fastapp)
+    t13 = threading.Thread(target=wandu)
     t1.start()
     t1.join()
     t2.start()
@@ -55,6 +56,8 @@ def hourly():
     t12.start()
     t12.join()
 
+    t13.start()
+    t13.join()
 
 def daily():
     st = du.get_n_days(-10)
@@ -70,8 +73,11 @@ def daily():
     t8 = threading.Thread(target=yangguang, args=(st, et))
     t9 = threading.Thread(target=youshuge, args=(st, et))
     t10 = threading.Thread(target=guofeng, args=(st, et))
-    t11 = threading.Thread(target=old_cost_daily, args=())
     t12 = threading.Thread(target=yueweng_fastapp, args=(st, et))
+    t13 = threading.Thread(target=wandu, args=(st, et))
+
+    t11 = threading.Thread(target=old_cost_daily, args=())
+
     t1.start()
     t1.join()
     t2.start()
@@ -96,6 +102,8 @@ def daily():
     t11.join()
     t12.start()
     t12.join()
+    t13.start()
+    t13.join()
     # yangguang.get_channel_info()