From ddac26a7e1da32c0fb4fdf9887143c185c55c3de Mon Sep 17 00:00:00 2001 From: Yao <734770036@qq.com> Date: Sat, 28 Sep 2024 14:34:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/logic/groupbuy/GroupbuyLogic.php | 6 +-- app/api/logic/OrderLogic.php | 47 ++++++++++++++++------ 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/app/admin/logic/groupbuy/GroupbuyLogic.php b/app/admin/logic/groupbuy/GroupbuyLogic.php index 1daf3b9c..20aa2f90 100644 --- a/app/admin/logic/groupbuy/GroupbuyLogic.php +++ b/app/admin/logic/groupbuy/GroupbuyLogic.php @@ -42,10 +42,6 @@ class GroupbuyLogic extends Logic ]) ->toArray(); - foreach ($lists['data'] as &$v) { - $v['goods_image'] = UrlServer::getFileUrl($v['goods_image']); - } - return ['count'=>$lists['total'], 'lists'=>$lists['data']]; @@ -54,6 +50,7 @@ class GroupbuyLogic extends Logic public static function add($post){ try{ $now = time(); + $activity_sn = $now.rand(1000, 9999); foreach ($post['item'] as $item){ $add_data[] =[ @@ -62,6 +59,7 @@ class GroupbuyLogic extends Logic 'activity_price' => $item['price'], 'stock'=>$item['stock'], 'del' => 1, + 'activity_sn' =>$activity_sn, 'create_time' => $now, 'update_time' => $now, ]; diff --git a/app/api/logic/OrderLogic.php b/app/api/logic/OrderLogic.php index d9bdce6f..e6c56970 100755 --- a/app/api/logic/OrderLogic.php +++ b/app/api/logic/OrderLogic.php @@ -112,6 +112,8 @@ class OrderLogic extends Logic } } + + foreach ($goods as &$good) { $good['delivery_type'] = !isset($good['delivery_type']) ? OrderEnum::DELIVERY_TYPE_EXPRESS : $good['delivery_type']; } @@ -119,6 +121,21 @@ class OrderLogic extends Logic Db::startTrans(); try { + + if ($post['order_type'] == 4) { + foreach ($goods as $activ) { + $isOrder = Db::name('order')->where([ + 'activity_sn' => $activ['activity_sn'], + 'user_id' => $post['user_id'] + ]) + ->where('order_status', '<>', 4) + ->find(); + if($isOrder){ + throw new Exception('您已抢购过此商品'); + } + } + } + // 砍价订单验证 if (isset($post['bargain_launch_id']) and $post['bargain_launch_id'] > 0) { self::$order_type = OrderEnum::BARGAIN_ORDER; @@ -196,23 +213,11 @@ class OrderLogic extends Logic // 订单商品 OrderGoods::insertAll($order_goods_datas_insert); - //处理抢购订单库存 + //处理抢购逻辑 if ($post['order_type'] == 4) { foreach ($post['goods'] as $key => $buyVal) { - $isOrder = Order::alias('o') - ->join('order_goods og', 'og.order_id = o.id') - ->where([ - 'og.goods_id' => $buyVal['goods_id'], - 'o.order_type' => 4, - 'o.user_id' => $post['user_id'] - ]) - ->where('o.order_status', '<>', '4')->find(); - -// if ($isOrder) { -// throw new Exception('抢购商品每人只限抢购一次'); -// } $groupBuy = GroupBuyLogic::isGroupbuy($buyVal['item_id']); if (!isset($groupBuy)) { @@ -1049,7 +1054,21 @@ class OrderLogic extends Logic $goods_price = self::calculateGoodsPrice($goods, $discount); //商品价格 $member_amount = self::memberGoodsPrice($goods, $discount); //会员优惠价格 $shipping_price = self::calculateFreight($goods, $address); + $activity = 0; + if($post['order_type'] == 4){ + foreach ($goods as $GrItem) { + $where = [ + 'item_id'=>$GrItem['item_id'], + 'status'=>1, + 'del'=>1 + ]; + $groupBuy = $groupBuy = GroupbuyGoods::where($where)->find(); + if(isset($groupBuy)){ + $activity = $groupBuy['activity_sn']; + } + } + } //计算优惠券优惠的金额 $coupon_list_id = 0; $discount_amount = 0; @@ -1097,8 +1116,10 @@ class OrderLogic extends Logic $member_amount = $discount_amount = 0; } + $order_data['trade_id'] = $order_id; $order_data['shop_id'] = $shop_id; + $order_data['activity_sn'] = $activity; $order_data['user_id'] = $post['user_id']; $order_data['order_sn'] = createSn('order_trade', 't_sn'); $order_data['order_type'] = self::$order_type;