quguofeng 2 anni fa
parent
commit
4d8b1a7ef0
100 ha cambiato i file con 4849 aggiunte e 0 eliminazioni
  1. 10 0
      application/api/controller/Login.php
  2. 78 0
      vendor/dingapi/Autoloader.php
  3. 12 0
      vendor/dingapi/OapiTest.php
  4. 384 0
      vendor/dingapi/QimenCloud/QimenCloudClient.php
  5. 32 0
      vendor/dingapi/QimenCloud/top/request/CilaiDingtalkTestRequest.php
  6. 32 0
      vendor/dingapi/QimenCloud/top/request/DingtalkOapiIsvLingjiuTestRequest.php
  7. 32 0
      vendor/dingapi/QimenCloud/top/request/DingtalkOapiLingjiuTestRequest.php
  8. 40 0
      vendor/dingapi/TopSdk.php
  9. BIN
      vendor/dingapi/__MACOSX/._Autoloader.php
  10. BIN
      vendor/dingapi/__MACOSX/._TopSdk.php
  11. BIN
      vendor/dingapi/__MACOSX/QimenCloud/._QimenCloudClient.php
  12. BIN
      vendor/dingapi/__MACOSX/top/._.DS_Store
  13. BIN
      vendor/dingapi/__MACOSX/top/._ApplicationVar.php
  14. BIN
      vendor/dingapi/__MACOSX/top/._SpiUtils.php
  15. BIN
      vendor/dingapi/__MACOSX/top/._TopClient.php
  16. BIN
      vendor/dingapi/__MACOSX/top/._fileTest.php
  17. 255 0
      vendor/dingapi/aliyun/AliyunClient.php
  18. 656 0
      vendor/dingapi/dingtalk/DingTalkClient.php
  19. 18 0
      vendor/dingapi/dingtalk/DingTalkConstant.php
  20. 25 0
      vendor/dingapi/dingtalk/domain/AccountInfo.php
  21. 15 0
      vendor/dingapi/dingtalk/domain/AccountQueryOpenResponse.php
  22. 40 0
      vendor/dingapi/dingtalk/domain/ActionCard.php
  23. 20 0
      vendor/dingapi/dingtalk/domain/ActivityModel.php
  24. 30 0
      vendor/dingapi/dingtalk/domain/AddCommentRequest.php
  25. 25 0
      vendor/dingapi/dingtalk/domain/AddForwardRequest.php
  26. 15 0
      vendor/dingapi/dingtalk/domain/AddMembersResponseModel.php
  27. 35 0
      vendor/dingapi/dingtalk/domain/AddProfileReq.php
  28. 15 0
      vendor/dingapi/dingtalk/domain/AddProfileResp.php
  29. 35 0
      vendor/dingapi/dingtalk/domain/AddRelationReq.php
  30. 25 0
      vendor/dingapi/dingtalk/domain/AddSubAccountReq.php
  31. 15 0
      vendor/dingapi/dingtalk/domain/AddSubAccountResp.php
  32. 75 0
      vendor/dingapi/dingtalk/domain/AddtionalOperation.php
  33. 25 0
      vendor/dingapi/dingtalk/domain/AdminList.php
  34. 55 0
      vendor/dingapi/dingtalk/domain/AdvancedServiceInstanceVo.php
  35. 35 0
      vendor/dingapi/dingtalk/domain/Agent.php
  36. 15 0
      vendor/dingapi/dingtalk/domain/AlipayUserVo.php
  37. 230 0
      vendor/dingapi/dingtalk/domain/AnnualReportResponse.php
  38. 145 0
      vendor/dingapi/dingtalk/domain/AppInfoDoModel.php
  39. 15 0
      vendor/dingapi/dingtalk/domain/AppSpaceResponse.php
  40. 175 0
      vendor/dingapi/dingtalk/domain/AppVersionDoModel.php
  41. 55 0
      vendor/dingapi/dingtalk/domain/Applist.php
  42. 40 0
      vendor/dingapi/dingtalk/domain/ApplyUserDto.php
  43. 15 0
      vendor/dingapi/dingtalk/domain/ApproveDurationForTopVo.php
  44. 30 0
      vendor/dingapi/dingtalk/domain/ApproverNode.php
  45. 100 0
      vendor/dingapi/dingtalk/domain/AreaStatDataVO.php
  46. 35 0
      vendor/dingapi/dingtalk/domain/ArticleCreateDTO.php
  47. 70 0
      vendor/dingapi/dingtalk/domain/ArticleDTO.php
  48. 30 0
      vendor/dingapi/dingtalk/domain/AssignInfoModifyItem.php
  49. 50 0
      vendor/dingapi/dingtalk/domain/AsyncSendMessageRequest.php
  50. 20 0
      vendor/dingapi/dingtalk/domain/AsyncSendProgress.php
  51. 40 0
      vendor/dingapi/dingtalk/domain/AsyncSendResult.php
  52. 25 0
      vendor/dingapi/dingtalk/domain/At.php
  53. 55 0
      vendor/dingapi/dingtalk/domain/AtApproveForOpenVo.php
  54. 75 0
      vendor/dingapi/dingtalk/domain/AtAttendanceRecordForOpenVo.php
  55. 80 0
      vendor/dingapi/dingtalk/domain/AtAttendanceResultForOpenVo.php
  56. 45 0
      vendor/dingapi/dingtalk/domain/AtCheckInfoForOpenVo.php
  57. 40 0
      vendor/dingapi/dingtalk/domain/AtClassForTopVo.php
  58. 30 0
      vendor/dingapi/dingtalk/domain/AtClassSettingForTopVo.php
  59. 15 0
      vendor/dingapi/dingtalk/domain/AtClassSettingInfoForOpenVo.php
  60. 30 0
      vendor/dingapi/dingtalk/domain/AtClassVo.php
  61. 65 0
      vendor/dingapi/dingtalk/domain/AtGroupForTopVo.php
  62. 30 0
      vendor/dingapi/dingtalk/domain/AtGroupFullForTopVo.php
  63. 20 0
      vendor/dingapi/dingtalk/domain/AtGroupListForTopVo.php
  64. 20 0
      vendor/dingapi/dingtalk/domain/AtRestTimeVo.php
  65. 50 0
      vendor/dingapi/dingtalk/domain/AtScheduleForTopVo.php
  66. 20 0
      vendor/dingapi/dingtalk/domain/AtScheduleListForTopVo.php
  67. 15 0
      vendor/dingapi/dingtalk/domain/AtSectionVo.php
  68. 35 0
      vendor/dingapi/dingtalk/domain/AtTimeVo.php
  69. 80 0
      vendor/dingapi/dingtalk/domain/AtsAddJobParam.php
  70. 25 0
      vendor/dingapi/dingtalk/domain/AtsPageResult.php
  71. 15 0
      vendor/dingapi/dingtalk/domain/AttColumnsForTopVo.php
  72. 35 0
      vendor/dingapi/dingtalk/domain/Attachment.php
  73. 60 0
      vendor/dingapi/dingtalk/domain/AttachmentVO.php
  74. 15 0
      vendor/dingapi/dingtalk/domain/Attendee.php
  75. 35 0
      vendor/dingapi/dingtalk/domain/Attendees.php
  76. 130 0
      vendor/dingapi/dingtalk/domain/AuditLogVO.php
  77. 30 0
      vendor/dingapi/dingtalk/domain/Auditlist.php
  78. 20 0
      vendor/dingapi/dingtalk/domain/AuthCorpInfo.php
  79. 15 0
      vendor/dingapi/dingtalk/domain/AuthInfo.php
  80. 20 0
      vendor/dingapi/dingtalk/domain/AuthOrgScopes.php
  81. 15 0
      vendor/dingapi/dingtalk/domain/AuthUserInfo.php
  82. 65 0
      vendor/dingapi/dingtalk/domain/Author.php
  83. 20 0
      vendor/dingapi/dingtalk/domain/BaseConversationVo.php
  84. 30 0
      vendor/dingapi/dingtalk/domain/BaseFeedInfoModel.php
  85. 40 0
      vendor/dingapi/dingtalk/domain/BaseGroupInfo.php
  86. 20 0
      vendor/dingapi/dingtalk/domain/BaseGroupMemberInfo.php
  87. 15 0
      vendor/dingapi/dingtalk/domain/BaseRequest.php
  88. 45 0
      vendor/dingapi/dingtalk/domain/BaseSuiteRequest.php
  89. 20 0
      vendor/dingapi/dingtalk/domain/BaseSuiteResponse.php
  90. 25 0
      vendor/dingapi/dingtalk/domain/BasicStepInfoVo.php
  91. 35 0
      vendor/dingapi/dingtalk/domain/BatchClothesPerformBaseReq.php
  92. 40 0
      vendor/dingapi/dingtalk/domain/BatchCreateOperationWithEntityReq.php
  93. 35 0
      vendor/dingapi/dingtalk/domain/BatchResultItemVO.php
  94. 30 0
      vendor/dingapi/dingtalk/domain/BatchResultVo.php
  95. 20 0
      vendor/dingapi/dingtalk/domain/BatchUpdateProcessInstanceRequest.php
  96. 20 0
      vendor/dingapi/dingtalk/domain/BehaviorLinkageVo.php
  97. 20 0
      vendor/dingapi/dingtalk/domain/BehaviorTarget.php
  98. 40 0
      vendor/dingapi/dingtalk/domain/BillBatchQueryOpenResponse.php
  99. 70 0
      vendor/dingapi/dingtalk/domain/BillInfo.php
  100. 15 0
      vendor/dingapi/dingtalk/domain/BillTagQueryOpenResponse.php

+ 10 - 0
application/api/controller/Login.php

@@ -35,4 +35,14 @@ class Login extends Base
         $get_token_obj = new GetUserToken();
         $get_token_obj->get_company_token();
     }
+    //获取部门列表
+    public function get_department(){
+        require_once env('root_path').'/vendor/dingapi/TopSdk.php';
+        $access_token = 'fsfdwrwr345354fdsfs';
+        date_default_timezone_set('Asia/Shanghai');
+        $c = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
+        $req = new \OapiV2DepartmentListsubRequest;
+        $resp = $c->execute($req, $access_token, "https://oapi.dingtalk.com/topapi/v2/department/listsub");
+        var_dump($resp);exit();
+    }
 }

+ 78 - 0
vendor/dingapi/Autoloader.php

@@ -0,0 +1,78 @@
+<?php
+
+class Autoloader{
+  
+  /**
+     * 类库自动加载,写死路径,确保不加载其他文件。
+     * @param string $class 对象类名
+     * @return void
+     */
+    public static function autoload($class) {
+        $name = $class;
+        if(false !== strpos($name,'\\')){
+          $name = strstr($class, '\\', true);
+        }
+        
+        $filename = TOP_AUTOLOADER_PATH."/top/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }
+
+        $filename = TOP_AUTOLOADER_PATH."/top/request/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }
+
+        $filename = TOP_AUTOLOADER_PATH."/top/domain/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }
+
+        $filename = TOP_AUTOLOADER_PATH."/aliyun/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }
+
+        $filename = TOP_AUTOLOADER_PATH."/aliyun/request/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }
+
+        $filename = TOP_AUTOLOADER_PATH."/aliyun/domain/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }      
+
+        $filename = TOP_AUTOLOADER_PATH."/dingtalk/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }
+        $filename = TOP_AUTOLOADER_PATH."/dingtalk/request/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }
+
+        $filename = TOP_AUTOLOADER_PATH."/dingtalk/domain/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }         
+		
+		$filename = TOP_AUTOLOADER_PATH."/QimenCloud/top/request/".$name.".php";
+        if(is_file($filename)) {
+            include $filename;
+            return;
+        }
+    }
+}
+
+spl_autoload_register('Autoloader::autoload');
+?>

+ 12 - 0
vendor/dingapi/OapiTest.php

@@ -0,0 +1,12 @@
+<?php
+include "TopSdk.php";
+date_default_timezone_set('Asia/Shanghai');
+
+$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST , DingTalkConstant::$FORMAT_JSON);
+$req = new OapiMediaUploadRequest;
+$req->setType("image");
+$req->setMedia(array('type'=>'application/octet-stream','filename'=>'image.png', 'content' => file_get_contents('/Users/test/image.png')));
+$resp=$c->execute($req, "******","https://oapi.dingtalk.com/media/upload");
+var_dump($resp)
+
+?>

+ 384 - 0
vendor/dingapi/QimenCloud/QimenCloudClient.php

