PlatformClipOrderList.py 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. # Author renyupeng
  2. # coding=utf-8
  3. # @Time : 2024/1/4 上午9:55
  4. # @Site :
  5. # @File : PlatformClipOrderList.py
  6. # @Software: PyCharm
  7. # @contact: renyupeng@c-top.com.cn
  8. # @Tel 1501435553
  9. import datetime
  10. import json
  11. from math import ceil
  12. from time import sleep
  13. import requests
  14. from utils.mysql_helper import batch_insertPro
  15. from utils.mysql_utils_pro import MysqlProUtils
  16. from utils.send_wechat_msg import SendWechatMsg
  17. class PlatformClipOrderList:
  18. def __int__(self):
  19. self.conn = MysqlProUtils()
  20. @staticmethod
  21. def HandlerRequest(startDate, endDate, cookie, name):
  22. url = "https://cps.kwaixiaodian.com/gateway/distribute/platform/clip/order/list?offset=0&limit=1&searchDelivered=0&orderCreateTimeStart={start_date}&orderCreateTimeEnd={end_date}&status=0".format(
  23. start_date=startDate, end_date=endDate)
  24. print(url)
  25. payload = {}
  26. headers = {
  27. 'Cookie': cookie,
  28. 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
  29. 'Accept': '*/*',
  30. 'Host': 'cps.kwaixiaodian.com',
  31. 'Connection': 'keep-alive'
  32. }
  33. response = requests.request("GET", url, headers=headers, data=payload)
  34. data = json.loads(response.text)["data"]
  35. print(data)
  36. total_num = data["total"]
  37. page = ceil(total_num / 200)
  38. for i in range(page+1):
  39. if i != 0:
  40. print(i)
  41. url = "https://cps.kwaixiaodian.com/gateway/distribute/platform/clip/order/list?offset={offset}&limit={total_num}&searchDelivered=0&orderCreateTimeStart={start_date}&orderCreateTimeEnd={end_date}&status=0".format(
  42. start_date=startDate, end_date=endDate, total_num=200 * i, offset=200 * (i - 1))
  43. print(url,'-------')
  44. rep = requests.request("GET", url, headers=headers, data=payload)
  45. if json.loads(rep.text)["result"] != 1:
  46. SendWechatMsg().send_data(json.loads(rep.text))
  47. continue
  48. else:
  49. total_list = json.loads(rep.text)["data"]["list"]
  50. dataInfoList = []
  51. try:
  52. for dataInfo in total_list:
  53. oid = dataInfo["oid"]
  54. order_status = dataInfo["cpsOrderStatus"]
  55. order_create_time = dataInfo["orderCreateTime"]
  56. send_status = dataInfo["sendStatus"]
  57. settlement_biz_type = dataInfo["settlementBizType"]
  58. settlement_biz_type_desc = dataInfo["settlementBizTypeDesc"]
  59. send_time = dataInfo["sendTime"]
  60. recv_time = dataInfo["recvTime"]
  61. order_amount = dataInfo["orderTradeAmount"]
  62. regimental_promotion_rate = None
  63. share_rate = dataInfo["shareRate"]
  64. base_amount = dataInfo["baseAmount"]
  65. clip_user_id = dataInfo["clipUserId"]
  66. mcn_settlement_amount = dataInfo["settlementAmount"]
  67. for item in dataInfo["itemList"]:
  68. item_id = item["itemId"]
  69. item_title = item["itemTitle"]
  70. reserve_price = item["price"]
  71. image_url = item["itemPicUrl"]
  72. seller_id = item["sellerId"]
  73. promotion_id = None
  74. promotion_nick_name = None
  75. clip_nick_name = name
  76. activity_id = None
  77. pay_amount = item["paymentFee"]
  78. service_amount = item["serviceAmount"]
  79. commission_rate = item["commissionRate"]
  80. regimental_promotion_amount = None
  81. total_regimental_settle_amount = None
  82. mcn_promotion_amount = item["estimatedIncome"]
  83. stat_date = datetime.datetime.fromtimestamp(order_create_time / 1000).strftime("%Y%m%d")
  84. stat_hour = datetime.datetime.fromtimestamp(order_create_time / 1000).strftime("%H")
  85. account_type = 2
  86. dataItem = {
  87. "oid": oid,
  88. "order_status": order_status,
  89. "order_create_time": order_create_time,
  90. "send_status": send_status,
  91. "settlement_biz_type": settlement_biz_type,
  92. "settlement_biz_type_desc": settlement_biz_type_desc,
  93. "send_time": send_time,
  94. "recv_time": recv_time,
  95. "order_amount": order_amount,
  96. "regimental_promotion_rate": regimental_promotion_rate,
  97. "share_rate": share_rate,
  98. "base_amount": base_amount,
  99. "item_id": item_id,
  100. "item_title": item_title,
  101. "reserve_price": reserve_price,
  102. "image_url": image_url,
  103. "seller_id": seller_id,
  104. "promotion_id": promotion_id,
  105. "promotion_nick_name": promotion_nick_name,
  106. "clip_user_id": clip_user_id,
  107. "clip_nick_name": clip_nick_name,
  108. "activity_id": activity_id,
  109. "pay_amount": pay_amount,
  110. "service_amount": service_amount,
  111. "commission_rate": commission_rate,
  112. "regimental_promotion_amount": regimental_promotion_amount,
  113. "total_regimental_settle_amount": total_regimental_settle_amount,
  114. "mcn_promotion_amount": mcn_promotion_amount,
  115. "mcn_settlement_amount": mcn_settlement_amount,
  116. "stat_date": stat_date,
  117. "stat_hour": stat_hour,
  118. "account_type": account_type
  119. }
  120. # print(dataItem)
  121. dataInfoList.append(dataItem)
  122. print(dataInfoList)
  123. batch_insertPro(item_list=dataInfoList, table_name='jy_order_list')
  124. sleep(3)
  125. except Exception as e:
  126. print(e)