diff --git a/app/Controller/CouponController.php b/app/Controller/CouponController.php index 924e2fb..0c124c2 100644 --- a/app/Controller/CouponController.php +++ b/app/Controller/CouponController.php @@ -9,6 +9,7 @@ declare(strict_types=1); * @contact group@hyperf.io * @license https://github.com/hyperf/hyperf/blob/master/LICENSE */ + namespace App\Controller; use App\Model\CouponUserRecType; @@ -23,43 +24,67 @@ class CouponController extends BaseController /** * 获取用户可领取优惠卷接口 - */ - public function getSystemCouponUserList(){ - $user_id = $this->request->input('user_id'); + */ + public function getSystemCouponUserList() + { + $user_id = $this->request->input('user_id'); $receive_type = $this->request->input('receive_type'); - $c_ids = CouponUserRecType::where('receive_type',$receive_type)->pluck('system_coupon_user_id'); + $c_ids = CouponUserRecType::where('receive_type', $receive_type)->pluck('system_coupon_user_id'); $nowTime = time(); - $cr_ids = CouponRec::where('user_id',$user_id)->pluck('system_coupon_user_id'); + $cr_ids = CouponRec::where( + 'user_id',$user_id + )->pluck('system_coupon_user_id'); - $ids = array_merge($c_ids->toArray(),$cr_ids->toArray()); + $ids = array_merge($c_ids->toArray(), $cr_ids->toArray()); $ids = collect($ids)->unique(); - $c = Coupon::where('start_time','<=',$nowTime) - ->where('end_time','>',$nowTime) - ->whereRaw('inventory_use < inventory') - ->whereIn('id',$ids) - ->orderBy('weigh','desc') + $c = Db::table('ims_system_coupon_user as u') + ->where([ + ['u.end_time','>',$nowTime], + ['u.start_time','<=',$nowTime], + ['type.receive_type','=',$receive_type], + ['u.status','=',1], + ]) + ->join('ims_system_coupon_user_receivetype as type', 'u.id', '=', 'type.system_coupon_user_id') + ->whereRaw('inventory_use <= inventory') + ->whereIn('u.id',$ids) + ->select('u.*','type.one_receive_number') + ->orderBy('u.weigh','desc') ->limit(4) ->get(); return $this->success(['not_reveive'=>$c]); } + //统计用户 public function userCouponAccount() { $user_id = $this->request->input('user_id'); $nowTime = time(); $userCouponCount = DB::table('ims_system_coupon_user_receive') - ->leftJoin('ims_system_coupon_user', 'ims_system_coupon_user_receive.system_coupon_user_id', '=', 'ims_system_coupon_user.id') - ->count(); - // $userCouponCount = CouponRec::with('coupon')->where('user_id',$user_id)->where('usable_start_time','<=',$nowTime) - // ->where('usable_end_time','>',$nowTime)->count(); - return $this->success(['total'=>$userCouponCount]); + ->select(['ims_system_coupon_user_receive.number_remain']) + ->leftJoin('ims_system_coupon_user', + 'ims_system_coupon_user_receive.system_coupon_user_id', + '=', + 'ims_system_coupon_user.id') + ->where('ims_system_coupon_user.usable_end_time','>',$nowTime) + ->where('ims_system_coupon_user_receive.user_id','=',$user_id) + ->whereIn('ims_system_coupon_user_receive.status',[0,1]) + ->get(); + if (count($userCouponCount)){ + $count = array_sum(array_column($userCouponCount->toArray(),'number_remain')); + }else{ + $count = 0; + } + return $this->success(['total' => $count]); } + /** + * 用户领取优惠卷 + */ public function userReceiveCoupon() { $userId = $this->request->input("user_id"); @@ -116,35 +141,35 @@ class CouponController extends BaseController } - /** - * 获取用户已经领取的优惠卷列表 - */ + /** + * 获取用户已经领取的优惠卷列表 + */ public function getUserReceiveCouponList() { - $userId = $this->request->input("user_id"); + $userId = $this->request->input("user_id"); $nowTime = time(); - $couponIds = CouponRec::where('user_id',$userId) - ->whereIn('status',[0,1]) - ->orderBy('receive_time','desc') - ->get() - ->pluck('system_coupon_user_id'); + $couponIds = CouponRec::where('user_id', $userId) + ->whereIn('status', [0, 1]) + ->orderBy('receive_time', 'desc') + ->get() + ->pluck('system_coupon_user_id'); $not_expired = []; - $expired = []; + $expired = []; $couponIds = $couponIds->toArray(); - $coupons = Coupon::orderByRaw('FIELD(id, '.implode(", " , $couponIds).')')->get(); + $coupons = Coupon::orderByRaw('FIELD(id, ' . implode(", ", $couponIds) . ')')->get(); foreach ($coupons as $key => $coupon) { - if($coupon->usable_end_time < $nowTime){ + if ($coupon->usable_end_time < $nowTime) { $expired[] = $coupon; - }else{ + } else { $not_expired[] = $coupon; } } - $ret = ['not_expired'=>$not_expired,'expired'=>$expired]; + $ret = ['not_expired' => $not_expired, 'expired' => $expired]; return $this->success($ret); @@ -158,15 +183,15 @@ class CouponController extends BaseController { // 获取参数 # 订单金额 - $orderAmount = $this->request->input('order_amount',0); + $orderAmount = $this->request->input('order_amount', 0); # 用户id - $userId = $this->request->input('user_id',0); + $userId = $this->request->input('user_id', 0); # 市场id - $marketId = $this->request->input('market_id',0); + $marketId = $this->request->input('market_id', 0); # 类型,1全平台 2线上 3线下,20200718默认全平台 - $type = $this->request->input('type',1); + $type = $this->request->input('type', 1); # 店铺类型id - $storetypeId = $this->request->input('storetype_id',0); + $storetypeId = $this->request->input('storetype_id', 0); $storetypeIds = explode(',', str_replace(',', ',', $storetypeId)); // 获取用户优惠券 @@ -194,7 +219,7 @@ class CouponController extends BaseController ->where('coupon.usable_start_time', '<=', $currentTime) ->where('coupon.usable_end_time', '>=', $currentTime) ->where('coupon.usable_number', '<=', Db::raw('receive.number_remain')) - ->where('coupon.market_id', 'in', [0,$marketId]) + ->where('coupon.market_id', 'in', [0, $marketId]) ->whereIn('coupon.storetype_id', $storetypeIds) ->orderByRaw('coupon.discounts DESC, coupon.full_amount DESC') ->get();