From 0a46fcd6bbdec4a1c45da12464c2fd95e4abfb69 Mon Sep 17 00:00:00 2001 From: Yao <734770036@qq.com> Date: Wed, 25 Sep 2024 14:09:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=B7=BB=E5=8A=A0=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E7=94=9F=E6=B4=BB=E5=95=86=E5=93=81=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/GroupBuyGoods.php | 29 ++++++++++++++ app/api/logic/GoodsLogic.php | 52 +++++++++++++++++++++++++ app/api/logic/GroupBuyLogic.php | 57 ++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 app/api/controller/GroupBuyGoods.php create mode 100644 app/api/logic/GroupBuyLogic.php diff --git a/app/api/controller/GroupBuyGoods.php b/app/api/controller/GroupBuyGoods.php new file mode 100644 index 00000000..8824c066 --- /dev/null +++ b/app/api/controller/GroupBuyGoods.php @@ -0,0 +1,29 @@ +request->get(); + $get['page_no'] = $this->page_no; + $get['page_size'] = $this->page_size; + $data = GroupBuyLogic::getGroupBuyGoods($get); + + return JsonServer::success('', $data); + + } + +} \ No newline at end of file diff --git a/app/api/logic/GoodsLogic.php b/app/api/logic/GoodsLogic.php index 45bdbc86..72358e5e 100755 --- a/app/api/logic/GoodsLogic.php +++ b/app/api/logic/GoodsLogic.php @@ -27,6 +27,7 @@ use app\common\model\team\TeamActivity; use app\common\model\team\TeamFound; use app\common\model\team\TeamGoods; use app\common\model\user\UserLevel; +use app\common\model\groupbuy\GroupbuyGoods; use app\common\server\ConfigServer; use app\common\server\UrlServer; use think\facade\Db; @@ -213,6 +214,8 @@ class GoodsLogic extends Logic ]; // 检查商品是否在参与活动,替换商品价格 $goodsDetailArr = self::checkActivity($goodsDetailArr); + // 检查商品是否参与抢购活动,替换商品价格、库存。 + $goodsDetailArr = self::rushBuy($goodsDetailArr); // 是否收藏 $goodsDetailArr['is_collect'] = 0; if($userId) { // 非游客 @@ -1062,4 +1065,53 @@ class GoodsLogic extends Logic ]; } } + + public static function rushBuy($goods){ + + // 判断是否是秒杀中的商品 + $GroupbuyGoods = GroupbuyGoods::where([ + ['del', '=', 1], + ['goods_id', '=', $goods['id']], + ['status', '=', 1], + ])->select()->toArray(); + + // 判断此商品是否为抢购商品 + if(!$GroupbuyGoods){ + return $goods; + } + + foreach($GroupbuyGoods as $item) { + // 获取该商品的秒杀信息 + $GroupbuyGoods_info = GroupbuyGoods::where([ + 'goods_id' => $goods['id'], + ])->column('goods_id,item_id,activity_price', 'item_id'); + + } + + + + // 确定是抢购商品 + // 先将商品市场价换成原SKU最小价 + $goods['market_price'] = $goods['min_price']; + // 替换活动价 + foreach($goods['goods_item'] as &$item) { + + // 商品价格替换为最小的秒杀价 + if($goods['min_price'] > $GroupbuyGoods_info[$item['id']]['activity_price']) { + $goods['min_price'] = $GroupbuyGoods_info[$item['id']]['activity_price']; + } + // 原市场价替换为原SKU售价 + $item['market_price'] = $item['price']; + // SKU替换抢购价 + $item['price'] = $GroupbuyGoods_info[$item['id']]['activity_price']; + } + + $today_date = date('Y-m-d'); + $goods['activity'] = [ + 'type' => 2, + 'type_desc' => '抢购商品', + ]; + return $goods; + + } } diff --git a/app/api/logic/GroupBuyLogic.php b/app/api/logic/GroupBuyLogic.php new file mode 100644 index 00000000..e3e89715 --- /dev/null +++ b/app/api/logic/GroupBuyLogic.php @@ -0,0 +1,57 @@ +'1', + 'gu.status'=> '1' + ]; + + $field = 'gu.*,g.id as goods_id,g.name as goods_name,g.image as goods_image,g.min_price as goods_min_price'; + + //查询抢购商品 + $lists = GroupbuyGoods::alias('gu') + ->leftJoin('goods g', 'g.id=gu.goods_id') + ->group('g.id') + ->field($field) + ->where($where) + ->select() + ->toArray(); + + //分页处理 + $count = count($lists); + $index = ($get['page_no']-1) * $get['page_size']; + $lists = array_slice($lists, $index, $get['page_size']); + + //处理列表数据 + foreach($lists as &$item) { + // 图片加域名 + $item['goods_image'] = UrlServer::getFileUrl($item['goods_image']); + } + + return [ + 'count' => $count, + 'lists' => $lists, + 'page_no' => $get['page_no'], + 'page_size' => $get['page_size'], + 'more' => is_more($count, $get['page_no'], $get['page_size']) + ]; + + } + + +} \ No newline at end of file