@@ -0,0 +1,384 @@
+<?php
+class QimenCloudClient
+{
+	public $appkey;
+
+	public $secretKey;
+	
+	public $targetAppkey = "";
+
+	public $gatewayUrl = null;
+
+	public $format = "xml";
+
+	public $connectTimeout;
+
+	public $readTimeout;
+
+	/** 是否打开入参check**/
+	public $checkRequest = true;
+
+	protected $signMethod = "md5";
+
+	protected $apiVersion = "2.0";
+
+	protected $sdkVersion = "top-sdk-php-20151012";
+
+	public function getAppkey()
+	{
+		return $this->appkey;
+	}
+
+	public function __construct($appkey = "",$secretKey = ""){
+		$this->appkey = $appkey;
+		$this->secretKey = $secretKey ;
+	}
+
+	protected function generateSign($params)
+	{
+		ksort($params);
+
+		$stringToBeSigned = $this->secretKey;
+		foreach ($params as $k => $v)
+		{
+			if(!is_array($v) && "@" != substr($v, 0, 1))
+			{
+				$stringToBeSigned .= "$k$v";
+			}
+		}
+		unset($k, $v);
+		$stringToBeSigned .= $this->secretKey;
+
+		return strtoupper(md5($stringToBeSigned));
+	}
+
+	public function curl($url, $postFields = null)
+	{
+		$ch = curl_init();
+		curl_setopt($ch, CURLOPT_URL, $url);
+		curl_setopt($ch, CURLOPT_FAILONERROR, false);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+		if ($this->readTimeout) {
+			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
+		}
+		if ($this->connectTimeout) {
+			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
+		}
+		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
+		//https 请求
+		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
+			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+		}
+
+		if (is_array($postFields) && 0 < count($postFields))
+		{
+			$postBodyString = "";
+			$postMultipart = false;
+			foreach ($postFields as $k => $v)
+			{
+				if("@" != substr($v, 0, 1))//判断是不是文件上传
+				{
+					$postBodyString .= "$k=" . urlencode($v) . "&"; 
+				}
+				else//文件上传用multipart/form-data,否则用www-form-urlencoded
+				{
+					$postMultipart = true;
+					if(class_exists('\CURLFile')){
+						$postFields[$k] = new \CURLFile(substr($v, 1));
+					}
+				}
+			}
+			unset($k, $v);
+			curl_setopt($ch, CURLOPT_POST, true);
+			if ($postMultipart)
+			{
+				if (class_exists('\CURLFile')) {
+				    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
+				} else {
+				    if (defined('CURLOPT_SAFE_UPLOAD')) {
+				        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
+				    }
+				}
+				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
+			}
+			else
+			{
+				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
+				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
+				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
+			}
+		}
+		$reponse = curl_exec($ch);
+		
+		if (curl_errno($ch))
+		{
+			throw new Exception(curl_error($ch),0);
+		}
+		else
+		{
+			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+			if (200 !== $httpStatusCode)
+			{
+				throw new Exception($reponse,$httpStatusCode);
+			}
+		}
+		curl_close($ch);
+		return $reponse;
+	}
+	public function curl_with_memory_file($url, $postFields = null, $fileFields = null)
+	{
+		$ch = curl_init();
+		curl_setopt($ch, CURLOPT_URL, $url);
+		curl_setopt($ch, CURLOPT_FAILONERROR, false);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+		if ($this->readTimeout) {
+			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
+		}
+		if ($this->connectTimeout) {
+			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
+		}
+		curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" );
+		//https 请求
+		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
+			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+		}
+		//生成分隔符
+		$delimiter = '-------------' . uniqid();
+		//先将post的普通数据生成主体字符串
+		$data = '';
+		if($postFields != null){
+			foreach ($postFields as $name => $content) {
+			    $data .= "--" . $delimiter . "\r\n";
+			    $data .= 'Content-Disposition: form-data; name="' . $name . '"';
+			    //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
+			    $data .= "\r\n\r\n" . $content . "\r\n";
+			}
+			unset($name,$content);
+		}
+
+		//将上传的文件生成主体字符串
+		if($fileFields != null){
+			foreach ($fileFields as $name => $file) {
+			    $data .= "--" . $delimiter . "\r\n";
+			    $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n";
+			    $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
+
+			    $data .= $file['content'] . "\r\n";
+			}
+			unset($name,$file);
+		}
+		//主体结束的分隔符
+		$data .= "--" . $delimiter . "--";
+
+		curl_setopt($ch, CURLOPT_POST, true);
+		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
+		    'Content-Type: multipart/form-data; boundary=' . $delimiter,
+		    'Content-Length: ' . strlen($data))
+		); 
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+
+		$reponse = curl_exec($ch);
+		unset($data);
+
+		if (curl_errno($ch))
+		{
+			throw new Exception(curl_error($ch),0);
+		}
+		else
+		{
+			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+			if (200 !== $httpStatusCode)
+			{
+				throw new Exception($reponse,$httpStatusCode);
+			}
+		}
+		curl_close($ch);
+		return $reponse;
+	}
+
+	protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
+	{
+		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
+		$logger = new TopLogger;
+		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
+		$logger->conf["separator"] = "^_^";
+		$logData = array(
+		date("Y-m-d H:i:s"),
+		$apiName,
+		$this->appkey,
+		$localIp,
+		PHP_OS,
+		$this->sdkVersion,
+		$requestUrl,
+		$errorCode,
+		str_replace("\n","",$responseTxt)
+		);
+		$logger->log($logData);
+	}
+
+	public function execute($request, $session = null,$bestUrl = null)
+	{
+		if($this->gatewayUrl == null) {
+			throw new Exception("client-check-error:Need Set gatewayUrl.", 40);
+		}
+
+		$result =  new ResultSet(); 
+		if($this->checkRequest) {
+			try {
+				$request->check();
+			} catch (Exception $e) {
+
+				$result->code = $e->getCode();
+				$result->msg = $e->getMessage();
+				return $result;
+			}
+		}
+		//组装系统参数
+		$sysParams["app_key"] = $this->appkey;
+		$sysParams["v"] = $this->apiVersion;
+		$sysParams["format"] = $this->format;
+		$sysParams["sign_method"] = $this->signMethod;
+		$sysParams["method"] = $request->getApiMethodName();
+		$sysParams["timestamp"] = date("Y-m-d H:i:s");
+		$sysParams["target_app_key"] = $this->targetAppkey;
+		if (null != $session)
+		{
+			$sysParams["session"] = $session;
+		}
+		$apiParams = array();
+		//获取业务参数
+		$apiParams = $request->getApiParas();
+
+
+		//系统参数放入GET请求串
+		if($bestUrl){
+			$requestUrl = $bestUrl."?";
+			$sysParams["partner_id"] = $this->getClusterTag();
+		}else{
+			$requestUrl = $this->gatewayUrl."?";
+			$sysParams["partner_id"] = $this->sdkVersion;
+		}
+		//签名
+		$sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams));
+
+		foreach ($sysParams as $sysParamKey => $sysParamValue)
+		{
+			// if(strcmp($sysParamKey,"timestamp") != 0)
+			$requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
+		}
+
+		$fileFields = array();
+		foreach ($apiParams as $key => $value) {
+			if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
+				$value['name'] = $key;
+				$fileFields[$key] = $value;
+				unset($apiParams[$key]);
+			}
+		}
+
+		// $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
+		$requestUrl = substr($requestUrl, 0, -1);
+
+		//发起HTTP请求
+		try
+		{
+			if(count($fileFields) > 0){
+				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
+			}else{
+				$resp = $this->curl($requestUrl, $apiParams);
+			}
+		}
+		catch (Exception $e)
+		{
+			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
+			$result->code = $e->getCode();
+			$result->msg = $e->getMessage();
+			return $result;
+		}
+
+		unset($apiParams);
+		unset($fileFields);
+		//解析TOP返回结果
+		$respWellFormed = false;
+		if ("json" == $this->format)
+		{
+			$respObject = json_decode($resp);
+			if (null !== $respObject)
+			{
+				$respWellFormed = true;
+				foreach ($respObject as $propKey => $propValue)
+				{
+					$respObject = $propValue;
+				}
+			}
+		}
+		else if("xml" == $this->format)
+		{
+			$respObject = @simplexml_load_string($resp);
+			if (false !== $respObject)
+			{
+				$respWellFormed = true;
+			}
+		}
+
+		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
+		if (false === $respWellFormed)
+		{
+			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
+			$result->code = 0;
+			$result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
+			return $result;
+		}
+
+		//如果TOP返回了错误码,记录到业务错误日志中
+		if (isset($respObject->code))
+		{
+			$logger = new TopLogger;
+			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
+			$logger->log(array(
+				date("Y-m-d H:i:s"),
+				$resp
+			));
+		}
+		return $respObject;
+	}
+
+	public function exec($paramsArray)
+	{
+		if (!isset($paramsArray["method"]))
+		{
+			trigger_error("No api name passed");
+		}
+		$inflector = new LtInflector;
+		$inflector->conf["separator"] = ".";
+		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
+		if (!class_exists($requestClassName))
+		{
+			trigger_error("No such api: " . $paramsArray["method"]);
+		}
+
+		$session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
+
+		$req = new $requestClassName;
+		foreach($paramsArray as $paraKey => $paraValue)
+		{
+			$inflector->conf["separator"] = "_";
+			$setterMethodName = $inflector->camelize($paraKey);
+			$inflector->conf["separator"] = ".";
+			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
+			if (method_exists($req, $setterMethodName))
+			{
+				$req->$setterMethodName($paraValue);
+			}
+		}
+		return $this->execute($req, $session);
+	}
+
+	private function getClusterTag()
+    {
+	    return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
+    }
+}

+ 32 - 0
vendor/dingapi/QimenCloud/top/request/CilaiDingtalkTestRequest.php

@@ -0,0 +1,32 @@
+<?php
+/**
+ * TOP API: n95wrxpkif.cilai.dingtalk.test request
+ * 
+ * @author auto create
+ * @since 1.0, 2018.04.20
+ */
+class CilaiDingtalkTestRequest
+{
+	
+	private $apiParas = array();
+	
+	public function getApiMethodName()
+	{
+		return "n95wrxpkif.cilai.dingtalk.test";
+	}
+	
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+	
+	public function check()
+	{
+		
+	}
+	
+	public function putOtherTextParam($key, $value) {
+		$this->apiParas[$key] = $value;
+		$this->$key = $value;
+	}
+}

+ 32 - 0
vendor/dingapi/QimenCloud/top/request/DingtalkOapiIsvLingjiuTestRequest.php

@@ -0,0 +1,32 @@
+<?php
+/**
+ * TOP API: 21d8pajl08.dingtalk.oapi.isv.lingjiu.test request
+ * 
+ * @author auto create
+ * @since 1.0, 2019.09.04
+ */
+class DingtalkOapiIsvLingjiuTestRequest
+{
+	
+	private $apiParas = array();
+	
+	public function getApiMethodName()
+	{
+		return "21d8pajl08.dingtalk.oapi.isv.lingjiu.test";
+	}
+	
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+	
+	public function check()
+	{
+		
+	}
+	
+	public function putOtherTextParam($key, $value) {
+		$this->apiParas[$key] = $value;
+		$this->$key = $value;
+	}
+}

+ 32 - 0
vendor/dingapi/QimenCloud/top/request/DingtalkOapiLingjiuTestRequest.php

@@ -0,0 +1,32 @@
+<?php
+/**
+ * TOP API: 21d8pajl08.dingtalk.oapi.lingjiu.test request
+ * 
+ * @author auto create
+ * @since 1.0, 2018.04.20
+ */
+class DingtalkOapiLingjiuTestRequest
+{
+	
+	private $apiParas = array();
+	
+	public function getApiMethodName()
+	{
+		return "21d8pajl08.dingtalk.oapi.lingjiu.test";
+	}
+	
+	public function getApiParas()
+	{
+		return $this->apiParas;
+	}
+	
+	public function check()
+	{
+		
+	}
+	
+	public function putOtherTextParam($key, $value) {
+		$this->apiParas[$key] = $value;
+		$this->$key = $value;
+	}
+}

+ 40 - 0
vendor/dingapi/TopSdk.php

@@ -0,0 +1,40 @@
+<?php
+/**
+ * TOP SDK 入口文件
+ * 请不要修改这个文件,除非你知道怎样修改以及怎样恢复
+ * @author xuteng.xt
+ */
+
+/**
+ * 定义常量开始
+ * 在include("TopSdk.php")之前定义这些常量,不要直接修改本文件,以利于升级覆盖
+ */
+/**
+ * SDK工作目录
+ * 存放日志,TOP缓存数据
+ */
+if (!defined("TOP_SDK_WORK_DIR"))
+{
+	define("TOP_SDK_WORK_DIR", "/tmp/");
+}
+
+/**
+ * 是否处于开发模式
+ * 在你自己电脑上开发程序的时候千万不要设为false,以免缓存造成你的代码修改了不生效
+ * 部署到生产环境正式运营后,如果性能压力大,可以把此常量设定为false,能提高运行速度(对应的代价就是你下次升级程序时要清一下缓存)
+ */
+if (!defined("TOP_SDK_DEV_MODE"))
+{
+	define("TOP_SDK_DEV_MODE", true);
+}
+
+if (!defined("TOP_AUTOLOADER_PATH"))
+{
+	define("TOP_AUTOLOADER_PATH", dirname(__FILE__));
+}
+
+/**
+* 注册autoLoader,此注册autoLoader只加载top文件
+* 不要删除,除非你自己加载文件。
+**/
+require("Autoloader.php");

BIN
vendor/dingapi/__MACOSX/._Autoloader.php


BIN
vendor/dingapi/__MACOSX/._TopSdk.php


BIN
vendor/dingapi/__MACOSX/QimenCloud/._QimenCloudClient.php


BIN
vendor/dingapi/__MACOSX/top/._.DS_Store


BIN
vendor/dingapi/__MACOSX/top/._ApplicationVar.php


BIN
vendor/dingapi/__MACOSX/top/._SpiUtils.php


BIN
vendor/dingapi/__MACOSX/top/._TopClient.php


BIN
vendor/dingapi/__MACOSX/top/._fileTest.php


+ 255 - 0
vendor/dingapi/aliyun/AliyunClient.php

