ImUserController.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Hook;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\AppSettings;
  5. use App\Models\Users;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Cache;
  8. use App\Api\Util\IM;
  9. class ImUserController extends Controller
  10. {
  11. use IM;
  12. public function index(Request $request){
  13. $SdkAppid=$request->get('SdkAppid');
  14. if(!$this->CheckSdkAppid($SdkAppid)){
  15. // ding()->text('IM回调SdkAppid检查不通过');
  16. return json_encode(['ActionStatus'=>'FAIL','ErrorCode'=>1,'ErrorInfo'=>'SdkAppid验证不通过过']);
  17. }
  18. $CallbackCommand=$request->get('CallbackCommand');
  19. if($CallbackCommand=='State.StateChange'){
  20. $info= $request->getContent();
  21. return $this->StateChange($info);
  22. }
  23. }
  24. private function StateChange($content){
  25. // info($content);
  26. $info=json_decode($content,true);
  27. if($info['CallbackCommand']=='State.StateChange'){
  28. $Action= $info['Info']['Action'];
  29. $To_Account= $info['Info']['To_Account'];
  30. $uid=substr($To_Account,strripos($To_Account,"_")+1);
  31. // info('uid='.$uid);
  32. $Reason= $info['Info']['Reason'];
  33. if($Action=='Login'){//上线
  34. $info=Users::where('id',$uid)->first();
  35. $info->status=1;
  36. $info->save();
  37. }else{
  38. if($Reason=='Unregister'){//注销
  39. Users::where('id',$uid)->update(['status'=>3]);
  40. }else{
  41. Users::where('id',$uid)->update(['status'=>2]);
  42. }
  43. }
  44. Cache::forget('My'.$uid);
  45. Cache::forget('user'.$uid);
  46. return json_encode(['ActionStatus'=>'ok','ErrorCode'=>0,'ErrorInfo'=>'成功53']);
  47. }
  48. return json_encode(['ActionStatus'=>'FAIL','ErrorCode'=>1,'ErrorInfo'=>'回调命令验证不通过过']);
  49. }
  50. private function CheckSdkAppid($key){
  51. $seting=$this->getIM();
  52. if($key==$seting['SecretId'])
  53. return true;
  54. return false;
  55. }
  56. }