request->post(); $this->requestValidate($post, [ ['status', 'required'] ]); $form = new LoginForm(); $form->attributes = $post; return $form->userlogin(); } /** * 登录互联网医院平台 */ public function actionLoginPlatform(){ $post = \Yii::$app->request->post(); return (new PlatformService())->userLogin($post); } /** * @doc-name 用户授权 * @doc-param string iv iv加密算法的初始向量 * @doc-param string encryptedData 包括敏感数据在内的完整用户信息的加密数据 * @doc-return mixed User{*} 用户详情 */ public function actionUpdateUserInfo() { $post = \Yii::$app->request->post(); $this->requestValidate($post, [ [['iv', 'encryptedData'], 'required'] ]); $user = \Yii::$app->user->identity; $data = WechatService::getInstance()->app->encryptor->decryptData($user->session_key, $post['iv'], $post['encryptedData']); $user->attributes = [ 'nickname' => $data['nickName'], 'gender' => $data['gender'], 'country' => $data['country'], 'province' => $data['province'], 'city' => $data['city'], 'avatarurl' => $data['avatarUrl'], 'mobile' => $data['phoneNumber'] ?? '', ]; $user->saveOrFail(); return $user; } /** * @doc-name 手机号授权 * @doc-param string iv iv加密算法的初始向量 * @doc-param string encryptedData 包括敏感数据在内的完整用户信息的加密数据 * @doc-return mixed User{*} 用户详情 */ public function actionPhoneNumber() { $post = \Yii::$app->request->post(); $this->requestValidate($post, [ [['iv', 'encryptedData'], 'required'], ]); $user = \Yii::$app->user->identity; $data = WechatService::getInstance()->app->encryptor->decryptData($user->session_key, $post['iv'], $post['encryptedData']); if(!$user->mobile){ $user->mobile = $data['phoneNumber']; $user->saveOrFail(); // $response = (new Client(['http_errors' => false]))->post(\Yii::$app->params['platform']['url']."/platform/v1/sync/user", [ // 'headers' => ['Authorization' =>"Bearer ".\Yii::$app->params['platform']['token']], // 'form_params' => [ // 'id' => $user->id, // 'mobile' => $user->mobile, // 'nickname' => '微信用户', // 'avatarurl' => $user->avatarurl // ], // ]); // $result = json_decode($response->getBody(),true); // if ($result['errcode'] == -1) { // throw new Exception($result['msg']); // } } return[ 'user'=>$user, 'plate_token'=>"Bearer ".\Yii::$app->params['platform']['token'], ]; } /** * @doc-name 用户信息 * @doc-return mixed @User{*} 用户详情 */ public function actionInfo() { $get = \Yii::$app->request->get(); $user= \Yii::$app->user->identity; $ProductOrder['unpay'] = ProductOrder::find()->where([ 'user_id' => $user->getId(), 'store_id' => $get['store_id'] ?? 11001 ])->andWhere([ 'status' => ProductOrderEnum::UNPAY ])->count(); $ProductOrder['wait_send'] = ProductOrder::find()->where([ 'user_id' => $user->getId(), 'store_id' => $get['store_id'] ?? 11001 ])->andWhere([ 'status' =>ProductOrderEnum::WAIT_SEND ])->count(); $ProductOrder['wait_accept'] = ProductOrder::find()->where([ 'user_id' => $user->getId(), 'store_id' => $get['store_id'] ?? 11001 ])->andWhere([ 'status' => ProductOrderEnum::WAIT_ACCEPT ])->count(); if ($user->gender==1){ $user->gender='男'; }elseif ($user->gender==2){ $user->gender='女'; }else{ $user->gender='未知'; } return [ 'user' => $user, 'sex' => $user->gender, 'ProductOrder'=>$ProductOrder ]; } /** * @doc-name 编辑信息 * @doc-param string nickname 昵称 / optional * @doc-param string mobile 电话 / optional * @doc-param string gender 性别0默认1男2女 / optional * @doc-param string country 国家 / optional * @doc-param string province 省 / optional * @doc-param string city 市 / optional * @doc-param string avatarurl 头像 / optional * @doc-param string idcard 身份证 / optional * @doc-param int age 年龄 / optional **/ public function actionEditInfo() { $post = \Yii::$app->request->post(); $user = User::find()->where([ 'id' => \Yii::$app->user->id ])->one(); if (!$user) throw new Exception('用户不存在'); $user->nickname=$post['nickname']??$user->nickname; $user->mobile=$post['mobile']??$user->mobile; $user->gender=$post['gender']??$user->gender; $user->country=$post['country']??$user->country; $user->province=$post['province']??$user->province; $user->city=$post['city']??$user->city; $user->avatarurl=$post['avatarurl']??$user->avatarurl; $user->idcard=$post['idcard']??$user->idcard; $user->age=$post['age']??$user->age; $user->saveOrFail(); return ['编辑成功']; } /** * @doc-name 修改密码 * @doc-param string old_pass 旧密码 * @doc-param string new_pass 新密码 */ public function actionUpdatePassword() { $form = new UpdatePassForm(); $form->attributes = \Yii::$app->request->post(); return $form->updatePassword(); } /** * @doc-name 退出登录 * @doc-param string token token */ public function actionLogout() { $post = \Yii::$app->request->post(); $this->requestValidate($post, [ [['token'], 'required'], ]); $user = User::find()->where([ 'id' => \Yii::$app->user->identity->getId(), 'token' => $post['token'], ])->one(); if (!$user) throw new Exception('账号不存在'); User::updateAll(['token' => ''], ['id' => \Yii::$app->user->identity->getId(), 'token' => $post['token']]); } /** * @doc-name 手机号登录发送短信 * @doc-param string mobile 手机号码 * @doc-return string smsCode 验证码 */ public function actionSendCode() { $code = (string)mt_rand(100000, 999999); $post = \Yii::$app->request->post(); $this->requestValidate($post, [ ['mobile', 'required'] ]); $message=[ 'content' => '您的验证码为:" ' .$code. ' ",请勿泄露与他人', 'template' => 'SMS_274460204', 'data' => [ 'code' => $code ] ]; $cache = \Yii::$app->cache; $cache->set( 'login_sms_code_'.$post['mobile'], $code, 600); $cache->set( 'login_sms_time_'.$post['mobile'], time(), 600); $response = (new SmsService())->sendCaptcha($post['mobile'], $code); return [$response]; } /** * @doc-name 协议 * @doc-param int end 1用户端2服务端 * @doc-return mixed @BaseConfig{*} 信息 */ public function actionAgreement() { $post = \Yii::$app->request->post(); $this->requestValidate($post, [ ['end', 'required'] ]); $BaseConfig = BaseConfig::find()->where([ 'end' => $post['end'], // 'store_id' => $post['store_id'], 'status' => 0 ])->andWhere(['type' => [1, 2]])->select(['type', 'content', 'change_at'])->all(); return $BaseConfig; } }