123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- namespace app\common\service;
- /*
- * 223c300175fbea7b5f6ca4465ac6071f
- * 4D4EED8859E646DFA3BFB79B73075914
- *
- * */
- use app\common\model\Admin;
- use GuzzleHttp\Client;
- use traits\think\Instance;
- class Qiyu{
- use Instance;
- protected $appKey='223c300175fbea7b5f6ca4465ac6071f';
- protected $appSecret='4D4EED8859E646DFA3BFB79B73075914';
- public function login(Admin $admin){
- $data=[
- 'staffName'=>sprintf('service%d',$admin['id']),
- ];
- $json=$this->post('http://qiyukf.com/openapi/staff/login',$data);
- return $json['result']['sdk_url']??null;
- }
- /**
- * 普通客服 12762328
- */
- public function create(Admin $admin,$password){
- $data=[
- 'username'=>"service{$admin['id']}",
- 'role'=>0,
- 'subRoleId'=>$admin['is_seller']?12764513:12767377,
- 'realname'=>$admin['nickname'],
- 'nickname'=>$admin['nickname'],
- 'mobile'=>$admin['mobile'],
- 'email'=>$admin['email']??'',
- 'groupIds'=>[self::groupId($admin)],
- ];
- if(!$password){
- $data['password']=md5($data['username']);
- }else{
- $data['password']=md5($password);
- }
- $json=$this->post('https://qiyukf.com/openapi/kefu/add',$data);
- if($json['code']!==200){
- throw_user('['.$json['code'].']'.$json['message']);
- }
- $admin['kf_id']=$json['id'];
- $admin->save();
- return $json['id'];
- }
- /**
- * 销售 12764513
- * 管理 12767377
- */
- public function update(Admin $admin,$password){
- if(empty($admin['kf_id'])){
- return $this->create($admin,$password);
- }
- $data=[
- 'id'=>$admin['kf_id'],
- 'password'=>md5($password),
- 'role'=>0,
- 'subRoleId'=>$admin['is_seller']?12764513:12767377,
- 'realname'=>$admin['nickname'],
- 'nickname'=>$admin['nickname'],
- 'mobile'=>$admin['mobile'],
- 'email'=>$admin['email'],
- 'groupIds'=>[self::groupId($admin)],
- ];
- if(!$password){
- unset($data['password']);
- }
- $json=$this->post('https://qiyukf.com/openapi/kefu/update',$data);
- if($json['code']!==200){
- throw_user('修改失败'.$json['message']);
- }
- }
- public function delete(Admin $admin){
- if($admin['kf_id']){
- $data=[
- 'id'=>$admin['kf_id'],
- ];
- $this->post('https://qiyukf.com/openapi/kefu/delete',$data);
- }
- }
- protected function sum($data){
- $res=sha1(sprintf('%s%s%d',$this->appSecret,md5(json_encode($data)),$time=time()));
- return [$res,$time];
- }
- protected function post($url,$data){
- list($sum,$time)=$this->sum($data);
- $res=(new Client)
- ->post("$url?appKey={$this->appKey}&checksum={$sum}&time={$time}",[
- 'json'=>$data,
- ]);
- $json=json_decode($res->getBody()->getContents(),true);
- return $json;
- }
- public function isOnline(Admin $admin){
- $data=new \stdClass();
- $list=$this->post('https://qiyukf.com/openapi/data/overview/staff/list/online',$data);
- $ids=array_column($list['list']??[],'staffId');
- return in_array($admin['kf_id'],$ids);
- }
- public function groups(){
- $data=[
- 'emptyGroup'=>true
- ];
- $list=$this->post('https://qiyukf.com/openapi/v2/staff/group/list/new',$data);
- return $list['data']??[];
- }
- public function addGroup($name){
- $data=[
- 'name'=>$name
- ];
- $list=$this->post('https://qiyukf.com/openapi/kefuGroup/add',$data);
- return $list;
- }
- public function delGroup($id){
- $data=[
- 'groupId'=>$id
- ];
- $list=$this->post('https://qiyukf.com/openapi/kefuGroup/delete',$data);
- return $list['code']==200;
- }
- /**
- * @param Admin|null|string $admin
- */
- public static function groupId($admin=null){
- $ids=[
- 'seller'=>482791704,
- 'manager'=>482790906,
- ];
- if($admin instanceof Admin) {
- if ($admin['is_seller']) {
- return $ids['seller'];
- }
- return $ids['manager'];
- }
- elseif (is_string($admin)){
- return $ids[$admin];
- }
- return $ids;
- }
- }
|