123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- <?php
- namespace addons\shopro\controller\user;
- use app\common\library\Sms;
- use addons\shopro\controller\Common;
- use addons\shopro\service\user\UserAuth;
- use app\admin\model\shopro\user\User as UserModel;
- use app\admin\model\shopro\user\Coupon as UserCouponModel;
- use app\admin\model\shopro\order\Order as OrderModel;
- use app\admin\model\shopro\order\Aftersale as AftersaleModel;
- use app\admin\model\shopro\ThirdOauth;
- class User extends Common
- {
- protected $noNeedLogin = ['smsRegister', 'accountLogin', 'smsLogin', 'resetPassword'];
- protected $noNeedRight = ['*'];
- public function _initialize()
- {
- parent::_initialize();
- \think\Lang::load(APP_PATH . 'api/lang/zh-cn/user.php'); // 加载语言包
- }
- /**
- * 用户数据
- */
- public function data()
- {
- $user = auth_user();
- // 查询用户优惠券数量
- $data['coupons_num'] = UserCouponModel::geted()->where('user_id', $user->id)->count();
- // 订单数量
- $orderNum = [];
- $orderNum['unpaid'] = OrderModel::where('user_id', $user->id)->unpaid()->count();
- $orderNum['nosend'] = OrderModel::where('user_id', $user->id)->pretendPaid()->nosend()->count();
- $orderNum['noget'] = OrderModel::where('user_id', $user->id)->pretendPaid()->noget()->count();
- $orderNum['nocomment'] = OrderModel::where('user_id', $user->id)->paid()->nocomment()->count();
- $orderNum['aftersale'] = AftersaleModel::where('user_id', $user->id)->needOper()->count();
- $data['order_num'] = $orderNum;
- $this->success('用户数据', $data);
- }
- /**
- * 第三方授权信息
- */
- public function thirdOauth()
- {
- $user = auth_user();
- $provider = $this->request->param('provider', '');
- $platform = $this->request->param('platform', '');
- if (!in_array($platform, ['miniProgram', 'officialAccount', 'openPlatform'])) {
- $this->error(__('Invalid parameters'));
- }
- $where = [
- 'platform' => $platform,
- 'user_id' => $user->id
- ];
- if ($provider !== '') {
- $where['provider'] = $provider;
- }
- $oauth = ThirdOauth::where($where)->field('nickname, avatar, platform, provider')->find();
- $this->success('', $oauth);
- }
- /**
- * 用户信息
- */
- public function profile()
- {
- //TODO @ldh: 1.账号被禁用 2.连表查group
- $user = auth_user(true);
- $user = UserModel::with(['parent_user', 'third_oauth'])->where('id', $user->id)->find();
- $user->hidden(['password', 'salt', 'createtime', 'updatetime', 'deletetime', 'remember_token', 'login_fail', 'login_ip', 'login_time']);
- $this->success('个人详情', $user);
- }
- /**
- * 更新用户资料
- */
- public function update()
- {
- $user = auth_user();
- $params = $this->request->only(['avatar', 'nickname', 'gender']);
- $this->svalidate($params);
- $user->save($params);
- $user->hidden(['password', 'salt', 'createtime', 'updatetime', 'deletetime', 'remember_token', 'login_fail', 'login_ip', 'login_time']);
- $this->success('更新成功', $user);
- }
- /**
- * 账号密码登录
- */
- public function accountLogin()
- {
- $user = auth_user();
- if ($user) {
- $this->error('您已登录,不需要重新登录');
- }
- $params = $this->request->only(['account', 'password']);
- $this->svalidate($params, '.accountLogin');
- $ret = $this->auth->login($params['account'], $params['password']);
- if ($ret) {
- set_token_in_header($this->auth->getToken());
- $this->success(__('Logged in successful'));
- } else {
- $this->error($this->auth->getError() ?: '注册失败');
- }
- }
- /**
- * 短信验证码登陆
- */
- public function smsLogin()
- {
- $user = auth_user();
- if ($user) {
- $this->error('您已登录,不需要重新登录');
- }
- $params = $this->request->only(['mobile', 'code']);
- $this->svalidate($params, '.smsLogin');
- if (!Sms::check($params['mobile'], $params['code'], 'mobilelogin')) {
- $this->error(__('Captcha is incorrect'));
- }
- $user = UserModel::getByMobile($params['mobile']);
- if ($user) {
- if ($user->status != 'normal') {
- $this->error(__('Account is locked'));
- }
- //如果已经有账号则直接登录
- $ret = $this->auth->direct($user->id);
- }else {
- $this->error('该手机号暂未注册');
- }
- if (isset($ret) && $ret) {
- Sms::flush($params['mobile'], 'mobilelogin');
- set_token_in_header($this->auth->getToken());
- $this->success(__('Logged in successful'));
- } else {
- $this->error($this->auth->getError() ?: '登录失败');
- }
- }
- /**
- * 短信验证码注册
- */
- public function smsRegister()
- {
- $user = auth_user();
- if ($user) {
- $this->error('您已登录,请先退出登录');
- }
- $params = $this->request->only(['mobile', 'code', 'password']);
- $this->svalidate($params, '.smsRegister');
- $ret = Sms::check($params['mobile'], $params['code'], 'register');
- if (!$ret) {
- $this->error(__('Captcha is incorrect'));
- }
- // 注册
- $userAuth = new UserAuth();
- $auth = $userAuth->register($params);
- set_token_in_header($auth->getToken());
- $this->success(__('Sign up successful'));
- }
- /**
- * 修改密码
- */
- public function changePassword()
- {
- $user = auth_user();
- $params = $this->request->only(['oldPassword', 'newPassword']);
- $this->svalidate($params, '.changePassword');
- $userAuth = new UserAuth();
- $userAuth->changePassword($params['newPassword'], $params['oldPassword']);
- $this->auth->direct($user->id);
- set_token_in_header($this->auth->getToken());
- $this->success(__('Change password successful'));
- }
- /**
- * 重置/忘记密码
- */
- public function resetPassword()
- {
- $params = $this->request->only(['mobile', 'code', 'password']);
- $this->svalidate($params, '.resetPassword');
- $ret = Sms::check($params['mobile'], $params['code'], 'resetpwd');
- if (!$ret) {
- $this->error(__('Captcha is incorrect'));
- }
- $userAuth = new UserAuth();
- $userAuth->resetPassword($params);
- $this->success(__('Reset password successful'));
- }
- /**
- * 更换手机号
- */
- public function changeMobile()
- {
- $params = $this->request->only(['mobile', 'code']);
- $this->svalidate($params, '.changeMobile');
- $ret = Sms::check($params['mobile'], $params['code'], 'changemobile');
- if (!$ret) {
- $this->error(__('Captcha is incorrect'));
- }
- $userAuth = new UserAuth();
- $userAuth->changeMobile($params);
- $this->success('绑定成功');
- }
- /**
- * 修改用户名
- */
- public function changeUsername()
- {
- $user = auth_user(true);
- $params = $this->request->only(['username']);
- $this->svalidate($params, '.changeUsername');
- $userAuth = new UserAuth();
- $userAuth->changeUsername($params);
- $this->success('绑定成功');
- }
- /**
- * 更新小程序头像和昵称
- */
- public function updateMpUserInfo()
- {
- $user = auth_user(true);
- $params = $this->request->only(['avatar', 'nickname']);
- $this->svalidate($params, '.updateMpUserInfo');
- $user->save($params);
- $thirdOauth = \app\admin\model\shopro\ThirdOauth::where('user_id', $user->id)->where([
- 'provider' => 'wechat',
- 'platform' => 'miniProgram'
- ])->find();
- $thirdOauth->save($params);
- $this->success('绑定成功');
- }
- /**
- * 登出
- */
- public function logout()
- {
- $userAuth = new UserAuth();
- $userAuth->logout();
- $this->success(__('Logout successful'));
- }
- /**
- * 用户注销
- */
- public function logoff()
- {
- $userAuth = new UserAuth();
- $userAuth->logoff();
- $this->success('注销成功');
- }
- }
|