wugg 2 years ago
parent
commit
366e2193d5
3 changed files with 185 additions and 1 deletions
  1. 1 1
      .env
  2. 73 0
      app/admin/common/Sign.php
  3. 111 0
      app/admin/common/User.php

+ 1 - 1
.env

@@ -1 +1 @@
-APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai


[LANG]
default_lang = zh-cn
+APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai


[LANG]
default_lang = zh-cn

[USER]
hosturl=

+ 73 - 0
app/admin/common/Sign.php

@@ -0,0 +1,73 @@
+<?php
+namespace app\admin\common;
+class Sign {
+	private $appId = "";
+    private $appKey = "";
+	public function __construct(string $appId,string $appKey) {
+		$this->appId=$appId;
+		$this->appKey=$appKey;
+	}
+    //创建sign
+    public function makeSign($data) {
+        ksort($data);
+        $string = $this->toUrlParams($data);
+        $string = $string . "&key=" . $this->appKey;
+        $string = md5($string);
+        $result = strtolower($string);
+        return $result;
+    }
+
+    //检验sign是否正确
+    public function verifySign($data) {
+        //check sign
+       if (!isset($data['sign']) || !$data['sign']) {
+          return ['code'=>1,'msg'=>'发送的数据签名不存在'];
+       }
+
+        //check sign
+        if (!isset($data['appid']) || !$data['appid']) {
+            return ['code'=>1,'msg'=>'发送的应用参数不存在'];
+        }
+        if ($data['appid'] != $this->appId) {
+            return ['code'=>1,'msg'=>'发送的应用参数错误'];
+        }
+
+        //check sign
+        if (!isset($data['noce']) || !$data['noce']) {
+            return ['code'=>1,'msg'=>'发送的应用参数不存在'];
+        }
+
+       //check timestamp
+       if (!isset($data['timestamp']) || !$data['timestamp']) {
+          return ['code'=>1,'msg'=>'发送的数据参数不合法'];
+       }
+
+       // 验证请求, 10分钟失效
+       if (time() - $data['timestamp'] > 600) {
+          return ['code'=>1,'msg'=>'验证超时, 请重新发送请求'];
+       }
+
+       $clientSign = $data['sign'];
+        unset($data['sign']);
+       $serverSign = $this->makeSign($data);
+       if ($clientSign == $serverSign) {
+         return ['code'=>0,'msg'=>'验证通过'];
+       } else {
+         return ['code'=>1,'msg'=>'请求不合法'];
+       }
+    }
+
+    //生成url字符串
+    private function toUrlParams($values){
+        $buff = "";
+        foreach ($values as $k => $v)
+        {
+            //&& $v != ""
+            if($k != "sign" && !is_array($v)&& $v != ""){
+                $buff .= $k . "=" .$v . "&";
+            }
+        }
+        $buff = trim($buff, "&");
+        return $buff;
+    }
+}

+ 111 - 0
app/admin/common/User.php

@@ -0,0 +1,111 @@
+<?php
+
+
+namespace app\admin\common;
+
+
+class User {
+	private $appid='';
+	private $appkey='';
+	private  $Sign;
+	private  $param=[];
+	private  $header=["Content-Type"=>"multipart/json;charset=utf-8"];
+	private  $host;
+	private  $api=[
+		"login"=>'login',
+		"verifyToken"=>'verifyToken',
+		"register"=>'register',
+		"userlist"=>'userlist',
+		"usersave"=>'usersave',
+		"userstatus"=>'userstatus',
+		"userinfo"=>'userinfo',
+		"setpasswd"=>'setpasswd',
+		"setcompany"=>'setcompany',
+		"companystatus"=>'companystatus',
+		"userlistbycompany"=>'userlistbycompany',
+		"useradd"=>'useradd',
+		];
+	public function __construct() {
+		$this->Sign=new Sign($this->appid,$this->appkey);
+		$this->host=env("user.hosturl",'');
+	}
+	/**
+	 * 生成请求header参数
+	 */
+	private function makeHeader(){
+		$headerArr=["appid"=>$this->appid,"noce"=>randomkeys(16),"sign"=>'',"timestamp"=>time()];
+		$value =array_merge($this->param,$headerArr);
+        $headerArr['sign'] = $this->Sign->makeSign($value);
+        foreach ($headerArr as $key=>$value){
+			$this->header[]=$key.":".$value;
+        }
+	}
+	/**模拟post 请求数据
+	* @param $url
+	* @param array $param
+	*/
+	private function post($url,$param=[]){
+		$this->param =$param;
+		$this->makeHeader();
+		if(is_array($param)) $post=http_build_query($param);
+	    $curl = curl_init();
+	    curl_setopt($curl, CURLOPT_URL, $url);
+	    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
+	    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
+	    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
+	    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+	    if($post) {
+	        curl_setopt($curl, CURLOPT_POST, 1);
+	        curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
+	    }
+	    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
+	    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+	    curl_setopt($curl, CURLOPT_HTTPHEADER, $this->header);
+	    $data = curl_exec($curl);
+	    if (curl_errno($curl)) {
+	        return curl_error($curl);
+	    }
+	    curl_close($curl);
+	    return $data;
+	}
+	/** 登录接口
+	* @param $param
+	 * @return bool|string
+	 */
+	public function Login($param){
+		return $this->post($this->host.$this->api["login"],$param);
+	}
+
+	public function VerifyTokens($param){
+		return $this->post($this->host.$this->api["verifyToken"],$param);
+	}
+
+	public function GetUserInfo($param){
+		return $this->post($this->host.$this->api["userinfo"],$param);
+	}
+
+	public function GetUserlist($param){
+		return $this->post($this->host.$this->api["userlist"],$param);
+	}
+
+	public function GetList($param){
+		return $this->post($this->host.$this->api["userlistbycompany"],$param);
+	}
+
+	public function GetAccountall($param){
+		return $this->post($this->host.$this->api["userlist"],$param);
+	}
+
+	public function resetPasswd($param){
+		return $this->post($this->host.$this->api["setpasswd"],$param);
+	}
+
+	public function resetInfo($param){
+		return $this->post($this->host.$this->api["usersave"],$param);
+	}
+	public function resetState($param){
+		return $this->post($this->host.$this->api["userstatus"],$param);
+	}
+
+
+}