['store_id']]; } /** * @notes 购物车列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @date 2024/04/27 11:26 */ public function lists($where = []): array { $userId = $this->request->userId; if (!$userId) return []; $where = [ 'uid' => $userId, 'is_pay' => 0 ]; $list = Cart::where($this->searchWhere)->where($where) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select()->each(function ($item) { return $item; }) ->toArray(); $off_activity = Config::where('name', 'off_activity')->value('value'); $user_ship = User::where('id', $userId)->value('user_ship'); $field = 'id,id product_id,image,price,cost,store_name,unit,delete_time,vip_price,top_cate_id,batch'; if (in_array($user_ship, [4, 6, 7]) && !empty($this->params['store_id']) && !SystemStore::isSelfOperate($this->params['store_id'])) { $field = 'id,id product_id,image,cost price,cost,store_name,unit,delete_time,vip_price,top_cate_id,batch'; } $this->user_ship = $user_ship; $this->off_activity = $off_activity; foreach ($list as $key => &$item) { $product = StoreProduct::where(['id' => $item['product_id']]) ->field($field) ->find(); $product = StoreProductGroupPrice::resetStoreProductPrice($product, $user_ship, $this->params['store_id'] ?? 0); if ($product) { if ($off_activity == 1) { $this->activity_price = bcadd(bcmul($product['cost'], $item['cart_num'], 2), $this->activity_price, 2); } if ($off_activity == 0 && $user_ship == 5 && $product['top_cate_id'] == 15189) { $product['price'] = $product['cost']; } $item['goods_total_price'] = bcmul($item['cart_num'], $product['price'], 2); $this->total_price = bcadd($this->total_price, $item['goods_total_price'], 2); $item['batch'] = $product['batch']; $item['imgs'] = $product['image']; $item['price'] = $product['price']; $item['cost'] = $product['cost']; $item['goods_name'] = $product['store_name']; $item['unit_name'] = StoreProductUnit::where('id', $product['unit'])->value('name'); } } return $list; } /** * @notes 购物车数量 * @return int * @date 2024/04/27 11:26 */ public function count(): int { $userId = $this->request->userId; if (!$userId) return 0; $where = [ 'uid' => $userId, 'is_pay' => 0 ]; return Cart::where($this->searchWhere)->where($where)->count(); } public function extend() { $data = [ 'off_activity' => $this->off_activity, 'total_price' => $this->total_price, 'msg' => '', 'pay_price' => $this->total_price ]; if ($this->user_ship == 0) { if ($data['pay_price'] < 500) { $data['msg'] = '还差' . bcsub(500, $data['pay_price'], 2) . '即可获得10%的品牌礼品兑换券,可到线下门店兑换礼品。'; } else { $data['msg'] = '您已选购满500元,支付成功后即可获得' . bcmul($data['pay_price'], 0.1, 2) . '元品牌礼品兑换券,可到线下门店兑换礼品。'; } } if ($this->off_activity == 1) { //1 $data['pay_price'] = $this->activity_price; if ($data['pay_price'] < 500) { if ($this->user_ship == 0) { $data['msg'] = '还差' . bcsub(500, $this->activity_price, 2) . '即可获得10%的品牌礼品兑换券,可到线下门店兑换礼品。'; } } else { if ($this->user_ship == 0) { $data['msg'] = '您已选购满500元,支付成功后即可获得' . bcmul($this->activity_price, 0.1, 2) . '元品牌礼品兑换券,可到线下门店兑换礼品。'; } } } return $data; } }