ck %!s(int64=4) %!d(string=hai) anos
pai
achega
93f99ac5f3
Modificáronse 3 ficheiros con 172 adicións e 3 borrados
  1. 21 1
      app/api_data/get_order.py
  2. 144 2
      app/api_data/order_util.py
  3. 7 0
      model/DateUtils.py

+ 21 - 1
app/api_data/get_order.py

@@ -97,10 +97,27 @@ def qiyue(start=None,end=None,new=None):
             executor.submit(get_qiyue_order_task, start, end, account)
     executor.shutdown(True)
 
+
+def wending(start=None,end=None,new=None):
+    if start is None:
+        start = end = du.getNow()
+
+    accounts = get_account("文鼎") if new is None else get_new_account('文鼎')
+    if len(accounts) == 0:
+        return
+    else:
+        print(f'文鼎有账号{len(accounts)}个')
+    for account in accounts:
+          get_wd_order_task(start, end, account)
+
+
+
+
 def hourly():
     yangguang()
     huasheng()
     qiyue()
+    wending()
 
 
 def daily():
@@ -112,6 +129,8 @@ def daily():
     # 每晚往前拉10天的数据
     yangguang(st, et)
     huasheng(st, et)
+    qiyue(st, et)
+    wending(st, et)
 
 
 
@@ -119,7 +138,8 @@ def daily():
 if __name__ == '__main__':
     # yangguang()
     # huasheng('2021-02-01','2021-02-19',new=1)
-    qiyue()
+    # qiyue()
+    wending()
 
 
     """要是只跑一个账号 把 get_yg_acccount() 里面的sql where 条件加上 id=xxx"""

+ 144 - 2
app/api_data/order_util.py

@@ -261,15 +261,157 @@ def get_qiyue_order_task(start, end, account):
 
     print(f'{stage} [{start}~{end}] 有订单{order_list.__len__()}')
     if order_list.__len__()>0:
-        save_qiyue_order(order_list)
+        save_order(order_list)
     return order_list
 
-def save_qiyue_order(order_list):
+def save_order(order_list):
     db.quchen_text.executeMany('replace into `order` values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)',order_list)
     print("入库成功")
 
 
 
