supplyChainsGoodsInfoControl.py 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. # -*- codeing = utf-8 -*-
  2. # @Time : 2023/2/28 15:51
  3. # @Author : Clown
  4. # @File : supplyChainsGoodsInfoControl.py
  5. # @Software : PyCharm
  6. import pymysql
  7. import requests
  8. import json
  9. def getToken():
  10. url = 'https://cloud.xc-fintech.com/api/v1/login'
  11. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}
  12. json_params = {"employee_relation_id":"7008629262119084032"}
  13. resp = requests.post(url,headers=headers,json=json_params).json()
  14. # print(json.dumps(resp,ensure_ascii=False))
  15. return resp['app_id'],resp['token']
  16. def selectGoodInfoByGoodNo(app_id,token,goods_no):
  17. url = 'https://cloud.xc-fintech.com/api/v1/good_centre/goods'
  18. headers = {
  19. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
  20. 'Authorization': token}
  21. json_params = {"app_id": app_id,
  22. "sell_type": "2",
  23. "goods_no": goods_no,
  24. "create_time_order": "desc",
  25. "current_page": 1,
  26. "page_size": 10}
  27. resp = requests.post (url, headers=headers, json=json_params).json ()
  28. good_id = resp['detail'][0]['goods_id']
  29. publish_state = resp['detail'][0]['publish_state'] + 1
  30. try:
  31. group_ids = resp['detail'][0]['group_ids']
  32. except:
  33. group_ids = ''
  34. dict_out = {'goods_id': good_id,
  35. 'publish_state': publish_state,
  36. 'group_ids': group_ids}
  37. return dict_out
  38. def selectGoodInfoByGoodId(app_id,token,goods_id):
  39. url = 'https://cloud.xc-fintech.com/api/v1/goods_centre/goods/' + goods_id
  40. headers = {
  41. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
  42. 'Authorization': token,
  43. 'Host': 'cloud.xc-fintech.com',
  44. 'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"',
  45. 'Content-Type': 'application/json; charset=UTF-8'}
  46. json_params = {"app_id": app_id}
  47. resp = requests.post (url, headers=headers, json=json_params).json()
  48. dict_out = {'goods_no':resp['goods_no'],
  49. 'goods_id':resp['goods_id'],
  50. 'name':resp['name'],
  51. 'classify_name':resp['classify_name'],
  52. 'minunit': '',
  53. 'rela_num': 0,
  54. 'unit1': '',
  55. 'relanum1': 0,
  56. 'unit2': '',
  57. 'relanum2': 0}
  58. spu_unit_list = resp['spu_unit_list']
  59. memo = ''
  60. no = 1
  61. for spu_unit in spu_unit_list:
  62. if spu_unit['is_min_unit']:
  63. dict_out['minunit'] = spu_unit['unit']
  64. dict_out['rela_num'] = spu_unit['rela_num']
  65. else:
  66. dict_out[f'unit{no}'] = spu_unit['unit']
  67. dict_out[f'relanum{no}'] = spu_unit['rela_num']
  68. memo =f'【{dict_out[f"relanum{no}"]}{dict_out["minunit"]}=1{dict_out[f"unit{no}"]}】'+memo
  69. no += 1
  70. dict_out['memo'] = memo
  71. return dict_out
  72. def searchGoodsPriceInfo(app_id,token,goods_no,group_ids,min_unit):
  73. dict_out = {'minunit_price':'',
  74. 'unit1_price':'',
  75. 'unit2_price':'',
  76. 'memo_price':''}
  77. if group_ids != '':
  78. shop_window_id = str(group_ids).split(',')[0]
  79. url = 'https://cloud.xc-fintech.com/api/v1/goods_centre/shop_window/goods'
  80. headers = {
  81. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
  82. 'Authorization': token,
  83. 'Host': 'cloud.xc-fintech.com',
  84. 'sec-ch-ua': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"',
  85. 'Content-Type': 'application/json; charset=UTF-8'}
  86. json_params = {"sell_type":2,
  87. "goods_no":str(goods_no),
  88. "shop_window_id":str(shop_window_id),
  89. "current_page":1,
  90. "page_size":10,
  91. "app_id":app_id}
  92. resp = requests.post(url,headers=headers,json=json_params).json()
  93. unit_price_list = resp['detail'][0]['unit_price_list']
  94. no = 1
  95. memo = ''
  96. for price_info in unit_price_list:
  97. min_price = int(price_info['min_price'])/100
  98. unit = price_info['unit']
  99. try:
  100. max_price = int(price_info['max_price'])/100
  101. price_range = f'{min_price}~{max_price}元/{unit}'
  102. except:
  103. price_range = f'{min_price}元/{unit}'
  104. if price_info['is_min_unit'] and unit == min_unit:
  105. dict_out['minunit_price'] = min_price
  106. memo = f'【{price_range}】' + memo
  107. else:
  108. dict_out[f'unit{no}_price'] = f'{min_price}元/{unit}'
  109. no += 1
  110. memo = memo + f'【{price_range}】'
  111. dict_out['memo_price'] = memo
  112. else:
  113. ...
  114. return dict_out
  115. def searchGoodsInfo(goods_no):
  116. try:
  117. app_id, token = getToken ()
  118. dict_out = selectGoodInfoByGoodNo (app_id, token, goods_no)
  119. json_out = selectGoodInfoByGoodId (app_id, token, dict_out['goods_id'])
  120. json_out['publish_state'] = str(dict_out['publish_state'])
  121. price_info = searchGoodsPriceInfo(app_id, token, goods_no, dict_out['group_ids'],json_out['minunit'])
  122. json_out['price_info'] = price_info
  123. except:
  124. json_out = {'goods_no': goods_no,
  125. 'goods_id': 'error',
  126. 'name': 'error',
  127. 'classify_name': 'error',
  128. 'minunit': 'error',
  129. 'rela_num': 0,
  130. 'unit1': 'error',
  131. 'relanum1': 0,
  132. 'unit2': 'error',
  133. 'relanum2': 0,
  134. 'memo': 'error',
  135. 'publish_state': 1,
  136. 'price_info':'error'}
  137. return json_out
  138. if __name__ == '__main__':
  139. goods_no = '7078677777888972800'
  140. json_out = searchGoodsInfo(goods_no)
  141. print(json.dumps(json_out,ensure_ascii = False))