浏览代码

用户绑定调整/列表调整

zhangxiaobin 1 年之前
父节点
当前提交
82a853d1a4
共有 2 个文件被更改,包括 79 次插入50 次删除
  1. 78 49
      application/api/controller/User.php
  2. 1 1
      application/common/service/RoomService.php

+ 78 - 49
application/api/controller/User.php

@@ -740,6 +740,10 @@ class User extends Api
         } else {
             $extend = [
                 'openid' => $openid,
+                'nickname' => $wxuserinfo['nickname'],
+                'sex' => $wxuserinfo['sex'],
+                'avatar' => $wxuserinfo['headimgurl'],
+                'status' => 'new',
             ];
             $mobile = '';
             $ret = $this->auth->register($mobile, Random::alnum(), $mobile, $extend);
@@ -1121,38 +1125,49 @@ class User extends Api
      */
     public function bindmobile()
     {
-        //$user = $this->auth->getUser();
-        $user = model('User')->find($this->auth->id);
-        $mobile = $this->request->param('mobile');
-        $captcha = $this->request->param('captcha');
+        try {
+            $user = model('User')->find($this->auth->id);
+            $mobile = $this->request->param('mobile');
+            $captcha = $this->request->param('captcha');
 
-        if(!empty($this->auth->mobile)){
-            $this->error('已经绑定了手机号');
-        }
-        if (!$mobile || !$captcha) {
-            $this->error(__('Invalid parameters'));
-        }
-        if (!Validate::regex($mobile, "^1\d{10}$")) {
-            $this->error(__('Mobile is incorrect'));
-        }
-        $userData = model('User')->where('mobile', $mobile)->find();
-        if (!empty($userData)) {
-            if ($userData['id'] != $this->auth->id) {
+            if(!empty($this->auth->mobile) && $mobile != $this->auth->mobile){
+                throw new Exception('已经绑定了手机号');
+            }
+            if (!$mobile || !$captcha) {
+                throw new Exception(__('Invalid parameters'));
+            }
+            if (!Validate::regex($mobile, "^1\d{10}$")) {
+                throw new Exception(__('Mobile is incorrect'));
+            }
+            $where['mobile'] = $mobile;
+            $where['id'] = ['!=',$this->auth->id];
+            $where['status'] = ['!=','new'];
+            $userData = model('User')->where($where)->find();
+            if (!empty($userData)) {
                 $this->error('该手机号已被其他用户绑定');
             }
-        }
-        $result = Sms::check($mobile, $captcha, 'changemobile');
-        if (!$result && $captcha != 1212 ) {
-            $this->error(__('Captcha is incorrect'));
-        }
-        $verification = $user->verification;
-        $verification->mobile = 1;
-        $user->verification = $verification;
-        $user->mobile = $mobile;
-        $user->save();
 
-        Sms::flush($mobile, 'changemobile');
-        $this->success('success',$this->userInfo('return'));
+            $result = Sms::check($mobile, $captcha, 'changemobile');
+            if (!$result && $captcha != 1212 ) {
+                throw new Exception(__('Captcha is incorrect'));
+            }
+            $verification = $user->verification;
+            $verification->mobile = 1;
+            $user->verification = $verification;
+            $user->mobile = $mobile;
+            $userRes = $user->save();
+
+            if ($userRes) {
+                $where['mobile'] = $mobile;
+                $where['status'] = 'new';
+                model('User')->where($where)->delete();
+            }
+
+            Sms::flush($mobile, 'changemobile');
+            $this->success('success',$this->userInfo('return'));
+        } catch (Exception $e) {
+            $this->error($e->getMessage());
+        }
     }
 
     /**
@@ -1163,31 +1178,45 @@ class User extends Api
      */
     public function bindopenid()
     {
-        $code =  $this->request->param('code','');
-        if(!$code){
-            $this->error(__('Invalid parameters'));
-        }
-        //微信
-        $wechat = new Wechat();
-        $openid = $wechat->getOpenid($code);
-
-        if(!$openid){
-            $this->error('openid获取失败');
-        }
+        Db::startTrans();
+        try {
+            $code =  $this->request->param('code','');
+            if(!$code){
+                throw new Exception(__('Invalid parameters'));
+            }
+            //微信
+            $wechat = new Wechat();
+            $openid = $wechat->getOpenid($code);
 
-        $user = model('User')->find($this->auth->id);
-        if(!empty($this->auth->openid)){
-            $this->error('已经绑定了微信号');
-        }
+            if(!$openid){
+                throw new Exception('openid获取失败');
+            }
 
-        if (\app\common\model\User::where('openid', $openid)->find()) {
-            $this->error('该微信号已被其他用户绑定');
-        }
+            $user = model('User')->find($this->auth->id);
+            if(!empty($this->auth->openid) && $openid != $this->auth->openid){
+                throw new Exception('已经绑定了微信号');
+            }
+            $where['openid'] = $openid;
+            $where['id'] = ['!=',$this->auth->id];
+            $where['status'] = ['!=','new'];
+            $userData = model('User')->where($where)->find();
+            if (!empty($userData)) {
+                throw new Exception('该微信号已被其他用户绑定');
+            }
 
-        $user->openid = $openid;
-        $user->save();
+            $user->openid = $openid;
+            $userRes = $user->save();
+            if ($userRes) {
+                $where['status'] = 'new';
+                model('User')->where($where)->delete();
+            }
 
-        $this->success('success',$this->userInfo('return'));
+            Db::commit();
+            $this->success('success',$this->userInfo('return'));
+        } catch (Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
     }
 
     //用户详细资料

+ 1 - 1
application/common/service/RoomService.php

@@ -118,7 +118,7 @@ class RoomService
                     $isClose = isset($foreachData["is_close"]) ? $foreachData["is_close"] : 0;
                     $partyPass = isset($foreachData["party_pass"]) ? $foreachData["party_pass"] : '';
                     if(!$foreachData || $isClose == 1) continue;
-                    if(!$foreachData || $partyPass != '') continue;
+                    //if(!$foreachData || $partyPass != '') continue;//设置密码的也显示
                     $mod = isset($foreachData["party_type"])?intval($foreachData["party_type"])%5:1;
                     if(isset($foreachData["type_name"]) && $foreachData["type_name"]) {
                         $type_name = $foreachData["type_name"];