yuewen.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import time
  2. from model.DateUtils import DateUtils
  3. from model.ComUtils import md5
  4. import requests
  5. from model.ComUtils import split_int
  6. from app.api_data.platform_order.order_util import save_order
  7. from model.DingTalkUtils import DingTalkUtils
  8. ut = DateUtils()
  9. def get_yuewen_order_task(st, et, account):
  10. """相同参数一分钟只能调用一次"""
  11. email = account[0]
  12. appsecert = account[1]
  13. url = 'https://open.yuewen.com/cpapi/wxRecharge/querychargelog'
  14. start_time = DateUtils.str_to_stamp(st)
  15. # 结束时间不能超过当前的时间戳
  16. if et == ut.getNow():
  17. end_time = DateUtils.str_to_stamp(ut.get_n_minutes_ago(), "%Y-%m-%d %H:%M:%S")
  18. else:
  19. end_time = DateUtils.str_to_stamp(et) + 86399
  20. for i in split_int(start_time,end_time,10000):
  21. start = i[0]
  22. end = i[1]
  23. print(ut.stamp_to_str(end))
  24. page = 1
  25. last_min_id = ''
  26. last_max_id = ''
  27. total_count = ''
  28. last_page = ''
  29. li = []
  30. while True:
  31. params = {
  32. 'email': email,
  33. 'timestamp': int(time.time()),
  34. 'start_time': start,
  35. 'end_time': end,
  36. 'page': page,
  37. 'version':1
  38. }
  39. if page > 1:
  40. params['last_min_id'] = last_min_id
  41. params['last_max_id'] = last_max_id
  42. params['total_count'] = total_count
  43. params['last_page'] = last_page
  44. sorted_data = sorted(params.items())
  45. str_params = ''
  46. for k, v in sorted_data:
  47. str_params = str_params + str(k) + str(v)
  48. sign = md5(appsecert + str_params).upper()
  49. # 放入签名
  50. params['sign'] = sign
  51. # print(params)
  52. response_result_json = requests.get(url=url, params=params).json()
  53. # print(len(response_result_json["data"]["list"]))
  54. if not response_result_json.get('data'):
  55. print(response_result_json)
  56. DingTalkUtils().send('阅文订单拉取失败')
  57. response_data = response_result_json['data']
  58. total_count = response_data['total_count']
  59. last_min_id = response_data['min_id']
  60. last_max_id = response_data['max_id']
  61. last_page = response_data['page']
  62. order_item_list = response_data['list']
  63. if len(order_item_list) == 0:
  64. break
  65. for i in order_item_list:
  66. order_time = i["order_time"]
  67. li.append((order_time[:10],
  68. '',
  69. '阅文',
  70. i['app_name'],
  71. i['channel_id'],
  72. i['openid'],
  73. i['order_time'],
  74. i['reg_time'],
  75. i['amount'],
  76. i['book_name'],
  77. i['order_id'],
  78. i['order_status']
  79. ))
  80. if len(order_item_list) < 100:
  81. break
  82. else:
  83. page += 1
  84. if len(li) > 0:
  85. print(f"{email} 有订单{len(li)}")
  86. save_order(li)
  87. if __name__ == '__main__':
  88. a = "guangzhouliuqi2@sina.com,10ce1dd6ccb330a82b73701d1e78f518"
  89. b = "mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee"
  90. {"version": "1", "app_secret": "74ca754515fa253c8ab790603cebc2ee", "email": "mqud82950@163.com"}
  91. a = 'mqud82950@163.com,74ca754515fa253c8ab790603cebc2ee'
  92. get_yuewen_order_task('2021-08-01', '2021-08-02', a.split(','))