verify_sign(); // 检查登录 $uid = $this->checkLogin(); // 接收参数 $limit = request('limit',10); // 显示 $map = [['custom_coupon.custom_uid','=',$uid],['custom_coupon.status','<>','4']]; // 查询 $Paginator = $Model->query()->join('coupon','custom_coupon.coupon_id','=','coupon.id')->where($map)->orderBy('custom_coupon.status')->paginate($limit,['custom_coupon.id','coupon.id as coupon_id','coupon.name','coupon.type_id','coupon.rebate_type','coupon.std_pay','coupon.rebate','custom_coupon.status','custom_coupon.exp_time']); // 通过优惠券ID,查询赠品 $rebates = $CouponRebate->getRebatesByCouponIds(array_column($Paginator->items(),'coupon_id')); // 商品范围 $products = $CouponProduct->getProductList(array_column($Paginator->items(),'coupon_id')); // 循环处理数据 foreach ($Paginator as $key => $value) { $rebateScope = []; // 获取赠品列表 foreach ($rebates as $vv) { // 获取优惠券的赠品 if( $vv['coupon_id'] == $value['coupon_id'] ) { unset($vv['coupon_id']); // 赠品信息 $rebateScope[] = $vv; } } // 如果过期时间 if( $value['status'] == 0 && $value['exp_time'] < time() ) { // 设置过期状态 $Model->setStatusByExpire(); // 状态设置 $value['status'] = 3; } // 赠品范围 $value['rebate_scope'] = $rebateScope; // 产品范围 $productScope = []; // 状态可用 且指定商品 if( $value['status'] == 0 && $value['type_id'] == 1 ) { // 获取赠品列表 foreach ($products as $vv) { // 获取优惠券的赠品 if( $vv['coupon_id'] == $value['coupon_id'] ) { // 赠品信息 $productScope[] = $vv['product_id']; } } } // 商品范围 $value['product_scope'] = $productScope; // 时间 $value['exp_time'] = date('Y-m-d H:i:s',$value['exp_time']); // 优惠券回馈类型 $value['rebate'] = $value['rebate_type'] == 1 ? $value['rebate'] : intval($value['rebate']); // 重组 $list[$key] = $value; } // 获取数据 $data['total'] = $Paginator->total(); $data['current_page'] = $Paginator->currentPage(); $data['per_page'] = $Paginator->perPage(); $data['last_page'] = $Paginator->lastPage(); $data['data'] = $Paginator->items(); // 返回结果 return json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]); } /** * 获取下单可用列表 /api/custom_coupon/get_checked * * @param string $code 授权码 * * */ public function get_checked(Model $Model,CouponRebate $CouponRebate,CouponProduct $CouponProduct){ // 接口验签 // $this->verify_sign(); // 检查登录 $uid = $this->checkLogin(); // 查询条件 $map = [['custom_coupon.custom_uid','=',$uid],['custom_coupon.status','=',0]]; // 查询 $list = $Model->query()->join('coupon','custom_coupon.coupon_id','=','coupon.id')->where($map)->orderBy('custom_coupon.status')->get(['custom_coupon.id','coupon.id as coupon_id','coupon.name','coupon.type_id','coupon.rebate_type','coupon.std_pay','coupon.rebate','custom_coupon.status','custom_coupon.exp_time'])->toArray(); // 通过优惠券ID,查询商品范围 $products = $CouponProduct->getProductList(array_column($list,'coupon_id')); // 通过优惠券ID,查询赠品 $rebates = $CouponRebate->getRebatesByCouponIds(array_column($list,'coupon_id')); // 循环处理数据 foreach ($list as $key => $value) { // 适用范围 $productScope = []; // 如果是商品表,获取范围 if( $value['type_id'] == 1 ){ // 获取适用的商品范围 foreach ($products as $vv) { // 获取优惠券指定的商品 if( $vv['coupon_id'] == $value['coupon_id'] ) { unset($vv['coupon_id']); $productScope[] = $vv; } } } // 适用范围 $value['product_scope'] = $productScope; // 赠品范围 $rebateScope = []; // 获取赠品列表 foreach ($rebates as $vv) { // 获取优惠券的赠品 if( $vv['coupon_id'] == $value['coupon_id'] ) { unset($vv['coupon_id']); // 赠品信息 $rebateScope[] = $vv; } } // 赠品范围 $value['rebate_scope'] = $rebateScope; // 如果过期时间 if( $value['exp_time'] < time() ) { // 设置过期状态 $Model->setStatusByExpire(); // 状态设置 $value['status'] = 3; } // 时间 $value['exp_time'] = date('Y-m-d H:i:s',$value['exp_time']); // 优惠券回馈类型 $value['rebate'] = $value['rebate_type'] == 1 ? $value['rebate'] : intval($value['rebate']); // 重组 $list[$key] = $value; } // 返回结果 return json_send(['code'=>'success','msg'=>'获取成功','data'=>$list]); } }