From 73fe50674c245ca45db9501eb118cc3cf2843390 Mon Sep 17 00:00:00 2001 From: weigang Date: Sat, 18 Jul 2020 16:34:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=8F=AF=E7=94=A8?= =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E5=88=86=E6=88=90=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E6=95=B0=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/CouponController.php | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/Controller/CouponController.php b/app/Controller/CouponController.php index c72dc16..924e2fb 100644 --- a/app/Controller/CouponController.php +++ b/app/Controller/CouponController.php @@ -172,10 +172,6 @@ class CouponController extends BaseController // 获取用户优惠券 $currentTime = time(); - $container = ApplicationContext::getContainer(); - $redis = $container->get(Redis::class); - $couponIds = $redis->sMembers('coupon_'.date('Ymd').'_used_'.$userId); - $data = Db::table('ims_system_coupon_user_receive as receive') ->select([ 'receive.id as receive_id', @@ -192,13 +188,8 @@ class CouponController extends BaseController ->join('ims_system_coupon_user as coupon', 'coupon.id', '=', 'receive.system_coupon_user_id') ->where(['receive.user_id' => $userId]) ->whereIn('receive.status', [0,1]) - ->where('receive.number_remain', '>', 0); - - if (is_array($couponIds)&&!empty($couponIds)) { - $data->whereNotIn('coupon.id', $couponIds); - } - - $data = $data->whereIn('coupon.type', [1,$type]) + ->where('receive.number_remain', '>', 0) + ->whereIn('coupon.type', [1,$type]) ->where('coupon.full_amount', '<=', $orderAmount) ->where('coupon.usable_start_time', '<=', $currentTime) ->where('coupon.usable_end_time', '>=', $currentTime) @@ -208,7 +199,20 @@ class CouponController extends BaseController ->orderByRaw('coupon.discounts DESC, coupon.full_amount DESC') ->get(); - return $this->success($data); + // 剔除用户今天用过的优惠券种类 + $container = ApplicationContext::getContainer(); + $redis = $container->get(Redis::class); + $couponIds = $redis->sMembers('coupon_'.date('Ymd').'_used_'.$userId); + + $available = $data->reject(function ($item) use ($couponIds) { + return in_array($item->id, $couponIds); + }); + + $notAvailable = $data->reject(function ($item) use ($couponIds) { + return !in_array($item->id, $couponIds); + }); + + return $this->success(['available' => $available, 'not_available' => $notAvailable]); } From 9547d18099c872efa9fe4b543a2c593c27b29100 Mon Sep 17 00:00:00 2001 From: "DESKTOP-GG6FIN9\\Administrator" <15040771@qq.com> Date: Sat, 18 Jul 2020 17:02:33 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Controller/CouponController.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/Controller/CouponController.php b/app/Controller/CouponController.php index 0c124c2..6641db1 100644 --- a/app/Controller/CouponController.php +++ b/app/Controller/CouponController.php @@ -159,11 +159,10 @@ class CouponController extends BaseController $expired = []; $couponIds = $couponIds->toArray(); - $coupons = Coupon::orderByRaw('FIELD(id, ' . implode(", ", $couponIds) . ')')->get(); - - + $coupons = Coupon::whereIn('id',$couponIds)->get(); + foreach ($coupons as $key => $coupon) { - if ($coupon->usable_end_time < $nowTime) { + if ($coupon->usable_end_time < $nowTime || $coupon->status != 1) { $expired[] = $coupon; } else { $not_expired[] = $coupon;