AuthController.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace api\modules\v1\controllers\member;
  3. use Yii;
  4. use common\enums\StatusEnum;
  5. use common\helpers\ResultHelper;
  6. use common\models\member\Auth;
  7. use api\controllers\UserAuthController;
  8. /**
  9. * 第三方授权
  10. *
  11. * Class AuthController
  12. * @package api\modules\v1\controllers\member
  13. * @author jianyan74 <751393839@qq.com>
  14. */
  15. class AuthController extends UserAuthController
  16. {
  17. /**
  18. * @var Auth
  19. */
  20. public $modelClass = Auth::class;
  21. /**
  22. * 绑定第三方信息
  23. *
  24. * @return array|mixed|\yii\db\ActiveRecord|null
  25. */
  26. public function actionCreate()
  27. {
  28. $member_id = Yii::$app->user->identity->member_id;
  29. $oauthClient = Yii::$app->request->post('oauth_client');
  30. $oauthClientUserId = Yii::$app->request->post('oauth_client_user_id');
  31. /** @var Auth $model */
  32. if (!($model = Yii::$app->services->memberAuth->findByMemberIdOauthClient($oauthClient, $member_id))) {
  33. $model = new $this->modelClass();
  34. $model = $model->loadDefaultValues();
  35. $model->attributes = Yii::$app->request->post();
  36. }
  37. if (!$model->isNewRecord && $model->status == StatusEnum::ENABLED) {
  38. return ResultHelper::json(422, '请先解除该账号绑定');
  39. }
  40. // 下载头像
  41. $model->head_portrait && $baseInfo = Yii::$app->services->extendUpload->downloadByUrl($model->head_portrait);
  42. $model->head_portrait = $baseInfo['url'] ?? '';
  43. $model->oauth_client = $oauthClient;
  44. $model->oauth_client_user_id = $oauthClientUserId;
  45. $model->member_id = Yii::$app->user->identity->member_id;
  46. $model->status = StatusEnum::ENABLED;
  47. if (!$model->save()) {
  48. return ResultHelper::json(422, $this->getError($model));
  49. }
  50. // 更改用户信息
  51. if ($member = Yii::$app->services->member->get($model->member_id)) {
  52. !$member->head_portrait && $member->head_portrait = $model->head_portrait;
  53. !$member->gender && $member->gender = $model->gender;
  54. !$member->nickname && $member->nickname = $model->nickname;
  55. $member->save();
  56. }
  57. return $model;
  58. }
  59. /**
  60. * @param $id
  61. * @return array|bool|mixed
  62. * @throws \yii\web\NotFoundHttpException
  63. */
  64. public function actionDelete($id)
  65. {
  66. $member_id = Yii::$app->user->identity->member_id;
  67. $member = Yii::$app->services->member->get($member_id);
  68. if (empty($member['mobile']) && Yii::$app->services->memberAuth->getCountByMemberId($member_id) == 1) {
  69. return ResultHelper::json(422, '无法解除该账号绑定');
  70. }
  71. $model = $this->findModel($id);
  72. $model->status = StatusEnum::DELETE;
  73. return $model->save();
  74. }
  75. /**
  76. * @return array|mixed
  77. */
  78. public function actionIsBinding()
  79. {
  80. $oauthClient = Yii::$app->request->post('oauth_client');
  81. $model = Yii::$app->services->memberAuth->findByMemberIdOauthClient($oauthClient, Yii::$app->user->identity->member_id);
  82. if ($model) {
  83. return [
  84. 'openid' => $model['oauth_client_user_id']
  85. ];
  86. }
  87. return [
  88. 'openid' => ''
  89. ];
  90. }
  91. }
粤ICP备19079148号