huasheng_text.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Fri Aug 7 10:28:30 2020
  5. @author: chencong
  6. """
  7. import requests
  8. import hashlib
  9. import pandas as pd
  10. import time
  11. from urllib import parse
  12. import datetime
  13. import csv
  14. import math
  15. import pymysql
  16. from apscheduler.schedulers.blocking import BlockingScheduler
  17. def md5value(s):
  18. md5 = hashlib.md5()
  19. md5.update(s.encode("utf-8"))
  20. return md5.hexdigest()
  21. def get_huasheng_order(st,et):
  22. apikey_list = [
  23. ['4747764','f350d7edd89bb7f6170b970f071ecb36','趣程20期']]
  24. url = 'https://vip.rlcps.cn/api/getMerchants'
  25. for key in apikey_list: #获取每个vip账号下的channel_id
  26. apiKEY=key[0]
  27. apiSecurity=key[1]
  28. stage = key[2]
  29. timestamp = str(int(time.time()))
  30. sign = md5value(apiKEY+timestamp+apiSecurity).upper()
  31. data = {'apiKey':apiKEY,
  32. 'apiSecurity':apiSecurity,
  33. 'timestamp':timestamp,
  34. 'sign':sign
  35. }
  36. list0 = requests.post(url,data).json()
  37. t = ()
  38. for merchant in list0['data']:
  39. merchant_id = merchant['merchant_id']
  40. merchant_name = merchant['merchant_name']
  41. url1 = 'https://vip.rlcps.cn/api/orderList'
  42. start_time = st
  43. if merchant_name in ('墨霜书楼','秋水文阁','问天书楼'):
  44. for i in range((et-st)//86400):
  45. page = 1
  46. date = time.strftime("%Y-%m-%d",time.localtime(start_time))
  47. sign = md5value(apiKEY+date+str(merchant_id)+timestamp+apiSecurity).upper()
  48. data1 = {'apiKey':apiKEY,
  49. 'apiSecurity':apiSecurity,
  50. 'timestamp':timestamp,
  51. 'date':date,
  52. 'merchant_id':merchant_id,
  53. 'sign':sign,
  54. 'page':page}
  55. list1 = requests.post(url1,data1).json()
  56. if 'data' in list1.keys() and len(list1['data'])>0 :
  57. for i in range(int(math.ceil(list1['count']/500))):
  58. data2= {'apiKey':apiKEY,
  59. 'apiSecurity':apiSecurity,
  60. 'timestamp':timestamp,
  61. 'date':date,
  62. 'merchant_id':merchant_id,
  63. 'sign':sign,
  64. 'page':page}
  65. list2 = requests.post(url1,data2).json()
  66. for x in list2['data']:
  67. if x['order_status']==1:
  68. x['date'] = start_time
  69. x['channel'] = merchant_name
  70. x['channel_id'] = merchant_id
  71. x['platform'] = '花生'
  72. x['stage'] = stage
  73. x= sorted(x.items(), key=lambda item:item[0])
  74. x = dict(x)
  75. x = tuple(x.values())
  76. t = t+((x),)
  77. page=page+1
  78. else:
  79. print(list1)
  80. start_time = start_time+86400
  81. if len(t)>0:
  82. mysql_insert_huasheng_order(t)
  83. print(stage,merchant_name,len(t))
  84. def mysql_insert_huasheng_order(data):
  85. db = pymysql.connect('rm-bp1c9cj79872tx3aaro.mysql.rds.aliyuncs.com','superc','Cc719199895','quchen_text')
  86. cursor = db.cursor()
  87. sql = 'insert ignore into quchen_text.huasheng_text (amount,book_id,book_name,channel,channel_id,charge_count,date,join_at,openid,order_num,order_status,pay_at,platform,request_at,spread_name,stage,subscribe_at,trans_id,user_id,user_name) values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);'
  88. try:
  89. cursor.executemany(sql,data)
  90. db.commit()
  91. print('access insert huasheng_text',len(data))
  92. except:
  93. db.rollback()
  94. print('defeat')
  95. def start_huasheng_job():
  96. st_unix = int((time.time()+8*3600)//86400*86400-8*3600-86400)
  97. et_unix = int((time.time()+8*3600)//86400*86400-8*3600)
  98. # et_unix = et_unix-1
  99. get_huasheng_order(st_unix,et_unix)
  100. start_order_time = '2020-09-15 03:30:00'
  101. if __name__ == '__main__':
  102. scheduler = BlockingScheduler()
  103. scheduler.add_job(start_huasheng_job, 'interval',days=1,start_date=start_order_time)
  104. scheduler.start()