Qiyu.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. namespace app\common\service;
  3. /*
  4. * 223c300175fbea7b5f6ca4465ac6071f
  5. * 4D4EED8859E646DFA3BFB79B73075914
  6. *
  7. * */
  8. use app\common\model\Admin;
  9. use GuzzleHttp\Client;
  10. use traits\think\Instance;
  11. class Qiyu{
  12. use Instance;
  13. protected $appKey='223c300175fbea7b5f6ca4465ac6071f';
  14. protected $appSecret='4D4EED8859E646DFA3BFB79B73075914';
  15. public function login(Admin $admin){
  16. $data=[
  17. 'staffName'=>sprintf('service%d',$admin['id']),
  18. ];
  19. $json=$this->post('http://qiyukf.com/openapi/staff/login',$data);
  20. return $json['result']['sdk_url']??null;
  21. }
  22. /**
  23. * 普通客服 12762328
  24. */
  25. public function create(Admin $admin,$password){
  26. $data=[
  27. 'username'=>"service{$admin['id']}",
  28. 'role'=>0,
  29. 'subRoleId'=>$admin['is_seller']?12764513:12767377,
  30. 'realname'=>$admin['nickname'],
  31. 'nickname'=>$admin['nickname'],
  32. 'mobile'=>$admin['mobile'],
  33. 'email'=>$admin['email']??'',
  34. 'groupIds'=>[self::groupId($admin)],
  35. ];
  36. if(!$password){
  37. $data['password']=md5($data['username']);
  38. }else{
  39. $data['password']=md5($password);
  40. }
  41. $json=$this->post('https://qiyukf.com/openapi/kefu/add',$data);
  42. if($json['code']!==200){
  43. throw_user('['.$json['code'].']'.$json['message']);
  44. }
  45. $admin['kf_id']=$json['id'];
  46. $admin->save();
  47. return $json['id'];
  48. }
  49. /**
  50. * 销售 12764513
  51. * 管理 12767377
  52. */
  53. public function update(Admin $admin,$password){
  54. if(empty($admin['kf_id'])){
  55. return $this->create($admin,$password);
  56. }
  57. $data=[
  58. 'id'=>$admin['kf_id'],
  59. 'password'=>md5($password),
  60. 'role'=>0,
  61. 'subRoleId'=>$admin['is_seller']?12764513:12767377,
  62. 'realname'=>$admin['nickname'],
  63. 'nickname'=>$admin['nickname'],
  64. 'mobile'=>$admin['mobile'],
  65. 'email'=>$admin['email'],
  66. 'groupIds'=>[self::groupId($admin)],
  67. ];
  68. if(!$password){
  69. unset($data['password']);
  70. }
  71. $json=$this->post('https://qiyukf.com/openapi/kefu/update',$data);
  72. if($json['code']!==200){
  73. throw_user('修改失败'.$json['message']);
  74. }
  75. }
  76. public function delete(Admin $admin){
  77. if($admin['kf_id']){
  78. $data=[
  79. 'id'=>$admin['kf_id'],
  80. ];
  81. $this->post('https://qiyukf.com/openapi/kefu/delete',$data);
  82. }
  83. }
  84. protected function sum($data){
  85. $res=sha1(sprintf('%s%s%d',$this->appSecret,md5(json_encode($data)),$time=time()));
  86. return [$res,$time];
  87. }
  88. protected function post($url,$data){
  89. list($sum,$time)=$this->sum($data);
  90. $res=(new Client)
  91. ->post("$url?appKey={$this->appKey}&checksum={$sum}&time={$time}",[
  92. 'json'=>$data,
  93. ]);
  94. $json=json_decode($res->getBody()->getContents(),true);
  95. return $json;
  96. }
  97. public function isOnline(Admin $admin){
  98. $data=new \stdClass();
  99. $list=$this->post('https://qiyukf.com/openapi/data/overview/staff/list/online',$data);
  100. $ids=array_column($list['list']??[],'staffId');
  101. return in_array($admin['kf_id'],$ids);
  102. }
  103. public function groups(){
  104. $data=[
  105. 'emptyGroup'=>true
  106. ];
  107. $list=$this->post('https://qiyukf.com/openapi/v2/staff/group/list/new',$data);
  108. return $list['data']??[];
  109. }
  110. public function addGroup($name){
  111. $data=[
  112. 'name'=>$name
  113. ];
  114. $list=$this->post('https://qiyukf.com/openapi/kefuGroup/add',$data);
  115. return $list;
  116. }
  117. public function delGroup($id){
  118. $data=[
  119. 'groupId'=>$id
  120. ];
  121. $list=$this->post('https://qiyukf.com/openapi/kefuGroup/delete',$data);
  122. return $list['code']==200;
  123. }
  124. /**
  125. * @param Admin|null|string $admin
  126. */
  127. public static function groupId($admin=null){
  128. $ids=[
  129. 'seller'=>482791704,
  130. 'manager'=>482790906,
  131. ];
  132. if($admin instanceof Admin) {
  133. if ($admin['is_seller']) {
  134. return $ids['seller'];
  135. }
  136. return $ids['manager'];
  137. }
  138. elseif (is_string($admin)){
  139. return $ids[$admin];
  140. }
  141. return $ids;
  142. }
  143. }