Explorar o código

替换微信登陆为先获取手机号再登陆等bug

liuyuanhang %!s(int64=4) %!d(string=hai) anos
pai
achega
5c767ffa7e

+ 66 - 92
app/Http/Controllers/Api/V2/CommonController.php

xqd xqd xqd xqd xqd
@@ -40,35 +40,27 @@ class CommonController extends Controller
         $this->validate(request(), [
             'wechat_code' => 'required',
             'nickname|昵称' => 'max:50',
+            'phone|手机号' => 'max:20',
             'avatar|头像' => 'url',
             'latitude|纬度' => 'numeric',
             'longitude|纬度' => 'numeric',
         ]);
 
         $app = Factory::miniProgram(config('config.docter_wechat_small_program'));
-
         $data = $app->auth->session($req['wechat_code']);
-
         if (empty($data['openid'])) {
             return out(null, 10001, '微信登录code错误');
         }
-
         $session_key = !empty($data['session_key']) ? $data['session_key'] : '';
-
-
-//        $user = User::select(['id', 'status', 'phone', 'nickname', 'avatar'])->where('openid', $data['openid'])->first();
         $user = Docter::select(['id', 'status', 'phone', 'name', 'avatar'])->where('openid', $data['openid'])->first();
         if (empty($user)) {
-
             $docter_list = [
                 'type' => 1,
                 'openid' => $data['openid'],
                 'session_key' => $session_key,
-                'name' => $req['nickname'] ?? '',
-                'phone' => '',
+                'phone' => $req['phone'],
                 'sex' => 0,
                 'birthday' => 0,
-                'avatar' => $req['avatar'] ?? '',
                 'status' => 1,
                 'label' => '无',
                 'sign' => '无',
@@ -94,35 +86,33 @@ class CommonController extends Controller
                 'is_quail' => 0,
                 'card_id' => 0,
             ];
+            $docter_list['name'] = $req['nickname'] ?? '';
+            $docter_list['avatar'] = $req['avatar'] ?? request()->getScheme() . '://' . request()->getHost() . '/img/default-head.png';
             $user = Docter::create($docter_list);
+            if (empty($docter_list['name'])) {
+                $nickname = '用户' . base_convert($user['id'], 10, 16);
+                Docter::where('id', $user['id'])->update(['name' => $nickname]);
+            }
         } else {
             if ($user['status'] == 0) {
                 return out(null, 10002, '该账号已被冻结');
             }
             Docter::where('id', $user['id'])->update([
+                'name' => $req['nickname'] ?? '',
+                'avatar' => $req['avatar'] ?? '',
                 'latitude' => $req['latitude'] ?? 0,
                 'longitude' => $req['longitude'] ?? 0,
+                'phone' => $req['phone'] ?? 0,
                 'session_key' => $session_key
             ]);
         }