@@ -0,0 +1,255 @@
+<?php
+class AliyunClient
+{
+	public $accessKeyId;
+
+	public $accessKeySecret;
+
+	public $serverUrl = "http://ecs.aliyuncs.com/";
+
+	public $format = "json";
+
+	public $connectTimeout = 3000;//3秒
+
+	public $readTimeout = 80000;//80秒
+
+	/** 是否打开入参check**/
+	public $checkRequest = true;
+
+	protected $signatureMethod = "HMAC-SHA1";
+
+	protected $signatureVersion = "1.0";
+	
+    protected  $dateTimeFormat = 'Y-m-d\TH:i:s\Z'; // ISO8601规范
+	
+	protected $sdkVersion = "1.0";
+
+	public function execute($request)
+	{
+		if($this->checkRequest) {
+			try {
+				$request->check();
+			} catch (Exception $e) {
+				$result->code = $e->getCode();
+				$result->message = $e->getMessage();
+				return $result;
+			}
+		}
+		//获取业务参数
+		$apiParams = $request->getApiParas();
+		//组装系统参数
+		$apiParams["AccessKeyId"] = $this->accessKeyId;
+		$apiParams["Format"] = $this->format;//
+		$apiParams["SignatureMethod"] = $this->signatureMethod;
+		$apiParams["SignatureVersion"] = $this->signatureVersion;
+		$apiParams["SignatureNonce"] = uniqid();
+		date_default_timezone_set("GMT");
+		$apiParams["TimeStamp"] = date($this->dateTimeFormat);
+		$apiParams["partner_id"] = $this->sdkVersion;
+		
+	    $apiNameArray =	split("\.", $request->getApiMethodName());
+		$apiParams["Action"] = $apiNameArray[3];
+		$apiParams["Version"] = $apiNameArray[4];
+		//签名
+		$apiParams["Signature"] = $this->computeSignature($apiParams, $this->accessKeySecret);
+
+		//系统参数放入GET请求串
+		$requestUrl = rtrim($this->serverUrl,"/") . "/?";
+		foreach ($apiParams as $apiParamKey => $apiParamValue)
+		{
+			$requestUrl .= "$apiParamKey=" . urlencode($apiParamValue) . "&";
+		}
+		$requestUrl = substr($requestUrl, 0, -1);
+		//发起HTTP请求
+		try
+		{
+			$resp = $this->curl($requestUrl, null);
+		}
+		catch (Exception $e)
+		{
+			$this->logCommunicationError($apiParams["Action"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
+			if ("json" == $this->format)
+			{
+				return  json_decode($e->getMessage());
+			}
+			else if("xml" == $this->format)
+			{
+				return  @simplexml_load_string($e->getMessage());
+			}
+	    }
+
+		//解析API返回结果
+		$respWellFormed = false;
+		if ("json" == $this->format)
+		{
+			$respObject = json_decode($resp);
+			if (null !== $respObject)
+			{
+				$respWellFormed = true;
+			}
+		}
+		else if("xml" == $this->format)
+		{
+			$respObject = @simplexml_load_string($resp);
+			if (false !== $respObject)
+			{
+				$respWellFormed = true;
+			}
+		}
+
+		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
+		if (false === $respWellFormed)
+		{
+			$this->logCommunicationError($apiParams["Action"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
+			$result->code = 0;
+			$result->message = "HTTP_RESPONSE_NOT_WELL_FORMED";
+			return $result;
+		}
+
+		//如果TOP返回了错误码,记录到业务错误日志中
+		if (isset($respObject->code))
+		{
+			$logger = new LtLogger;
+			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log";
+			$logger->log(array(
+				date("Y-m-d H:i:s"),
+				$resp
+			));
+		}
+		return $respObject;
+	}
+
+	public function exec($paramsArray)
+	{
+		if (!isset($paramsArray["Action"]))
+		{
+			trigger_error("No api name passed");
+		}
+		$inflector = new LtInflector;
+		$inflector->conf["separator"] = ".";
+		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["Action"], 7))) . "Request";
+		if (!class_exists($requestClassName))
+		{
+			trigger_error("No such api: " . $paramsArray["Action"]);
+		}
+
+		$req = new $requestClassName;
+		foreach($paramsArray as $paraKey => $paraValue)
+		{
+			$inflector->conf["separator"] = "_";
+			$setterMethodName = $inflector->camelize($paraKey);
+			$inflector->conf["separator"] = ".";
+			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
+			if (method_exists($req, $setterMethodName))
+			{
+				$req->$setterMethodName($paraValue);
+			}
+		}
+		return $this->execute($req, $session);
+	}
+	
+	protected function percentEncode($str)
+	{
+	    // 使用urlencode编码后,将"+","*","%7E"做替换即满足 API规定的编码规范
+	    $res = urlencode($str);
+	    $res = preg_replace('/\+/', '%20', $res);
+	    $res = preg_replace('/\*/', '%2A', $res);
+	    $res = preg_replace('/%7E/', '~', $res);
+	    return $res;
+	}
+	
+	protected function computeSignature($parameters, $accessKeySecret)
+	{
+	    // 将参数Key按字典顺序排序
+	    ksort($parameters);
+	
+	    // 生成规范化请求字符串
+	    $canonicalizedQueryString = '';
+	    foreach($parameters as $key => $value)
+	    {
+		$canonicalizedQueryString .= '&' . $this->percentEncode($key) 
+		    . '=' . $this->percentEncode($value);
+	    }
+	
+	    // 生成用于计算签名的字符串 stringToSign
+	    $stringToSign = 'GET&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1));
+	
+	    // 计算签名,注意accessKeySecret后面要加上字符'&'
+	    $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));
+	    return $signature;
+	}
+	
+    public function curl($url, $postFields = null)
+	{
+		$ch = curl_init();
+		curl_setopt($ch, CURLOPT_URL, $url);
+		curl_setopt($ch, CURLOPT_FAILONERROR, false);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+		if ($this->readTimeout) {
+			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
+		}
+		if ($this->connectTimeout) {
+			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
+		}
+		//https 请求
+		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
+			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+		}
+
+		if (is_array($postFields) && 0 < count($postFields))
+		{
+			$postBodyString = "";
+			$postMultipart = false;
+			foreach ($postFields as $k => $v)
+			{
+				if("@" != substr($v, 0, 1))//判断是不是文件上传
+				{
+					$postBodyString .= "$k=" . urlencode($v) . "&"; 
+				}
+				else//文件上传用multipart/form-data,否则用www-form-urlencoded
+				{
+					$postMultipart = true;
+				}
+			}
+			unset($k, $v);
+			curl_setopt($ch, CURLOPT_POST, true);
+			if ($postMultipart)
+			{
+				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
+			}
+			else
+			{
+				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
+			}
+		}
+		$reponse = curl_exec($ch);
+		
+		if (curl_errno($ch))
+		{
+			throw new Exception(curl_error($ch),0);
+		}
+		curl_close($ch);
+		return $reponse;
+	}
+
+	protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
+	{
+		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
+		$logger = new LtLogger;
+		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->accessKeyId . "_" . date("Y-m-d") . ".log";
+		$logger->conf["separator"] = "^_^";
+		$logData = array(
+		date("Y-m-d H:i:s"),
+		$apiName,
+		$this->accessKeyId,
+		$localIp,
+		PHP_OS,
+		$this->sdkVersion,
+		$requestUrl,
+		$errorCode,
+		str_replace("\n","",$responseTxt)
+		);
+		$logger->log($logData);
+	}
+}

+ 656 - 0
vendor/dingapi/dingtalk/DingTalkClient.php

