From 69b511c2fa4ef3e52d08e738a3df877aa9eb5395 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Thu, 9 Nov 2023 16:53:00 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E5=8C=BA=E5=9F=9F=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/dao/store/order/StoreCartDao.php | 4 +-- .../order/StoreOrderCreateRepository.php | 30 ++++--------------- app/controller/api/store/order/StoreOrder.php | 20 ++++--------- 3 files changed, 14 insertions(+), 40 deletions(-) diff --git a/app/common/dao/store/order/StoreCartDao.php b/app/common/dao/store/order/StoreCartDao.php index e6c79202..fd054fde 100644 --- a/app/common/dao/store/order/StoreCartDao.php +++ b/app/common/dao/store/order/StoreCartDao.php @@ -79,7 +79,7 @@ class StoreCartDao extends BaseDao $query->field('product_id,stock,price,unique,sku,image,svip_price'); }, 'merchant' => function ($query) { - $query->field('mer_id,mer_name,mer_state,mer_avatar,is_trader,type_id,credit_buy')->with(['type_names']); + $query->field('mer_id,mer_name,mer_state,mer_avatar,is_trader,type_id,credit_buy,street_id')->with(['type_names']); } ])->select(); @@ -117,7 +117,7 @@ class StoreCartDao extends BaseDao ->append(['bc_extension_one', 'bc_extension_two']); }, 'merchant' => function (Relation $query) use ($uid) { - $query->field('mer_id,mer_name,mer_state,mer_avatar,delivery_way,commission_rate,category_id,credit_buy,settle_cycle,interest_rate') + $query->field('mer_id,mer_name,mer_state,mer_avatar,delivery_way,commission_rate,category_id,credit_buy,settle_cycle,interest_rate,type_id,street_id') ->with([ 'coupon' => function ($query) use ($uid) { $query->where('uid', $uid); diff --git a/app/common/repositories/store/order/StoreOrderCreateRepository.php b/app/common/repositories/store/order/StoreOrderCreateRepository.php index 97725600..8e338943 100644 --- a/app/common/repositories/store/order/StoreOrderCreateRepository.php +++ b/app/common/repositories/store/order/StoreOrderCreateRepository.php @@ -5,6 +5,7 @@ namespace app\common\repositories\store\order; use app\common\dao\store\order\StoreCartDao; use app\common\model\store\order\StoreGroupOrder; use app\common\model\store\order\StoreOrder; +use app\common\model\system\merchant\Merchant; use app\common\repositories\community\CommunityRepository; use app\common\repositories\store\coupon\StoreCouponRepository; use app\common\repositories\store\coupon\StoreCouponUserRepository; @@ -69,8 +70,12 @@ class StoreOrderCreateRepository extends StoreOrderRepository //虚拟订单自定义数据 $order_extend = []; //检查商品类型, 活动商品只能单独购买 - foreach ($merchantCartList as $merchantCart) { + if($merchantCart['type_id']!=Merchant::TypeSupplyChain){ + if($merchantCart['street_id']!=$address['street_code']){ + throw new ValidateException('不能跨区域购买商品'); + } + } foreach ($merchantCart['list'] as $cart) { if ($cart['product_type']==0) { if ($cart['product']['once_min_count'] > 0 && $cart['product']['once_min_count'] > $cart['cart_num']) @@ -204,30 +209,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository if ($deliveryStatus && !$isTake && ($merDelivery || $merTake)) { $isTake = $merDelivery ? 0 : 1; } - //加载商品数据 - foreach ($merchantCart['list'] as $cart) { - //预售订单 - if ($cart['product_type'] == 2) { - $cart->append(['productPresell', 'productPresellAttr']); - //助力订单 - } else if ($cart['product_type'] == 3) { - $cart->append(['productAssistAttr']); - //拼团订单 - } else if ($cart['product_type'] == 4) { - $cart->append(['activeSku']); - //套餐订单 - } else if ($cart['product_type'] == 10) { - $cart->append(['productDiscount', 'productDiscountAttr']); - } - //如果是预售订单 获取预售的订单的首款,尾款预售类型 - if ($order_type == 2) { - $final_price = bcadd($final_price, bcmul($cart['cart_num'], $cart['productPresellAttr']['final_price'], 2), 2); - $presellType = $cart['productPresell']['presell_type']; - if ($presellType == 2) - $down_price = bcadd($down_price, bcmul($cart['cart_num'], $cart['productPresellAttr']['down_price'], 2), 2); - } - } unset($cart); $enabledCoupon = !($order_type && $order_type != 2); diff --git a/app/controller/api/store/order/StoreOrder.php b/app/controller/api/store/order/StoreOrder.php index 3d4ae0d7..46e60b6b 100644 --- a/app/controller/api/store/order/StoreOrder.php +++ b/app/controller/api/store/order/StoreOrder.php @@ -108,22 +108,14 @@ class StoreOrder extends BaseController if ($cartProductType == 0 && count($deliveryWay) == 0) { $userAddressCode = ($address['province_code'] ?? '') . ',' . ($address['city_code'] ?? '') . ',' . ($address['district_code'] ?? '') . ',' . ($address['street_code'] ?? '') . ',' . ($address['village_code'] ?? '') . ',' . ($address['brigade_id'] ?? 0); $getUrl = env('LOGISTICS_HOST_URL') . '/api/hasCourier?user_address_code=' . $userAddressCode; - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $getUrl); - curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_TIMEOUT, 2); - $hasCourierData = curl_exec($ch); - curl_close($ch); - if (!empty($hasCourierData) && is_string($hasCourierData)) { - $courierData = json_decode($hasCourierData, true); - if (empty($courierData['code']) || $courierData['code'] != 1) { - throw new ValidateException('该收货区域未设置快递员'); - } - } + $client = new \GuzzleHttp\Client(); + $response = $client->request('GET', $getUrl); + $courierData = json_decode($response->getBody(), true); + if (empty($courierData['code']) || $courierData['code'] != 1) { + throw new ValidateException('该收货区域未设置快递员'); + } } } - $groupOrder = app()->make(LockService::class)->exec('order.create', function () use ($orderCreateRepository, $receipt_data, $mark, $extend, $cartId, $payType, $takes, $couponIds, $useIntegral, $addressId, $post) { return $orderCreateRepository->v2CreateOrder(array_search($payType, StoreOrderRepository::PAY_TYPE), $this->request->userInfo(), $cartId, $extend, $mark, $receipt_data, $takes, $couponIds, $useIntegral, $addressId, $post); });