dever 6 年之前
父節點
當前提交
5fa131292a
共有 5 個文件被更改,包括 187 次插入129 次删除
  1. 11 0
      database/app.php
  2. 7 11
      lib/Base.php
  3. 6 1
      lib/Cron.php
  4. 35 1
      src/App.php
  5. 128 116
      src/Applet.php

+ 11 - 0
database/app.php

@@ -67,6 +67,17 @@ return array
 			//'list'		=> true,
 		),
 
+		'uuid'       => array
+        (
+            'type'      => 'varchar-300',
+            'name'      => 'uuid',
+            'default'   => '',
+            'desc'      => 'uuid',
+            'match'     => 'is_string',
+            //'update'  => 'text',
+            'list'		=> true,
+        ),
+
 		'state'		=> array
 		(
 			'type' 		=> 'tinyint-1',

+ 7 - 11
lib/Base.php

@@ -35,11 +35,7 @@ class Base
         }
 
         if (isset($user['sex'])) {
-            if ($user['sex'] == 1) {
-                $user['sex'] = 1;
-            } elseif ($user['sex'] == 2) {
-                $user['sex'] = 2;
-            } else {
+            if ($user['sex'] != 1 && $user['sex'] != 2) {
                 $user['sex'] = 3;
             }
         }
@@ -48,11 +44,11 @@ class Base
             $user['area'] = $user['country'] .','. $user['province'] .','. $user['city'];
         }
         
