request = $request; $this->centerService = $centerService; } /** * 修改用户信息 * 修改真实姓名 修改微信名称 修改学校 * @return array */ public function setUserInfo() { $update_data = array(); if (isset($this->request->real_name)) $update_data['real_name'] = $real_name = $this->request->real_name; if (isset($this->request->nick_name)) $update_data['nick_name'] = $nick_name = $this->request->nick_name; if (isset($this->request->school)) $update_data['school'] = $school = $this->request->school; if (isset($this->request->avatar_url)) $update_data['avatar_url'] = $avatar_url = $this->request->avatar_url; if (isset($this->request->gender)) $update_data['gender'] = $gender = $this->request->gender; if (isset($this->request->birthday)) $update_data['birthday'] = $birthday = $this->request->birthday; if (isset($this->request->country)) $update_data['country'] = $country = $this->request->country; if (isset($this->request->province)) $update_data['province'] = $province = $this->request->province; if (isset($this->request->city)) $update_data['birthday'] = $school = $this->request->city; try { $user = $this->auth->user(); if (isset($this->request->phone)) { $verifyData = self::verificationCode($this->request); $update_data['phone'] = $this->request->phone; Cache::forget($this->request->verification_key); $user_data = User::query()->where('phone', $this->request->phone)->first(); if ($user_data) { return apiJsonError('手机号已经存在'); } $order_data = OrderRecord::query()->where('phone', $this->request->phone)->first(); if ($order_data and $order_data->status == 1) { $update_data['user_type'] = 1; $update_data['become_member_time'] = $order_data->created_at; } } if (count($update_data)) { $this->centerService->setUserInfo($user, $update_data); } return apiJsonMsg('用户信息更新成功'); } catch (ApiException $apiException) { return apiJsonMsg($apiException->getMessage()); } } /** * 接口解密、手机号-wechat * @param Request $request * @return array */ public function decrypt(Request $request) { $user = $this->auth->user(); $app = \EasyWeChat::miniProgram(); $decryptedData = $app->encryptor->decryptData($user->session_key, $request->iv, $request->encryptedData); if ($decryptedData['purePhoneNumber']) { $update_data['phone'] = $decryptedData['purePhoneNumber']; $this->centerService->setUserInfo($user, $update_data); } return apiJson($decryptedData); } /** * 修改手机号,校验验证码 * @param Request $request * @return array */ public function setPhone(Request $request) { $user = $this->auth->user(); try { self::verificationCode($request); $update_data['phone'] = $school = $request->phone; $this->centerService->setUserInfo($user, $update_data); // 清除验证码缓存 Cache::forget($request->verification_key); return apiJsonMsg('用户信息更新成功'); } catch (ApiException $apiException) { return apiJsonError($apiException->getMessage()); } } /** * 校验验证码是否正确 * @param $request * @return mixed */ public static function verificationCode($request) { $verifyData = Cache::get($request->verification_key); if (!$verifyData) { throw new ApiException('验证码已失效'); } if ($verifyData['code'] != $request->verification_code) { throw new ApiException('验证码错误'); } return $verifyData; } }