@@ -0,0 +1,656 @@
+<?php
+class DingTalkClient
+{
+	/**@Author chaohui.zch copy from TopClient and modify 2016-12-14 **/
+
+    /**@Author chaohui.zch modify $gatewayUrl 2017-07-18 **/
+    public $gatewayUrl = "https://eco.taobao.com/router/rest";
+
+	public $format = "xml";
+
+	public $connectTimeout;
+
+	public $readTimeout;
+
+    public $apiCallType;
+
+    public $httpMethod;
+
+	/** 是否打开入参check**/
+	public $checkRequest = true;
+
+	protected $apiVersion = "2.0";
+
+	protected $sdkVersion = "dingtalk-sdk-php-20161214";
+
+    public function __construct($apiCallType = null, $httpMethod = null, $format = "xml"){
+        $this->apiCallType = $apiCallType;
+        $this->httpMethod = $httpMethod;
+        $this->format = $format;
+    }
+
+	public function curl($url, $postFields = null)
+	{
+		$ch = curl_init();
+		curl_setopt($ch, CURLOPT_URL, $url);
+		curl_setopt($ch, CURLOPT_FAILONERROR, false);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+		if ($this->readTimeout) {
+			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
+		}
+		if ($this->connectTimeout) {
+			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
+		}
+		curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
+		//https 请求
+		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
+			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+		}
+
+		if (is_array($postFields) && 0 < count($postFields))
+		{
+			$postBodyString = "";
+			$postMultipart = false;
+			foreach ($postFields as $k => $v)
+			{
+				if("@" != substr($v, 0, 1))//判断是不是文件上传
+				{
+					$postBodyString .= "$k=" . urlencode($v) . "&"; 
+				}
+				else//文件上传用multipart/form-data,否则用www-form-urlencoded
+				{
+					$postMultipart = true;
+					if(class_exists('\CURLFile')){
+						$postFields[$k] = new \CURLFile(substr($v, 1));
+					}
+				}
+			}
+			unset($k, $v);
+			curl_setopt($ch, CURLOPT_POST, true);
+			if ($postMultipart)
+			{
+				if (class_exists('\CURLFile')) {
+				    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
+				} else {
+				    if (defined('CURLOPT_SAFE_UPLOAD')) {
+				        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
+				    }
+				}
+				curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
+			}
+			else
+			{
+				$header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
+				curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
+				curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1));
+			}
+		}
+		$reponse = curl_exec($ch);
+		
+		if (curl_errno($ch))
+		{
+			throw new Exception(curl_error($ch),0);
+		}
+		else
+		{
+			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+			if (200 !== $httpStatusCode)
+			{
+				throw new Exception($reponse,$httpStatusCode);
+			}
+		}
+		curl_close($ch);
+		return $reponse;
+	}
+
+    public function curl_get($url,$apiFields = null)
+    {
+        $ch = curl_init();
+
+        foreach ($apiFields as $key => $value)
+        {
+            if(!is_string($value)){
+                $value = json_encode($value);
+            }
+            $url .= "&" ."$key=" . urlencode($value);
+        }
+
+        curl_setopt($ch, CURLOPT_URL, $url);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
+        curl_setopt($ch, CURLOPT_HEADER, false);
+        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
+
+
+        if ($this->readTimeout)
+        {
+            curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
+        }
+
+        if ($this->connectTimeout)
+        {
+            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
+        }
+
+        curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
+
+        //https ignore ssl check ?
+        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" )
+        {
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+        }
+
+        $reponse = curl_exec($ch);
+
+        if (curl_errno($ch))
+        {
+            throw new Exception(curl_error($ch),0);
+        }
+        else
+        {
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+            if (200 !== $httpStatusCode)
+            {
+                throw new Exception($reponse,$httpStatusCode);
+            }
+        }
+        curl_close($ch);
+        return $reponse;
+    }
+
+    public function curl_json($url, $postFields = null)
+    {
+        $ch = curl_init();
+        curl_setopt($ch, CURLOPT_URL, $url);
+        curl_setopt($ch, CURLOPT_FAILONERROR, false);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+        if ($this->readTimeout) {
+            curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
+        }
+        if ($this->connectTimeout) {
+            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
+        }
+        curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
+        //https 请求
+        if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+        }
+
+        if (is_array($postFields) && 0 < count($postFields))
+        {
+            $postBodyString = "";
+            $postMultipart = false;
+            foreach ($postFields as $k => $v)
+            {
+                if(!is_string($v)){
+                    $v = json_encode($v);
+                }
+                if("@" != substr($v, 0, 1))//判断是不是文件上传
+                {
+                    $postBodyString .= "$k=" . urlencode($v) . "&";
+                }
+                else//文件上传用multipart/form-data,否则用www-form-urlencoded
+                {
+                    $postMultipart = true;
+                    if(class_exists('\CURLFile')){
+                        $postFields[$k] = new \CURLFile(substr($v, 1));
+                    }
+                }
+            }
+            unset($k, $v);
+            curl_setopt($ch, CURLOPT_POST, true);
+            if ($postMultipart)
+            {
+                if (class_exists('\CURLFile')) {
+                    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
+                } else {
+                    if (defined('CURLOPT_SAFE_UPLOAD')) {
+                        curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
+                    }
+                }
+                curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
+            }
+            else {
+                $header = array("Content-Type: application/json; charset=utf-8", "Content-Length:".strlen(json_encode($postFields)));
+                curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
+                curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postFields));
+            }
+        }
+        $reponse = curl_exec($ch);
+
+        if (curl_errno($ch))
+        {
+            throw new Exception(curl_error($ch),0);
+        }
+        else
+        {
+            $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+            if (200 !== $httpStatusCode)
+            {
+                throw new Exception($reponse,$httpStatusCode);
+            }
+        }
+        curl_close($ch);
+        return $reponse;
+    }
+
+	public function curl_with_memory_file($url, $postFields = null, $fileFields = null)
+	{
+		$ch = curl_init();
+		curl_setopt($ch, CURLOPT_URL, $url);
+		curl_setopt($ch, CURLOPT_FAILONERROR, false);
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+		if ($this->readTimeout) {
+			curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout);
+		}
+		if ($this->connectTimeout) {
+			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout);
+		}
+		curl_setopt ( $ch, CURLOPT_USERAGENT, "dingtalk-sdk-php" );
+		//https 请求
+		if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
+			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+		}
+		//生成分隔符
+		$delimiter = '-------------' . uniqid();
+		//先将post的普通数据生成主体字符串
+		$data = '';
+		if($postFields != null){
+			foreach ($postFields as $name => $content) {
+			    $data .= "--" . $delimiter . "\r\n";
+			    $data .= 'Content-Disposition: form-data; name="' . $name . '"';
+			    //multipart/form-data 不需要urlencode,参见 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data
+			    $data .= "\r\n\r\n" . $content . "\r\n";
+			}
+			unset($name,$content);
+		}
+
+		//将上传的文件生成主体字符串
+		if($fileFields != null){
+			foreach ($fileFields as $name => $file) {
+			    $data .= "--" . $delimiter . "\r\n";
+			    $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['filename'] . "\" \r\n";
+			    $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//多了个文档类型
+
+			    $data .= $file['content'] . "\r\n";
+			}
+			unset($name,$file);
+		}
+		//主体结束的分隔符
+		$data .= "--" . $delimiter . "--";
+
+		curl_setopt($ch, CURLOPT_POST, true);
+		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
+		    'Content-Type: multipart/form-data; boundary=' . $delimiter,
+		    'Content-Length: ' . strlen($data))
+		); 
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+
+		$reponse = curl_exec($ch);
+		unset($data);
+
+		if (curl_errno($ch))
+		{
+			throw new Exception(curl_error($ch),0);
+		}
+		else
+		{
+			$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+			if (200 !== $httpStatusCode)
+			{
+				throw new Exception($reponse,$httpStatusCode);
+			}
+		}
+		curl_close($ch);
+		return $reponse;
+	}
+
+	protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt)
+	{
+		$localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI";
+		$logger = new TopLogger;
+		$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . "_" . date("Y-m-d") . ".log";
+		$logger->conf["separator"] = "^_^";
+		$logData = array(
+		date("Y-m-d H:i:s"),
+		$apiName,
+		$localIp,
+		PHP_OS,
+		$this->sdkVersion,
+		$requestUrl,
+		$errorCode,
+		str_replace("\n","",$responseTxt)
+		);
+		$logger->log($logData);
+	}
+
+    public function execute($request, $session = null,$bestUrl = null){
+        if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
+            return $this->_executeOapi($request, $session, $bestUrl, null, null, null, null);
+        }else{
+            return $this->_execute($request, $session, $bestUrl);
+        }
+    }
+
+    public function executeWithAccessKey($request, $bestUrl = null, $accessKey, $accessSecret){
+        return $this->executeWithCorpId($request, $bestUrl, $accessKey, $accessSecret, null, null);
+    }
+
+    public function executeWithSuiteTicket($request,$bestUrl = null, $accessKey, $accessSecret, $suiteTicket){
+        return $this->executeWithCorpId($request,$bestUrl, $accessKey, $accessSecret, $suiteTicket, null);
+    }
+
+	public function executeWithCorpId($request, $bestUrl = null, $accessKey, $accessSecret, $suiteTicket, $corpId) {
+        if(DingTalkConstant::$CALL_TYPE_OAPI == $this->apiCallType){
+            return $this->_executeOapi($request, null, $bestUrl,$accessKey, $accessSecret, $suiteTicket, $corpId);
+        }else{
+            return $this->_execute($request, null, $bestUrl);
+        }
+    }
+
+    private function _executeOapi($request, $session = null,$bestUrl = null,$accessKey, $accessSecret, $suiteTicket, $corpId){
+        $result =  new ResultSet();
+        if($this->checkRequest) {
+            try {
+                $request->check();
+            } catch (Exception $e) {
+
+                $result->code = $e->getCode();
+                $result->msg = $e->getMessage();
+                return $result;
+            }
+        }
+
+        $sysParams["method"] = $request->getApiMethodName();
+        //系统参数放入GET请求串
+        if($bestUrl){
+            if(strpos($bestUrl,'?') === false){
+                $requestUrl = $bestUrl."?";
+            }else{
+                $requestUrl = $bestUrl;
+            }
+        }else{
+            $requestUrl = $this->gatewayUrl."?";
+        }
+        if(null != $accessKey){
+            $timestamp = $this->getMillisecond();
+            // 验证签名有效性
+            $canonicalString = $this->getCanonicalStringForIsv($timestamp, $suiteTicket);
+            $signature = $this->computeSignature($accessSecret, $canonicalString);
+
+            $queryParams["accessKey"] = $accessKey;
+            $queryParams["signature"] = $signature;
+            $queryParams["timestamp"] = $timestamp+"";
+            if($suiteTicket != null) {
+                $queryParams["suiteTicket"] = $suiteTicket;
+            }
+            if($corpId != null){
+                $queryParams["corpId"] =  $corpId;
+            }
+            foreach ($queryParams as $queryParamKey => $queryParamValue) {
+                $requestUrl .= "$queryParamKey=" . urlencode($queryParamValue) . "&";
+            }
+        }else{
+            $requestUrl .= "access_token=" . urlencode($session) . "&";
+        }
+
+        $apiParams = array();
+        //获取业务参数
+        $apiParams = $request->getApiParas();
+        $fileFields = array();
+        foreach ($apiParams as $key => $value) {
+            if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
+                $value['name'] = $key;
+                $fileFields[$key] = $value;
+                unset($apiParams[$key]);
+            }
+        }
+
+        // $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
+        $requestUrl = substr($requestUrl, 0, -1);
+
+        //发起HTTP请求
+        try
+        {
+            if(count($fileFields) > 0){
+                $resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
+            }else{
+                if(DingTalkConstant::$METHOD_POST == $this->httpMethod){
+                    $resp = $this->curl_json($requestUrl, $apiParams);
+                }else{
+                    $resp = $this->curl_get($requestUrl, $apiParams);
+                }
+            }
+        }
+        catch (Exception $e)
+        {
+            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
+            $result->code = $e->getCode();
+            $result->msg = $e->getMessage();
+            return $result;
+        }
+
+        unset($apiParams);
+        unset($fileFields);
+        //解析TOP返回结果
+        $respWellFormed = false;
+        if ("json" == $this->format)
+        {
+            $respObject = json_decode($resp);
+            if (null !== $respObject)
+            {
+                $respWellFormed = true;
+            }
+        }
+        else if("xml" == $this->format)
+        {
+            $respObject = @simplexml_load_string($resp);
+            if (false !== $respObject)
+            {
+                $respWellFormed = true;
+            }
+        }
+
+        //返回的HTTP文本不是标准JSON或者XML,记下错误日志
+        if (false === $respWellFormed)
+        {
+            $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
+            $result->code = 0;
+            $result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
+            return $result;
+        }
+
+        //如果TOP返回了错误码,记录到业务错误日志中
+        if (isset($respObject->code))
+        {
+            $logger = new TopLogger;
+            $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" .  "_" . date("Y-m-d") . ".log";
+            $logger->log(array(
+                date("Y-m-d H:i:s"),
+                $resp
+            ));
+        }
+        return $respObject;
+    }
+
+    private function getMillisecond() {
+        list($s1, $s2) = explode(' ', microtime());
+        return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
+    }
+
+    private function getCanonicalStringForIsv($timestamp, $suiteTicket) {
+        $result = $timestamp;
+        if($suiteTicket != null) {
+            $result .= "\n".$suiteTicket;
+        }
+        return $result;
+    }
+
+    private function computeSignature($accessSecret, $canonicalString){
+        $s = hash_hmac('sha256', $canonicalString, $accessSecret, true);
+        return base64_encode($s);
+    }
+
+    private function _execute($request, $session = null,$bestUrl = null)
+	{
+		$result =  new ResultSet(); 
+		if($this->checkRequest) {
+			try {
+				$request->check();
+			} catch (Exception $e) {
+
+				$result->code = $e->getCode();
+				$result->msg = $e->getMessage();
+				return $result;
+			}
+		}
+		//组装系统参数
+		$sysParams["v"] = $this->apiVersion;
+		$sysParams["format"] = $this->format;
+		$sysParams["method"] = $request->getApiMethodName();
+		$sysParams["timestamp"] = date("Y-m-d H:i:s");
+		if (null != $session)
+		{
+			$sysParams["session"] = $session;
+		}
+		$apiParams = array();
+		//获取业务参数
+		$apiParams = $request->getApiParas();
+
+
+		//系统参数放入GET请求串
+		if($bestUrl){
+            if(strpos($bestUrl,'?') === false){
+                $requestUrl = $bestUrl."?";
+            }else{
+                $requestUrl = $bestUrl;
+            }
+			$sysParams["partner_id"] = $this->getClusterTag();
+		}else{
+			$requestUrl = $this->gatewayUrl."?";
+			$sysParams["partner_id"] = $this->sdkVersion;
+		}
+
+		foreach ($sysParams as $sysParamKey => $sysParamValue)
+		{
+			// if(strcmp($sysParamKey,"timestamp") != 0)
+			$requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&";
+		}
+
+		$fileFields = array();
+		foreach ($apiParams as $key => $value) {
+			if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){
+				$value['name'] = $key;
+				$fileFields[$key] = $value;
+				unset($apiParams[$key]);
+			}
+		}
+
+		// $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&";
+		$requestUrl = substr($requestUrl, 0, -1);
+
+		//发起HTTP请求
+		try
+		{
+			if(count($fileFields) > 0){
+				$resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields);
+			}else{
+				$resp = $this->curl($requestUrl, $apiParams);
+			}
+		}
+		catch (Exception $e)
+		{
+			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage());
+			$result->code = $e->getCode();
+			$result->msg = $e->getMessage();
+			return $result;
+		}
+
+		unset($apiParams);
+		unset($fileFields);
+		//解析TOP返回结果
+		$respWellFormed = false;
+		if ("json" == $this->format)
+		{
+			$respObject = json_decode($resp);
+			if (null !== $respObject)
+			{
+				$respWellFormed = true;
+				foreach ($respObject as $propKey => $propValue)
+				{
+					$respObject = $propValue;
+				}
+			}
+		}
+		else if("xml" == $this->format)
+		{
+			$respObject = @simplexml_load_string($resp);
+			if (false !== $respObject)
+			{
+				$respWellFormed = true;
+			}
+		}
+
+		//返回的HTTP文本不是标准JSON或者XML,记下错误日志
+		if (false === $respWellFormed)
+		{
+			$this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp);
+			$result->code = 0;
+			$result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED";
+			return $result;
+		}
+
+		//如果TOP返回了错误码,记录到业务错误日志中
+		if (isset($respObject->code))
+		{
+			$logger = new TopLogger;
+			$logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" .  "_" . date("Y-m-d") . ".log";
+			$logger->log(array(
+				date("Y-m-d H:i:s"),
+				$resp
+			));
+		}
+		return $respObject;
+	}
+
+	public function exec($paramsArray)
+	{
+		if (!isset($paramsArray["method"]))
+		{
+			trigger_error("No api name passed");
+		}
+		$inflector = new LtInflector;
+		$inflector->conf["separator"] = ".";
+		$requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request";
+		if (!class_exists($requestClassName))
+		{
+			trigger_error("No such dingtalk-api: " . $paramsArray["method"]);
+		}
+
+		$session = isset($paramsArray["session"]) ? $paramsArray["session"] : null;
+
+		$req = new $requestClassName;
+		foreach($paramsArray as $paraKey => $paraValue)
+		{
+			$inflector->conf["separator"] = "_";
+			$setterMethodName = $inflector->camelize($paraKey);
+			$inflector->conf["separator"] = ".";
+			$setterMethodName = "set" . $inflector->camelize($setterMethodName);
+			if (method_exists($req, $setterMethodName))
+			{
+				$req->$setterMethodName($paraValue);
+			}
+		}
+		return $this->execute($req, $session);
+	}
+
+	private function getClusterTag()
+    {
+	    return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11);
+    }
+}

+ 18 - 0
vendor/dingapi/dingtalk/DingTalkConstant.php

@@ -0,0 +1,18 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: zuodeng
+ * Date: 2018/7/18
+ * Time: 上午11:31
+ */
+class DingTalkConstant
+{
+    static $CALL_TYPE_OAPI = "oapi";
+    static $CALL_TYPE_TOP = "top";
+
+    static $METHOD_POST = "POST";
+    static $METHOD_GET = "GET";
+
+    static $FORMAT_JSON = "json";
+    static $FORMAT_XML = "xml";
+}

+ 25 - 0
vendor/dingapi/dingtalk/domain/AccountInfo.php

