Dingtalk.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. namespace app\api\controller;
  3. use AlibabaCloud\SDK\Dingtalk\Vedu_1_0\Models\QueryClassScheduleResponseBody\config;
  4. use app\common\model\Department;
  5. use app\common\model\User;
  6. use app\common\service\DingtalkService;
  7. use hg\apidoc\annotation as Apidoc;
  8. class Dingtalk extends Base
  9. {
  10. /**
  11. * 获取部门列表
  12. *
  13. * @Apidoc\Method("POST")
  14. * @Apidoc\Param("dept_id", type="integer",require=true, desc="父部门ID")
  15. */
  16. public function department_listsub()
  17. {
  18. $dept_id = input('dept_id');
  19. $resp = DingtalkService::department_listsub($dept_id);
  20. $data = [];
  21. foreach ($resp as $value) {
  22. $data[] = [
  23. 'dept_id' => $value->dept_id,
  24. 'name' => $value->name,
  25. 'parent_id' => $value->parent_id,
  26. ];
  27. }
  28. if ($data) {
  29. Department::insertAll($data);
  30. }
  31. $this->success('获取部门列表', $resp);
  32. }
  33. /**
  34. * 获取部门详情
  35. *
  36. * @Apidoc\Method("POST")
  37. * @Apidoc\Param("dept_id", type="integer",require=true, desc="部门ID")
  38. */
  39. public function department_get()
  40. {
  41. $dept_id = input('dept_id');
  42. $resp = DingtalkService::department_get($dept_id);
  43. $this->success('获取部门详情', $resp);
  44. }
  45. /**
  46. * 获取部门用户详情
  47. *
  48. * @Apidoc\Method("POST")
  49. * @Apidoc\Param("dept_id", type="integer",require=true, desc="部门ID")
  50. */
  51. public function user_list()
  52. {
  53. $dept_id = input('dept_id');
  54. $resp = DingtalkService::user_list($dept_id);
  55. if($resp->list){
  56. $data = [];
  57. foreach ($resp->list as $value) {
  58. $data[] = [
  59. 'userid' => $value->userid,
  60. 'unionid' => $value->unionid,
  61. 'name' => $value->name,
  62. 'avatar' => $value->avatar,
  63. 'mobile' => isset($value->mobile) ? $value->mobile : '',
  64. 'email' => isset($value->email) ? $value->email : '',
  65. 'title' => isset($value->title) ? $value->title : '',
  66. 'manager_userid' => isset($value->manager_userid) ? $value->manager_userid : '',
  67. 'department' => implode(',', $value->dept_id_list),
  68. ];
  69. }
  70. if ($data) {
  71. User::insertAll($data);
  72. }
  73. }
  74. $this->success('获取部门用户详情', $resp);
  75. }
  76. /**
  77. * 查询用户详情
  78. *
  79. * @Apidoc\Method("POST")
  80. * @Apidoc\Param("userid", type="string",require=true, desc="用户的userId")
  81. */
  82. public function get_users()
  83. {
  84. $userid = input('userid');
  85. $resp = DingtalkService::user_get($userid);
  86. $this->success('查询用户详情', $resp);
  87. }
  88. //获取用户列表
  89. public function get_member()
  90. {
  91. $list = User::select();
  92. // $data = array_column($list->toArray(), null, 'userid');
  93. $no_user_list = [];
  94. $user_list = [];
  95. foreach ($list as $value) {
  96. $resp = DingtalkService::user_get($value['userid']);
  97. if ($resp->errcode == 0) {
  98. $user_list[$resp->result->userid] = [
  99. 'userid' => $resp->result->userid,
  100. 'manager_userid' => isset($resp->result->manager_userid) ? $resp->result->manager_userid : '',
  101. ];
  102. }
  103. if ($resp->errcode == 60121) {
  104. $no_user_list[$value['userid']] = [
  105. 'userid' => $value['userid'],
  106. ];
  107. }
  108. }
  109. foreach ($list as $val) {
  110. if (array_key_exists($val['userid'], $user_list)) {
  111. $val->manager_userid = $user_list[$val['userid']]['manager_userid'];
  112. $val->save();
  113. }
  114. }
  115. if ($no_user_list) {
  116. User::where('userid', 'in', array_keys($no_user_list))->update(['is_deleted' => 1]);
  117. }
  118. }
  119. /**
  120. * 获取鉴权需要的参数
  121. *
  122. * @Apidoc\Desc("设置企业内部应用H5微应用鉴权")
  123. * @Apidoc\Method("POST")
  124. * @Apidoc\Param("url", type="string", require=true, desc="应用URL")
  125. *
  126. **/
  127. public function get_auth(){
  128. $url = input('url') ?: '';
  129. DingtalkService::generateAuthSignature($url);
  130. $this->success('获取鉴权需要的参数');
  131. }
  132. }