|  | @@ -1,7 +1,10 @@
 | 
	
		
			
				|  |  | -from app.api_data.platform_order.order_util import *
 | 
	
		
			
				|  |  |  from model.DataBaseUtils import MysqlUtils
 | 
	
		
			
				|  |  |  from model.DingTalkUtils import DingTalkDecorators,DingTalkUtils
 | 
	
		
			
				|  |  |  from model.DateUtils import DateUtils
 | 
	
		
			
				|  |  | +from model import ComUtils
 | 
	
		
			
				|  |  | +import time
 | 
	
		
			
				|  |  | +import json
 | 
	
		
			
				|  |  | +import requests
 | 
	
		
			
				|  |  |  db = MysqlUtils()
 | 
	
		
			
				|  |  |  du = DateUtils()
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -34,7 +37,49 @@ def yangguang(start=None, end=None):
 | 
	
		
			
				|  |  |          get_yg_data(stage, vip_id, client_id, token, start, end)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      print(check())
 | 
	
		
			
				|  |  | -    parse_data()
 | 
	
		
			
				|  |  | +    parse_order_data()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def get_yg_data(stage,vip_id,client_id,token,start,end):
 | 
	
		
			
				|  |  | +    url = "https://data.yifengaf.cn:443/channeldata/data/orders/list"
 | 
	
		
			
				|  |  | +    nonce=ComUtils.get_random_str()
 | 
	
		
			
				|  |  | +    timestamp=int(time.time())
 | 
	
		
			
				|  |  | +    signaure =ComUtils.sha1(str(token) + str(timestamp) + str(client_id) + str(nonce))
 | 
	
		
			
				|  |  | +    params = {
 | 
	
		
			
				|  |  | +        "client_id": client_id,
 | 
	
		
			
				|  |  | +        "token": token,
 | 
	
		
			
				|  |  | +        "nonce": nonce,
 | 
	
		
			
				|  |  | +        "timestamp": timestamp,
 | 
	
		
			
				|  |  | +        "signaure": signaure,
 | 
	
		
			
				|  |  | +        "vip_id": vip_id,
 | 
	
		
			
				|  |  | +        "start_time":start,   # %Y-%m-%d %H:%i:%s:
 | 
	
		
			
				|  |  | +        "end_time":end
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    headers={"Content-Type":"application/json"}
 | 
	
		
			
				|  |  | +    r=requests.post(url=url,data=json.dumps(params),headers=headers)
 | 
	
		
			
				|  |  | +    print(r.text)
 | 
	
		
			
				|  |  | +    task_id = json.loads(r.text).get("data").get("task_id")
 | 
	
		
			
				|  |  | +    db.quchen_text.execute(f"replace into yangguang_path(vip_id,task_id,stage,type) values ('{vip_id}','{task_id}','{stage}','order')")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def get_yg_vip_channel(stage, vip_id, client_id, token):
 | 
	
		
			
				|  |  | +    url = "https://data.yifengaf.cn:443/channeldata/data/account/list"
 | 
	
		
			
				|  |  | +    nonce = ComUtils.get_random_str()
 | 
	
		
			
				|  |  | +    timestamp = int(time.time())
 | 
	
		
			
				|  |  | +    signaure = ComUtils.sha1(str(token) + str(timestamp) + str(client_id) + str(nonce))
 | 
	
		
			
				|  |  | +    params = {
 | 
	
		
			
				|  |  | +        "client_id": client_id,
 | 
	
		
			
				|  |  | +        "token": token,
 | 
	
		
			
				|  |  | +        "nonce": nonce,
 | 
	
		
			
				|  |  | +        "timestamp": timestamp,
 | 
	
		
			
				|  |  | +        "signaure": signaure,
 | 
	
		
			
				|  |  | +        "vip_id": vip_id,
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    headers = {"Content-Type": "application/json"}
 | 
	
		
			
				|  |  | +    r = requests.post(url=url, data=json.dumps(params), headers=headers)
 | 
	
		
			
				|  |  | +    print(r.text)
 | 
	
		
			
				|  |  | +    task_id = json.loads(r.text).get("data").get("task_id")
 | 
	
		
			
				|  |  | +    db.quchen_text.execute(
 | 
	
		
			
				|  |  | +        f"replace into yangguang_path(vip_id,task_id,stage,type) values ('{vip_id}','{task_id}','{stage}','channel')")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def get_channel_info():
 | 
	
	
		
			
				|  | @@ -48,7 +93,7 @@ def get_channel_info():
 | 
	
		
			
				|  |  |          get_yg_vip_channel(stage, vip_id, client_id, token)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def parse_data():
 | 
	
		
			
				|  |  | +def parse_order_data():
 | 
	
		
			
				|  |  |      print(111)
 | 
	
		
			
				|  |  |      accounts = get_account("阳光")
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -56,7 +101,74 @@ def parse_data():
 | 
	
		
			
				|  |  |          # print(i)
 | 
	
		
			
				|  |  |          vip_id = i[1]
 | 
	
		
			
				|  |  |          stage = i[0]
 | 
	
		
			
				|  |  | -        parse_yg_data(vip_id, stage)
 | 
	
		
			
				|  |  | +        data = parse_order(vip_id, stage)
 | 
	
		
			
				|  |  | +        save_data(data)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def parse_order(vip_id,stage):
 | 
	
		
			
				|  |  | +    url = db.quchen_text.getOne(f"select path from yangguang_path where type='channel' and vip_id={vip_id} ")
 | 
	
		
			
				|  |  | +    r = requests.get(url).text
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    channel_di={}
 | 
	
		
			
				|  |  | +    a = r.split('}')
 | 
	
		
			
				|  |  | +    for i in a[:-1]:
 | 
	
		
			
				|  |  | +        if i[-1] != '}':
 | 
	
		
			
				|  |  | +            b=json.loads(i + "}", strict=False)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            b=json.loads(i, strict=False)
 | 
	
		
			
				|  |  | +        channel_di[b["channel_id"]]=(b["wx_nickname"],b['app_id'])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # print(channel_di)
 | 
	
		
			
				|  |  | +    print(f'{stage} 有channel数:{len(channel_di)}')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    info=db.quchen_text.getData(f"select stage,path from yangguang_path where type='order' and vip_id={vip_id}")
 | 
	
		
			
				|  |  | +    stage=info[0][0]
 | 
	
		
			
				|  |  | +    path=info[0][1]
 | 
	
		
			
				|  |  | +    text=requests.get(path).text.replace('"referral_url":,','')
 | 
	
		
			
				|  |  | +    # print(text)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    insert_data=[]
 | 
	
		
			
				|  |  | +    for j in text.split("}")[:-1]:
 | 
	
		
			
				|  |  | +        if j[-1] != '}':
 | 
	
		
			
				|  |  | +            j=j+'}'
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            di=json.loads(j, strict=False)
 | 
	
		
			
				|  |  | +        except Exception as e:
 | 
	
		
			
				|  |  | +            print(j)
 | 
	
		
			
				|  |  | +            print(e)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        insert_data.append((
 | 
	
		
			
				|  |  | +            di["create_time"][:10],
 | 
	
		
			
				|  |  | +            stage,
 | 
	
		
			
				|  |  | +            '阳光',
 | 
	
		
			
				|  |  | +            channel_di[di['channel_id']][0],
 | 
	
		
			
				|  |  | +            di['channel_id'],
 | 
	
		
			
				|  |  | +            di['openid'],
 | 
	
		
			
				|  |  | +            di['create_time'],
 | 
	
		
			
				|  |  | +            di['user_createtime'],
 | 
	
		
			
				|  |  | +            di['money'],
 | 
	
		
			
				|  |  | +            di.get('book_name'),
 | 
	
		
			
				|  |  | +            di['merchant_id'],
 | 
	
		
			
				|  |  | +            2 if di['state']=="完成" else 1,
 | 
	
		
			
				|  |  | +            di['user_id'],
 | 
	
		
			
				|  |  | +            channel_di[di['channel_id']][1],
 | 
	
		
			
				|  |  | +            1 if di['type'] == '书币充值' else 2,
 | 
	
		
			
				|  |  | +            di['merchant_id'],
 | 
	
		
			
				|  |  | +            di['transaction_id']
 | 
	
		
			
				|  |  | +        ))
 | 
	
		
			
				|  |  | +    # print(insert_data)
 | 
	
		
			
				|  |  | +    # exit(0)
 | 
	
		
			
				|  |  | +    print("订单数:"+ str(insert_data.__len__()))
 | 
	
		
			
				|  |  | +    save_data(insert_data)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +def save_data(data):
 | 
	
		
			
				|  |  | +    sql = """replace into ods_order(date,stage,platform,channel,channel_id,user_id,order_time,
 | 
	
		
			
				|  |  | +    reg_time,amount,from_novel,order_id,status,platform_user_id,wechat_app_id,order_type,
 | 
	
		
			
				|  |  | +    trade_no,transaction_no) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) """
 | 
	
		
			
				|  |  | +    # print(sql)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    db.quchen_text.executeMany(sql,data)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def check():
 | 
	
	
		
			
				|  | @@ -85,20 +197,59 @@ def get_account(plactform, id=None):
 | 
	
		
			
				|  |  |          new_data.append(i[0].replace('\n', '').split(","))
 | 
	
		
			
				|  |  |      return new_data
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +def get_yg_user_info():
 | 
	
		
			
				|  |  | +    """获取阳光的用户信息"""
 | 
	
		
			
				|  |  | +    accounts = get_account("阳光")
 | 
	
		
			
				|  |  | +    # if start:
 | 
	
		
			
				|  |  | +    #     start = start + ' 00:00:00'
 | 
	
		
			
				|  |  | +    #     end = end + ' 23:59:59'
 | 
	
		
			
				|  |  | +    # else:
 | 
	
		
			
				|  |  | +    #     start = du.getTodayOrYestoday() + ' 00:00:00'
 | 
	
		
			
				|  |  | +    #     end = du.get_n_hours_ago(0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    client_id = 10008097
 | 
	
		
			
				|  |  | +    token = '2xa1d55tTPBjeEA8Ho'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if accounts.__len__() == 0:
 | 
	
		
			
				|  |  | +        return
 | 
	
		
			
				|  |  | +    else:
 | 
	
		
			
				|  |  | +        print(f"阳光账号数:{accounts.__len__()}")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    for i in accounts:
 | 
	
		
			
				|  |  | +        stage = i[0]
 | 
	
		
			
				|  |  | +        vip_id = i[1]
 | 
	
		
			
				|  |  | +        print(vip_id)
 | 
	
		
			
				|  |  | +        # get_yg_vip_channel(stage, vip_id, client_id, token)
 | 
	
		
			
				|  |  | +        get_yg_data(stage, vip_id, client_id, token, start, end)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    print(check())
 | 
	
		
			
				|  |  | +    # parse_data()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  def daily_yg():
 | 
	
		
			
				|  |  |      st = du.get_n_days(-10)
 | 
	
		
			
				|  |  |      et = du.get_n_days(-1)
 | 
	
		
			
				|  |  |      yangguang(st, et)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  if __name__ == '__main__':
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      # get_channel_info()
 | 
	
		
			
				|  |  |      # exit(0)
 | 
	
		
			
				|  |  |      # yangguang('2020-09-20','2020-10-01')
 | 
	
		
			
				|  |  | -    # exit(0)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    for i in du.split_date2('2020-06-28','2020-11-03',30):
 | 
	
		
			
				|  |  | -        print(i)
 | 
	
		
			
				|  |  | -        yangguang(i[0], i[1])
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    # # exit(0)
 | 
	
		
			
				|  |  | +    # yangguang('2021-05-28','2021-05-28')
 | 
	
		
			
				|  |  | +    # daily_yg()
 | 
	
		
			
				|  |  | +    # for i in du.split_date2('2020-06-28','2020-11-03',30):
 | 
	
		
			
				|  |  | +    #     print(i)
 | 
	
		
			
				|  |  | +    #     yangguang(i[0], i[1])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # parse_order_data()
 | 
	
		
			
				|  |  | +    yangguang()
 | 
	
		
			
				|  |  |  
 |