| 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' => '无',
|
| xqd
@@ -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]);
|
|
|
}
|
|
|
|
|
|
/**
|
| xqd
@@ -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);
|
|
|
}
|
|
|
|
|
|
/**
|
| xqd
@@ -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,'验证码错误!');
|
|
|
}
|
| xqd
@@ -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]);
|
|
|
|
|
|
|