dever 6 年之前
父節點
當前提交
689b2af561
共有 6 個文件被更改,包括 148 次插入137 次删除
  1. 11 0
      database/user.php
  2. 25 0
      database/wechat.php
  3. 70 0
      lib/Base.php
  4. 6 19
      src/App.php
  5. 35 118
      src/Applet.php
  6. 1 0
      src/Reg.php

+ 11 - 0
database/user.php

@@ -356,6 +356,17 @@ return array
 		'version' => 1,
 	),
 	*/
+	# 索引
+	'index' => array
+	(
+		1 => array
+		(
+			'mobile' => 'mobile',
+		),
+		
+		# 版本号 更改版本号会更新当前表的索引
+		'version' => 1,
+	),
 	
 	# request 请求接口定义
 	'request' => array

+ 25 - 0
database/wechat.php

@@ -160,6 +160,18 @@ return array
 		'edit' => false,
 		'delete' => false,
 	),
+
+	# 索引
+	'index' => array
+	(
+		1 => array
+		(
+			'openid' => 'uid,openid,unionid',
+		),
+		
+		# 版本号 更改版本号会更新当前表的索引
+		'version' => 1,
+	),
 	
 	# request 请求接口定义
 	'request' => array
@@ -187,5 +199,18 @@ return array
 			),
 			'type' => 'update',
 		),
+
+		'updateByOpenid' => array
+		(
+			'set' => array
+			(
+				'session_key' => 'yes',
+			),
+			'where' => array
+			(
+				'openid' => 'yes',
+			),
+			'type' => 'update',
+		),
 	),
 );

+ 70 - 0
lib/Base.php

@@ -22,6 +22,75 @@ class Base
         $this->save = new Save(false, 'cookie');
     }
 
