import time
from model.DateUtils import DateUtils
from model.ComUtils import md5
import requests
from model.ComUtils import split_int
from app.api_data.platform_order.order_util import save_order
from model.DingTalkUtils import DingTalkUtils
ut = DateUtils()

def get_yuewen_order_task(st, et, account):
    """相同参数一分钟只能调用一次"""
    email = account[0]
    appsecert = account[1]

    url = 'https://open.yuewen.com/cpapi/wxRecharge/querychargelog'

    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


    for i in split_int(start_time,end_time,10000):
        start = i[0]
        end = i[1]
        print(ut.stamp_to_str(end))


        page = 1
        last_min_id = ''
        last_max_id = ''
        total_count = ''
        last_page = ''



        li = []
        while True:

            params = {
                'email': email,
                'timestamp': int(time.time()),
                'start_time': start,
                'end_time': end,
                'page': page,
                'version':1
            }

            if page > 1:
                params['last_min_id'] = last_min_id
                params['last_max_id'] = last_max_id
                params['total_count'] = total_count
                params['last_page'] = last_page

            sorted_data = sorted(params.items())
            str_params = ''
            for k, v in sorted_data:
                str_params = str_params + str(k) + str(v)
            sign = md5(appsecert + str_params).upper()

            # 放入签名
            params['sign'] = sign
            # print(params)
            response_result_json = requests.get(url=url, params=params).json()

            # print(len(response_result_json["data"]["list"]))
            if not response_result_json.get('data'):
                print(response_result_json)
                DingTalkUtils().send('阅文订单拉取失败')


            response_data = response_result_json['data']
            total_count = response_data['total_count']


            last_min_id = response_data['min_id']
            last_max_id = response_data['max_id']
            last_page = response_data['page']
            order_item_list = response_data['list']

            if len(order_item_list) == 0:
                break

            for i in order_item_list:
                order_time = i["order_time"]
                li.append((order_time[:10],
                           '',
                           '阅文',
                           i['app_name'],
                           i['channel_id'],
                           i['openid'],
                           i['order_time'],
                           i['reg_time'],
                           i['amount'],
                           i['book_name'],
                           i['order_id'],
                           i['order_status']

                ))

            if len(order_item_list) < 100:
                break
            else:
                page += 1

        if len(li) > 0:
            print(f"{email} 有订单{len(li)}")
            save_order(li)



if __name__ == '__main__':
    a = "guangzhouliuqi2@sina.com,10ce1dd6ccb330a82b73701d1e78f518"
    b = "mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee"
    {"version": "1", "app_secret": "74ca754515fa253c8ab790603cebc2ee", "email": "mqud82950@163.com"}
    a = 'mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee'
    get_yuewen_order_task('2021-08-01', '2021-08-02', a.split(','))