Dingtalk.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\model\User;
  4. use think\Db;
  5. use hg\apidoc\annotation as Apidoc;
  6. class Dingtalk extends Base
  7. {
  8. public function get_obj(){
  9. $get_token_obj = new Dingtoken();
  10. $access_token = $get_token_obj->main()['accessToken'];
  11. require_once env('root_path').'/vendor/dingapi/TopSdk.php';
  12. date_default_timezone_set('Asia/Shanghai');
  13. $c = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
  14. return array('obj'=>$c,'access_token'=>$access_token);
  15. }
  16. /**
  17. * 获取部门列表
  18. *
  19. * @Apidoc\Method("POST")
  20. * @Apidoc\Param("parent_id", type="string",require=true, desc="父部门ID")
  21. */
  22. public function get_department(){
  23. $parent_id = input('parent_id');
  24. $obj = $this->get_obj();
  25. $c = $obj['obj'];
  26. $req = new \OapiV2DepartmentListsubRequest;
  27. $req->setDeptId($parent_id);
  28. $resp = $c->execute($req, $obj['access_token'], "https://oapi.dingtalk.com/topapi/v2/department/listsub");
  29. p($resp);exit;
  30. }
  31. /**
  32. * 获取部门详情
  33. *
  34. * @Apidoc\Method("POST")
  35. * @Apidoc\Param("dept_id", type="string",require=true, desc="部门ID")
  36. */
  37. public function get_department_name(){
  38. $dept_id = input('dept_id');
  39. $obj = $this->get_obj();
  40. $c = $obj['obj'];
  41. $req = new \OapiV2DepartmentListsubRequest;
  42. $req->setDeptId($dept_id);
  43. $resp = $c->execute($req, $obj['access_token'], "https://oapi.dingtalk.com/topapi/v2/department/get");
  44. p($resp);exit;
  45. $name = '';
  46. if(isset($resp->result) && $resp->result){
  47. $name = $resp->result->name;
  48. }
  49. return $name;
  50. }
  51. /**
  52. * 获取部门用户详情
  53. *
  54. * @Apidoc\Method("POST")
  55. * @Apidoc\Param("dept_id", type="string",require=true, desc="部门ID")
  56. */
  57. public function get_user_list(){
  58. $dept_id = input('dept_id');
  59. $obj = $this->get_obj();
  60. $c = $obj['obj'];
  61. $req = new \OapiV2UserListRequest;
  62. $req->setDeptId($dept_id);
  63. $req->setCursor("0");
  64. $req->setSize("100");
  65. $resp = $c->execute($req, $obj['access_token'], "https://oapi.dingtalk.com/topapi/v2/user/list");
  66. p($resp);exit;
  67. $user_list = array();
  68. if(isset($resp->result) && $resp->result && $resp->result->list){
  69. $user_list = $resp->result->list;
  70. }
  71. return $user_list;
  72. }
  73. /**
  74. * 查询用户详情
  75. *
  76. * @Apidoc\Method("POST")
  77. * @Apidoc\Param("userid", type="string",require=true, desc="用户的userId")
  78. */
  79. public function get_users(){
  80. $userid = input('userid');
  81. $obj = $this->get_obj();
  82. $c = $obj['obj'];
  83. $req = new \OapiV2UserGetRequest;
  84. $req->setUserid($userid);
  85. $resp = $c->execute($req, $obj['access_token'], "https://oapi.dingtalk.com/topapi/v2/user/get");
  86. if($resp->errcode == 0){
  87. p('123465');
  88. }
  89. p($resp->errcode);
  90. p($resp->errmsg);
  91. p($resp->result);
  92. p($resp);exit;
  93. }
  94. public function get_user($userid){
  95. $obj = $this->get_obj();
  96. $c = $obj['obj'];
  97. $req = new \OapiV2UserGetRequest;
  98. $req->setUserid($userid);
  99. $resp = $c->execute($req, $obj['access_token'], "https://oapi.dingtalk.com/topapi/v2/user/get");
  100. if($resp->errcode == 0){
  101. return $resp->result;
  102. }
  103. }
  104. //获取用户列表
  105. public function get_member(){
  106. $list = User::select();
  107. $data = array_column($list->toArray(), null, 'userid');
  108. $array = [];
  109. foreach ($list as $value){
  110. $array[] = $this->get_user($value['userid']);
  111. }
  112. p($array);
  113. p($data);
  114. }
  115. // 通过免登码获取用户信息
  116. public function get_user_info($code){
  117. $obj = $this->get_obj();
  118. $c = $obj['obj'];
  119. $req = new \OapiV2UserGetuserinfoRequest;
  120. $req->setCode($code);
  121. $resp = $c->execute($req, $obj['access_token'], "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo");
  122. p($resp);exit();
  123. $user_info = array();
  124. if(isset($resp->result) && $resp->result){
  125. $user_info = $resp->result->dept_id_list;
  126. }
  127. return $user_info;
  128. }
  129. }