123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php namespace App\Http\Controllers\Api\Coupon;
- use App\Http\Controllers\Api\Api;
- use App\Models\Coupon\Active as Model;
- use App\Models\Custom;
- use App\Http\Requests\Api\Coupon\Active as Request;
- use App\Models\City;
- use App\Models\Coupon\ActiveCoupon;
- use App\Models\CouponProduct;
- use App\Models\CouponRebate;
- use App\Models\CustomCoupon;
- use App\Models\Work\Tag as WorkTag;
- /**
- * 优惠券活动
- *
- * @author 刘相欣
- *
- * */
- class Active extends Api{
- /**
- * 获取抽奖配置 /api/coupon_active/get_detail
- *
- *
- * */
- public function get_detail(Request $request,Model $Model,Custom $Custom,WorkTag $WorkTag,City $City,ActiveCoupon $ActiveCoupon,CustomCoupon $CustomCoupon,CouponProduct $CouponProduct,CouponRebate $CouponRebate){
- // 接口验签
- // $this->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 = $WorkTag->getListByExtid($custom['external_userid']);
- // 标签范围限定时,默认不能参与
- $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]);
- }
-
- }
|