From e4fdf06f2240a2b2915f2c52f682d51b47f45d45 Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Tue, 19 Mar 2024 16:51:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=95=86=E5=93=81=E6=89=B9?= =?UTF-8?q?=E5=8F=91=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/dao/store/order/StoreCartDao.php | 4 ++-- app/common/dao/store/order/StoreGroupOrderDao.php | 3 +++ .../store/order/StoreCartRepository.php | 10 ++++++++++ .../store/order/StoreOrderCreateRepository.php | 9 ++++++--- .../store/product/ProductRepository.php | 15 +++++++++++---- .../repositories/store/product/SpuRepository.php | 6 ++++++ app/controller/api/store/order/StoreOrder.php | 5 +++-- 7 files changed, 41 insertions(+), 11 deletions(-) diff --git a/app/common/dao/store/order/StoreCartDao.php b/app/common/dao/store/order/StoreCartDao.php index 8004b0a3..3ab0c0b5 100644 --- a/app/common/dao/store/order/StoreCartDao.php +++ b/app/common/dao/store/order/StoreCartDao.php @@ -58,10 +58,10 @@ class StoreCartDao extends BaseDao $query = ($this->getModel())::where(['uid' => $uid, 'is_del' => 0, 'is_new' => 0, 'is_pay' => 0, 'sale_type' => $saleType]) ->with([ 'product' => function ($query) { - $query->field('product_id,image,store_name,is_show,status,is_del,unit_name,price,mer_status,is_used,product_type,once_max_count,once_min_count,pay_limit,mer_svip_status,svip_price_type'); + $query->field('product_id,image,store_name,is_show,status,is_del,unit_name,price,mer_status,is_used,product_type,once_max_count,once_min_count,pay_limit,mer_svip_status,svip_price_type,wholesale_price'); }, 'productAttr' => function ($query) { - $query->field('product_id,stock,price,unique,sku,image,svip_price'); + $query->field('product_id,stock,price,unique,sku,image,svip_price,wholesale_price'); }, 'merchant' => function ($query) { $query->field('mer_id,mer_name,mer_state,mer_avatar,is_trader,type_id')->with(['type_name']); diff --git a/app/common/dao/store/order/StoreGroupOrderDao.php b/app/common/dao/store/order/StoreGroupOrderDao.php index aa0fdd6a..6f95536d 100644 --- a/app/common/dao/store/order/StoreGroupOrderDao.php +++ b/app/common/dao/store/order/StoreGroupOrderDao.php @@ -70,6 +70,9 @@ class StoreGroupOrderDao extends BaseDao $query->where('activity_type', '<>',20); } }) + ->when(isset($where['sale_type']) && $where['sale_type'] !== '', function ($query) use ($where) { + $query->where('sale_type', $where['sale_type']); + }) ->when(isset($where['is_del']) && $where['is_del'] !== '', function ($query) use ($where) { $query->where('is_del', $where['is_del']); }, function ($query) { diff --git a/app/common/repositories/store/order/StoreCartRepository.php b/app/common/repositories/store/order/StoreCartRepository.php index 65aa1ac2..998a12f0 100644 --- a/app/common/repositories/store/order/StoreCartRepository.php +++ b/app/common/repositories/store/order/StoreCartRepository.php @@ -36,6 +36,7 @@ class StoreCartRepository extends BaseRepository { //购物车最大条数 const CART_LIMIT_COUNT = 99; + public $saleType = 1; /** * StoreCartRepository constructor. @@ -54,6 +55,7 @@ class StoreCartRepository extends BaseRepository */ public function getList($user, int $saleType = 1) { + $this->saleType = $saleType; $res = $this->dao->getAll($user->uid, $saleType)->append(['checkCartProduct', 'UserPayCount', 'ActiveSku','spu']); return $this->checkCartList($res, $user->uid, $user); } @@ -102,6 +104,11 @@ class StoreCartRepository extends BaseRepository } else { $item['productAttr']['show_svip_price'] = false; } + if ($this->saleType == Enum::SALE_TYPE_WHOLESALE && $item['product']['wholesale_price'] > 0) { + $item['product']['price'] = $item['product']['wholesale_price']; + $item['productAttr']['price'] = $item['productAttr']['wholesale_price']; + $item['ActiveSku']['price'] = $item['ActiveSku']['wholesale_price']; + } $arr[$item['mer_id']]['list'][] = $item; } } @@ -132,6 +139,9 @@ class StoreCartRepository extends BaseRepository public function getCartByProductSku($sku,$uid) { $where = ['is_del'=>0,'is_fail'=>0,'is_new'=>0,'is_pay'=>0,'uid' => $uid,'product_type' => 0,'product_attr_unique' => $sku]; + if (!empty($this->saleType)) { + $where['sale_type'] = $this->saleType; + } return ($this->dao->getWhere($where)); } diff --git a/app/common/repositories/store/order/StoreOrderCreateRepository.php b/app/common/repositories/store/order/StoreOrderCreateRepository.php index e4c1e4b3..060d77c9 100644 --- a/app/common/repositories/store/order/StoreOrderCreateRepository.php +++ b/app/common/repositories/store/order/StoreOrderCreateRepository.php @@ -88,8 +88,6 @@ class StoreOrderCreateRepository extends StoreOrderRepository $userCouponRepo = app()->make(StoreCouponUserRepository::class); foreach ($merchantCartList as &$merchantCart) { $isPlatformCard = $userCouponRepo->checkBuyLimit($merchantCart['list'], $uid); - //用户关联了商户id且下单店铺支持批发 - $isWholeSale = StoreOrder::isWholesale($merchantCart['wholesale'], $merId, $this->saleType); $postageRule = []; $total_price = 0; $total_num = 0; @@ -114,6 +112,8 @@ class StoreOrderCreateRepository extends StoreOrderRepository $product_cart = []; foreach ($merchantCart['list'] as $k => $cart) { + //用户关联了商户id且下单店铺支持批发 + $isWholeSale = StoreOrder::isWholesale($merchantCart['wholesale'], $merId, $cart['sale_type']); if ($isWholeSale) { $merchantCart['list'][$k]['productAttr']['price'] = $cart['productAttr']['wholesale_price']; $merchantCart['list'][$k]['product']['price'] = $cart['productAttr']['wholesale_price']; @@ -1001,6 +1001,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository $totalCost = 0; $cartIds = []; $orderList = []; + $saleType = 0; foreach ($merchantCartList as $k => $merchantCart) { $cost = 0; @@ -1008,6 +1009,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository $total_extension_two = 0; //计算佣金和赠送的优惠券 foreach ($merchantCart['list'] as &$cart) { + $saleType = $saleType == 0 ? $cart['sale_type'] : $saleType; $cartIds[] = $cart['cart_id']; $giveCouponIds = array_merge($giveCouponIds, $cart['product']['give_coupon_ids'] ?: []); $cart['cost'] = $cart['productAttr']['cost']; @@ -1121,7 +1123,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository 'platform_coupon_price' => $merchantCart['order']['platform_coupon_price'], 'pay_type' => $pay_type, 'refund_switch' => $merchantCart['order']['order_refund_switch'], - 'sale_type' => $orderInfo['sale_type'], + 'sale_type' => $saleType, ]; $allUseCoupon = array_merge($allUseCoupon, $merchantCart['order']['useCouponIds']); $orderList[] = $_order; @@ -1149,6 +1151,7 @@ class StoreOrderCreateRepository extends StoreOrderRepository 'integral_price' => $orderInfo['order_total_integral_price'], 'give_integral' => $orderInfo['order_total_give_integral'], 'activity_type' => $orderInfo['order_type'], + 'sale_type' => $saleType, ]; event('order.create.before', compact('groupOrder', 'orderList')); $group = Db::transaction(function () use ($ex, $user, $topUid, $spreadUid, $uid, $receipt_data, $cartIds, $allUseCoupon, $groupOrder, $orderList, $orderInfo, $useCoupon) { diff --git a/app/common/repositories/store/product/ProductRepository.php b/app/common/repositories/store/product/ProductRepository.php index fea25d9a..2dd84ab4 100644 --- a/app/common/repositories/store/product/ProductRepository.php +++ b/app/common/repositories/store/product/ProductRepository.php @@ -1370,7 +1370,7 @@ class ProductRepository extends BaseRepository public function apiProductDetail($where, int $productType, ?int $activityId, $userInfo = null) { - $field = 'is_show,product_id,mer_id,image,slider_image,store_name,store_info,unit_name,price,cost,ot_price,stock,sales,video_link,product_type,extension_type,old_product_id,rate,guarantee_template_id,temp_id,once_max_count,pay_limit,once_min_count,integral_rate,delivery_way,delivery_free,type,cate_id,svip_price_type,svip_price,mer_svip_status,mer_form_id'; + $field = 'is_show,product_id,mer_id,image,slider_image,store_name,store_info,unit_name,price,cost,ot_price,stock,sales,video_link,product_type,extension_type,old_product_id,rate,guarantee_template_id,temp_id,once_max_count,pay_limit,once_min_count,integral_rate,delivery_way,delivery_free,type,cate_id,svip_price_type,svip_price,mer_svip_status,mer_form_id,wholesale_price'; $with = [ 'attr', 'attrValue', @@ -1446,8 +1446,8 @@ class ProductRepository extends BaseRepository $product['attr'] = $attr; $product['sku'] = $sku; $product['isRelation'] = $isRelation; - if ($this->isWholesale) { - $product['price'] = current($sku)['price']; + if ($this->isWholesale && $product['wholesale_price'] > 0) { + $product['price'] = $product['wholesale_price']; } return $product; } @@ -1695,6 +1695,7 @@ class ProductRepository extends BaseRepository $_value = [ 'sku' => $value['sku'], 'price' => $value['price'], + 'wholesale_price' => $value['wholesale_price'], 'stock' => $value['stock'], 'image' => $value['image'], 'weight' => $value['weight'], @@ -1737,6 +1738,9 @@ class ProductRepository extends BaseRepository $_value['extension_one'] = $value->bc_extension_one; $_value['extension_two'] = $value->bc_extension_two; } + if ($this->isWholesale && $_value['wholesale_price'] > 0) { + $_value['price'] = $_value['wholesale_price']; + } $sku[$value['sku']] = $_value; } return $sku; @@ -2126,7 +2130,10 @@ class ProductRepository extends BaseRepository if ($sku['stock'] < $cart_num) throw new ValidateException('库存不足'); //添加购物车 if (!$data['is_new']) { - $cart = app()->make(StoreCartRepository::class)->getCartByProductSku($data['product_attr_unique'], $userInfo->uid); + /** @var StoreCartRepository $repo */ + $repo = app()->make(StoreCartRepository::class); + $repo->saleType = $data['sale_type']; + $cart = $repo->getCartByProductSku($data['product_attr_unique'], $userInfo->uid); } return compact('product', 'sku', 'cart'); diff --git a/app/common/repositories/store/product/SpuRepository.php b/app/common/repositories/store/product/SpuRepository.php index 78a0958e..23857f57 100644 --- a/app/common/repositories/store/product/SpuRepository.php +++ b/app/common/repositories/store/product/SpuRepository.php @@ -10,6 +10,7 @@ // +---------------------------------------------------------------------- namespace app\common\repositories\store\product; +use app\common\Enum; use app\common\repositories\store\coupon\StoreCouponProductRepository; use app\common\repositories\store\coupon\StoreCouponRepository; use app\common\repositories\store\parameter\ParameterValueRepository; @@ -167,6 +168,11 @@ class SpuRepository extends BaseRepository $append[] = 'max_extension'; $list->append($append); $list = $this->getBorderList($list); + foreach ($list as &$item) { + if ($where['sale_type'] == Enum::SALE_TYPE_WHOLESALE && $item['wholesale_price'] > 0) { + $item['price']= $item['wholesale_price']; + } + } return compact('count', 'list'); } diff --git a/app/controller/api/store/order/StoreOrder.php b/app/controller/api/store/order/StoreOrder.php index a32014bc..23aad486 100644 --- a/app/controller/api/store/order/StoreOrder.php +++ b/app/controller/api/store/order/StoreOrder.php @@ -187,7 +187,8 @@ class StoreOrder extends BaseController public function groupOrderList(StoreGroupOrderRepository $groupOrderRepository) { [$page, $limit] = $this->getPage(); - $list = $groupOrderRepository->getList(['uid' => $this->request->uid(), 'paid' => 0], $page, $limit); + $saleType = $this->request->get('sale_type', 1); + $list = $groupOrderRepository->getList(['uid' => $this->request->uid(), 'paid' => 0, 'sale_type' => $saleType], $page, $limit); return app('json')->success($list); } @@ -345,6 +346,6 @@ class StoreOrder extends BaseController $this->repository->dealVerify($img,$id); return app('json')->success('上传凭证成功'); } - + }