verify_sign(); // 验证参数 $request->scene('get_detail')->validate(); // 检查登录 $uid = $this->checkLogin(); // 接收参数 $id = request('id',0); // 获取客户城市的数据 $data = $Model->getOne($id); // 如果存在的话 if( !$data ) return json_send(['code'=>'error','msg'=>'暂无活动','data'=>$data]); // 获取客户信息 $custom = $Custom->getOne($uid); // 如果存在的话 if( !$custom ) return json_send(['code'=>'no_login','msg'=>'请登录','data'=>['error'=>'无对应客户']]); // 默认可以参加活动 $data['allow_join'] = 1; // 判断是不是可以参与 if( $data['tag_scope'] ) { // 解析数组 $data['tag_scope'] = explode(',',$data['tag_scope']); // 查询用户标签 $tags = $WeiBanTags->getListByWeibanExtid($custom['weiban_extid']); // 标签范围限定时,默认不能参与 $data['allow_join'] = 0; // 判断标签是不是存在 foreach ($tags as $value) { // 标签范围内,允许参加 if( in_array($value['name'],$data['tag_scope']) ) $data['allow_join'] = 1; } // 如果不能参与 if( !$data['allow_join'] ) return json_send(['code'=>'error','msg'=>'账号不在标签范围','data'=>['error'=>'不在标签范围内']]); } // 判断是不是可以参与 if( $data['city_ids'] ) { // 解析数组 $data['city_ids'] = explode(',',$data['city_ids']); // 如果不在城市范围 if( !in_array($custom['city_id'],$data['city_ids']) ) $data['allow_join'] = 0; // 如果不能参与 if( !$data['allow_join'] ) return json_send(['code'=>'error','msg'=>'账号不在活动城市','data'=>['error'=>'账号不在活动城市']]); // 获取城市 foreach ($data['city_ids'] as $key=>$value) { // 获取值 $value = $City->getOne($value,'name'); // 获取城市名 $data['city_ids'][$key] = $value; } // 重组数据 $data['city_ids'] = $data['city_ids'] ? implode('、',$data['city_ids']) : ''; } // banner图片 $data['banner_img'] = $data['banner_img'] ? path_compat($data['banner_img']) : ''; // 时间处理 $data['start_date'] = date('Y/m/d H:i',$data['start_time']); // 时间处理 $data['end_date'] = date('Y/m/d H:i',$data['end_time']); // 获取该活动的匹配的优惠券 $couponList = $ActiveCoupon->getListByActiveId($id); // 优惠券列表 $couponIds = array_column($couponList,'coupon_id'); // 通过优惠券ID,查询赠品 $rebates = $CouponRebate->getRebatesByCouponIds($couponIds); // 已领取的优惠券 $haveList = $CustomCoupon->isHaveCoupon($couponIds,$uid); // 商品范围 $products = $CouponProduct->getProductList($couponIds); // 循环数据 foreach ($couponList as $key => $value) { // 如果城市ID存在 if( $value['city_ids'] ) { // 解析数组 $value['city_ids'] = explode(',',$value['city_ids']); // 如果在城市范围 if( !in_array($custom['city_id'],$value['city_ids']) ) { // 如果不在城市范围 unset($couponList[$key]); continue; } } // 如果还没到开始时间 if( $value['coupon_status'] ){ // 如果不在城市范围 unset($couponList[$key]); continue; } // 赠品范围 $rebateScope = []; // 获取赠品列表 foreach ($rebates as $vv) { // 获取优惠券的赠品 if( $vv['coupon_id'] == $value['coupon_id'] ) { unset($vv['coupon_id']); // 赠品信息 $rebateScope[] = $vv; } } // 赠品范围 $value['rebate_scope'] = $rebateScope; // 产品范围 $productScope = []; // 状态可用 且指定商品 if( $value['type_id'] == 1 ) { // 获取赠品列表 foreach ($products as $vv) { // 获取优惠券的赠品 if( $vv['coupon_id'] == $value['coupon_id'] ) { // 赠品信息 $productScope[] = $vv['product_id']; } } } // 商品范围 $value['product_scope'] = $productScope; // 是否已经领取 $value['is_have'] = isset($haveList[$value['coupon_id']]) ? 1 : 0; // 计算到期时间 $value['exp_time'] = $value['exp_time'] > 1000 ? date('Y/m/d H:i',$value['exp_time']) : '领取后'.$value['exp_time'].'天失效'; // 重组 $couponList[$key] = $value; } // 优惠券 $couponList = array_values($couponList); // 获取优惠券下的所有产品 $productList = $CouponProduct->getProductListByCouponIds(array_column($couponList,'coupon_id')); // 产品列表 $data['coupon_list'] = $couponList; $data['product_list'] = $productList; // 删除不必要的数据 unset($data['tag_scope']); // 返回结果 return json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]); } }