+    # 注册用户
+    public function reg($type, $data)
+    {
+        $user = $this->getUserExtInfo($data);
+
+        $user['source_type'] = $type;
+        $user['system_id'] = isset($data['system']) ? $data['system'] : 1;
+
+        if (isset($data['username'])) {
+            $user['temp'] = 2;
+            $user['username'] = $data['username'];
+        } else {
+            $user['temp'] = 1;
+            $user['username'] = '临时用户';
+        }
+
+        if (isset($data['mobile'])) {
+            $user['bind'] = 1;
+            $user['mobile'] = $data['mobile'];
+        } else {
+            $user['bind'] = 2;
+            $user['mobile'] = '';
+        }
+
+        $uid = Dever::db('passport/user')->insert($user);
+
+        $this->createUsername($uid, $user['username'], true);
+
+        return $uid;
+    }
+
+    # 更新用户
+    public function updateUser($uid, $data)
+    {
+        $user = $this->getUserExtInfo($data);
+        $user['username'] = $this->createUsername($uid, $data['username']);
+        if (isset($user) && $user) {
+            $update['where_id'] = $uid;
+            Dever::db('passport/user')->update($update);
+        }
+        return $uid;
+    }
+
+    private function getUserExtInfo($data)
+    {
+        $user = array();
+        if (isset($data['sex'])) {
+            $user['sex'] = $data['sex'];
+        }
+        if (isset($data['avatar'])) {
+            //$update['avatar'] = $this->saveAvatar($pic);
+            $user['avatar'] = $data['avatar'];
+        }
+        if (isset($data['city'])) {
+            $user['city'] = $data['city'];
+        }
+        if (isset($data['province'])) {
+            $user['province'] = $data['province'];
+        }
+        if (isset($data['country'])) {
+            $user['country'] = $data['country'];
+        }
+        if (isset($user['country']) && isset($user['province']) && isset($user['city'])) {
+            $user['set_area'] = $user['country'] .','. $user['province'] .','. $user['city'];
+        }
+
+        return $user;
+    }
+
     public function wechat($data, $user = array(), $account, $system, $source_type, $source = false)
     {
         $uid = false;
@@ -235,6 +304,7 @@ class Base
             $cur = $new;
 
             if (Dever::input('test') == 1) {
+                print_r($user_wechat);
                 print_r($cur);
                 print_r($drop);die;
             }

+ 6 - 19
src/App.php

@@ -6,16 +6,6 @@ use Passport\Lib\Base;
 
 class App extends Base
 {
-    public function comcom()
-    {
-        return;
-        $uid = Dever::input('uid');
-        $mobile = Dever::input('mobile');
-        $uid = $this->combine($uid, $mobile, 'mobile');
-
-        return $uid;
-    }
-
     /**
      * 更新用户信息
      *
@@ -72,7 +62,6 @@ class App extends Base
         if ($country && $province && $city) {
             $result['area'] = $update['set_area'];
         }
-
         
         $result['uid'] = $uid;
         $result['signature'] = Dever::login($uid);
@@ -134,7 +123,7 @@ class App extends Base
     	$mobile = Dever::input('mobile');
     	$code = Dever::input('mcode');
         $system = Dever::input('system', 1);
-    	$source_type = Dever::input('source_type', 'applet');
+    	$source_type = Dever::input('source_type', 'ios');
 
         # 添加测试账号
         if ($mobile == '18710005124') {
@@ -147,13 +136,11 @@ class App extends Base
         $uid = false;
         $info = Dever::load('passport/user-one', array('mobile' => $mobile));
         if (!$info) {
-            $user['add_username'] = Dever::hide($mobile);
-            $user['add_mobile'] = $mobile;
-            $user['add_bind'] = 1;
-            $user['add_temp'] = 2;
-            $user['add_source_type'] = $source_type;
-            $user['add_system_id'] = $system;
-            $uid = Dever::load('passport/user-insert', $user);
+            $data['username'] = Dever::hide($mobile);
+            $data['mobile'] = $mobile;
+            $data['system'] = $system;
+            $data['source_type'] = $source_type;
+            $uid = $this->reg($source_type, $data);
 
             Dever::score($uid, 'mobile_reg', '手机号注册');
         } else {

+ 35 - 118
src/Applet.php

@@ -8,6 +8,8 @@ use Passport\Lib\Base;
 
 class Applet extends Base
 {
+    private $cache = 'applet_sessionKey_';
+
     public function init()
     {
         $uid = $this->check();
@@ -23,11 +25,12 @@ class Applet extends Base
      */
     public function bind()
     {
-        $create = Dever::input('create', 1);
+        $create = Dever::input('create', 2);
         $data = $this->getLoginInfo();
 
         if ($create == 1) {
-            $data = $this->create($data);
+            # 未授权,生成临时用户,针对有的项目,不需要授权,但是还要生成用户
+            $data = $this->create($data, false);
         }
 
         return $data;
@@ -65,93 +68,29 @@ class Applet extends Base
     public function update()
     {
         $uid = $this->check();
-        $name = Dever::input('nickname');
-        $pic = Dever::input('avatarurl');
-        $sex = Dever::input('gender');
-        $city = Dever::input('city');
-        $mobile = Dever::input('mobile');
-        $province = Dever::input('province');
-        $country = Dever::input('country');
         $vid = Dever::input('vid');
-
-        $update['temp'] = 3;
-        if ($vid) {
-
-            $key = 'applet_sessionKey_' . $vid;
-            $session_key = Dever::cache($key);
-            if (!$session_key) {
-                $vinfo = Dever::db('passport/wechat')->one($vid);
-                $session_key = $vinfo['session_key'];
-            }
-
-            $data = $this->getWechatData($session_key);
-            $unionid = $data['unionid'];
-            if ($unionid) {
-                $vinfo = Dever::db('passport/wechat')->one(array('option_unionid' => $unionid));
-                if (!$vinfo) {
-                    $wechat['set_unionid'] = $unionid;
-                    $wechat['where_id'] = $vid;
-                    Dever::db('passport/wechat')->update($wechat);
-                } elseif ($vinfo && $vinfo['id'] != $vid) {
-                    $wechat['set_unionid'] = $unionid;
-                    $uid = $this->combine($uid, $unionid);
-                    $wechat['set_uid'] = $uid;
-                    $wechat['where_id'] = $vid;
-                    Dever::db('passport/wechat')->update($wechat);
-                }
-                
-                $update['temp'] = 2;
-            }
-        }
-
         $info = Dever::db('passport/user')->one($uid);
         if ($info) {
-
             if ($info['temp'] == 1) {
+                # 针对未授权,生成临时用户的用户进行设置积分
                 Dever::score($uid, 'bind_wechat', '用户微信授权');
             }
-            $update['temp'] = 2;
-
-            $update['set_username'] = $this->createUsername($uid, $name);
-            
-            if ($sex == 1) {
-                $update['set_sex'] = 1;
-            } elseif ($sex == 2) {
-                $update['set_sex'] = 2;
+            $data['temp'] = 2;
+            $data['username'] = Dever::input('nickname');
+            $data['avatar'] = Dever::input('avatarurl');
+            $data['sex'] = Dever::input('gender');
+            $data['city'] = Dever::input('city');
+            $data['province'] = Dever::input('province');
+            $data['country'] = Dever::input('country');
+
+            if ($data['sex'] == 1) {
+                $data['sex'] = 1;
+            } elseif ($data['sex'] == 2) {
+                $data['sex'] = 2;
             } else {
-                $update['set_sex'] = 3;
-            }
-            /*
-            if ($sex || $sex == 0) {
-                $update['set_sex'] = $this->saveSex($sex);
-            }
-            */
-            
-            if ($pic) {
-                //$update['set_avatar'] = $this->saveAvatar($pic);
-                $update['set_avatar'] = $pic;
-            }
-            
-            if ($city) {
-                $update['set_city'] = $city;
+                $data['sex'] = 3;
             }
-
-            if ($province) {
-                $update['set_province'] = $province;
-            }
-            
-            if ($country) {
-                $update['set_country'] = $country;
-            }
-            
-            if ($country && $province && $city) {
-                $update['set_area'] = $country . ',' . $province . ',' . $city;
-            }
-            if (isset($update) && $update) {
-                $update['where_id'] = $uid;
-                Dever::db('passport/user')->update($update);
-            }
-            
+            $this->updateUser($uid, $data);
         } else {
             Dever::alert('无效的用户id,请重新登录');
         }
@@ -179,7 +118,7 @@ class Applet extends Base
         $encryptedData = Dever::input('encryptedData');
         
         if ($iv && $encryptedData) {
-            $key = 'applet_sessionKey_' . $vid;
+            $key = $this->cache . $vid;
             $session_key = Dever::cache($key);
             if (!$session_key) {
                 $vinfo = Dever::db('passport/wechat')->one($vid);
@@ -199,14 +138,13 @@ class Applet extends Base
             $info = Dever::load('passport/user-one', $uid);
             $result['mobile'] = $mobile;
             if ($info) {
-
                 if (!$info['mobile']) {
                     Dever::score($uid, 'bind_mobile', '绑定手机号');
                 }
-                $update['set_mobile'] = $mobile;
-                $update['set_bind'] = 1;
+                $update['mobile'] = $mobile;
+                $update['bind'] = 1;
                 $update['where_id'] = $uid;
-                Dever::load('passport/user-update', $update);
+                Dever::db('passport/user')->update($update);
 
                 $state = Dever::config('base', 'project')->regSendSms;
                 if ($state) {
@@ -230,11 +168,11 @@ class Applet extends Base
      *
      * @return int
      */
-    public function create($data)
+    public function create($data, $state = true)
     {
         $uid = false;
-        $system = Dever::input('system', 1);
-        $info = Dever::db('passport/wechat')->one(array('option_openid' => $data['openid']));
+        $data['system'] = Dever::input('system', 1);
+        $info = Dever::db('passport/wechat')->one(array('openid' => $data['openid']));
 
         $wechat = array();
         if (!$info) {
@@ -250,41 +188,20 @@ class Applet extends Base
                 $wechat['unionid'] = $data['unionid'];
             }
             if (!$uid) {
-
-                $user['source_type'] = 'applet';
-                $user['system_id'] = $system;
-
-                if (isset($data['username'])) {
-                    $user['bind'] = 2;
-                    $user['temp'] = 2;
-                    $user['username'] = $data['username'];
-                    $user['sex'] = $data['sex'];
-                    $user['avatar'] = $data['avatar'];
-                    $user['city'] = $data['city'];
-                    $user['province'] = $data['province'];
-                    $user['country'] = $data['country'];
-                    if ($user['country'] && $user['province'] && $user['city']) {
-                        $user['set_area'] = $user['country'] .','. $user['province'] .','. $user['city'];
-                    }
-                } else {
-                    $user['bind'] = 2;
-                    $user['temp'] = 1;
-                    $user['username'] = '临时用户';
+                $uid = $this->reg('applet', $data);
+                if ($state) {
+                    Dever::score($info['id'], 'bind_wechat', '用户微信授权');
                 }
-
-                $uid = Dever::db('passport/user')->insert($user);
-
-                $this->createUsername($uid, $user['username'], true);
             }
              
             $wechat['openid'] = $data['openid'];
             $wechat['session_key'] = $data['session_key'];
             $wechat['uid'] = $uid;
             $wechat['type'] = 1;
-            $wechat['system_id'] = $system;
+            $wechat['system_id'] = $data['system'];
             $id = Dever::db('passport/wechat')->insert($wechat);
 
-            $key = 'applet_sessionKey_' . $id;
+            $key = $this->cache . $id;
             $cache = Dever::cache($key, $data['session_key']);
         } else {
             $uid = $info['uid'];
@@ -300,7 +217,7 @@ class Applet extends Base
             }
             */
 
-            $key = 'applet_sessionKey_' . $id;
+            $key = $this->cache . $id;
             $cache = Dever::cache($key, $data['session_key']);
 
             if (!$cache) {
@@ -308,7 +225,7 @@ class Applet extends Base
             }
 
             if ($wechat) {
-                $wechat['where_id'] = $info['id'];
+                $wechat['where_id'] = $id;
                 Dever::db('passport/wechat')->update($wechat);
             }
         }
@@ -319,7 +236,7 @@ class Applet extends Base
         $result['uid'] = $uid;
         $result['signature'] = Dever::login($uid);
       
-        if ($user['mobile']) {
+        if (isset($user['mobile']) && $user['mobile']) {
             $result['mobile'] = $user['mobile'];
         }
 

+ 1 - 0
src/Reg.php

@@ -219,6 +219,7 @@ class Reg extends Base
         $param['option_' . $account] = $this->$method();
 
         if ($param['option_' . $account]) {
+            $param['add_account'] = $param['option_' . $account];
             $param['add_' . $account] = $param['option_' . $account];
             $param['add_username'] = Dever::input('username');
             $param['add_password'] = Dever::input('password');