isUserAuth(); $this->config = AisConfig::getConfig($this->member_miniapp_id); } /** * 用户已领优惠券 * @return void */ public function index(){ $param['type'] = $this->request->param('type/d',0); $param['page'] = $this->request->param('page/d',1); $this->apiSign($param); $condition[] = ['member_miniapp_id','=',$this->miniapp_id]; $condition[] = ['uid','=',$this->user->id]; $condition[] = ['money','=',0]; $condition[] = ['is_end','=',0]; switch ($param['type']){ case 1: $condition[] = ['types','<=',1]; break; case 2: $condition[] = ['types','=',2]; break; case 3: $condition[] = ['types','=',3]; break; } $coupon = AisCouponUser::with(['store' => function($query) { $query->field('id,name,img'); }])->where($condition)->order('create_time desc')->page($param['page'],10)->select(); if ($coupon->isEmpty()) { return enjson(204); } foreach ($coupon as $key => $info){ $coupon[$key]->end_time = $info->create_time + $this->config->coupon_longtime * 60 * 60; } return enjson(200,$coupon); } /** * 领取优惠券 * @return void */ public function getCoupon(){ $param['id'] = $this->request->param('id'); $param['store_id'] = $this->request->param('store_id'); //引荐的店铺id $this->apiSign($param); $couponUser = AisCouponUser::where(['member_miniapp_id' => $this->miniapp_id,'coupon_id' => $param['id'],'uid' => $this->user->id,'is_end' => 0])->find(); if(!empty($couponUser)){ return enjson(200,'已经拥有该优惠券',$couponUser); } if($param['id']){ $info = AisCoupon::where(['member_miniapp_id' => $this->miniapp_id,'id' => $param['id'],'is_end' => 0])->find(); if(!empty($info)){ $is_group = AisStoreUnion::isGroup($param['id'],$param['store_id'],$this->miniapp_id); $data['member_miniapp_id'] = $this->miniapp_id; $data['store_id'] = $info->store_id; $data['coupon_id'] = $info->id; $data['uid'] = $this->user->id; $data['is_end'] = 0; $data['types'] = $info->types; $data['name'] = $info->name; $data['price'] = $info->price; $data['discount'] = $info->discount; $data['howmuch'] = $info->howmuch; $data['amount'] = $info->amount; $data['tips'] = $info->tips; $data['group_ids'] = $is_group ?? 0; $data['parent_store_id'] = !empty($param['store_id']) ? $param['store_id'] : 0; $data['update_time'] = time(); $data['create_time'] = time(); $rel = AisCouponUser::create($data); if($rel){ return enjson(200,$rel); } return enjson(204); } } return enjson(403,'未找到优惠券'); } /** * 用户优惠券查看 * @return void */ public function read(){ $param['id'] = $this->request->param('id'); $this->apiSign($param); $info = AisCouponUser::with(['coupon' => function($query) { $query->field('id,create_time'); },'store' => function($query) { $query->field('id,name,address,longitude,latitude,img,telphone'); }])->where(['member_miniapp_id' => $this->miniapp_id,'id' => $param['id']])->find(); if (empty($info)) { return enjson(404,'未找到优惠券'); } $info->store->img = $info->store->img; if(!empty($this->lbs)){ $info->store->distance = getDistance($this->lbs->lng,$this->lbs->lat,$info->store->longitude,$info->store->latitude); } return enjson(200,$info); } }