+def get_wd_account_siteid_list(account):
+    url = 'https://bi.reading.163.com/dist-api/siteList'
+
+    consumerkey = account[0]
+    secretkey = account[1]
+    stage = account[3]
+    timestamp = int(time.time() * 1000)
+
+    siteid_params = {
+        "consumerkey": consumerkey,
+        'secretkey': secretkey,
+        'timestamp': timestamp,
+    }
+    sorted_data = sorted(siteid_params.items(), reverse=False)
+    s = ""
+    for k, v in sorted_data:
+        s = s + str(k) + "=" + str(v)
+    sign = md5(s).lower()
+    siteid_params['sign'] = sign
+
+    consumerkey = siteid_params['consumerkey']
+    timestamp = siteid_params['timestamp']
+    parameter = 'consumerkey=' + str(consumerkey) + '&timestamp=' + str(timestamp) + '&sign=' + str(sign)
+    get_url = url + "?" + parameter
+
+    while True:
+        r = requests.get(url=get_url)
+        if r.status_code == 200:
+            break
+
+    try:
+        id_key_list = r.json()['data']
+    except:
+        return []
+    mpid_list = []
+    try:
+        for id_key_val in id_key_list:
+            mpid = dict(id_key_val)["mpId"]
+            mpid_list.append(mpid)
+    except Exception as e:
+        print(stage, '站点查询返回结果:', r.json())
+    return mpid_list
+
+
+def get_wending_json_object(url,params):
+    params['timestamp'] = int(time.time()*1000)
+    sorted_data = sorted(params.items(),reverse = False)
+    s=""
+    for k,v in sorted_data:
+      s = s+str(k)+"="+str(v)
+    sign = md5(s).lower()
+    params['sign'] = sign
+
+    consumerkey = params['consumerkey']
+    secretkey = params['secretkey']
+    timestamp = params['timestamp']
+    siteid = params['siteid']
+    pageSize = params['pageSize']
+    starttime = params['starttime']
+    endtime = params['endtime']
+    page = params['page']
+    paystatus = params['paystatus']
+    ## +'&secretkey='+str(secretkey)
+    parameter = 'consumerkey='+str(consumerkey)+'&timestamp='+str(timestamp)+'&siteid='+str(siteid)+'&pageSize='+str(pageSize)\
+              +'&starttime='+str(starttime)+'&endtime='+str(endtime)+'&page='+str(page)+'&paystatus='+str(paystatus)+'&sign='+str(sign)
+    global get_url
+    get_url = url+"?"+parameter
+
+
+    while True:
+        r= requests.get(url=get_url)
+        if r.status_code==200:
+            break
+        else:
+            time.sleep(1)
+            print("请求连接出错,等待1s...")
+
+    response_result_json=r.json()
+    del params['sign']
+    return response_result_json
+
+def get_wd_order_task(start,end,account):
+    order_list = []
+    url = 'https://bi.reading.163.com/dist-api/rechargeList'
+    consumerkey = account[0]
+    secretkey = account[1]
+    siteid = account[2]
+    stage = account[3]
+    siteid_list = get_wd_account_siteid_list(account)
+    # print(siteid_list)
+    if len(siteid_list) == 0:
+        siteid_list.append(siteid)
+
+    starttime = du.date_str_to_str(start)+'0000'
+    endtime = du.date_str_to_str(end)+'2359'
+
+    for siteid in siteid_list:
+
+        page = 1
+        while True:
+            params = {
+                'consumerkey': consumerkey,
+                'secretkey': secretkey,
+                'timestamp': int(1601481600),
+                'siteid': siteid,
+                'pageSize': 1000,
+                'starttime': starttime,
+                'endtime': endtime,
+                'page': page,
+                'paystatus': 1}
+
+            response_result_json = get_wending_json_object(url, params)
+
+            order_item_list = response_result_json['data']['rechargeList']
+
+            for x in order_item_list:
+                createTime = time.strftime("%Y-%m-%d %H:%M:%S",
+                                           time.localtime(x['createTime'] // 1000))  ## 时间戳 》struct_time 》标准时间
+                uid_reg_time = time.strftime("%Y-%m-%d %H:%M:%S",
+                                             time.localtime(x['userRegisterTime'] // 1000))  ## 13位时间戳 》标准时间
+                y = (int(time.mktime(time.strptime(createTime[:10], '%Y-%m-%d'))),
+                     stage,
+                     '文鼎',
+                     x['wx_mpName'],
+                     x['wx_originalId'],
+                     x['userId'],
+                     createTime,
+                     uid_reg_time,
+                     x['money'] / 100,
+                     x['bookTitle'],
+                     x['ewTradeId'])
+                order_list.append(y)
+
+            if len(order_item_list) < 1000:
+                break
+            else:
+                page += 1
+    print(f"{stage} [{start}~{end}] 有订单 {order_list.__len__()}")
+    if order_list.__len__()>0:
+        save_order(order_list)
+
+
 
 if __name__ == '__main__':
     get_qiyue_order_task('2021-02-01','2021-02-19',['趣程15期','eyJpdiI6ImluVWxoRUl3VTR6QU5hamlYOFBvXC9BPT0iLCJ2YWx1ZSI6Ik5IZ0N4dm5GcmJ0Zklsd0tNZ1JVSVE9PSIsIm1hYyI6IjJjODUzMjdlZTc2ODI2ZjFmY2QyYmU5MGViYTkzOGU4MDEwZTIyODIxOTE4NzgzYTNhOGQ1YWM4OGJkMDAzMmIifQ=='])

+ 7 - 0
model/DateUtils.py

@@ -37,6 +37,11 @@ class DateUtils:
                 et=self.add_days(st, interval - 1)
 
 
+    def date_str_to_str(self,str,f1='%Y-%m-%d',f2='%Y%m%d'):
+        return datetime.strptime(str,f1).strftime(f2)
+
+
+
     def getDateLists(self, begin, end):
         """
         返回一个时间列表
@@ -305,6 +310,8 @@ class DateUtils:
 
 
 if __name__ == "__main__":
+
     ut = DateUtils()
+    print(ut.date_str_to_str('2021-01-01'))
     # end = ut.now.strftime('%Y-%m') + '-01 00:00:00'