Ding.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace addons\qingdongams\library;
  3. use dingding\TopSdk;
  4. use think\Cache;
  5. use think\Log;
  6. use think\Model;
  7. use addons\qingdongams\model\AdminConfig;
  8. /**
  9. *
  10. */
  11. class Ding extends Model
  12. {
  13. public $config;
  14. protected $app;
  15. public function __construct()
  16. {
  17. $this->config = [
  18. ];
  19. $sdk=new TopSdk();
  20. return parent::__construct();
  21. }
  22. //获取accessToken
  23. public function getAccessToken()
  24. {
  25. $config = AdminConfig::where(array('type'=>'dingding'))->find();
  26. $tokenRequest = new \OapiGettokenRequest();
  27. $this->app = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_GET, \DingTalkConstant::$FORMAT_JSON);
  28. $accessKey = AdminConfig::where(array('type'=>'dingding','field'=>'ding_key'))->value('value');
  29. $accessSecret = AdminConfig::where(array('type'=>'dingding','field'=>'ding_secret'))->value('value');
  30. $tokenRequest->setAppkey($accessKey);
  31. $tokenRequest->setAppsecret($accessSecret);
  32. $token= $this->app->execute($tokenRequest, null, "https://oapi.dingtalk.com/gettoken");
  33. return $token;
  34. }
  35. //获取部门
  36. public function departmentInfo($access_token=null,$dept_id=null){
  37. $this->app = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
  38. $req = new \OapiV2DepartmentListsubRequest();
  39. if($dept_id){
  40. $req->setDeptId($dept_id);
  41. }
  42. $resp = $this->app->execute($req, $access_token, "https://oapi.dingtalk.com/topapi/v2/department/listsub");
  43. return $resp;
  44. }
  45. //获取员工
  46. public function staffInfo($access_token=null,$dept_id=null){
  47. $this->app = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
  48. $req = new \OapiUserListsimpleRequest();
  49. $req->setDeptId($dept_id);
  50. $req->setCursor("0");
  51. $req->setSize("80");
  52. $resp = $this->app->execute($req, $access_token, "https://oapi.dingtalk.com/topapi/user/listsimple");
  53. return $resp;
  54. }
  55. //获取员工详情
  56. public function staffInfoDetail($access_token=null,$user_id=null){
  57. $this->app = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
  58. $req = new \OapiV2UserGetRequest();
  59. $req->setUserid($user_id);
  60. $resp = $this->app->execute($req, $access_token, "https://oapi.dingtalk.com/topapi/v2/user/get");
  61. return $resp;
  62. }
  63. //批量获取客户
  64. public function customerBatch($access_token=null,$user_id=null){
  65. $this->app = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
  66. $req = new \OapiCrmObjectdataCustomerQueryRequest();
  67. $req->setCurrentOperatorUserid($user_id);
  68. $req->setCursor("0");
  69. $req->setPageSize("100");
  70. $resp = $this->app->execute($req, $access_token, "https://oapi.dingtalk.com/topapi/crm/objectdata/customer/query");
  71. return $resp;
  72. }
  73. //批量获取联系人
  74. public function contactsBatch($access_token=null,$user_id=null){
  75. $this->app = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
  76. $req = new \OapiCrmObjectdataCustomerQueryRequest();
  77. $req->setCurrentOperatorUserid($user_id);
  78. $req->setCursor("0");
  79. $req->setPageSize("100");
  80. $resp = $this->app->execute($req, $access_token, "https://oapi.dingtalk.com/topapi/crm/objectdata/contact/query");
  81. return $resp;
  82. }
  83. //批量获取跟进记录
  84. public function recordBatch($access_token=null,$user_id=null){
  85. $this->app = new \DingTalkClient(\DingTalkConstant::$CALL_TYPE_OAPI, \DingTalkConstant::$METHOD_POST , \DingTalkConstant::$FORMAT_JSON);
  86. $req = new \OapiCrmObjectdataCustomerQueryRequest();
  87. $req->setCurrentOperatorUserid($user_id);
  88. $req->setCursor("0");
  89. $req->setPageSize("100");
  90. $resp = $this->app->execute($req, $access_token, "https://oapi.dingtalk.com/topapi/crm/objectdata/followrecord/query");
  91. return $resp;
  92. }
  93. }