Browse Source

优化花生订单

ck 4 năm trước cách đây
mục cha
commit
935617b38b
2 tập tin đã thay đổi với 56 bổ sung48 xóa
  1. 8 14
      app/api_data/get_order.py
  2. 48 34
      app/api_data/order_util.py

+ 8 - 14
app/api_data/get_order.py

@@ -67,27 +67,20 @@ def yangguang(start=None, end=None, new=None):
         parse_yg_data(vip_id, stage)
 
 
-def huasheng(start=None, end=None, new=None):
+def huasheng(start=None, end=None):
     if start is None:
-        start = end = du.getTodayOrYestoday()
+        start = end = du.getNow()
 
     executor = ThreadPoolExecutor(max_workers=5)
-    accounts = get_account("花生") if new is None else get_new_account('花生')
+    accounts = get_account("花生")
     if len(accounts) == 0:
         return
     else:
         print(f'花生有账号{len(accounts)}个')
-    li = []
+
     for account in accounts:
-        channel_data = get_hs_channel(account)
-        if not channel_data:
-            continue
-        else:
-            print(f"花生账号:{account[2]} 有channel{len(channel_data)}个")
-        for merchant in channel_data:
-            executor.submit(get_huasheng_order_task, start, end, account, merchant, li)
-    executor.shutdown(True)
-    save_hs_data(li)
+        executor.submit(get_hs_order_task, start, end, account)
+    executor.shutdown()
 
 
 def qiyue(start=None, end=None, new=None):
@@ -239,4 +232,5 @@ if __name__ == '__main__':
 
     # zhangzhongyun('2021-04-01', '2021-04-21')
     # youshuge()
-    yueweng()
+    # yueweng()
+    huasheng()

+ 48 - 34
app/api_data/order_util.py

@@ -107,7 +107,7 @@ def parse_yg_data(vip_id,stage):
                            "user_id,order_time,reg_time,amount,from_novel,order_id) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",tuple(insert_data))
 
 
-def get_hs_channel(account):
+def get_hs_order_task(start, end, account):
     url = 'https://vip.rlcps.cn/api/getMerchants'
     apiKey = str(account[0])
     apiSecurity = account[1]
@@ -122,11 +122,25 @@ def get_hs_channel(account):
     response_result_json = requests.post(url, params).json()
     if 'data' not in response_result_json.keys():
         print('花生账号【{apiKey}】本次请求数据异常,响应报文【{result}】'.format(apiKey=apiKey, result=response_result_json))
-        return
-    return response_result_json['data']
 
-def get_huasheng_order_task(start,end, account, merchant,li):
-    count=0
+    channel_data = response_result_json['data']
+
+    print(f"花生账号:{account[2]} 有channel{len(channel_data)}个:{str([i['merchant_name'] for i in channel_data])}")
+
+    li = []
+    for merchant in channel_data:
+        get_huasheng_order(start, end, account, merchant, li)
+
+    if len(li) > 0:
+        print(f"花生账号:{account[2]} 有order{len(li)}个")
+        # print(li)
+        db.quchen_text.executeMany("replace into ods_order values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",li)
+
+
+
+
+def get_huasheng_order(start,end, account, merchant,li):
+
     apiKey = str(account[0])
     apiSecurity = account[1]
     stage = account[2]
@@ -154,6 +168,7 @@ def get_huasheng_order_task(start,end, account, merchant,li):
             }
             r = requests.post(order_url, order_params)
             # print(r.text)
+
             response_result_json = r.json()
 
             if 'data' not in response_result_json.keys():
@@ -165,39 +180,36 @@ def get_huasheng_order_task(start,end, account, merchant,li):
             if len(response_result_json['data']) == 0:
                 break
 
-            total_count = response_result_json['count']
             order_item_list = response_result_json['data']
+            if len(order_item_list) == 0:
+                break
 
-            for order_item in order_item_list:
-                if order_item['order_status'] == 1:  # 1为已支付
-                    order = {}
-                    order['user_id'] = order_item['openid']
-                    order['order_id'] = order_item['trans_id']
-                    order['order_time'] = order_item['pay_at']
-                    order['reg_time'] = order_item['join_at']
-                    order['channel'] = merchant_name
-                    order['channel_id'] = merchant_id
-                    order['platform'] = '花生'
-                    order['stage'] = stage
-                    order['from_novel'] = order_item['book_name']
-                    order['amount'] = order_item['amount']
-                    order["date"]=int(time.mktime(time.strptime(order_item['pay_at'][:10],"%Y-%m-%d")))
-                    order = sorted(order.items(), key=lambda item: item[0])
-                    order = dict(order)
-                    order = tuple(order.values())
-                    if order.__len__()>0:
-                        li.append(order)
-                    count+=1
-
-            if int(page) >= math.ceil(total_count / int(limit)):
+            for i in order_item_list:
+                li.append(
+                    (i['request_at'][:10],
+                     stage,
+                     '花生',
+                     merchant_name,
+                     merchant_id,
+                     i['openid'],
+                     i['request_at'],
+                     i['join_at'],
+                     i['amount'],
+                     i['book_name'],
+                     i['trans_id'] if i['trans_id'] != '' else i['order_num'],
+                     2 if i['order_status'] == 1 else 1
+                     )
+                )
+
+            if len(order_item_list) < limit:
                 break
-            page = page + 1
-    print(f"[{merchant_name}] 订单数: {count}")
+            else:
+                page = page + 1
+
 
 
 def save_hs_data(data):
-    sql = 'replace INTO quchen_text.`order` ' \
-          '(amount,channel,channel_id,date,from_novel,order_id,order_time,platform,reg_time,stage,user_id)' \
+    sql = 'replace INTO quchen_text.ods_order ' \
           ' VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);'
     db.quchen_text.executeMany(sql,data)
 
@@ -576,7 +588,9 @@ def get_zzy_channel_order(start, end, account, channel):
 
 
 
+if __name__ == '__main__':
+    account = "347347942,e0c361b54a35a55c2b6296b5a80867ce,趣程小程序"
+    get_hs_order_task('2021-05-01','2021-05-07',account.split(","))
 
 
-if __name__ == '__main__':
-    get_qiyue_order_task('2021-02-01','2021-02-19',['趣程15期','eyJpdiI6ImluVWxoRUl3VTR6QU5hamlYOFBvXC9BPT0iLCJ2YWx1ZSI6Ik5IZ0N4dm5GcmJ0Zklsd0tNZ1JVSVE9PSIsIm1hYyI6IjJjODUzMjdlZTc2ODI2ZjFmY2QyYmU5MGViYTkzOGU4MDEwZTIyODIxOTE4NzgzYTNhOGQ1YWM4OGJkMDAzMmIifQ=='])
+    # get_qiyue_order_task('2021-02-01','2021-02-19',['趣程15期','eyJpdiI6ImluVWxoRUl3VTR6QU5hamlYOFBvXC9BPT0iLCJ2YWx1ZSI6Ik5IZ0N4dm5GcmJ0Zklsd0tNZ1JVSVE9PSIsIm1hYyI6IjJjODUzMjdlZTc2ODI2ZjFmY2QyYmU5MGViYTkzOGU4MDEwZTIyODIxOTE4NzgzYTNhOGQ1YWM4OGJkMDAzMmIifQ=='])