-
-
-        if ($user['phone'] != '') {
-
-
-            if ($user['status'] == 0) {
-                return out(null, 10002, '该账号已被冻结');
-            }
-            $datas = [
-                'avatar' => $user['avatar'],
-                'name' => $user['name'],
-                'flag' => 'doctor_' . $user['id'],
-            ];
-            $token = aes_encrypt(['doctor_id' => $user['id'], 'time' => time()]);
-            return out(['token' => $token, 'data' => $datas]);
-        } else {
-            return out(['session_key' => $session_key, 'openid' => $data['openid']]);
-        }
+        $token = aes_encrypt(['doctor_id' => $user['id'], 'time' => time()]);
+        $datas = [
+            'avatar' => $user['avatar'],
+            'name' => $user['name'],
+            'flag' => 'doctor_' . $user['id'],
+        ];
+        return out(['token' => $token, 'data' => $datas]);
     }
 
     /**
@@ -135,82 +125,63 @@ class CommonController extends Controller
     {
         $req = request()->post();
         $this->validate(request(), [
+            'wechat_code' => 'required',
             'iv' => 'required',
             'encryptedData' => 'required',
-            'session_key' => 'required',
-            'openid' => 'required',
         ]);
-
-
         $app = Factory::miniProgram(config('config.docter_wechat_small_program'));
-//        $data = $app->auth->session($req['code']);
-//        if (empty($data['openid'])){
-//            return out(null, 10001, '微信登录code错误');
-//        }
-        $session_key = !empty($req['session_key']) ? $req['session_key'] : '';
-//        $user = User::select(['id','sex', 'status', 'phone', 'birthday','nickname', 'avatar','status'])->where('openid', $req['openid'])->first();
-        $user = Docter::select(['id', 'sex', 'status', 'phone', 'birthday', 'name', 'avatar'])->where('openid', $req['openid'])->first();
-
-        if (!$user) {
-            return out(['status' => false, 'msg' => '用户不存在!']);
+        $data = $app->auth->session($req['wechat_code']);
+        if (empty($data['openid']) || empty($data['session_key'])) {
+            return out(null, 10001, '微信code错误');
         }
 
-
+        $session_key = $data['session_key'];
         $decryptedData = $app->encryptor->decryptData($session_key, $req['iv'], $req['encryptedData']);
         if (!isset($decryptedData['phoneNumber']) || empty($decryptedData['phoneNumber'])) {
             return out(['status' => false, 'msg' => '手机号解密失败!']);
         }
-
-
-//        $docter_list = [
-//            'type' => 1,
-//            'name' => $user['nickname'],
-//            'phone' => $decryptedData['phoneNumber'],
-//            'sex' => $user['sex'],
-//            'birthday' => $user['birthday'],
-//            'avatar' => $user['avatar'],
-//            'status' => 1,
-//            'label' => '无',
-//            'sign' => '无',
-//            'intro' => 0,
-//            'office_id' => 0,
-//            'qualification_id' => 0,
-//            'score' => 0,
-//            'service_persons' => 0,
-//            'eva_num' => 0,
-//            'service_days' => 0,
-//            'phone_minutes' => 0,
-//            'chat_price' => 0,
-//            'phone_price' => 0,
-//            'appoint_price' => 0,
-//            'is_chat' => 0,
-//            'is_phone' => 0,
-//            'is_appoint' => 0,
-//            'latitude' => 0,
-//            'longitude' => 0,
-//            'is_then' => 0,
-//            'practice' => 0,
-//            'card_photo' => 0,
-//            'is_quail' => 0,
-//            'card_id' => 0,
-//        ];
+        $docter_list = [
+            'type' => 1,
+            'openid' => $data['openid'],
+            'session_key' => $session_key,
+            'name' => '',
+            'phone' => $decryptedData['phoneNumber'],
+            'sex' => 0,
+            'birthday' => 0,
+            'avatar' => request()->getScheme() . '://' . request()->getHost() . '/img/default-head.png',
+            'status' => 1,
+            'label' => '无',
+            'sign' => '无',
+            'intro' => 0,
+            'office_id' => 0,
+            'qualification_id' => 0,
+            'score' => 0,
+            'service_persons' => 0,
+            'eva_num' => 0,
+            'service_days' => 0,
+            'phone_minutes' => 0,
+            'chat_price' => 0,
+            'phone_price' => 0,
+            'appoint_price' => 0,
+            'is_chat' => 0,
+            'is_phone' => 0,
+            'is_appoint' => 0,
+            'latitude' => 0,
+            'longitude' => 0,
+            'is_then' => 0,
+            'practice' => 0,
+            'card_photo' => 0,
+            'is_quail' => 0,
+            'card_id' => 0,
+        ];
         // 查询医生表有没有记录
-        $save = Docter::where('id', $user['id'])->update(['phone' => $decryptedData['phoneNumber']]);
-        if ($save) {
-            if ($user['status'] == 0) {
-                return out(null, 10002, '该账号已被冻结');
-            }
-            $datas = [
-                'avatar' => $user['avatar'],
-                'name' => $user['name'],
-                'flag' => 'doctor_' . $user['id'],
-            ];
-            $token = aes_encrypt(['doctor_id' => $user['id'], 'time' => time()]);
-            return out(['token' => $token, 'data' => $datas]);
-        } else {
-            return out(null, 10003, '账户不存在请重新登陆');
+        $find = Docter::where('phone', $decryptedData['phoneNumber'])->first();
+        if (!$find) {
+            $user = Docter::create($docter_list);
+            $nickname = '医生' . base_convert($user['id'], 10, 16);
+            Docter::where('id', $user['id'])->update(['name' => $nickname]);
         }
-
+        return out($decryptedData);
     }
 
     /**
@@ -227,6 +198,7 @@ class CommonController extends Controller
         ]);
         $verify = (int)$req['verify'];
         $verifyCode = Cache::get($req['phone'].'-', $verify, config('config.aly_sms.sms_verify_code_expire'));
+
         if ($verifyCode!=$verify){
             return out('',401,'验证码错误!');
         }
@@ -290,6 +262,8 @@ class CommonController extends Controller
         ];
         // 验证是否正确
         $token = aes_encrypt(['doctor_id' => $find['id'], 'time' => time()]);
+        Cache::delete($req['phone'] . '-', $verify);
+
         return out(['token' => $token,'data'=>$datas]);
 
 

+ 12 - 3
app/Http/Controllers/Api/V2/DoctorController.php

xqd xqd
@@ -197,9 +197,9 @@ class DoctorController extends AuthController
      * @return mixed
      */
     public function getSettingBase(){
-        $finds = $this->user;
-//        $doctor_id = (new Commons)->getUserIdByDoctorId($user['phone']);
-//        $finds = Docter::select(['is_chat', 'is_phone', 'is_appoint'])->where('id', $doctor_id)->first()->toArray();
+        $user = $this->user;
+        $doctor_id =  $user['id'];
+        $finds = Docter::select(['is_chat', 'is_phone', 'is_appoint'])->where('id', $doctor_id)->first();
         $finds['is_chat'] = $finds['is_chat'] == 0 ? false : true;
         $finds['is_phone'] = $finds['is_phone'] == 0 ? false : true;
         $finds['is_appoint'] = $finds['is_appoint'] == 0 ? false : true;
@@ -861,6 +861,15 @@ class DoctorController extends AuthController
         if (!$doctor_id) {
             return out(null, 500, '医生信息错误!');
         }
+        if (count(explode(',',$req['certificate']))!=2){
+            return out(null, 500, '医生照片和执业证书数量错误!');
+        }
+        if(count(explode(',',$req['idPhoto']))!=2){
+            return out(null, 500, '身份证正反面数量错误!');
+        }
+        if(count(explode(',',$req['doctorQualification']))!=2){
+            return out(null, 500, '照片和资格证书数量错误!');
+        }
         $data = [];
         $data['name'] = $req['name'];
         $data['sex'] = $req['sex'];