ChatController.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Models\ChatList;
  4. use App\Models\User;
  5. use App\Services\TencentImAccountService;
  6. use App\Services\TencentImFriendService;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\DB;
  9. use PHPUnit\Util\Exception;
  10. class ChatController extends Controller
  11. {
  12. /**
  13. * 添加好友
  14. * @param Request $request
  15. * @return \Illuminate\Http\JsonResponse|void
  16. * @throws \GuzzleHttp\Exception\GuzzleException
  17. */
  18. public function add_friend(Request $request){
  19. DB::beginTransaction();
  20. try {
  21. $user = auth('api')->user();
  22. if(empty($request->tencent_im_user_id)){
  23. throw new Exception("参数错误");
  24. }
  25. if(!$toUser = User::query()->where(['tencent_im_user_id'=>$request->tencent_im_user_id])->first()){
  26. throw new Exception("对应用户不存在");
  27. }
  28. //if(!ChatList::query()->where(['user_id'=>$user->id,'to_user_id'=>$toUser->id])->first()){
  29. $tencent_account =new TencentImAccountService();
  30. $tencent_friend =new TencentImFriendService();
  31. //检测是否已经导入IM账号
  32. $check_result = $tencent_account->accountCheck([$request->tencent_im_user_id]);
  33. if(!isset($check_result) || (isset($check_result['AccountStatus'])&&$check_result['AccountStatus']=="NotImported")){
  34. throw new Exception("对方账户错误");
  35. }
  36. $res = $tencent_friend->friendAddItem($user->tencent_im_user_id,$request->tencent_im_user_id);
  37. ChatList::query()->firstOrCreate([
  38. 'user_id'=>$user->id,
  39. 'to_user_id'=>$toUser->id,
  40. 'atime'=>date('Y-m-d H:i:s'),
  41. ]);
  42. ChatList::query()->firstOrCreate([
  43. 'user_id'=>$toUser->id,
  44. 'to_user_id'=>$user->id,
  45. 'atime'=>date('Y-m-d H:i:s'),
  46. ]);
  47. // }else{
  48. // $res = [
  49. // "ErrorCode"=>0,
  50. // "ActionStatus"=>"OK",
  51. // "ErrorInfo"=>""
  52. // ];
  53. // }
  54. DB::commit();
  55. }catch (\Exception $exception){
  56. DB::rollBack();
  57. return $this->response->errorForbidden($exception->getMessage());
  58. }
  59. return response()->json($res);
  60. }
  61. /**
  62. * 获取好友关系
  63. * @param Request $request
  64. * @return \Illuminate\Http\JsonResponse|void
  65. */
  66. public function get_friend(Request $request){
  67. try {
  68. $user = auth('api')->user();
  69. $tencent_friend =new TencentImFriendService();
  70. $res = $tencent_friend->friendGet($user->tencent_im_user_id,($request->page-1)*20);
  71. }catch (\Exception $exception){
  72. return $this->response->errorForbidden($exception->getMessage());
  73. }
  74. return response()->json($res);
  75. }
  76. }