with(['active', 'activeTime']) ->where('active_time_id', '=', $activeTimeId) ->where('sharp_goods_id', '=', $sharpGoodsId) ->find(); } /** * 获取活动商品详情 * @param $active * @param $sharpGoodsId * @param $isCheckStatus * @return GoodsModel|bool|\think\model\Collection * @throws \think\exception\DbException */ public function getGoodsActiveDetail($active, $sharpGoodsId, $isCheckStatus = true) { // 获取商品详情 $goods = $this->getGoodsDetail($sharpGoodsId); if (empty($goods)) return false; if ($isCheckStatus == true && ($goods['is_delete'] || !$goods['status'])) { $this->error = '很抱歉,秒杀商品不存在或已下架'; return false; } // 活动商品的销量 $goods['sales_actual'] = $active['sales_actual']; // 商品销售进度 $goods['progress'] = $this->getProgress($active['sales_actual'], $goods['seckill_stock']); /* @var $goods \think\model\Collection */ return $goods; } /** * 获取商品详情 * @param $sharpGoodsId * @return GoodsModel|bool * @throws \think\exception\DbException */ private function getGoodsDetail($sharpGoodsId) { // 获取秒杀商品详情 $model = $this->getGoodsModel(); $sharpGoods = $model::detail($sharpGoodsId, ['sku']); if (empty($sharpGoods)) { $this->error = '秒杀商品信息不存在'; return false; } // 获取主商品详情 $goods = GoodsModel::detail($sharpGoods['goods_id']); if (empty($goods)) return false; // 整理商品信息 $goods['sharp_goods_id'] = $sharpGoods['sharp_goods_id']; $goods['deduct_stock_type'] = $sharpGoods['deduct_stock_type']; $goods['limit_num'] = $sharpGoods['limit_num']; $goods['seckill_stock'] = $sharpGoods['seckill_stock']; $goods['total_sales'] = $sharpGoods['total_sales']; $goods['status'] = $sharpGoods['status']; $goods['is_delete'] = $sharpGoods['is_delete']; // 商品sku信息 $goods['sku'] = $this->getSharpSku($sharpGoods['sku'], $goods['sku']); /* @var \think\Collection $goods */ return $goods->hidden(['category', 'sku']); } /** * 获取秒杀商品的sku信息 * @param $sharpSku * @param $goodsSku * @return array */ protected function getSharpSku($sharpSku, $goodsSku) { $sharpSku = helper::arrayColumn2Key($sharpSku, 'spec_sku_id'); foreach ($goodsSku as &$item) { $sharpSkuItem = clone $sharpSku[$item['spec_sku_id']]; $item['original_price'] = $item['goods_price']; $item['seckill_price'] = $sharpSkuItem['seckill_price']; $item['seckill_stock'] = $sharpSkuItem['seckill_stock']; } return $goodsSku; } }