ChatController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. $tencent_account =new TencentImAccountService();
  29. $tencent_friend =new TencentImFriendService();
  30. //检测是否已经导入IM账号
  31. $check_result = $tencent_account->accountCheck([$request->tencent_im_user_id]);
  32. if(!isset($check_result) || (isset($check_result['AccountStatus'])&&$check_result['AccountStatus']=="NotImported")){
  33. throw new Exception("对方账户错误");
  34. }
  35. $res = $tencent_friend->friendAddItem($user->tencent_im_user_id,$request->tencent_im_user_id);
  36. ChatList::query()->firstOrCreate([
  37. 'user_id'=>$user->id,
  38. 'to_user_id'=>$toUser->id,
  39. 'atime'=>date('Y-m-d H:i:s'),
  40. ]);
  41. ChatList::query()->firstOrCreate([
  42. 'user_id'=>$toUser->id,
  43. 'to_user_id'=>$user->id,
  44. 'atime'=>date('Y-m-d H:i:s'),
  45. ]);
  46. DB::commit();
  47. }catch (\Exception $exception){
  48. DB::rollBack();
  49. return $this->response->errorForbidden($exception->getMessage());
  50. }
  51. return response()->json($res);
  52. }
  53. /**
  54. * 获取好友关系
  55. * @param Request $request
  56. * @return \Illuminate\Http\JsonResponse|void
  57. */
  58. public function get_friend(Request $request){
  59. try {
  60. $user = auth('api')->user();
  61. $tencent_friend =new TencentImFriendService();
  62. $res = $tencent_friend->friendGet($user->tencent_im_user_id,($request->page-1)*20);
  63. }catch (\Exception $exception){
  64. return $this->response->errorForbidden($exception->getMessage());
  65. }
  66. return response()->json($res);
  67. }
  68. }