正在显示
2 个修改的文件
包含
194 行增加
和
0 行删除
@@ -28,6 +28,7 @@ use app\mobile\model\TopicAppraiseGood; | @@ -28,6 +28,7 @@ use app\mobile\model\TopicAppraiseGood; | ||
28 | use app\mobile\model\UserJob; | 28 | use app\mobile\model\UserJob; |
29 | use app\mobile\model\CompanyJob; | 29 | use app\mobile\model\CompanyJob; |
30 | use app\mobile\model\Statistic; | 30 | use app\mobile\model\Statistic; |
31 | +use app\mobile\model\UserThird; | ||
31 | use addons\epay\library\Service; | 32 | use addons\epay\library\Service; |
32 | use Endroid\QrCode\QrCode; | 33 | use Endroid\QrCode\QrCode; |
33 | 34 | ||
@@ -303,6 +304,104 @@ class User extends Api | @@ -303,6 +304,104 @@ class User extends Api | ||
303 | } | 304 | } |
304 | 305 | ||
305 | /** | 306 | /** |
307 | + * 第三方登录 | ||
308 | + * @ApiWeigh (91) | ||
309 | + * | ||
310 | + * @ApiTitle (第三方登录) | ||
311 | + * @ApiSummary (第三方登录) | ||
312 | + * @ApiMethod (POST) | ||
313 | + * | ||
314 | + * @ApiParams (name="nickname", type="integer", required=true, description="第三方账号昵称") | ||
315 | + * @ApiParams (name="avatar", type="integer", required=false, description="第三方账号头像") | ||
316 | + * @ApiParams (name="gender", type="integer", required=false, description="第三方性别") | ||
317 | + * @ApiParams (name="openid", type="string", required=true, description="第三方登录返回的唯一识别数据") | ||
318 | + * @ApiParams (name="unionid", type="string", required=false, description="第三方用户多个产品中的唯一id,如:微信开放平台") | ||
319 | + * | ||
320 | + * @ApiReturn ({ | ||
321 | + 'code':'1', | ||
322 | + 'msg':'返回成功', | ||
323 | + "data": { | ||
324 | + "token": 用户token | ||
325 | + } | ||
326 | + }) | ||
327 | + */ | ||
328 | + public function userThird() { | ||
329 | + $param = $this->request->param(); | ||
330 | + $validate = new Validate([ | ||
331 | + 'nickname' => 'require', | ||
332 | + 'openid' => 'require', | ||
333 | + ]); | ||
334 | + $validate->message([ | ||
335 | + 'nickname.require' => '缺少参数nickname!', | ||
336 | + 'openid.require' => '缺少参数openid!', | ||
337 | + ]); | ||
338 | + if (!$validate->check($param)) { | ||
339 | + $this->error($validate->getError()); | ||
340 | + } | ||
341 | + // 判断用户是否已绑定该openid | ||
342 | + $time = time(); | ||
343 | + $ip = request()->ip(); | ||
344 | + $third = UserThird::where('openid',$param['openid'])->find(); | ||
345 | + Db::startTrans(); | ||
346 | + if($third) { | ||
347 | + // 修改第三方信息 | ||
348 | + $result = UserThird::where('id',$third['id'])->update([ | ||
349 | + 'openname' => $param['nickname'], | ||
350 | + 'logintime'=>$time | ||
351 | + ]); | ||
352 | + // 修改用户信息 | ||
353 | + $user = \app\common\model\User::get($third['user_id']); | ||
354 | + if(!empty($param['nickname']) && empty($user['nickname'])){ | ||
355 | + $user->nickname = $param['nickname']; | ||
356 | + } | ||
357 | + if(!empty($param['avatar']) && (empty($user['image']) || stripos($user['image'], 'http') !== false)){ | ||
358 | + $user->image = $param['avatar']; | ||
359 | + } | ||
360 | + if(!empty($param['gender']) && !isset($user['sex'])){ | ||
361 | + $user->sex = $param['gender'] == 2 ? 0 : $param['gender']; | ||
362 | + } | ||
363 | + $user->loginip = $ip; | ||
364 | + $user->logintime = $time; | ||
365 | + $user->updatetime = $time; | ||
366 | + $results = $user->save(); | ||
367 | + // 登录 | ||
368 | + $login = $this->auth->direct($third['user_id']); | ||
369 | + } else { | ||
370 | + // 添加用户信息 | ||
371 | + $result = \app\common\model\User::create([ | ||
372 | + 'nickname' => $param['nickname'], | ||
373 | + 'sex' => $param['gender'] == 2 ? 0 : $param['gender'], | ||
374 | + 'image' => $param['avatar'], | ||
375 | + 'status' => 'normal', | ||
376 | + 'jointime' => $time, | ||
377 | + 'joinip' => $ip, | ||
378 | + 'logintime' => $time, | ||
379 | + 'loginip' => $ip, | ||
380 | + 'prevtime' => $time | ||
381 | + ]); | ||
382 | + // 添加第三方信息 | ||
383 | + $results = UserThird::create([ | ||
384 | + 'user_id' => $result['id'], | ||
385 | + 'openname' => $param['nickname'], | ||
386 | + 'platform' => 'wechat', | ||
387 | + 'openid' => $param['openid'], | ||
388 | + 'createtime' => $time, | ||
389 | + 'updatetime' => $time, | ||
390 | + 'logintime' => $time, | ||
391 | + 'unionid' => $param['unionid'], | ||
392 | + ]); | ||
393 | + // 登录 | ||
394 | + $login = $this->auth->direct($result['id']); | ||
395 | + } | ||
396 | + if(!$result || !$results || !$login) { | ||
397 | + Db::rollback(); | ||
398 | + $this->error('授权登录失败'); | ||
399 | + } | ||
400 | + Db::commit(); | ||
401 | + $this->success('成功',['token'=>$this->auth->getToken()]); | ||
402 | + } | ||
403 | + | ||
404 | + /** | ||
306 | * @ApiWeigh (89) | 405 | * @ApiWeigh (89) |
307 | * @ApiTitle (忘记密码) | 406 | * @ApiTitle (忘记密码) |
308 | * @ApiSummary (忘记密码) | 407 | * @ApiSummary (忘记密码) |
@@ -507,6 +606,85 @@ class User extends Api | @@ -507,6 +606,85 @@ class User extends Api | ||
507 | } | 606 | } |
508 | 607 | ||
509 | /** | 608 | /** |
609 | + * @ApiWeigh (77) | ||
610 | + * @ApiTitle (绑定微信) | ||
611 | + * @ApiSummary (绑定微信) | ||
612 | + * @ApiMethod (POST) | ||
613 | + * | ||
614 | + * @ApiParams (name="nickname", type="integer", required=true, description="第三方账号昵称") | ||
615 | + * @ApiParams (name="avatar", type="integer", required=false, description="第三方账号头像") | ||
616 | + * @ApiParams (name="gender", type="integer", required=false, description="第三方性别") | ||
617 | + * @ApiParams (name="openid", type="string", required=true, description="第三方登录返回的唯一识别数据") | ||
618 | + * @ApiParams (name="unionid", type="string", required=false, description="第三方用户多个产品中的唯一id,如:微信开放平台") | ||
619 | + * | ||
620 | + * @ApiReturn ({ | ||
621 | + 'code':'1', | ||
622 | + 'msg':'返回成功', | ||
623 | + "data": { | ||
624 | + "token": 用户token | ||
625 | + } | ||
626 | + }) | ||
627 | + */ | ||
628 | + public function bindThird() { | ||
629 | + $param = $this->request->param(); | ||
630 | + $validate = new Validate([ | ||
631 | + 'nickname' => 'require', | ||
632 | + 'openid' => 'require', | ||
633 | + ]); | ||
634 | + $validate->message([ | ||
635 | + 'nickname.require' => '缺少参数nickname!', | ||
636 | + 'openid.require' => '缺少参数openid!', | ||
637 | + ]); | ||
638 | + if (!$validate->check($param)) { | ||
639 | + $this->error($validate->getError()); | ||
640 | + } | ||
641 | + // 判断用户是否已绑定该openid | ||
642 | + $time = time(); | ||
643 | + $ip = request()->ip(); | ||
644 | + $third = UserThird::where('openid',$param['openid'])->find(); | ||
645 | + Db::startTrans(); | ||
646 | + if($third) { | ||
647 | + $user = \app\common\model\User::get($third['user_id']); | ||
648 | + if($user['id'] != $this->auth->id){ | ||
649 | + $this->error('该微信已绑定其他账号'); | ||
650 | + } | ||
651 | + $result = UserThird::where('id',$third['id'])->update([ | ||
652 | + 'openname' => $param['nickname'], | ||
653 | + ]); | ||
654 | + } else { | ||
655 | + UserThird::where('user_id',$this->auth->id)->delete(); | ||
656 | + $user = \app\common\model\User::get($this->auth->id); | ||
657 | + $result = UserThird::create([ | ||
658 | + 'user_id' => $this->auth->id, | ||
659 | + 'openname' => $param['nickname'], | ||
660 | + 'platform' => 'wechat', | ||
661 | + 'openid' => $param['openid'], | ||
662 | + 'createtime' => $time, | ||
663 | + 'updatetime' => $time, | ||
664 | + 'logintime' => $time, | ||
665 | + 'unionid' => $param['unionid'], | ||
666 | + ]); | ||
667 | + } | ||
668 | + if(!empty($param['nickname']) && empty($user['nickname'])){ | ||
669 | + $user->nickname = $param['nickname']; | ||
670 | + } | ||
671 | + if(!empty($param['avatar']) && (empty($user['image']) || stripos($user['image'], 'http') !== false)){ | ||
672 | + $user->image = $param['avatar']; | ||
673 | + } | ||
674 | + if(!empty($param['gender']) && !isset($user['sex'])){ | ||
675 | + $user->sex = $param['gender'] == 2 ? 0 : $param['gender']; | ||
676 | + } | ||
677 | + $user->updatetime = $time; | ||
678 | + $results = $user->save(); | ||
679 | + if(!$result || !$results) { | ||
680 | + Db::rollback(); | ||
681 | + $this->error('绑定微信失败'); | ||
682 | + } | ||
683 | + Db::commit(); | ||
684 | + $this->success('成功'); | ||
685 | + } | ||
686 | + | ||
687 | + /** | ||
510 | * @ApiWeigh (76) | 688 | * @ApiWeigh (76) |
511 | * @ApiTitle (加入企业-查询企业) | 689 | * @ApiTitle (加入企业-查询企业) |
512 | * @ApiSummary (加入企业-查询企业) | 690 | * @ApiSummary (加入企业-查询企业) |
@@ -928,6 +1106,7 @@ class User extends Api | @@ -928,6 +1106,7 @@ class User extends Api | ||
928 | { | 1106 | { |
929 | $user = \app\mobile\model\User::get($this->auth->id); | 1107 | $user = \app\mobile\model\User::get($this->auth->id); |
930 | empty($user['image']) && $this->error('请先上传用户头像'); | 1108 | empty($user['image']) && $this->error('请先上传用户头像'); |
1109 | + empty($user['exam']) && $this->error('请先选择考试'); | ||
931 | //将用户的头像保存到本地 | 1110 | //将用户的头像保存到本地 |
932 | $user_dir = 'uploads/user'; | 1111 | $user_dir = 'uploads/user'; |
933 | if (!file_exists($user_dir)){ | 1112 | if (!file_exists($user_dir)){ |
application/mobile/model/UserThird.php
0 → 100644
1 | +<?php | ||
2 | +namespace app\mobile\model; | ||
3 | + | ||
4 | +use think\Model; | ||
5 | + | ||
6 | +class UserThird extends Model | ||
7 | +{ | ||
8 | + // 表名 | ||
9 | + protected $name = 'mobile_user_third'; | ||
10 | + // 开启自动写入时间戳字段 | ||
11 | + protected $autoWriteTimestamp = 'int'; | ||
12 | + // 定义时间戳字段名 | ||
13 | + protected $createTime = 'createtime'; | ||
14 | + protected $updateTime = 'updatetime'; | ||
15 | +} |
-
请 注册 或 登录 后发表评论