123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?php
- namespace app\common\service;
- use app\extend\Dingtalk\Sample;
- /**
- * 钉钉服务类
- */
- class DingtalkService
- {
- public static function get_obj()
- {
- require_once env('root_path') . '/vendor/dingapi/TopSdk.php';
- date_default_timezone_set('Asia/Shanghai');
- $c = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST, \DingTalkConstant::$FORMAT_JSON);
- return $c;
- }
- /**
- * 获取部门列表
- *
- * @param string $dept_id 父部门ID
- * @return mixed
- */
- public static function department_listsub($dept_id)
- {
- $accessToken = Sample::accessToken()['accessToken'];
- $c = self::get_obj();
- $req = new \OapiV2DepartmentListsubRequest;
- $req->setDeptId($dept_id);
- $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/department/listsub");
- if($resp->errcode == 0 && $resp->errmsg == 'ok'){
- $result = $resp->result;
- return $result;
- }
- except($resp->errcode.' '.$resp->errmsg);
- }
- /**
- * 获取部门详情
- *
- * @param string $dept_id 部门ID
- * @return mixed
- */
- public static function department_get($dept_id)
- {
- $accessToken = Sample::accessToken()['accessToken'];
- $c = self::get_obj();
- $req = new \OapiV2DepartmentListsubRequest;
- $req->setDeptId($dept_id);
- $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/department/get");
- if($resp->errcode == 0 && $resp->errmsg == 'ok'){
- $result = $resp->result;
- return $result;
- }
- except($resp->errcode.' '.$resp->errmsg);
- }
- /**
- * 获取部门用户详情
- *
- * @param string $dept_id 部门ID
- * @return mixed
- */
- public static function user_list($dept_id)
- {
- $accessToken = Sample::accessToken()['accessToken'];
- $c = self::get_obj();
- $req = new \OapiV2UserListRequest;
- $req->setDeptId($dept_id);
- $req->setCursor("0");
- $req->setSize("100");
- $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/user/list");
- if($resp->errcode == 0 && $resp->errmsg == 'ok'){
- $result = $resp->result;
- return $result;
- }
- except($resp->errcode.' '.$resp->errmsg);
- }
- /**
- * 查询用户详情
- *
- * @param string $userid 用户的userId
- * @return mixed
- */
- public static function user_get($userid)
- {
- $accessToken = Sample::accessToken()['accessToken'];
- $c = self::get_obj();
- $req = new \OapiV2UserGetRequest;
- $req->setUserid($userid);
- $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/user/get");
- if($resp->errcode == 0 && $resp->errmsg == 'ok'){
- $result = $resp->result;
- return $result;
- }
- except($resp->errcode.' '.$resp->errmsg);
- }
- /**
- * 通过免登码获取用户信息
- *
- * @param string $code 免登授权码
- * @return mixed
- */
- public static function get_user_info($code)
- {
- $accessToken = Sample::accessToken()['accessToken'];
- $c = self::get_obj();
- $req = new \OapiV2UserGetuserinfoRequest;
- $req->setCode($code);
- $resp = $c->execute($req, $accessToken, "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo");
- if($resp->errcode == 0 && $resp->errmsg == 'ok'){
- $result = $resp->result;
- return $result;
- }
- except($resp->errcode.' '.$resp->errmsg);
- }
- /**
- * 设置企业内部应用H5微应用鉴权
- * @param string $url 应用URL,例如:https://your-domain.com/path/to/your/app.html
- * @return mixed
- **/
- public static function generateAuthSignature($url) {
- // 获取jsapiTicket
- $jsapiTicket = Sample::jsapiTickets()['jsapiTicket'];
- // 生成鉴权签名
- $nonceStr = randCode(16); // 随机字符串,用于保证签名不可预测性,长度为16个字符的随机字符串
- $timeStamp = time(); // 时间戳,格式为13位数字,如:1602756290
- $stringA = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timeStamp&url=$url";
- $signature = sha1($stringA); // 签名值
- // agentId值 corpId值
- $config = config('app.dingtalk');
- $agentId = $config['agentId'];
- $corpId = $config['corpId'];
- return compact("agentId","corpId","nonceStr","timeStamp","signature");
- }
- }
|