AlibabaOrder.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace app\controller\api\store\order;
  3. use app\common\repositories\store\order\StoreCartRepository;
  4. use app\services\ThirdParty\AlibabaAgent\OrderService;
  5. use think\facade\Db;
  6. class AlibabaOrder
  7. {
  8. public function checkOrder(StoreCartRepository $cartRepository)
  9. {
  10. $cartId = request()->param('cart_id', []);
  11. $addressId = request()->param('address_id');
  12. $uid = 4895;
  13. $postagePrice = 0;
  14. // 判断是否是阿里巴巴商品
  15. $cartInfo = Db::name('store_cart')->whereIn('cart_id', $cartId)->select()->toArray();
  16. $productInfo = Db::name('store_product')->whereIn('product_id', array_column($cartInfo, 'product_id'))->find();
  17. if (!$productInfo['is_alibaba']) {
  18. return app('json')->success(['postagePrice' => $postagePrice]);
  19. }
  20. // 获取地址
  21. $addressInfo = Db::name('user_address')->where('address_id', $addressId)->find();
  22. $addressParam = [
  23. 'fullName' => $addressInfo['real_name'],
  24. 'mobile' => $addressInfo['phone'],
  25. 'provinceText' => $addressInfo['province'],
  26. 'cityText' => $addressInfo['city'],
  27. 'areaText' => $addressInfo['district'],
  28. 'address' => $addressInfo['detail'],
  29. ];
  30. // 获取商品规格
  31. $quantity = array_column($cartInfo, 'cart_num')[0];
  32. $offerId = $productInfo['spu_id'];
  33. $specId = Db::name('store_product_attr_value')->where('product_id', $productInfo['product_id'])->whereIn('unique', array_column($cartInfo, 'product_attr_unique'))->value('spec_id');
  34. $cargoParamList = [
  35. 'offerId' => $offerId,
  36. 'specId' => $specId,
  37. 'quantity' => $quantity
  38. ];
  39. $orderService = new OrderService();
  40. $res = $orderService->previewOrder(['cargoParamList' => $cargoParamList, 'addressParam' => $addressParam]);
  41. if (!$res) {
  42. return app('json')->fail('预下单失败');
  43. }
  44. return app('json')->success(['postagePrice' => $res['preview']['sumCarriage'] / 100, 'flow' => $res['preview']['flowFlag']]);
  45. }
  46. }