-        $info = Dever::load('passport/wechat-one', array('option_openid' => $data['openid']));
+        $info = Dever::db('passport/wechat')->one(array('openid' => $data['openid']));
 
         if (!$info) {
             if (isset($data['unionid']) && $data['unionid']) {
-                $info = Dever::load('passport/wechat-one', array('unionid' => $data['unionid']));
+                $info = Dever::db('passport/wechat')->one(array('unionid' => $data['unionid']));
                 if (!$info) {
                     $uid = false;
                 } else {
@@ -68,10 +64,10 @@ class Base
                 if ($source_type) {
                     $user['source_type'] = $source_type;
                 }
-                $uid = Dever::load('passport/user-insert', $user);
+                $uid = Dever::db('passport/user')->insert($user);
             } else {
                 $user['where_id'] = $uid;
-                Dever::load('passport/user-update', $user);
+                Dever::db('passport/user')->update($user);
             }
 
             $wechat['access_token'] = $data['access_token'];
@@ -92,7 +88,7 @@ class Base
             } elseif ($source_type == 'android') {
                 $wechat['type'] = 4;
             }
-            $id = Dever::load('passport/wechat-insert', $wechat);
+            $id = Dever::db('passport/wechat')->insert($wechat);
 
             if (Dever::project('source') && isset($source) && $source && $source > 0) {
                 Dever::load('source/lib/core')->saveUser($id, $uid, $source, 'oauth', $account);
@@ -115,7 +111,7 @@ class Base
                 $wechat['system_id'] = $system;
             }
             $id = $info['id'];
-            Dever::load('passport/wechat-update', $wechat);
+            Dever::db('passport/wechat')->update($wechat);
 
             $user['where_id'] = $uid;
             //Dever::load('passport/user-update', $user);

+ 6 - 1
lib/Cron.php

@@ -5,6 +5,10 @@ use Dever;
 
 class Cron
 {
+    public function combine_api()
+    {
+
+    }
 	# 定时合并
     public function combine()
     {
@@ -15,7 +19,8 @@ class Cron
 
         	if ($data) {
         		foreach ($data as $k => $v) {
-        			$drop = implode(',', $v['old_uid']);
+        			//$drop = implode(',', $v['old_uid']);
+                    $drop = $v['old_uid'];
             		Dever::load('combine/lib/core.handle?uid=' . $v['new_uid'] . '&drop=' . $drop);
 
             		$update['where_id'] = $v['id'];

+ 35 - 1
src/App.php

@@ -89,7 +89,7 @@ class App extends Base
     {
         $user = array();
         $user['temp'] = 2;
-        $user['username'] = Dever::emoji(Dever::input('username'));
+        $user['username'] = Dever::input('username');
         $user['avatar'] = Dever::input('avatar');
         $user['sex'] = Dever::input('gender');
         $user['city'] = Dever::input('city');
@@ -174,6 +174,40 @@ class App extends Base
         return $result;
     }
 
+    /**
+     * uuid登录
+     *
+     * @return int
+     */
+    public function login_uuid()
+    {
+        # 这里后续要加密
+        $uuid = Dever::input('uuid');
+        $system = Dever::input('system', 1);
+        $source_type = Dever::input('source_type', 'applet');
+
+        $appData = array('uuid' => $uuid, 'source_type' => $source_type);
+        $app = Dever::db('passport/app')->one($appData);
+        if (!$app) {
+            $user['add_username'] = '';
+            $user['add_bind'] = 2;
+            $user['add_temp'] = 1;
+            $user['add_source_type'] = $source_type;
+            $user['add_system_id'] = $system;
+            $uid = Dever::load('passport/user-insert', $user);
+            $this->createUsername($uid, '', true);
+
+            $appData['uid'] = $uid;
+            $appData['system_id'] = $system;
+            Dever::db('passport/app')->insert($appData);
+        }
+
+        $result = Dever::db('passport/user')->one($uid);
+        $result['uid'] = $uid;
+        $result['signature'] = Dever::login($uid);
+        return $result;
+    }
+
     //获取用户信息
     public function user() {
         $uid = $this->check();

+ 128 - 116
src/Applet.php

@@ -33,96 +33,6 @@ class Applet extends Base
         return $data;
     }
 
-    /**
-     * 生成用户,返回uid
-     *
-     * @return int
-     */
-    private function create($data)
-    {
-        $uid = false;
-        $system = Dever::input('system', 1);
-        $info = Dever::load('passport/wechat-one', array('option_openid' => $data['openid']));
-
-        if (!$info) {
-            if (isset($data['unionid']) && $data['unionid']) {
-                $info = Dever::load('passport/wechat-one', array('unionid' => $data['unionid']));
-                if (!$info) {
-                    $uid = false;
-                } else {
-                    # 判断用户是否存在,是否需要合并
-                    $uid = $this->combine($info['uid'], $data['unionid']);
-                }
-                $wechat['unionid'] = $data['unionid'];
-            }
-            if (!$uid) {
-
-                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'];
-                    }
-                    $user['source_type'] = 'applet';
-                    $user['system_id'] = $system;
-                } else {
-                    $user['bind'] = 2;
-                    $user['temp'] = 1;
-                    $user['username'] = '临时用户';
-                    $user['source_type'] = 'applet';
-                    $user['system_id'] = $system;
-                }
-                
-
-                $uid = Dever::load('passport/user-insert', $user);
-
-                Dever::load('passport/lib/base')->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;
-            $id = Dever::load('passport/wechat-insert', $wechat);
-        } else {
-            $uid = $info['uid'];
-            if (isset($data['unionid']) && $data['unionid']) {
-                # 判断用户是否存在,是否需要合并
-                $wechat['uid'] = $this->combine($uid, $data['unionid']);
-            }
-            $id = $info['id'];
-            $wechat['session_key'] = $data['session_key'];
-            $wechat['where_id'] = $info['id'];
-            
-            Dever::load('passport/wechat-update', $wechat);
-        }
-
-        $user = Dever::load('passport/user-one', $uid);
-
-        $result['vid'] = $id;
-        $result['uid'] = $uid;
-        $result['signature'] = Dever::login($uid);
-      
-        if ($user['mobile']) {
-            $result['mobile'] = $user['mobile'];
-        } else {
-            if (function_exists('checkVersion')) {
-                if (checkVersion()->mobile == 2) {
-                    $result['mobile'] = '101010';
-                }
-            }
-        }
-
-        return $result;
-    }
-
     /**
      * 一次性登录:通过code或者openid、sessionkey来注册用户,此时已经授权,可以直接拿到unioinid
      *
@@ -134,7 +44,7 @@ class Applet extends Base
 
         $data += $this->getWechatData($data['session_key']);
 
-        $data['username'] = Dever::emoji(Dever::input('nickname'));
+        $data['username'] = Dever::input('nickname');
         $data['avatar'] = Dever::input('avatarurl');
         $data['sex'] = Dever::input('gender');
         $data['city'] = Dever::input('city');
@@ -155,7 +65,7 @@ class Applet extends Base
     public function update()
     {
         $uid = $this->check();
-        $name = Dever::emoji(Dever::input('nickname'));
+        $name = Dever::input('nickname');
         $pic = Dever::input('avatarurl');
         $sex = Dever::input('gender');
         $city = Dever::input('city');
@@ -166,29 +76,35 @@ class Applet extends Base
 
         $update['temp'] = 3;
         if ($vid) {
-            $vinfo = Dever::load('passport/wechat-one', $vid);
 
-            $data = $this->getWechatData($vinfo['session_key']);
+            $key = 'applet_session_key_' . $uid;
+            $session_key = Dever::cache($key);
+            if (!$cache) {
+                $vinfo = Dever::db('passport/wechat')->one($vid);
+                $session_key = $vinfo['session_key'];
+            }
+
+            $data = $this->getWechatData($session_key);
             $unionid = $data['unionid'];
             if ($unionid) {
-                $vinfo = Dever::load('passport/wechat-one', array('option_unionid' => $unionid));
+                $vinfo = Dever::db('passport/wechat')->one(array('option_unionid' => $unionid));
                 if (!$vinfo) {
                     $wechat['set_unionid'] = $unionid;
                     $wechat['where_id'] = $vid;
-                    Dever::load('passport/wechat-update', $wechat);
+                    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::load('passport/wechat-update', $wechat);
+                    Dever::db('passport/wechat')->update($wechat);
                 }
                 
                 $update['temp'] = 2;
             }
         }
 
-        $info = Dever::load('passport/user-one', $uid);
+        $info = Dever::db('passport/user')->one($uid);
         if ($info) {
 
             if ($info['temp'] == 1) {
@@ -196,7 +112,7 @@ class Applet extends Base
             }
             $update['temp'] = 2;
 
-            $update['set_username'] = Dever::load('passport/lib/base')->createUsername($uid, $name);
+            $update['set_username'] = $this->createUsername($uid, $name);
             
             if ($sex == 1) {
                 $update['set_sex'] = 1;
@@ -219,8 +135,7 @@ class Applet extends Base
             if ($city) {
                 $update['set_city'] = $city;
             }
-            
-            //$update['set_mobile'] = $mobile;
+
             if ($province) {
                 $update['set_province'] = $province;
             }
@@ -234,7 +149,7 @@ class Applet extends Base
             }
             if (isset($update) && $update) {
                 $update['where_id'] = $uid;
-                Dever::load('passport/user-update', $update);
+                Dever::db('passport/user')->update($update);
             }
             
         } else {
@@ -264,8 +179,14 @@ class Applet extends Base
         $encryptedData = Dever::input('encryptedData');
         
         if ($iv && $encryptedData) {
-            $vinfo = Dever::load('passport/wechat-one', $vid);
-            $data = $this->getWechatData($vinfo['session_key']);
+            $key = 'applet_session_key_' . $uid;
+            $session_key = Dever::cache($key);
+            if (!$cache) {
+                $vinfo = Dever::db('passport/wechat')->one($vid);
+                $session_key = $vinfo['session_key'];
+            }
+            
+            $data = $this->getWechatData($session_key);
             if ($data && $data['mobile']) {
                 $mobile = $data['mobile'];
                 $phoneNumber = $data['phone'];
@@ -297,8 +218,6 @@ class Applet extends Base
             }
         }
 
-        
-
         $result['vid'] = $vid;
         $result['uid'] = $uid;
         $result['signature'] = Dever::login($uid);
@@ -306,6 +225,100 @@ class Applet extends Base
         return $result;
     }
 
+    /**
+     * 生成用户,返回uid
+     *
+     * @return int
+     */
+    private function create($data)
+    {
+        $uid = false;
+        $system = Dever::input('system', 1);
+        $info = Dever::db('passport/wechat')->one(array('option_openid' => $data['openid']));
+
+        $key = 'applet_session_key_' . $uid;
+        $cache = Dever::cache($key, $data['session_key']);
+        $wechat = array();
+        if (!$info) {
+            if (isset($data['unionid']) && $data['unionid']) {
+                $info = Dever::db('passport/wechat')->one(array('unionid' => $data['unionid']));
+                if (!$info) {
+                    $uid = false;
+                } else {
+                    # 判断用户是否存在,是否需要合并
+                    $uid = $this->combine($info['uid'], $data['unionid']);
+                }
+                $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 = 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;
+            $id = Dever::db('passport/wechat')->insert($wechat);
+        } else {
+            $uid = $info['uid'];
+            $id = $info['id'];
+            if (isset($data['unionid']) && $data['unionid']) {
+                # 判断用户是否存在,是否需要合并
+                $wechat['uid'] = $this->combine($uid, $data['unionid']);
+
+                if ($wechat['uid'] != $uid) {
+                    $uid = $wechat['uid'];
+                }
+            }
+
+            if (!$cache) {
+                $wechat['session_key'] = $data['session_key'];
+            }
+
+            if ($wechat) {
+                $wechat['where_id'] = $info['id'];
+                Dever::db('passport/wechat')->update($wechat);
+            }
+        }
+
+        $user = Dever::db('passport/user')->one($uid);
+
+        $result['vid'] = $id;
+        $result['uid'] = $uid;
+        $result['signature'] = Dever::login($uid);
+      
+        if ($user['mobile']) {
+            $result['mobile'] = $user['mobile'];
+        }
+
+        return $result;
+    }
+
     private function unionid($session_key)
     {
         $data = $this->decryptData($session_key);
@@ -386,21 +399,20 @@ class Applet extends Base
     private function getApplet()
     {
         $applet = Dever::config('base', 'project')->applet;
-        $project = false;
-        $system = Dever::input('system', 1);
         if (Dever::project('token')) {
+            $system = Dever::input('system', 1);
             $project = Dever::db('token/project')->one($system);
-        }
 
-        if (!$project) {
-            if (isset($applet['project']) && $applet['project']) {
-                $project = Dever::db($applet['project'])->one($system);
+            if (!$project) {
+                if (isset($config['project']) && $config['project']) {
+                    $project = Dever::db($config['project'])->one($system);
+                }
             }
-        }
 
-        if ($project) {
-            $applet['appid'] = $project['appid'];
-            $applet['secret'] = $project['secret'];
+            if ($project) {
+                $applet['appid'] = $project['appid'];
+                $applet['secret'] = $project['secret'];
+            }
         }
 
         if (!$applet || !$applet['appid'] || !$applet['secret']) {