@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * 账号信息
+ * @author auto create
+ */
+class AccountInfo
+{
+	
+	/** 
+	 * 账号的通道
+	 **/
+	public $channel;
+	
+	/** 
+	 * 账号ID
+	 **/
+	public $id;
+	
+	/** 
+	 * 账号的类型
+	 **/
+	public $type;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AccountQueryOpenResponse.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AccountQueryOpenResponse
+{
+	
+	/** 
+	 * accountOpenBO
+	 **/
+	public $account_open_bo;	
+}
+?>

+ 40 - 0
vendor/dingapi/dingtalk/domain/ActionCard.php

@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * 卡片消息
+ * @author auto create
+ */
+class ActionCard
+{
+	
+	/** 
+	 * 使用独立跳转ActionCard样式时的按钮列表;必须与btn_orientation同时设置
+	 **/
+	public $btn_json_list;
+	
+	/** 
+	 * 使用独立跳转ActionCard样式时的按钮排列方式,竖直排列(0),横向排列(1);必须与btn_json_list同时设置
+	 **/
+	public $btn_orientation;
+	
+	/** 
+	 * 消息内容,支持markdown,语法参考标准markdown语法。建议1000个字符以内
+	 **/
+	public $markdown;
+	
+	/** 
+	 * 使用整体跳转ActionCard样式时的标题,必须与single_url同时设置,最长20个字符
+	 **/
+	public $single_title;
+	
+	/** 
+	 * 消息点击链接地址,当发送消息为小程序时支持小程序跳转链接,最长500个字符
+	 **/
+	public $single_url;
+	
+	/** 
+	 * 透出到会话列表和通知的文案,最长64个字符
+	 **/
+	public $title;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/ActivityModel.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * 节点信息列表
+ * @author auto create
+ */
+class ActivityModel
+{
+	
+	/** 
+	 * 节点id
+	 **/
+	public $activity_id;
+	
+	/** 
+	 * 节点名字
+	 **/
+	public $name;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/AddCommentRequest.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * 请求
+ * @author auto create
+ */
+class AddCommentRequest
+{
+	
+	/** 
+	 * 评论人工号
+	 **/
+	public $comment_userid;
+	
+	/** 
+	 * 文件类
+	 **/
+	public $file;
+	
+	/** 
+	 * 实例id
+	 **/
+	public $process_instance_id;
+	
+	/** 
+	 * 评论内容
+	 **/
+	public $text;	
+}
+?>

+ 25 - 0
vendor/dingapi/dingtalk/domain/AddForwardRequest.php

@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * 请求
+ * @author auto create
+ */
+class AddForwardRequest
+{
+	
+	/** 
+	 * 应用id
+	 **/
+	public $agentid;
+	
+	/** 
+	 * 实例id
+	 **/
+	public $process_instance_id;
+	
+	/** 
+	 * 抄送人id列表
+	 **/
+	public $userid_list;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AddMembersResponseModel.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AddMembersResponseModel
+{
+	
+	/** 
+	 * dingtalkId
+	 **/
+	public $dingtalk_id;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/AddProfileReq.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * 添加的账号信息
+ * @author auto create
+ */
+class AddProfileReq
+{
+	
+	/** 
+	 * 头像mediaid
+	 **/
+	public $avatar_mediaid;
+	
+	/** 
+	 * 渠道
+	 **/
+	public $channel;
+	
+	/** 
+	 * 附加信息
+	 **/
+	public $extension;
+	
+	/** 
+	 * 账号id
+	 **/
+	public $id;
+	
+	/** 
+	 * 账号nick
+	 **/
+	public $nick;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AddProfileResp.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AddProfileResp
+{
+	
+	/** 
+	 * imOpenId
+	 **/
+	public $im_openid;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/AddRelationReq.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * 关系
+ * @author auto create
+ */
+class AddRelationReq
+{
+	
+	/** 
+	 * 时间戳精确到毫秒
+	 **/
+	public $begin_time;
+	
+	/** 
+	 * 接收者钉钉的openid
+	 **/
+	public $dst_im_openid;
+	
+	/** 
+	 * 时间戳精确到毫秒
+	 **/
+	public $end_time;
+	
+	/** 
+	 * 是否双向关系
+	 **/
+	public $is_double_way;
+	
+	/** 
+	 * 发送者钉钉的openid
+	 **/
+	public $src_im_openid;	
+}
+?>

+ 25 - 0
vendor/dingapi/dingtalk/domain/AddSubAccountReq.php

@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * 添加子账号入参
+ * @author auto create
+ */
+class AddSubAccountReq
+{
+	
+	/** 
+	 * 主账号id
+	 **/
+	public $adminaccount_id;
+	
+	/** 
+	 * 业务方channel
+	 **/
+	public $channel;
+	
+	/** 
+	 * 子账号id
+	 **/
+	public $subaccount_id;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AddSubAccountResp.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * 添加账号出参
+ * @author auto create
+ */
+class AddSubAccountResp
+{
+	
+	/** 
+	 * im的唯一id
+	 **/
+	public $im_openid;	
+}
+?>

+ 75 - 0
vendor/dingapi/dingtalk/domain/AddtionalOperation.php

@@ -0,0 +1,75 @@
+<?php
+
+/**
+ * 工序信息
+ * @author auto create
+ */
+class AddtionalOperation
+{
+	
+	/** 
+	 * 上下文
+	 **/
+	public $context;
+	
+	/** 
+	 * 设备ID列表
+	 **/
+	public $device_ids;
+	
+	/** 
+	 * 排位布局版本
+	 **/
+	public $flow_version;
+	
+	/** 
+	 * 工序类型
+	 **/
+	public $operation_type;
+	
+	/** 
+	 * 工序ID
+	 **/
+	public $operation_uid;
+	
+	/** 
+	 * 工序执行状态
+	 **/
+	public $perform_status;
+	
+	/** 
+	 * 优先级
+	 **/
+	public $priority;
+	
+	/** 
+	 * 工序执行完成时间
+	 **/
+	public $process_end_time;
+	
+	/** 
+	 * 工序执行开始时间
+	 **/
+	public $process_start_time;
+	
+	/** 
+	 * 工序能力类型
+	 **/
+	public $process_type_code;
+	
+	/** 
+	 * 工段
+	 **/
+	public $section_code;
+	
+	/** 
+	 * 执行人
+	 **/
+	public $work_nos;
+	
+	/** 
+	 * 工位
+	 **/
+	public $workstation_code;	
+}
+?>

+ 25 - 0
vendor/dingapi/dingtalk/domain/AdminList.php

@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * admin_list
+ * @author auto create
+ */
+class AdminList
+{
+	
+	/** 
+	 * admin_mobile
+	 **/
+	public $admin_mobile;
+	
+	/** 
+	 * sys_level
+	 **/
+	public $sys_level;
+	
+	/** 
+	 * userid
+	 **/
+	public $userid;	
+}
+?>

+ 55 - 0
vendor/dingapi/dingtalk/domain/AdvancedServiceInstanceVo.php

@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * 结果列表
+ * @author auto create
+ */
+class AdvancedServiceInstanceVo
+{
+	
+	/** 
+	 * 企业id
+	 **/
+	public $corp_id;
+	
+	/** 
+	 * 有效期结束时间
+	 **/
+	public $end_time;
+	
+	/** 
+	 * 实体id
+	 **/
+	public $entity_id;
+	
+	/** 
+	 * 实体类型,取值user, group, corp
+	 **/
+	public $entity_type;
+	
+	/** 
+	 * 绑定关系id
+	 **/
+	public $id;
+	
+	/** 
+	 * 是否删除,取值Y|N
+	 **/
+	public $is_deleted;
+	
+	/** 
+	 * 绑定关系名称
+	 **/
+	public $name;
+	
+	/** 
+	 * 服务id
+	 **/
+	public $service_id;
+	
+	/** 
+	 * 有效期开始时间
+	 **/
+	public $start_time;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/Agent.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * agent
+ * @author auto create
+ */
+class Agent
+{
+	
+	/** 
+	 * admin_list
+	 **/
+	public $admin_list;
+	
+	/** 
+	 * agent_name
+	 **/
+	public $agent_name;
+	
+	/** 
+	 * agentid
+	 **/
+	public $agentid;
+	
+	/** 
+	 * appid
+	 **/
+	public $appid;
+	
+	/** 
+	 * logo_url
+	 **/
+	public $logo_url;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AlipayUserVo.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AlipayUserVo
+{
+	
+	/** 
+	 * 用户支付宝uid
+	 **/
+	public $alipay_user_id;	
+}
+?>

+ 230 - 0
vendor/dingapi/dingtalk/domain/AnnualReportResponse.php

@@ -0,0 +1,230 @@
+<?php
+
+/**
+ * 返回结果对象
+ * @author auto create
+ */
+class AnnualReportResponse
+{
+	
+	/** 
+	 * 年累计活跃天数
+	 **/
+	public $act_usr_days1y;
+	
+	/** 
+	 * 年累计打卡天数
+	 **/
+	public $at_check_days1y;
+	
+	/** 
+	 * 年累计被at数
+	 **/
+	public $at_me_msg_cnt1y;
+	
+	/** 
+	 * 年累计审批平均处理时间(分钟)
+	 **/
+	public $avg_process_duration1y;
+	
+	/** 
+	 * 年累计企业自建应用发起的审批数
+	 **/
+	public $corp_app_process_inst_cnt1y;
+	
+	/** 
+	 * 年累计创建文档数
+	 **/
+	public $create_doc_cnt1y;
+	
+	/** 
+	 * 年累计创建审批数
+	 **/
+	public $create_process_cnt1y;
+	
+	/** 
+	 * 年累计创建智能填表数
+	 **/
+	public $create_smartwork_cnt1y;
+	
+	/** 
+	 * 年累计智能填表的人次,仅当type=1时有效
+	 **/
+	public $general_form_user_cnt1y;
+	
+	/** 
+	 * 年累计新增内部群聊数量,仅当type=3时有效
+	 **/
+	public $inner_group_cnt1y;
+	
+	/** 
+	 * 年累计阅读互动服务窗文章数量
+	 **/
+	public $isw_msg_click_cnt1y;
+	
+	/** 
+	 * 年累计参加日程数
+	 **/
+	public $join_calendar_cnt1y;
+	
+	/** 
+	 * 年累计参加日程人数
+	 **/
+	public $join_calendar_user_cnt1y;
+	
+	/** 
+	 * 年累计加入群数
+	 **/
+	public $join_group_cnt1y;
+	
+	/** 
+	 * 年累计发起视频会议时长(分钟)
+	 **/
+	public $join_succ_video_conf_len1y;
+	
+	/** 
+	 * 年累计参与(含发起)视频会议次数
+	 **/
+	public $join_succ_video_conf_num1y;
+	
+	/** 
+	 * 年累计参与(含发起)视频会议人次,仅当type=1时有效
+	 **/
+	public $join_succ_video_conf_user_cnt1y;
+	
+	/** 
+	 * 年累计参与(含发起)语音会议时长(分钟)
+	 **/
+	public $join_succ_voip_conf_len1y;
+	
+	/** 
+	 * 年累计参与(含发起)语音会议次数
+	 **/
+	public $join_succ_voip_conf_num1y;
+	
+	/** 
+	 * 年累计参与(含发起)语音会议人次,仅当type=1时有效
+	 **/
+	public $join_succ_voip_conf_user_cnt1y;
+	
+	/** 
+	 * 年累计参与直播次数
+	 **/
+	public $live_join_succ_cnt1y;
+	
+	/** 
+	 * 年累计参与直播时长(分钟)
+	 **/
+	public $live_join_succ_time_len1y;
+	
+	/** 
+	 * 年累计最高运动步数
+	 **/
+	public $max_step_count1y;
+	
+	/** 
+	 * 年累计审批最短处理时间(分钟)
+	 **/
+	public $min_process_duration1y;
+	
+	/** 
+	 * 年累计新增群数
+	 **/
+	public $new_group_cnt1y;
+	
+	/** 
+	 * 年累计外勤天数
+	 **/
+	public $outside_days1y;
+	
+	/** 
+	 * 处理审批数
+	 **/
+	public $process_inst_operate_cnt1y;
+	
+	/** 
+	 * 发起审批数
+	 **/
+	public $process_inst_submit_cnt1y;
+	
+	/** 
+	 * 年累计接收DING数
+	 **/
+	public $recv_ding_cnt1y;
+	
+	/** 
+	 * 年累计新建日程数
+	 **/
+	public $send_calendar_cnt1y;
+	
+	/** 
+	 * 年累计新建日程人数
+	 **/
+	public $send_calendar_user_cnt1y;
+	
+	/** 
+	 * 年累计发送DING数
+	 **/
+	public $send_ding_cnt1y;
+	
+	/** 
+	 * 年累计发送DING人数
+	 **/
+	public $send_ding_user_cnt1y;
+	
+	/** 
+	 * 年累计发送群文件数
+	 **/
+	public $send_group_file_message_cnt1y;
+	
+	/** 
+	 * 年累计发送群聊消息数
+	 **/
+	public $send_group_msg_cnt1y;
+	
+	/** 
+	 * 年累计发送群聊人数
+	 **/
+	public $send_group_msg_user_cnt1y;
+	
+	/** 
+	 * 年累计活跃群数(发消息群)
+	 **/
+	public $send_message_group_cnt1y;
+	
+	/** 
+	 * 年累计发送日志数
+	 **/
+	public $send_report_cnt1y;
+	
+	/** 
+	 * 年累计发送日志人数
+	 **/
+	public $send_report_user_cnt1y;
+	
+	/** 
+	 * 发起视频会议时长(分钟)
+	 **/
+	public $start_succ_video_conf_len1y;
+	
+	/** 
+	 * 使用文档用户数(创建、编辑、分享、阅读)
+	 **/
+	public $use_doc_user_cnt1y;
+	
+	/** 
+	 * 年累计使用的应用数量
+	 **/
+	public $use_micro_app_cnt1y;
+	
+	/** 
+	 * 年累计使用的应用人数,仅当type=1,2时有效
+	 **/
+	public $use_micro_user_cnt1y;
+	
+	/** 
+	 * 年累计参与智能填表数
+	 **/
+	public $use_smartwork_cnt1y;	
+}
+?>

+ 145 - 0
vendor/dingapi/dingtalk/domain/AppInfoDoModel.php

@@ -0,0 +1,145 @@
+<?php
+
+/**
+ * 返回的数据实体
+ * @author auto create
+ */
+class AppInfoDoModel
+{
+	
+	/** 
+	 * alias
+	 **/
+	public $alias;
+	
+	/** 
+	 * 应用通道
+	 **/
+	public $app_channel;
+	
+	/** 
+	 * 应用ID
+	 **/
+	public $app_id;
+	
+	/** 
+	 * 应用key
+	 **/
+	public $app_key;
+	
+	/** 
+	 * 应用类型
+	 **/
+	public $app_type;
+	
+	/** 
+	 * 自动装载
+	 **/
+	public $auto_install;
+	
+	/** 
+	 * 客户端
+	 **/
+	public $client_id;
+	
+	/** 
+	 * 描述
+	 **/
+	public $desc;
+	
+	/** 
+	 * 设备ID
+	 **/
+	public $dev_id;
+	
+	/** 
+	 * 英文名称
+	 **/
+	public $english_name;
+	
+	/** 
+	 * 更新时间
+	 **/
+	public $gmt_create;
+	
+	/** 
+	 * 更新时间
+	 **/
+	public $gmt_modified;
+	
+	/** 
+	 * 图标
+	 **/
+	public $icon_url;
+	
+	/** 
+	 * ID
+	 **/
+	public $id;
+	
+	/** 
+	 * inheritConfig
+	 **/
+	public $inherit_config;
+	
+	/** 
+	 * 租户ID
+	 **/
+	public $inst_id;
+	
+	/** 
+	 * isDeleted
+	 **/
+	public $is_deleted;
+	
+	/** 
+	 * lastDiscards
+	 **/
+	public $last_discards;
+	
+	/** 
+	 * 主URL
+	 **/
+	public $main_url;
+	
+	/** 
+	 * 名称
+	 **/
+	public $name;
+	
+	/** 
+	 * 来源
+	 **/
+	public $origin;
+	
+	/** 
+	 * 预装载
+	 **/
+	public $preset;
+	
+	/** 
+	 * 大小
+	 **/
+	public $size;
+	
+	/** 
+	 * 标语
+	 **/
+	public $slogan;
+	
+	/** 
+	 * 状态
+	 **/
+	public $status;
+	
+	/** 
+	 * 子类型
+	 **/
+	public $sub_type;
+	
+	/** 
+	 * vhost
+	 **/
+	public $v_host;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AppSpaceResponse.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * 结果
+ * @author auto create
+ */
+class AppSpaceResponse
+{
+	
+	/** 
+	 * spaceId
+	 **/
+	public $space_id;	
+}
+?>

+ 175 - 0
vendor/dingapi/dingtalk/domain/AppVersionDoModel.php

@@ -0,0 +1,175 @@
+<?php
+
+/**
+ * 返回的数据实体
+ * @author auto create
+ */
+class AppVersionDoModel
+{
+	
+	/** 
+	 * appid
+	 **/
+	public $app_id;
+	
+	/** 
+	 * 构建任务ID
+	 **/
+	public $build_task_no;
+	
+	/** 
+	 * 构建类型
+	 **/
+	public $build_type;
+	
+	/** 
+	 * 客户端
+	 **/
+	public $client_id;
+	
+	/** 
+	 * 模板实例化小程序的扩展数据
+	 **/
+	public $ext_json_config;
+	
+	/** 
+	 * 模板实例化小程序的扩展数据url
+	 **/
+	public $ext_json_config_url;
+	
+	/** 
+	 * 扩展信息
+	 **/
+	public $extend_info;
+	
+	/** 
+	 * 扩展
+	 **/
+	public $extra;
+	
+	/** 
+	 * fallbackBaseUrl
+	 **/
+	public $fallback_base_url;
+	
+	/** 
+	 * 更新时间
+	 **/
+	public $gmt_create;
+	
+	/** 
+	 * 更新时间
+	 **/
+	public $gmt_modified;
+	
+	/** 
+	 * ID
+	 **/
+	public $id;
+	
+	/** 
+	 * 未知
+	 **/
+	public $inherit_config;
+	
+	/** 
+	 * 租户ID
+	 **/
+	public $inst_id;
+	
+	/** 
+	 * 是否删除
+	 **/
+	public $is_deleted;
+	
+	/** 
+	 * 主URL
+	 **/
+	public $main_url;
+	
+	/** 
+	 * MD5
+	 **/
+	public $md5;
+	
+	/** 
+	 * 猫爪任务ID
+	 **/
+	public $mosec_job_id;
+	
+	/** 
+	 * 猫爪扫描任务状态
+	 **/
+	public $mosec_status;
+	
+	/** 
+	 * 包地址
+	 **/
+	public $package_url;
+	
+	/** 
+	 * 插件关联
+	 **/
+	public $plugin_refs;
+	
+	/** 
+	 * 插件大小
+	 **/
+	public $plugin_size;
+	
+	/** 
+	 * 插件url
+	 **/
+	public $plugin_url;
+	
+	/** 
+	 * 构建任务ID
+	 **/
+	public $qcloud_job_id;
+	
+	/** 
+	 * 构建任务状态
+	 **/
+	public $qcloud_status;
+	
+	/** 
+	 * 大小
+	 **/
+	public $size;
+	
+	/** 
+	 * 源URL
+	 **/
+	public $source_url;
+	
+	/** 
+	 * 模板应用ID
+	 **/
+	public $template_app_id;
+	
+	/** 
+	 * 模板ID
+	 **/
+	public $template_id;
+	
+	/** 
+	 * 模板版本
+	 **/
+	public $template_version;
+	
+	/** 
+	 * tinyCliVersion
+	 **/
+	public $tiny_cli_version;
+	
+	/** 
+	 * 版本
+	 **/
+	public $version;
+	
+	/** 
+	 * 版本ID
+	 **/
+	public $version_unique_id;	
+}
+?>

+ 55 - 0
vendor/dingapi/dingtalk/domain/Applist.php

@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * appList
+ * @author auto create
+ */
+class Applist
+{
+	
+	/** 
+	 * 微应用实例化id
+	 **/
+	public $agent_id;
+	
+	/** 
+	 * 微应用描述
+	 **/
+	public $app_desc;
+	
+	/** 
+	 * 微应用图标
+	 **/
+	public $app_icon;
+	
+	/** 
+	 * 微应用状态,1表示启用,0表示停用
+	 **/
+	public $app_status;
+	
+	/** 
+	 * 微应用的移动端主页
+	 **/
+	public $homepage_link;
+	
+	/** 
+	 * 表示是否是自建微应用
+	 **/
+	public $is_self;
+	
+	/** 
+	 * 微应用图标
+	 **/
+	public $name;
+	
+	/** 
+	 * 微应用的OA后台管理主页
+	 **/
+	public $omp_link;
+	
+	/** 
+	 * 微应用的pc端主页
+	 **/
+	public $pc_homepage_link;	
+}
+?>

+ 40 - 0
vendor/dingapi/dingtalk/domain/ApplyUserDto.php

@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * 帐号列表
+ * @author auto create
+ */
+class ApplyUserDto
+{
+	
+	/** 
+	 * 业务渠道
+	 **/
+	public $channel;
+	
+	/** 
+	 * 扩展字段
+	 **/
+	public $extension;
+	
+	/** 
+	 * 主帐号ID
+	 **/
+	public $outer_id;
+	
+	/** 
+	 * 主帐号名称
+	 **/
+	public $outer_nick;
+	
+	/** 
+	 * 子帐号ID
+	 **/
+	public $outer_sub_id;
+	
+	/** 
+	 * 子帐号名称
+	 **/
+	public $outer_sub_nick;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/ApproveDurationForTopVo.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class ApproveDurationForTopVo
+{
+	
+	/** 
+	 * 请假时长(单位分钟)
+	 **/
+	public $duration_in_minutes;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/ApproverNode.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * 审批列表
+ * @author auto create
+ */
+class ApproverNode
+{
+	
+	/** 
+	 * 备注
+	 **/
+	public $note;
+	
+	/** 
+	 * 审批操作时间
+	 **/
+	public $operate_time;
+	
+	/** 
+	 * 报销审批单状态:0审批中 1已同意 2已拒绝 3已转交,4已取消 5已终止
+	 **/
+	public $status;
+	
+	/** 
+	 * 审批人id
+	 **/
+	public $userid;	
+}
+?>

+ 100 - 0
vendor/dingapi/dingtalk/domain/AreaStatDataVO.php

@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * 系统自动生成
+ * @author auto create
+ */
+class AreaStatDataVO
+{
+	
+	/** 
+	 * 所辖区域活跃率
+	 **/
+	public $act_ratio1d;
+	
+	/** 
+	 * 活跃用户数最近1天
+	 **/
+	public $act_usr_cn1d;
+	
+	/** 
+	 * 历史截至当日激活会员数
+	 **/
+	public $active_mbr_cnt_std;
+	
+	/** 
+	 * 所辖区域用户的激活率
+	 **/
+	public $active_mbr_ratio;
+	
+	/** 
+	 * 所属城市维度
+	 **/
+	public $city_lat;
+	
+	/** 
+	 * 所属城市经度
+	 **/
+	public $city_lng;
+	
+	/** 
+	 * 城市名称
+	 **/
+	public $city_name;
+	
+	/** 
+	 * 企业ID
+	 **/
+	public $corp_id;
+	
+	/** 
+	 * 区/县纬度
+	 **/
+	public $county_lat;
+	
+	/** 
+	 * 区/县经度
+	 **/
+	public $county_lng;
+	
+	/** 
+	 * 城市所在区域
+	 **/
+	public $county_name;
+	
+	/** 
+	 * 历史截至当日企业会员数
+	 **/
+	public $mbr_cnt_std;
+	
+	/** 
+	 * 所辖区域在线组织数
+	 **/
+	public $online_org_cnt;
+	
+	/** 
+	 * 所辖区域组织覆盖率
+	 **/
+	public $org_online_ratio;
+	
+	/** 
+	 * 所辖区域实际组织数
+	 **/
+	public $real_org_cnt;
+	
+	/** 
+	 * 发送消息数量
+	 **/
+	public $send_message_cnt1d;
+	
+	/** 
+	 * 发送消息人数
+	 **/
+	public $send_message_user_cnt1d;
+	
+	/** 
+	 * 查询时间
+	 **/
+	public $stat_date;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/ArticleCreateDTO.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * 文章对象
+ * @author auto create
+ */
+class ArticleCreateDTO
+{
+	
+	/** 
+	 * 文章id
+	 **/
+	public $article_id;
+	
+	/** 
+	 * html码
+	 **/
+	public $content;
+	
+	/** 
+	 * 摘要
+	 **/
+	public $digest;
+	
+	/** 
+	 * 封面图
+	 **/
+	public $thumb_media_id;
+	
+	/** 
+	 * 标题
+	 **/
+	public $title;	
+}
+?>

+ 70 - 0
vendor/dingapi/dingtalk/domain/ArticleDTO.php

@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * 文章列表
+ * @author auto create
+ */
+class ArticleDTO
+{
+	
+	/** 
+	 * 文章id
+	 **/
+	public $article_id;
+	
+	/** 
+	 * 文章内容
+	 **/
+	public $content;
+	
+	/** 
+	 * 创建时间
+	 **/
+	public $create_time;
+	
+	/** 
+	 * 摘要
+	 **/
+	public $digest;
+	
+	/** 
+	 * 发布状态,0-未发布,1-已发布
+	 **/
+	public $publish_status;
+	
+	/** 
+	 * 发布时间
+	 **/
+	public $publish_time;
+	
+	/** 
+	 * 封面图片的素材id
+	 **/
+	public $thumb_media_id;
+	
+	/** 
+	 * 标题
+	 **/
+	public $title;
+	
+	/** 
+	 * 阅读次数
+	 **/
+	public $total_view_count;
+	
+	/** 
+	 * 修改时间
+	 **/
+	public $update_time;
+	
+	/** 
+	 * 文章链接
+	 **/
+	public $url;
+	
+	/** 
+	 * 已读用户数
+	 **/
+	public $user_view_count;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/AssignInfoModifyItem.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * 分配信息修改明细列表
+ * @author auto create
+ */
+class AssignInfoModifyItem
+{
+	
+	/** 
+	 * 工序执行器分配列表
+	 **/
+	public $operation_executor_assigns;
+	
+	/** 
+	 * 工序外部ID
+	 **/
+	public $operation_external_id;
+	
+	/** 
+	 * 工序唯一ID
+	 **/
+	public $operation_uid;
+	
+	/** 
+	 * 分配单元列表
+	 **/
+	public $work_units;	
+}
+?>

+ 50 - 0
vendor/dingapi/dingtalk/domain/AsyncSendMessageRequest.php

@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * 发送消息的结构
+ * @author auto create
+ */
+class AsyncSendMessageRequest
+{
+	
+	/** 
+	 * 群ID
+	 **/
+	public $group_id;
+	
+	/** 
+	 * 消息内容,根据msgtype不同,解析方式不同
+	 **/
+	public $msg_content;
+	
+	/** 
+	 * 消息的可扩展字段,透传
+	 **/
+	public $msg_extension;
+	
+	/** 
+	 * 消息的特性:静默消息,系统消息
+	 **/
+	public $msg_feature;
+	
+	/** 
+	 * 消息类型:text,image,user-defined
+	 **/
+	public $msg_type;
+	
+	/** 
+	 * 接受者,暂不支持,可不填
+	 **/
+	public $receiverid_list;
+	
+	/** 
+	 * 发送者,暂不支持,可不填
+	 **/
+	public $senderid;
+	
+	/** 
+	 * 推送信息
+	 **/
+	public $xpn_model;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/AsyncSendProgress.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AsyncSendProgress
+{
+	
+	/** 
+	 * 取值 0-100,表示处理的百分比
+	 **/
+	public $progress_in_percent;
+	
+	/** 
+	 * 任务执行状态,0=未开始,1=处理中,2=处理完毕
+	 **/
+	public $status;	
+}
+?>

+ 40 - 0
vendor/dingapi/dingtalk/domain/AsyncSendResult.php

@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AsyncSendResult
+{
+	
+	/** 
+	 * 发送失败的用户id
+	 **/
+	public $failed_user_id_list;
+	
+	/** 
+	 * 因发送消息过于频繁或超量而被流控过滤后实际未发送的userid。未被限流的接收者仍会被成功发送。限流规则包括:1、给同一用户发相同内容消息一天仅允许一次;2、如果是ISV接入方式,给同一用户发消息一天不得超过100次;如果是企业接入方式,此上限为500。
+	 **/
+	public $forbidden_user_id_list;
+	
+	/** 
+	 * 无效的部门id
+	 **/
+	public $invalid_dept_id_list;
+	
+	/** 
+	 * 无效的用户id
+	 **/
+	public $invalid_user_id_list;
+	
+	/** 
+	 * 已读消息的用户id
+	 **/
+	public $read_user_id_list;
+	
+	/** 
+	 * 未读消息的用户id
+	 **/
+	public $unread_user_id_list;	
+}
+?>

+ 25 - 0
vendor/dingapi/dingtalk/domain/At.php

@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * 被@人的手机号
+ * @author auto create
+ */
+class At
+{
+	
+	/** 
+	 * 被@人的手机号
+	 **/
+	public $at_mobiles;
+	
+	/** 
+	 * 被@人的工号
+	 **/
+	public $at_user_ids;
+	
+	/** 
+	 * @所有人时:true,否则为:false
+	 **/
+	public $is_at_all;	
+}
+?>

+ 55 - 0
vendor/dingapi/dingtalk/domain/AtApproveForOpenVo.php

@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * 审批单列表
+ * @author auto create
+ */
+class AtApproveForOpenVo
+{
+	
+	/** 
+	 * 审批单开始时间
+	 **/
+	public $begin_time;
+	
+	/** 
+	 * 业务类型
+	 **/
+	public $biz_type;
+	
+	/** 
+	 * 时长
+	 **/
+	public $duration;
+	
+	/** 
+	 * 审批单的单位
+	 **/
+	public $duration_unit;
+	
+	/** 
+	 * 审批单结束时间
+	 **/
+	public $end_time;
+	
+	/** 
+	 * 审批单审批完成时间
+	 **/
+	public $gmt_finished;
+	
+	/** 
+	 * 审批单id
+	 **/
+	public $proc_inst_id;
+	
+	/** 
+	 * 子类型
+	 **/
+	public $sub_type;
+	
+	/** 
+	 * 审批单的tag
+	 **/
+	public $tag_name;	
+}
+?>

+ 75 - 0
vendor/dingapi/dingtalk/domain/AtAttendanceRecordForOpenVo.php

@@ -0,0 +1,75 @@
+<?php
+
+/**
+ * 打卡流水list
+ * @author auto create
+ */
+class AtAttendanceRecordForOpenVo
+{
+	
+	/** 
+	 * 基本定位精度
+	 **/
+	public $base_accuracy;
+	
+	/** 
+	 * 打卡基础地质
+	 **/
+	public $base_address;
+	
+	/** 
+	 * 流水无效的原因
+	 **/
+	public $invalid_record_msg;
+	
+	/** 
+	 * 流水无效的类型
+	 **/
+	public $invalid_record_type;
+	
+	/** 
+	 * 流水id
+	 **/
+	public $record_id;
+	
+	/** 
+	 * 打卡来源
+	 **/
+	public $source_type;
+	
+	/** 
+	 * 用户定位精度
+	 **/
+	public $user_accuracy;
+	
+	/** 
+	 * 用户打卡时间
+	 **/
+	public $user_check_time;
+	
+	/** 
+	 * 打卡纬度
+	 **/
+	public $user_latitude;
+	
+	/** 
+	 * 打卡维度
+	 **/
+	public $user_longitude;
+	
+	/** 
+	 * mac地址
+	 **/
+	public $user_mac_addr;
+	
+	/** 
+	 * wifi名称
+	 **/
+	public $user_ssid;
+	
+	/** 
+	 * 是否匹配
+	 **/
+	public $valid_matched;	
+}
+?>

+ 80 - 0
vendor/dingapi/dingtalk/domain/AtAttendanceResultForOpenVo.php

@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * 打卡结果list
+ * @author auto create
+ */
+class AtAttendanceResultForOpenVo
+{
+	
+	/** 
+	 * 打卡类型 上班还是下班
+	 **/
+	public $check_type;
+	
+	/** 
+	 * 班次id
+	 **/
+	public $class_id;
+	
+	/** 
+	 * 考勤组id
+	 **/
+	public $group_id;
+	
+	/** 
+	 * 定位方法
+	 **/
+	public $location_method;
+	
+	/** 
+	 * 定位结果
+	 **/
+	public $location_result;
+	
+	/** 
+	 * 外勤备注
+	 **/
+	public $outside_remark;
+	
+	/** 
+	 * 标准打卡时间
+	 **/
+	public $plan_check_time;
+	
+	/** 
+	 * 排班id
+	 **/
+	public $plan_id;
+	
+	/** 
+	 * 审批单id
+	 **/
+	public $proc_inst_id;
+	
+	/** 
+	 * 打卡流水id
+	 **/
+	public $record_id;
+	
+	/** 
+	 * 打卡来源
+	 **/
+	public $source_type;
+	
+	/** 
+	 * 打卡的时间结果
+	 **/
+	public $time_result;
+	
+	/** 
+	 * 用户打卡地址
+	 **/
+	public $user_address;
+	
+	/** 
+	 * 用户打卡时间
+	 **/
+	public $user_check_time;	
+}
+?>

+ 45 - 0
vendor/dingapi/dingtalk/domain/AtCheckInfoForOpenVo.php

@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AtCheckInfoForOpenVo
+{
+	
+	/** 
+	 * 审批单列表
+	 **/
+	public $approve_list;
+	
+	/** 
+	 * 打卡结果list
+	 **/
+	public $attendance_result_list;
+	
+	/** 
+	 * 打卡流水list
+	 **/
+	public $check_record_list;
+	
+	/** 
+	 * 当前排班对应的休息时间段
+	 **/
+	public $class_setting_info;
+	
+	/** 
+	 * 公司id
+	 **/
+	public $corp_id;
+	
+	/** 
+	 * 用户id
+	 **/
+	public $userid;
+	
+	/** 
+	 * 查询日期
+	 **/
+	public $work_date;	
+}
+?>

+ 40 - 0
vendor/dingapi/dingtalk/domain/AtClassForTopVo.php

@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * 返回对象
+ * @author auto create
+ */
+class AtClassForTopVo
+{
+	
+	/** 
+	 * 考勤组班次配置
+	 **/
+	public $class_setting;
+	
+	/** 
+	 * 组织id
+	 **/
+	public $corp_id;
+	
+	/** 
+	 * classid
+	 **/
+	public $id;
+	
+	/** 
+	 * 组织名称
+	 **/
+	public $name;
+	
+	/** 
+	 * 班次打卡时间段,最多
+	 **/
+	public $sections;
+	
+	/** 
+	 * 固定班次的工作日班次
+	 **/
+	public $work_days;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/AtClassSettingForTopVo.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * 考勤组班次配置
+ * @author auto create
+ */
+class AtClassSettingForTopVo
+{
+	
+	/** 
+	 * classId
+	 **/
+	public $class_id;
+	
+	/** 
+	 * classSettingId
+	 **/
+	public $id;
+	
+	/** 
+	 * 休息开始时间
+	 **/
+	public $rest_begin_time;
+	
+	/** 
+	 * 休息结束时间
+	 **/
+	public $rest_end_time;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AtClassSettingInfoForOpenVo.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * 当前排班对应的休息时间段
+ * @author auto create
+ */
+class AtClassSettingInfoForOpenVo
+{
+	
+	/** 
+	 * restTimeVOList
+	 **/
+	public $rest_time_vo_list;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/AtClassVo.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * 考勤组中的班次列表
+ * @author auto create
+ */
+class AtClassVo
+{
+	
+	/** 
+	 * 班次id
+	 **/
+	public $class_id;
+	
+	/** 
+	 * 班次名称
+	 **/
+	public $name;
+	
+	/** 
+	 * 班次中上下班列表
+	 **/
+	public $sections;
+	
+	/** 
+	 * 班次配置
+	 **/
+	public $setting;	
+}
+?>

+ 65 - 0
vendor/dingapi/dingtalk/domain/AtGroupForTopVo.php

@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * 考勤组列表
+ * @author auto create
+ */
+class AtGroupForTopVo
+{
+	
+	/** 
+	 * 一周的班次时间展示列表。["周一、二 班次A:09:00-18:00", "周六、周日 休息"]
+	 **/
+	public $classes_list;
+	
+	/** 
+	 * 默认班次id
+	 **/
+	public $default_class_id;
+	
+	/** 
+	 * 关联的部门
+	 **/
+	public $dept_name_list;
+	
+	/** 
+	 * 考勤组id
+	 **/
+	public $group_id;
+	
+	/** 
+	 * 考勤组名称
+	 **/
+	public $group_name;
+	
+	/** 
+	 * 是否默认考勤组
+	 **/
+	public $is_default;
+	
+	/** 
+	 * 考勤组负责人
+	 **/
+	public $manager_list;
+	
+	/** 
+	 * 成员人数
+	 **/
+	public $member_count;
+	
+	/** 
+	 * 考勤组对应的考勤班次列表
+	 **/
+	public $selected_class;
+	
+	/** 
+	 * 考勤类型,FIXED为固定排班,TURN为轮班排班,NONE为无班次
+	 **/
+	public $type;
+	
+	/** 
+	 * 固定班次的工作日班次
+	 **/
+	public $work_day_list;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/AtGroupFullForTopVo.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AtGroupFullForTopVo
+{
+	
+	/** 
+	 * 考勤组中的班次列表
+	 **/
+	public $classes;
+	
+	/** 
+	 * 考勤组id
+	 **/
+	public $group_id;
+	
+	/** 
+	 * 考勤组名称
+	 **/
+	public $name;
+	
+	/** 
+	 * 考勤组类型
+	 **/
+	public $type;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/AtGroupListForTopVo.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AtGroupListForTopVo
+{
+	
+	/** 
+	 * 考勤组列表
+	 **/
+	public $groups;
+	
+	/** 
+	 * 分页用,表示是否还有下一页
+	 **/
+	public $has_more;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/AtRestTimeVo.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * restTimeVOList
+ * @author auto create
+ */
+class AtRestTimeVo
+{
+	
+	/** 
+	 * 休息开始时间
+	 **/
+	public $rest_begin_time;
+	
+	/** 
+	 * 休息结束时间
+	 **/
+	public $rest_end_time;	
+}
+?>

+ 50 - 0
vendor/dingapi/dingtalk/domain/AtScheduleForTopVo.php

@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * 排班列表
+ * @author auto create
+ */
+class AtScheduleForTopVo
+{
+	
+	/** 
+	 * 审批id,结果集中没有的话表示没有审批单
+	 **/
+	public $approve_id;
+	
+	/** 
+	 * 打卡类型,Onduty表示上班打卡,OffDuty表示下班打卡
+	 **/
+	public $check_type;
+	
+	/** 
+	 * 考勤班次id
+	 **/
+	public $class_id;
+	
+	/** 
+	 * 班次配置id,结果集中没有的话表示使用全局班次配置
+	 **/
+	public $class_setting_id;
+	
+	/** 
+	 * 考勤组id
+	 **/
+	public $group_id;
+	
+	/** 
+	 * 打卡时间
+	 **/
+	public $plan_check_time;
+	
+	/** 
+	 * 排班id
+	 **/
+	public $plan_id;
+	
+	/** 
+	 * userId
+	 **/
+	public $userid;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/AtScheduleListForTopVo.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AtScheduleListForTopVo
+{
+	
+	/** 
+	 * 分页用,表示是否还有下一页
+	 **/
+	public $has_more;
+	
+	/** 
+	 * 排班列表
+	 **/
+	public $schedules;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AtSectionVo.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * 班次打卡时间段,最多
+ * @author auto create
+ */
+class AtSectionVo
+{
+	
+	/** 
+	 * 时间段列表
+	 **/
+	public $times;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/AtTimeVo.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * 时间段列表
+ * @author auto create
+ */
+class AtTimeVo
+{
+	
+	/** 
+	 * 是否跨天
+	 **/
+	public $across;
+	
+	/** 
+	 * 允许开始分钟
+	 **/
+	public $begin_min;
+	
+	/** 
+	 * 打卡时间
+	 **/
+	public $check_time;
+	
+	/** 
+	 * 打卡类型枚举(Onduty和OffDuty)
+	 **/
+	public $check_type;
+	
+	/** 
+	 * 允许结束分钟
+	 **/
+	public $end_min;	
+}
+?>

+ 80 - 0
vendor/dingapi/dingtalk/domain/AtsAddJobParam.php

@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * 职位列表,单次最多20个
+ * @author auto create
+ */
+class AtsAddJobParam
+{
+	
+	/** 
+	 * 工作地点
+	 **/
+	public $address;
+	
+	/** 
+	 * 是否校招
+	 **/
+	public $campus;
+	
+	/** 
+	 * 城市编码
+	 **/
+	public $city;
+	
+	/** 
+	 * 操作人员工标识
+	 **/
+	public $creator_user_id;
+	
+	/** 
+	 * 职位描述
+	 **/
+	public $description;
+	
+	/** 
+	 * 区县编码
+	 **/
+	public $district;
+	
+	/** 
+	 * 扩展数据
+	 **/
+	public $ext_data;
+	
+	/** 
+	 * 职位性质,FULL-TIME:全职,PART-TIME:兼职,INTERNSHIP:实习,OTHER:其他
+	 **/
+	public $job_nature;
+	
+	/** 
+	 * 最低月薪,单位:元
+	 **/
+	public $max_salary;
+	
+	/** 
+	 * 最高月薪,单位:元
+	 **/
+	public $min_salary;
+	
+	/** 
+	 * 职位名称
+	 **/
+	public $name;
+	
+	/** 
+	 * 职位负责人的员工标识列表
+	 **/
+	public $owner_user_ids;
+	
+	/** 
+	 * 省域编码
+	 **/
+	public $province;
+	
+	/** 
+	 * 学历要求,1小学 2初中 3高中  4中专 5大专 6本科  7硕士 8 博士 9其他
+	 **/
+	public $required_edu;	
+}
+?>

+ 25 - 0
vendor/dingapi/dingtalk/domain/AtsPageResult.php

@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * 职位数据列表
+ * @author auto create
+ */
+class AtsPageResult
+{
+	
+	/** 
+	 * 是否还有数据
+	 **/
+	public $has_more;
+	
+	/** 
+	 * 职位信息列表
+	 **/
+	public $list;
+	
+	/** 
+	 * 游标,下次分页请求使用
+	 **/
+	public $next_cursor;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AttColumnsForTopVo.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class AttColumnsForTopVo
+{
+	
+	/** 
+	 * 列信息
+	 **/
+	public $columns;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/Attachment.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * 附件
+ * @author auto create
+ */
+class Attachment
+{
+	
+	/** 
+	 * 文件id
+	 **/
+	public $file_id;
+	
+	/** 
+	 * 文件名
+	 **/
+	public $file_name;
+	
+	/** 
+	 * 文件大小
+	 **/
+	public $file_size;
+	
+	/** 
+	 * 文件类型
+	 **/
+	public $file_type;
+	
+	/** 
+	 * 钉盘spaceId
+	 **/
+	public $space_id;	
+}
+?>

+ 60 - 0
vendor/dingapi/dingtalk/domain/AttachmentVO.php

@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * 附件内容
+ * @author auto create
+ */
+class AttachmentVO
+{
+	
+	/** 
+	 * 文件后缀, 用于展示文件对应图标
+	 **/
+	public $detail_type;
+	
+	/** 
+	 * 上传DING盘后的文件ID
+	 **/
+	public $file_id;
+	
+	/** 
+	 * 文件名
+	 **/
+	public $file_name;
+	
+	/** 
+	 * 文件大小(单位:Byte, 最大2G)
+	 **/
+	public $file_size;
+	
+	/** 
+	 * 上传DING盘后的SpaceId
+	 **/
+	public $file_space_id;
+	
+	/** 
+	 * 链接缩略图
+	 **/
+	public $link_pic_url;
+	
+	/** 
+	 * 链接摘要
+	 **/
+	public $link_text;
+	
+	/** 
+	 * 链接标题
+	 **/
+	public $link_title;
+	
+	/** 
+	 * 链接URL
+	 **/
+	public $link_url;
+	
+	/** 
+	 * 附件类型:img-图片,link-链接,file-文件
+	 **/
+	public $type;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/Attendee.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * 日程组织者,暂不支持修改
+ * @author auto create
+ */
+class Attendee
+{
+	
+	/** 
+	 * 员工工号
+	 **/
+	public $userid;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/Attendees.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * 参与者,考虑性能问题,该字段不向外透出
+ * @author auto create
+ */
+class Attendees
+{
+	
+	/** 
+	 * 展示姓名
+	 **/
+	public $display_name;
+	
+	/** 
+	 * 是否组织者
+	 **/
+	public $organizer;
+	
+	/** 
+	 * 响应状态(accepted, declined, needsAction)
+	 **/
+	public $response_status;
+	
+	/** 
+	 * 是否自己
+	 **/
+	public $self;
+	
+	/** 
+	 * 员工id
+	 **/
+	public $userid;	
+}
+?>

+ 130 - 0
vendor/dingapi/dingtalk/domain/AuditLogVO.php

@@ -0,0 +1,130 @@
+<?php
+
+/**
+ * 记录列表
+ * @author auto create
+ */
+class AuditLogVO
+{
+	
+	/** 
+	 * 操作类型
+	 **/
+	public $action;
+	
+	/** 
+	 * 操作类型翻译值
+	 **/
+	public $action_view;
+	
+	/** 
+	 * 文件id
+	 **/
+	public $biz_id;
+	
+	/** 
+	 * 文档授权成员列表,仅授权文档操作有效
+	 **/
+	public $doc_member_info_list;
+	
+	/** 
+	 * 文档分享成员列表,仅分享文档时有效
+	 **/
+	public $doc_receiver_list;
+	
+	/** 
+	 * 记录生成时间,unix时间戳,单位ms
+	 **/
+	public $gmt_create;
+	
+	/** 
+	 * 记录修改时间,unix时间戳,单位ms
+	 **/
+	public $gmt_modified;
+	
+	/** 
+	 * 操作机器ip
+	 **/
+	public $ip_address;
+	
+	/** 
+	 * 操作来源空间
+	 **/
+	public $operate_module;
+	
+	/** 
+	 * 操作来源翻译值
+	 **/
+	public $operate_module_view;
+	
+	/** 
+	 * 用户昵称
+	 **/
+	public $operator_name;
+	
+	/** 
+	 * 文件所属组织名称
+	 **/
+	public $org_name;
+	
+	/** 
+	 * 操作端
+	 **/
+	public $platform;
+	
+	/** 
+	 * 操作端翻译值
+	 **/
+	public $platform_view;
+	
+	/** 
+	 * 用户姓名
+	 **/
+	public $real_name;
+	
+	/** 
+	 * 文件接收方名称
+	 **/
+	public $receiver_name;
+	
+	/** 
+	 * 文件接收方类型
+	 **/
+	public $receiver_type;
+	
+	/** 
+	 * 接收方类型翻译值
+	 **/
+	public $receiver_type_view;
+	
+	/** 
+	 * 文件名
+	 **/
+	public $resource;
+	
+	/** 
+	 * 文件类型
+	 **/
+	public $resource_extension;
+	
+	/** 
+	 * 文件大小
+	 **/
+	public $resource_size;
+	
+	/** 
+	 * 记录状态
+	 **/
+	public $status;
+	
+	/** 
+	 * 空间id
+	 **/
+	public $target_space_id;
+	
+	/** 
+	 * 员工的userId
+	 **/
+	public $userid;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/Auditlist.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * 审批人列表
+ * @author auto create
+ */
+class Auditlist
+{
+	
+	/** 
+	 * 备注
+	 **/
+	public $note;
+	
+	/** 
+	 * 审批操作时间
+	 **/
+	public $operate_time;
+	
+	/** 
+	 * 审批状态:0审批中 1已同意 2已拒绝 3已转交,4已取消 5已终止
+	 **/
+	public $status;
+	
+	/** 
+	 * 审批人id
+	 **/
+	public $userid;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/AuthCorpInfo.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * 授权方企业信息
+ * @author auto create
+ */
+class AuthCorpInfo
+{
+	
+	/** 
+	 * corp_name
+	 **/
+	public $corp_name;
+	
+	/** 
+	 * 授权方企业id
+	 **/
+	public $corpid;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AuthInfo.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * auth_info
+ * @author auto create
+ */
+class AuthInfo
+{
+	
+	/** 
+	 * agent
+	 **/
+	public $agent;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/AuthOrgScopes.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * auth_org_scopes
+ * @author auto create
+ */
+class AuthOrgScopes
+{
+	
+	/** 
+	 * 企业授权的部门id列表
+	 **/
+	public $authed_dept;
+	
+	/** 
+	 * 企业授权的员工userid列表
+	 **/
+	public $authed_user;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/AuthUserInfo.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * auth_user_info
+ * @author auto create
+ */
+class AuthUserInfo
+{
+	
+	/** 
+	 * userId
+	 **/
+	public $user_id;	
+}
+?>

+ 65 - 0
vendor/dingapi/dingtalk/domain/Author.php

@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * 1
+ * @author auto create
+ */
+class Author
+{
+	
+	/** 
+	 * 1
+	 **/
+	public $avatar_media_id;
+	
+	/** 
+	 * 1
+	 **/
+	public $icon_media_id;
+	
+	/** 
+	 * 1
+	 **/
+	public $is_owner;
+	
+	/** 
+	 * 1
+	 **/
+	public $nick;
+	
+	/** 
+	 * 1
+	 **/
+	public $owner;
+	
+	/** 
+	 * 1
+	 **/
+	public $show_name;
+	
+	/** 
+	 * 1
+	 **/
+	public $staff_id;
+	
+	/** 
+	 * 1
+	 **/
+	public $tag;
+	
+	/** 
+	 * 1
+	 **/
+	public $title;
+	
+	/** 
+	 * 1
+	 **/
+	public $type;
+	
+	/** 
+	 * 1
+	 **/
+	public $user_role;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/BaseConversationVo.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * 默认接收群
+ * @author auto create
+ */
+class BaseConversationVo
+{
+	
+	/** 
+	 * 默认接收群id
+	 **/
+	public $conversation_id;
+	
+	/** 
+	 * 群名称
+	 **/
+	public $title;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/BaseFeedInfoModel.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * 基础信息model
+ * @author auto create
+ */
+class BaseFeedInfoModel
+{
+	
+	/** 
+	 * 直播时长
+	 **/
+	public $live_duration;
+	
+	/** 
+	 * 分享绑定的群列表
+	 **/
+	public $share_live_cid_list;
+	
+	/** 
+	 * 开始时间戳
+	 **/
+	public $start_time;
+	
+	/** 
+	 * 课程标题
+	 **/
+	public $title;	
+}
+?>

+ 40 - 0
vendor/dingapi/dingtalk/domain/BaseGroupInfo.php

@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class BaseGroupInfo
+{
+	
+	/** 
+	 * conversation_id
+	 **/
+	public $conversation_id;
+	
+	/** 
+	 * icon
+	 **/
+	public $icon;
+	
+	/** 
+	 * open_conversation_id
+	 **/
+	public $open_conversation_id;
+	
+	/** 
+	 * owner
+	 **/
+	public $owner;
+	
+	/** 
+	 * tag
+	 **/
+	public $tag;
+	
+	/** 
+	 * title
+	 **/
+	public $title;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/BaseGroupMemberInfo.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * 修改后的群主,若为空或与当前群主相同,则不会对群主进行变更操作。
+ * @author auto create
+ */
+class BaseGroupMemberInfo
+{
+	
+	/** 
+	 * 修改后的群主ID,ID类型由type字段决定
+	 **/
+	public $id;
+	
+	/** 
+	 * ID类型,当type=staff时,id填写staffid,当type=channelUser时,id字段填写channelUserId
+	 **/
+	public $type;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/BaseRequest.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * 入参
+ * @author auto create
+ */
+class BaseRequest
+{
+	
+	/** 
+	 * 企业应用id
+	 **/
+	public $agentid;	
+}
+?>

+ 45 - 0
vendor/dingapi/dingtalk/domain/BaseSuiteRequest.php

@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * 请求入参
+ * @author auto create
+ */
+class BaseSuiteRequest
+{
+	
+	/** 
+	 * 业务请求标识
+	 **/
+	public $action_type;
+	
+	/** 
+	 * 企业应用id
+	 **/
+	public $agentid;
+	
+	/** 
+	 * 套件业务标识
+	 **/
+	public $biz_type;
+	
+	/** 
+	 * 表单数据列表
+	 **/
+	public $form_data_list;
+	
+	/** 
+	 * 流程processCode
+	 **/
+	public $process_code;
+	
+	/** 
+	 * 请求唯一标识
+	 **/
+	public $seq_id;
+	
+	/** 
+	 * 操作人userId
+	 **/
+	public $userid;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/BaseSuiteResponse.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * 出参
+ * @author auto create
+ */
+class BaseSuiteResponse
+{
+	
+	/** 
+	 * 组件属性值
+	 **/
+	public $form_data_list;
+	
+	/** 
+	 * 组件属性值
+	 **/
+	public $seq_id;	
+}
+?>

+ 25 - 0
vendor/dingapi/dingtalk/domain/BasicStepInfoVo.php

@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * 步数列表
+ * @author auto create
+ */
+class BasicStepInfoVo
+{
+	
+	/** 
+	 * 统计的时间
+	 **/
+	public $stat_date;
+	
+	/** 
+	 * 步数
+	 **/
+	public $step_count;
+	
+	/** 
+	 * 员工userid
+	 **/
+	public $userid;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/BatchClothesPerformBaseReq.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * 入参
+ * @author auto create
+ */
+class BatchClothesPerformBaseReq
+{
+	
+	/** 
+	 * 实体列表
+	 **/
+	public $entity_ids;
+	
+	/** 
+	 * 扩展属性
+	 **/
+	public $ext_properties;
+	
+	/** 
+	 * 订单ID
+	 **/
+	public $order_id;
+	
+	/** 
+	 * 租户id
+	 **/
+	public $tenant_id;
+	
+	/** 
+	 * 用户id
+	 **/
+	public $userid;	
+}
+?>

+ 40 - 0
vendor/dingapi/dingtalk/domain/BatchCreateOperationWithEntityReq.php

@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * 入参
+ * @author auto create
+ */
+class BatchCreateOperationWithEntityReq
+{
+	
+	/** 
+	 * 实体条件
+	 **/
+	public $entity_condition;
+	
+	/** 
+	 * 订单id
+	 **/
+	public $order_id;
+	
+	/** 
+	 * 工序请求
+	 **/
+	public $perform_operation_reqs;
+	
+	/** 
+	 * 来源
+	 **/
+	public $source;
+	
+	/** 
+	 * 租户id
+	 **/
+	public $tenant_id;
+	
+	/** 
+	 * 用户id
+	 **/
+	public $userid;	
+}
+?>

+ 35 - 0
vendor/dingapi/dingtalk/domain/BatchResultItemVO.php

@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * 操作结果项列表
+ * @author auto create
+ */
+class BatchResultItemVO
+{
+	
+	/** 
+	 * 错误码
+	 **/
+	public $error_code;
+	
+	/** 
+	 * 错误描述
+	 **/
+	public $error_msg;
+	
+	/** 
+	 * 下标(从0开始)
+	 **/
+	public $index;
+	
+	/** 
+	 * 职位
+	 **/
+	public $item;
+	
+	/** 
+	 * 是否成功
+	 **/
+	public $success;	
+}
+?>

+ 30 - 0
vendor/dingapi/dingtalk/domain/BatchResultVo.php

@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * 批量操作结果
+ * @author auto create
+ */
+class BatchResultVo
+{
+	
+	/** 
+	 * 失败数量
+	 **/
+	public $failed_count;
+	
+	/** 
+	 * 操作结果项列表
+	 **/
+	public $result;
+	
+	/** 
+	 * 成功数量
+	 **/
+	public $success_count;
+	
+	/** 
+	 * 总数量
+	 **/
+	public $total_count;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/BatchUpdateProcessInstanceRequest.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * 请求
+ * @author auto create
+ */
+class BatchUpdateProcessInstanceRequest
+{
+	
+	/** 
+	 * 企业应用标识
+	 **/
+	public $agentid;
+	
+	/** 
+	 * 实例列表
+	 **/
+	public $instances;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/BehaviorLinkageVo.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * 选项级联属性
+ * @author auto create
+ */
+class BehaviorLinkageVo
+{
+	
+	/** 
+	 * 选项级联目标
+	 **/
+	public $targets;
+	
+	/** 
+	 * 值
+	 **/
+	public $value;	
+}
+?>

+ 20 - 0
vendor/dingapi/dingtalk/domain/BehaviorTarget.php

@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * 选项级联目标
+ * @author auto create
+ */
+class BehaviorTarget
+{
+	
+	/** 
+	 * 行为
+	 **/
+	public $behavior;
+	
+	/** 
+	 * 控件ID
+	 **/
+	public $field_id;	
+}
+?>

+ 40 - 0
vendor/dingapi/dingtalk/domain/BillBatchQueryOpenResponse.php

@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class BillBatchQueryOpenResponse
+{
+	
+	/** 
+	 * billList
+	 **/
+	public $bill_list;
+	
+	/** 
+	 * 当前页码
+	 **/
+	public $current_page_num;
+	
+	/** 
+	 * 如果nextKey不为空,说明还有翻页数据
+	 **/
+	public $next_key;
+	
+	/** 
+	 * 每页大小
+	 **/
+	public $page_size;
+	
+	/** 
+	 * 总记录条数
+	 **/
+	public $total_count;
+	
+	/** 
+	 * 总页数
+	 **/
+	public $total_page;	
+}
+?>

+ 70 - 0
vendor/dingapi/dingtalk/domain/BillInfo.php

@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * 账单分期期次信息,借款失败时传空数组
+ * @author auto create
+ */
+class BillInfo
+{
+	
+	/** 
+	 * 本期账单日,样例
+	 **/
+	public $bill_date;
+	
+	/** 
+	 * 期次已还罚息(单位:分,没有则为0)=本金罚息+利息罚息
+	 **/
+	public $paid_penalty;
+	
+	/** 
+	 * 期次已还利息(单位:分)
+	 **/
+	public $paid_pnterest;
+	
+	/** 
+	 * 期次已还本金(单位:分)
+	 **/
+	public $paid_principal;
+	
+	/** 
+	 * 期次已还总金额(单位:分):已还本金+已还利息+已还罚息
+	 **/
+	public $paid_total_amount;
+	
+	/** 
+	 * 期次应还利息(单位:分)
+	 **/
+	public $payable_interest;
+	
+	/** 
+	 * 期次应还罚息(单位:分,没有则为0)=本金罚息+利息罚息
+	 **/
+	public $payable_penalty;
+	
+	/** 
+	 * 期次应还本金(单位:分)
+	 **/
+	public $payable_principal;
+	
+	/** 
+	 * 期次应还总金额(单位:分):应还本金+应还利息+应还罚息
+	 **/
+	public $payable_total_amount;
+	
+	/** 
+	 * 本期还款日,如每月5号
+	 **/
+	public $repay_date;
+	
+	/** 
+	 * 本期还款状态:INIT 未还款、ONGOING 还款中、PAID 已还清、OVERDUE 已逾期、FAIL 还款失败
+	 **/
+	public $status;
+	
+	/** 
+	 * 本期期次:2=第2期
+	 **/
+	public $terms;	
+}
+?>

+ 15 - 0
vendor/dingapi/dingtalk/domain/BillTagQueryOpenResponse.php

@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * result
+ * @author auto create
+ */
+class BillTagQueryOpenResponse
+{
+	
+	/** 
+	 * 标签列表
+	 **/
+	public $tags;	
+}
+?>

Some files were not shown because too many files changed in this diff