get(SSDBTask::class); $couponActivity = $ssdb->exec('hgetall', SsdbKeysPrefix::COUPON_REBATE_ACTIVITY); $activityType = $couponActivity === false ? 0 : $couponActivity['activity']; $result = [ 'active_type' => 1, 'not_receive' => [], 'jump_data' => [ 'src' => "/zh_cjdianc/pages/couponrebate/index?activity_type=".$activityType, 'src2' => "/zh_cjdianc/pages/couponrebate/index?activity_type=".$activityType, 'share_bg' => env('OSS_IMG_HOST').'/attachment/images/png/2020/08/11/d697d43b91913f861f931649f0898815.png', 'receive_bg' => env('OSS_IMG_HOST')."/attachment/images/png/2020/08/11/9c7d7c95b5de29539fad4bc9a2fcb98d.png", 'coupons' => [] ] ]; $nowTime = time(); $c_ids = []; // 渠道开启,查询该渠道可以领取的优惠券ID // 渠道未开启,查询所有优惠券 if (env('SUB_CHANNEL') == 1) { $c_ids = CouponUserRecType::where('receive_type', $receiveType)->pluck('system_coupon_user_id'); } else { $c_ids = Coupon::pluck('id'); } $couponReceive = CouponRec::where('user_id',$userId); // 渠道开启,查询该用户在此渠道领过的优惠券ID if (env('SUB_CHANNEL') == 1) { $couponReceive->where('receive_type', $receiveType); } $cr_ids = $couponReceive->pluck('system_coupon_user_id'); // 可领取的券ID $c_ids = $c_ids->toArray(); // 已经领取的券ID $cr_ids = $cr_ids->toArray(); // 当前用户可领的优惠券ID $couponIds = array_diff($c_ids, $cr_ids); // 获取领取型优惠券 $couponIds = $couponActivity['forward'] === false ? $couponIds : array_merge($couponIds,explode(',',$couponActivity['forward'])); $whereC = [ ['u.end_time','>',$nowTime], ['u.start_time','<=',$nowTime], ['u.status','=',1] ]; if (env('SUB_CHANNEL') == 1) { array_push($whereC, ['type.receive_type','=', $receiveType]); } $coupons = Db::table('ims_system_coupon_user as u') ->join('ims_system_coupon_user_receivetype as type', 'u.id', '=', 'type.system_coupon_user_id') ->whereIn('u.id', $couponIds) ->where($whereC) ->whereRaw('u.inventory_use < u.inventory and u.inventory-u.inventory_use >= type.one_receive_number') ->select('u.*','type.one_receive_number') ->orderBy('u.weigh','desc') ->limit(4) ->get(); foreach ($coupons as $k => &$v){ if($v->active_type == 1){ $result['not_receive'][] = $v; }else if($v->active_type == 2){ $result['jump_data']['coupons'][] = $v->id; } if($v->discount_type == 2){ $v->discounts = floatval($v->discounts); } } $result['active_type'] = count($result['jump_data']['coupons']) > 0 ? 2 : $result['active_type'] ; return $result; } //统计用户 public function userCouponAccount() { } /** * 用户领取优惠卷 */ public function userReceiveCoupon() { } /** * 获取用户已经领取的优惠卷列表 */ public function getUserReceiveCouponList() { } /** * 获取用户当前订单可用的优惠券列表 * 按分类(1订单 等优惠)分组返回 */ public function getUserAvailableCoupons() { } }