Dingtalk.php 4.4 KB

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