Commit 18154295 authored by 梁俊杰's avatar 梁俊杰

获取登录数据

parent 16ed82f3

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

This diff is collapsed.
...@@ -10,17 +10,35 @@ ini_set('display_errors','on'); ...@@ -10,17 +10,35 @@ ini_set('display_errors','on');
use EasyDingTalk\Application; use EasyDingTalk\Application;
include_once 'vendor/autoload.php'; include_once 'vendor/autoload.php';
$f = fopen("./txt/test.txt", "a"); include "TopSdk.php";
// $f = fopen("./txt/test.txt", "a");
$data = json_decode(file_get_contents('php://input'), true); $data = json_decode(file_get_contents('php://input'), true);
fwrite($f, print_r($data,true)); /*fwrite($f, print_r($data,true));
fclose($f); fclose($f);*/
$users=[
'liangjunjie'=>['userid'=>'5360236526369319','name'=>'梁俊杰'],
'jiangkebao'=>['userid'=>'016740060622772430','name'=>'姜克保'],
'yanbaorui'=>['userid'=>'272056382719981638','name'=>'严宝瑞'],
'wangyuan'=>['userid'=>'0927125031945253','name'=>'王源'],
'tianmengdi'=>['userid'=>'264459035829697332','name'=>'田梦迪'],
'dongjinjun'=>['userid'=>'251201234433774424','name'=>'董锦君'],
];
/*
$config = [ $config = [
'corp_id' => 'dingd3ir8195906jfo93', 'corp_id' => 'ding23fb054a1a39322935c2f4657eb6378f',
'app_key' => 'dingcld9j00l6iqnvekg',
'app_key' => 'dingwu33fo1fjc0fszad', 'app_secret' => 'KBADQX4EGwFwV3MLRaon918OTgnZNnq5TjRe7CfYPNqza9fP_wO9zgfUSuKXdqUq',
'app_secret' => 'RsuMFgEIY3jg5UMidkvwpzEobWjf9Fcu3oLqLyCUIgzULm54WcV7j9fi3fJlUshk',
]; ];
$app = new Application($config);*/
// DingTalkConstant::$METHOD_GET 要与下面调用接口url要求的保持一致
$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_GET , DingTalkConstant::$FORMAT_JSON);
$req = new OapiGettokenRequest();
$req->setAppkey($config['app_key']);
$req->setAppsecret($config['app_key']);
$req->setCorpid($config['corp_id']);
$res = $c->execute($req);
//$resp=$c->execute($req, $accessToken,"https://oapi.dingtalk.com/user/get");
var_dump($res);
<?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/".$name.".php";
if(is_file($filename)) {
include $filename;
return;
}
}
}
spl_autoload_register('Autoloader::autoload');
?>
\ No newline at end of file
<?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)
?>
\ No newline at end of file
This diff is collapsed.
<?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;
}
}
<?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;
}
}
<?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;
}
}
<?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");
\ No newline at end of file
<?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);
}
}
This diff is collapsed.
<?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";
}
\ No newline at end of file
<?php
/**
* 账号信息
* @author auto create
*/
class AccountInfo
{
/**
* 账号的通道
**/
public $channel;
/**
* 账号ID
**/
public $id;
/**
* 账号的类型
**/
public $type;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class AccountQueryOpenResponse
{
/**
* accountOpenBO
**/
public $account_open_bo;
}
?>
\ No newline at end of file
<?php
/**
* action_card
* @author auto create
*/
class ActionCard
{
/**
* btn_json_list
**/
public $btn_json_list;
/**
* btn_orientation
**/
public $btn_orientation;
/**
* markdown
**/
public $markdown;
/**
* single_title
**/
public $single_title;
/**
* single_url
**/
public $single_url;
/**
* title
**/
public $title;
}
?>
\ No newline at end of file
<?php
/**
* 此消息类型为固定actionCard
* @author auto create
*/
class Actioncard
{
/**
* 0-按钮竖直排列,1-按钮横向排列
**/
public $btn_orientation;
/**
* 按钮的信息
**/
public $btns;
/**
* 0-正常发消息者头像,1-隐藏发消息者头像
**/
public $hide_avatar;
/**
* 单个按钮的方案。(设置此项和singleURL后btns无效。)
**/
public $single_title;
/**
* 点击singleTitle按钮触发的URL
**/
public $single_u_r_l;
/**
* markdown格式的消息
**/
public $text;
/**
* 首屏会话透出的展示内容
**/
public $title;
}
?>
\ No newline at end of file
<?php
/**
* 请求
* @author auto create
*/
class AddForwardRequest
{
/**
* 应用id
**/
public $agentid;
/**
* 实例id
**/
public $process_instance_id;
/**
* 抄送人id列表
**/
public $userid_list;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class AddMembersResponseModel
{
/**
* dingtalkId
**/
public $dingtalk_id;
}
?>
\ No newline at end of file
<?php
/**
* 添加的账号信息
* @author auto create
*/
class AddProfileReq
{
/**
* 头像mediaid
**/
public $avatar_mediaid;
/**
* 渠道
**/
public $channel;
/**
* 附加信息
**/
public $extension;
/**
* 账号id
**/
public $id;
/**
* 账号nick
**/
public $nick;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class AddProfileResp
{
/**
* imOpenId
**/
public $im_openid;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* 添加子账号入参
* @author auto create
*/
class AddSubAccountReq
{
/**
* 主账号id
**/
public $adminaccount_id;
/**
* 业务方channel
**/
public $channel;
/**
* 子账号id
**/
public $subaccount_id;
}
?>
\ No newline at end of file
<?php
/**
* 添加账号出参
* @author auto create
*/
class AddSubAccountResp
{
/**
* im的唯一id
**/
public $im_openid;
}
?>
\ No newline at end of file
<?php
/**
* Addressvos
* @author auto create
*/
class Addressvos
{
/**
* 缩略地址,可为空
**/
public $address;
/**
* 送餐详细地址
**/
public $address_detail;
/**
* 地址id
**/
public $address_id;
}
?>
\ No newline at end of file
<?php
/**
* admin_list
* @author auto create
*/
class AdminList
{
/**
* sys_level
**/
public $sys_level;
/**
* userid
**/
public $userid;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* 结果
* @author auto create
*/
class AppSpaceResponse
{
/**
* spaceId
**/
public $space_id;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class ApproveDurationForTopVo
{
/**
* 请假时长(单位分钟)
**/
public $duration_in_minutes;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* 文章参数对象
* @author auto create
*/
class ArticleCreateDTO
{
/**
* 文章内容(html码)
**/
public $content;
/**
* 摘要
**/
public $digest;
/**
* 图文消息的封面图片素材id
**/
public $thumb_media_id;
/**
* 标题
**/
public $title;
/**
* 幂等参数
**/
public $uuid;
}
?>
\ No newline at end of file
<?php
/**
* 文章列表
* @author auto create
*/
class ArticleDTO
{
/**
* 文章id
**/
public $article_id;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class AsyncSendProgress
{
/**
* 取值 0-100,表示处理的百分比
**/
public $progress_in_percent;
/**
* 任务执行状态,0=未开始,1=处理中,2=处理完毕
**/
public $status;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* 被@人的手机号
* @author auto create
*/
class At
{
/**
* 被@人的手机号
**/
public $at_mobiles;
/**
* @所有人时:true,否则为:false
**/
public $is_at_all;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* 返回对象
* @author auto create
*/
class AtClassForTopVo
{
/**
* 考勤组班次配置
**/
public $class_setting;
/**
* 组织id
**/
public $corp_id;
/**
* classid
**/
public $id;
/**
* 组织名称
**/
public $name;
/**
* 班次打卡时间段,最多
**/
public $sections;
/**
* 固定班次的工作日班次
**/
public $work_days;
}
?>
\ No newline at end of file
<?php
/**
* 考勤组班次配置
* @author auto create
*/
class AtClassSettingForTopVo
{
/**
* classId
**/
public $class_id;
/**
* classSettingId
**/
public $id;
/**
* 休息开始时间
**/
public $rest_begin_time;
/**
* 休息结束时间
**/
public $rest_end_time;
}
?>
\ No newline at end of file
<?php
/**
* 当前排班对应的休息时间段
* @author auto create
*/
class AtClassSettingInfoForOpenVo
{
/**
* restTimeVOList
**/
public $rest_time_vo_list;
}
?>
\ No newline at end of file
<?php
/**
* 考勤组中的班次列表
* @author auto create
*/
class AtClassVo
{
/**
* 班次id
**/
public $class_id;
/**
* 班次名称
**/
public $name;
/**
* 班次中上下班列表
**/
public $sections;
/**
* 班次配置
**/
public $setting;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class AtGroupFullForTopVo
{
/**
* 考勤组中的班次列表
**/
public $classes;
/**
* 考勤组id
**/
public $group_id;
/**
* 考勤组名称
**/
public $name;
/**
* 考勤组类型
**/
public $type;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class AtGroupListForTopVo
{
/**
* 考勤组列表
**/
public $groups;
/**
* 分页用,表示是否还有下一页
**/
public $has_more;
}
?>
\ No newline at end of file
<?php
/**
* restTimeVOList
* @author auto create
*/
class AtRestTimeVo
{
/**
* 休息开始时间
**/
public $rest_begin_time;
/**
* 休息结束时间
**/
public $rest_end_time;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class AtScheduleListForTopVo
{
/**
* 分页用,表示是否还有下一页
**/
public $has_more;
/**
* 排班列表
**/
public $schedules;
}
?>
\ No newline at end of file
<?php
/**
* 班次打卡时间段,最多
* @author auto create
*/
class AtSectionVo
{
/**
* 时间段列表
**/
public $times;
}
?>
\ No newline at end of file
<?php
/**
* 时间段列表
* @author auto create
*/
class AtTimeVo
{
/**
* 是否跨天
**/
public $across;
/**
* 允许开始分钟
**/
public $begin_min;
/**
* 打卡时间
**/
public $check_time;
/**
* 打卡类型枚举(Onduty和OffDuty)
**/
public $check_type;
/**
* 允许结束分钟
**/
public $end_min;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class AttColumnsForTopVo
{
/**
* 列信息
**/
public $columns;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* 日程组织者,暂不支持修改
* @author auto create
*/
class Attendee
{
/**
* 员工工号
**/
public $userid;
}
?>
\ No newline at end of file
<?php
/**
* 参与者
* @author auto create
*/
class Attendees
{
/**
* 展示姓名
**/
public $display_name;
/**
* 是否组织者
**/
public $organizer;
/**
* 响应状态(accepted, declined, needsAction)
**/
public $response_status;
/**
* 是否自己
**/
public $self;
}
?>
\ No newline at end of file
<?php
/**
* 授权方企业信息
* @author auto create
*/
class AuthCorpInfo
{
/**
* corp_name
**/
public $corp_name;
/**
* 授权方企业id
**/
public $corpid;
}
?>
\ No newline at end of file
<?php
/**
* auth_info
* @author auto create
*/
class AuthInfo
{
/**
* agent
**/
public $agent;
}
?>
\ No newline at end of file
<?php
/**
* auth_org_scopes
* @author auto create
*/
class AuthOrgScopes
{
/**
* 企业授权的部门id列表
**/
public $authed_dept;
/**
* 企业授权的员工userid列表
**/
public $authed_user;
}
?>
\ No newline at end of file
<?php
/**
* auth_user_info
* @author auto create
*/
class AuthUserInfo
{
/**
* userId
**/
public $user_id;
}
?>
\ No newline at end of file
<?php
/**
* 请求体
* @author auto create
*/
class BaseAgentRequest
{
/**
* 参数
**/
public $params;
/**
* 路径
**/
public $path;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* 修改后的群主,若为空或与当前群主相同,则不会对群主进行变更操作。
* @author auto create
*/
class BaseGroupMemberInfo
{
/**
* 修改后的群主ID,ID类型由type字段决定
**/
public $id;
/**
* ID类型,当type=staff时,id填写staffid,当type=channelUser时,id字段填写channelUserId
**/
public $type;
}
?>
\ No newline at end of file
<?php
/**
* 步数列表
* @author auto create
*/
class BasicStepInfoVo
{
/**
* 统计的时间
**/
public $stat_date;
/**
* 步数
**/
public $step_count;
}
?>
\ No newline at end of file
<?php
/**
* 请求
* @author auto create
*/
class BatchUpdateProcessInstanceRequest
{
/**
* 企业应用标识
**/
public $agentid;
/**
* 实例列表
**/
public $instances;
}
?>
\ No newline at end of file
<?php
/**
* 明细里的表单联动属性
* @author auto create
*/
class BehaviorLinkageVo
{
/**
* 联动对应的目标
**/
public $targets;
/**
* 联动对应的单选组件选项
**/
public $value;
}
?>
\ No newline at end of file
<?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;
}
?>
\ No newline at end of file
<?php
/**
* result
* @author auto create
*/
class BillTagQueryOpenResponse
{
/**
* 标签列表
**/
public $tags;
}
?>
\ No newline at end of file
<?php
/**
* 变量列表
* @author auto create
*/
class BizValueVo
{
/**
* 额外信息
**/
public $ext_value;
/**
* 表单组件id
**/
public $id;
/**
* 表单值
**/
public $value;
}
?>
\ No newline at end of file
<?php
/**
* 业务数据列表
* @author auto create
*/
class Bizdatavo
{
/**
* 数据变更时间,用以保证更新操作的顺序性
**/
public $biz_time;
/**
* 数据流水唯一标识,如流水号,用以唯一确认一条写入数据
**/
public $biz_uk;
/**
* 数据字段列表
**/
public $fields;
/**
* 业务域描述,系统分配,枚举见文档
**/
public $scope;
/**
* 员工id
**/
public $userid;
}
?>
\ No newline at end of file
<?php
/**
* 出参
* @author auto create
*/
class BlackboardCategoryVo
{
/**
* 分类id
**/
public $id;
/**
* 分类名
**/
public $name;
}
?>
\ No newline at end of file
<?php
/**
* 入参
* @author auto create
*/
class BlackboardReceiverOpenVo
{
/**
* 接收部门id列表
**/
public $deptid_list;
/**
* 接收人userId列表
**/
public $userid_list;
}
?>
\ No newline at end of file
<?php
/**
* body
* @author auto create
*/
class Body
{
/**
* author
**/
public $author;
/**
* content
**/
public $content;
/**
* file_count
**/
public $file_count;
/**
* form
**/
public $form;
/**
* image
**/
public $image;
/**
* rich
**/
public $rich;
/**
* title
**/
public $title;
}
?>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment