lip hace 1 mes
padre
commit
b3c3f2a4aa
Se han modificado 3 ficheros con 89 adiciones y 5 borrados
  1. 10 0
      app/admin/model/UserSession.php
  2. 76 2
      app/common/controller/User.php
  3. 3 3
      app/enterprise/model/User.php

+ 10 - 0
app/admin/model/UserSession.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace app\admin\model;
+
+use app\BaseModel;
+
+
+class UserSession extends BaseModel
+{
+}

+ 76 - 2
app/common/controller/User.php

@@ -6,8 +6,8 @@ use think\App;
 use app\enterprise\model\User as UserModel;
 use app\enterprise\model\Group;
 use app\admin\model\UserView;
-use app\manage\model\Config;
 use think\facade\Session;
+use app\admin\model\UserSession;
 use think\facade\Db;
 use GatewayClient\Gateway;
 /**
@@ -42,8 +42,82 @@ class User
         $this->lang = request()->header('Lang', 'en');
     }
 
+     public function login(){
+
+        $token = $this->request->header('Authorization');
+        
+        try {
+            Db::startTrans();
+            $user_id = UserSession::where('token',$token)->where('expire_time','>', time())->value('user_id');
+            if(!$user_id){
+                return error(lang('user.token_error'));
+            }
+
+            $cs_uid = getAutoCsUid();   
+            $userInfo=UserModel::where('user_id', $user_id)->withoutField('register_ip,login_count,update_time,create_time')->find();
+            
+            //    如果用户已经有设置
+            $setting=$userInfo['setting'] ?: '';
+            if($setting){
+                $setting['hideMessageName']= $setting['hideMessageName']=='true' ? true : false;
+                $setting['hideMessageTime']= $setting['hideMessageTime']=='true' ? true : false;
+                $setting['avatarCricle']= $setting['avatarCricle']=='true' ? true : false;
+                $setting['isVoice']= $setting['isVoice']=='true' ? true : false;
+                $setting['sendKey']= 1;//(int)$setting['sendKey'];
+                $userInfo['setting']=$setting;
+            }
+            
+            if($userInfo['status']==0){
+                return warning(lang('user.forbid'));
+            }  
+            
+            $update=[
+                'last_login_time'=>time(),
+                'last_login_ip'=>$this->request->ip(),
+                'login_count'=>Db::raw('login_count+1'),
+                'avatar' => !empty($params['avatar']) ? $params['avatar'] : '',
+                'language_code' => $this->lang,
+            ];
+            if ($userInfo['cs_uid'] == 1) {
+                $update['cs_uid'] = $cs_uid;
+            }
+            if (!empty($params['realname'])) {
+                $update['realname'] = $params['realname'];
+            }
+            UserModel::where('user_id',$userInfo['user_id'])->update($update);
+            
+            //记录用户浏览
+            if (!empty($_SERVER['HTTP_REFERER']))
+                UserView::addData($_SERVER['HTTP_REFERER'],$userInfo['user_id']);
+            Db::commit();
+        } catch (\Exception $e) {
+            Db::rollback();
+            return error($e->getMessage());
+        }
+        
+        //如果登录信息中含有client——id则自动进行绑定
+        $client_id=$this->request->param('client_id');
+        if($client_id){
+            $cid=$this->request->header('cid','');
+            $this->doBindUid($userInfo['user_id'],$client_id,$cid);
+        }
+
+        $userInfo['qrUrl']=getMainHost().'/scan/u/'.encryptIds($userInfo['user_id']);
+        unset($userInfo['password'],$userInfo['salt']);
+        $userInfo['displayName']=$userInfo['realname'];
+        $userInfo['id']=$userInfo['user_id'];
+        $authToken=UserModel::refreshToken($userInfo,$param['terminal'] ?? 'web');
+        
+        $data=[
+            'sessionId'=>Session::getId(),
+            'authToken'=>$authToken,
+            'userInfo'=>$userInfo
+        ];
+           
+        return success(lang('user.loginOk'),$data);
+   }
     //客户端登录
-    public function login(){
+    public function login2(){
 
         $params=request()->param();
         $where['role'] = 0;

+ 3 - 3
app/enterprise/model/User.php

@@ -21,10 +21,10 @@ use app\admin\model\Department;
 class User extends BaseModel
 {
    use SoftDelete;
-
-   protected $pk = "user_id";
+   protected $deleteTime = 'delete_time';
+   protected $defaultSoftDelete  = null;
    
-   public static $defaultField = 'user_id,realname,realname as displayName,account,avatar,name_py,email,last_login_ip,service_status,cs_uid,timeout_type,remark';
+   public static $defaultField = 'id,user_id,realname,realname as displayName,account,avatar,name_py,email,last_login_ip,service_status,cs_uid,timeout_type,remark';
 
    protected $json = ['setting'];
    protected $jsonAssoc = true;