根据库存自动下单商品 :param sku_ids: 商品id。可以设置多个商品,也可以带数量,如:'1234' 或 '1234,5678' 或 '1234:2' 或 '1234:2,5678:3' :param area: 地区id :param wait_all: 是否等所有商品都有货才一起下单,可选参数,默认False :param stock_interval: 查询库存时间间隔,可选参数,默认3秒 :param submit_retry: 提交订单失败后重试次数,可选参数,默认3次 :pa
(self, sku_ids, area, wait_all=False, stock_interval=3, submit_retry=3, submit_interval=5)
| 1370 | |
| 1371 | @check_login |
| 1372 | def buy_item_in_stock(self, sku_ids, area, wait_all=False, stock_interval=3, submit_retry=3, submit_interval=5): |
| 1373 | """根据库存自动下单商品 |
| 1374 | :param sku_ids: 商品id。可以设置多个商品,也可以带数量,如:'1234' 或 '1234,5678' 或 '1234:2' 或 '1234:2,5678:3' |
| 1375 | :param area: 地区id |
| 1376 | :param wait_all: 是否等所有商品都有货才一起下单,可选参数,默认False |
| 1377 | :param stock_interval: 查询库存时间间隔,可选参数,默认3秒 |
| 1378 | :param submit_retry: 提交订单失败后重试次数,可选参数,默认3次 |
| 1379 | :param submit_interval: 提交订单失败后重试时间间隔,可选参数,默认5秒 |
| 1380 | :return: |
| 1381 | """ |
| 1382 | items_dict = parse_sku_id(sku_ids) |
| 1383 | items_list = list(items_dict.keys()) |
| 1384 | area_id = parse_area_id(area=area) |
| 1385 | |
| 1386 | if not wait_all: |
| 1387 | logger.info('下单模式:%s 任一商品有货并且未下架均会尝试下单', items_list) |
| 1388 | while True: |
| 1389 | for (sku_id, count) in items_dict.items(): |
| 1390 | if not self.if_item_can_be_ordered(sku_ids={sku_id: count}, area=area_id): |
| 1391 | logger.info('%s 不满足下单条件,%ss后进行下一次查询', sku_id, stock_interval) |
| 1392 | else: |
| 1393 | logger.info('%s 满足下单条件,开始执行', sku_id) |
| 1394 | self._cancel_select_all_cart_item() |
| 1395 | self._add_or_change_cart_item(self.get_cart_detail(), sku_id, count) |
| 1396 | if self.submit_order_with_retry(submit_retry, submit_interval): |
| 1397 | return |
| 1398 | |
| 1399 | time.sleep(stock_interval) |
| 1400 | else: |
| 1401 | logger.info('下单模式:%s 所有都商品同时有货并且未下架才会尝试下单', items_list) |
| 1402 | while True: |
| 1403 | if not self.if_item_can_be_ordered(sku_ids=sku_ids, area=area_id): |
| 1404 | logger.info('%s 不满足下单条件,%ss后进行下一次查询', items_list, stock_interval) |
| 1405 | else: |
| 1406 | logger.info('%s 满足下单条件,开始执行', items_list) |
| 1407 | self._cancel_select_all_cart_item() |
| 1408 | shopping_cart = self.get_cart_detail() |
| 1409 | for (sku_id, count) in items_dict.items(): |
| 1410 | self._add_or_change_cart_item(shopping_cart, sku_id, count) |
| 1411 | |
| 1412 | if self.submit_order_with_retry(submit_retry, submit_interval): |
| 1413 | return |
| 1414 | |
| 1415 | time.sleep(stock_interval) |
no test coverage detected