| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- <?php
- namespace addons\TinyShop\api\modules\v1\controllers\member;
- use Yii;
- use yii\web\NotFoundHttpException;
- use common\helpers\ResultHelper;
- use common\models\member\Member;
- use common\enums\StatusEnum;
- use common\helpers\ArrayHelper;
- use api\controllers\OnAuthController;
- use addons\TinyShop\common\enums\OrderStatusEnum;
- use addons\TinyShop\api\modules\v1\forms\MobileBindingForm;
- use addons\TinyShop\api\modules\v1\forms\MobileResetForm;
- use addons\TinyShop\api\modules\v1\forms\UpPayPwdForm;
- /**
- * 个人信息
- *
- * Class MemberController
- * @package addons\TinyShop\api\controllers
- * @author jianyan74 <751393839@qq.com>
- */
- class MemberController extends OnAuthController
- {
- /**
- * @var Member
- */
- public $modelClass = Member::class;
- /**
- * 个人中心
- *
- * @return array|null|\yii\data\ActiveDataProvider|\yii\db\ActiveRecord
- */
- public function actionIndex()
- {
- $member_id = Yii::$app->user->identity->member_id;
- $data = [];
- $data['member'] = $this->modelClass::find()
- ->where(['id' => $member_id])
- ->with(['account', 'memberLevel'])
- ->asArray()
- ->one();
- // 优惠券数量
- $data['couponNum'] = Yii::$app->tinyShopService->marketingCoupon->findCountByMemberId($member_id);
- // 购物车数量
- $data['cartNum'] = Yii::$app->tinyShopService->memberCartItem->findCountByMemberId($member_id);
- // 订单数量统计
- $data['orderNum'] = Yii::$app->tinyShopService->order->getOrderStatusCountByMemberId($member_id);
- // 消息数量
- $data['notifyNum'] = Yii::$app->tinyShopService->notifyMember->unReadCount($member_id);;
- // 开启分销商
- $data['promoter'] = '';
- $data['promoterAccount'] = '';
- // 开启签到
- $data['signOpen'] = StatusEnum::DISABLED;
- // 判断是否会员
- $data['memberCard'] = [];
- return $data;
- }
- /**
- * 更新
- *
- * @param $id
- * @return bool|mixed
- * @throws NotFoundHttpException
- */
- public function actionUpdate($id)
- {
- $data = Yii::$app->request->post();
- $data = ArrayHelper::filter($data, [
- 'nickname',
- 'head_portrait',
- 'realname',
- 'birthday',
- 'province_id',
- 'city_id',
- 'area_id',
- 'address',
- 'qq',
- 'email',
- 'gender',
- 'bg_image',
- 'description',
- ]);
- $model = $this->findModel($id);
- $model->attributes = $data;
- if (!$model->save()) {
- return ResultHelper::json(422, $this->getError($model));
- }
- return 'ok';
- }
- /**
- * 手机号码重置
- *
- * @return array|mixed
- * @throws \yii\base\Exception
- */
- public function actionMobileReset()
- {
- $model = new MobileResetForm();
- $model->attributes = Yii::$app->request->post();
- if ($model->validate()) {
- $member = $model->getUser();
- $member->mobile_reset_token = Yii::$app->security->generateRandomString() . '_' . time();
- $member->save();
- return [
- 'mobile_reset_token' => $member->mobile_reset_token
- ];
- }
- // 返回数据验证失败
- return ResultHelper::json(422, $this->getError($model));
- }
- /**
- * 手机号码绑定
- *
- * @return array|mixed|\yii\db\ActiveRecord|null
- */
- public function actionMobileBinding()
- {
- $member_id = Yii::$app->user->identity->member_id;
- $member = Yii::$app->services->member->findById($member_id);
- $model = new MobileBindingForm();
- $model->attributes = Yii::$app->request->post();
- $model->user = $member;
- if ($model->validate()) {
- $member->mobile_reset_token = '';
- $member->mobile = $model->mobile;
- $member->save();
- return $model->user;
- }
- return ResultHelper::json(422, $this->getError($model));
- }
- /**
- * 修改支付密码
- *
- * @return array|mixed
- * @throws \yii\base\Exception
- */
- public function actionUpdatePayPassword()
- {
- $model = new UpPayPwdForm();
- $model->attributes = Yii::$app->request->post();
- if (!$model->validate()) {
- return ResultHelper::json(422, $this->getError($model));
- }
- $member = $model->getUser();
- $member->password_hash = Yii::$app->security->generatePasswordHash($model->password);
- if (!$member->save()) {
- return ResultHelper::json(422, $this->getError($member));
- }
- return $this->regroupMember(Yii::$app->services->apiAccessToken->getAccessToken($member, $model->group));
- }
- /**
- * 注销
- *
- * @return array|mixed|string
- */
- public function actionCancel()
- {
- $member_id = Yii::$app->user->identity->member_id;
- $member = Yii::$app->services->member->findById($member_id);
- // 余额判断
- $account = Yii::$app->services->memberAccount->findByMemberId($member_id);
- if($account->user_money > 0) {
- return ResultHelper::json(422, '账户还有余额,无法注销');
- }
- // 订单判断
- $orderStatus = Yii::$app->tinyShopService->order->getOrderCountGroupByStatus(['buyer_id' => $member_id]);
- foreach ($orderStatus as $key => $count) {
- if (in_array($key, [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, -1]) && $count > 0) {
- return ResultHelper::json(422, '还存在未完成订单, 无法注销');
- }
- }
- // 注销
- Yii::$app->services->memberCancel->create($member);
- return ResultHelper::json(200, '注销成功');
- }
- /**
- * 权限验证
- *
- * @param string $action 当前的方法
- * @param null $model 当前的模型类
- * @param array $params $_GET变量
- * @throws \yii\web\BadRequestHttpException
- */
- public function checkAccess($action, $model = null, $params = [])
- {
- // 方法名称
- if (in_array($action, ['delete'])) {
- throw new \yii\web\BadRequestHttpException('权限不足');
- }
- }
- /**
- * @param $id
- * @return mixed
- * @throws NotFoundHttpException
- */
- protected function findModel($id)
- {
- if (empty($id) || !($model = Member::find()->where(['id' => Yii::$app->user->identity->member_id])->one())) {
- throw new NotFoundHttpException('请求的数据不存在或您的权限不足.');
- }
- return $model;
- }
- }
|