validate([ 'data' => 'required', 'iv' => 'required' ]); $app = \EasyWeChat::miniProgram(); $user = auth('api')->user(); // 解密 $session = Cache::has($user->mini_openid) ? Cache::get($user->mini_openid):''; if(!$session){ return $this->error('解析失败, 请重新调用auth'); } $iv = $request->input('iv'); $data = $request->input('data'); try { $decryptedData = $app->encryptor->decryptData($session, $iv, $data); $user->nick_name = data_get($decryptedData, 'nickName'); $user->avatar = data_get($decryptedData, 'avatarUrl'); $user->save(); return UserResource::make($user); } catch (\EasyWeChat\Kernel\Exceptions\DecryptException $e) { return $this->error('解析失败, '.$e->getMessage()); } } public function bindPhone(Request $request){ $request->validate([ 'data' => 'required', 'iv' => 'required', ]); $app = \EasyWeChat::miniProgram(); $user = auth('api')->user(); // 解密 $session = Cache::has($user->mini_openid) ? Cache::get($user->mini_openid):''; if(!$session){ return $this->error('解析失败, 请重新调用auth'); } $iv = $request->input('iv'); $data = $request->input('data'); try { $decryptedData = $app->encryptor->decryptData($session, $iv, $data); $phone = data_get($decryptedData, 'phoneNumber'); $message = '绑定成功'; if($user->register_gift == 0){ //查询注册赠送的优惠券 $tickets = json_decode(admin_setting('register_ticket')); if(count($tickets) > 0){ $user->sendTicket($tickets, 0, '注册绑定手机号赠送'); $message = '恭喜获得优惠券,请在【我的优惠券】中查看'; $user->register_gift = 1; } } $user->phone = $phone; $user->save(); return $this->success(UserResource::make($user)->resolve(), $message); } catch (\EasyWeChat\Kernel\Exceptions\DecryptException $e) { return $this->error('解析失败, 重新进入小程序再绑定'); } } /** * 更新用户信息 */ public function updateInfo(Request $request){ $user = auth('api')->user(); $need_update = 0; //更新头像 if($request->filled('avatar')){ $user->avatar = str_replace(env('OSS_URL'), '', $request->input('avatar')); // dd(env('OSS_URL'),$request->input('avatar'), str_replace(env('OSS_URL'), '', $request->input('avatar')), $user->avatar); $need_update = 1; } $need_update && $user->save(); return UserResource::make($user); } /** * 积分记录 */ public function pointsLog(Request $request){ $user = auth('api')->user(); $per_page = $request->input('per_page', 10); $list = PointsLog::where([ 'user_id'=>$user->id, ])->orderBy('created_at', 'desc')->paginate($per_page); return PointsLogsResource::collection($list)->additional(['code' => Response::HTTP_OK, 'message' => '']); } /** * 获取用户奖品数量情况 */ public function getUserAward(Request $request){ $user = auth('api')->user(); $award_array = []; for($i =1; $i<10; $i++){ $key = 'award_'.$i; $award_array[$i] = $user->activity->$key; } return $this->success($award_array); } public function userInfo(Request $request){ $user = auth('api')->user(); return UserResource::make($user); } /** * 获取用户优惠券 */ public function userTicket(Request $request){ $type = $request->input('type', 1);//1可用,2失效 $user = auth('api')->user(); $per_page = $request->input('per_page', 10); $query = UserTicket::with('quanTicket')->where([ 'user_id'=>$user->id, ]); if($type == 1){ $query->where('ticket_status', 0)->where('end_time', '>', Carbon::now()); }else{ $query->where(function($q){ $q->where('ticket_status', 1)->orWhere('end_time', '<=', Carbon::now()); }); } $list = $query->orderBy('created_at', 'desc')->paginate($per_page); return UserTicketResource::collection($list)->additional(['code' => Response::HTTP_OK, 'message' => '']); } }