ApiController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace App\Http\Controllers\Api\v1;
  3. use App\Http\Controllers\Api\webApp;
  4. use App\Models\AcceptorModel;
  5. use App\Models\MerchantModel;
  6. use App\Services\Api\MemberService;
  7. use App\Services\Api\TaskService;
  8. use App\Services\ConfigService;
  9. use App\Services\RedisService;
  10. /**
  11. * 星链API
  12. * @package App\Http\Controllers\Api
  13. */
  14. class ApiController extends webApp
  15. {
  16. /**
  17. * 聊天用户信息
  18. * @return array
  19. */
  20. public function chatInfo()
  21. {
  22. $params = request()->all();
  23. $token = isset($params['token'])? $params['token'] : '';
  24. if(empty($token)){
  25. return showJson(1066,false);
  26. }
  27. $tokenData = MemberService::make()->getChatToken($token, 2);
  28. $userId = isset($tokenData['user_id'])? $tokenData['user_id'] : 0;
  29. $userType = isset($tokenData['user_type']) && $tokenData['user_type']? $tokenData['user_type'] : 1;
  30. $authTime = isset($tokenData['auth_time']) && $tokenData['auth_time']? $tokenData['auth_time'] : 0;
  31. if($authTime && $authTime < date('YmdHis', time() - 30)){
  32. return showJson(1067,false);
  33. }
  34. $cacheKey = "caches:members:chat_{$userId}_{$userType}";
  35. $info = RedisService::get($cacheKey);
  36. if($info){
  37. $info['cache'] = true;
  38. return showJson(1010,true, $info);
  39. }
  40. if($userType == 1){
  41. $info = MemberService::make()->getInfo($userId, 'chat',['id','username','nickname','gender','app_uuid','avatar']);
  42. }else if($userType == 2){
  43. $info = MerchantModel::where(['user_id'=> $userId,'mark'=>1])
  44. ->select(['user_id as id','name as nickname','mobile as username','logo as avatar'])
  45. ->first();
  46. $info = $info? $info->toArray() :[];
  47. }else if($userType == 3){
  48. $info = AcceptorModel::from('acceptor as a')
  49. ->leftJoin('member as b','b.id','=','a.user_id')
  50. ->where(['a.user_id'=> $userId,'a.mark'=>1])
  51. ->select(['a.user_id as id','a.name as nickname','b.username','b.avatar'])
  52. ->first();
  53. $info = $info? $info->toArray() :[];
  54. }
  55. if($info){
  56. $info['user_type'] = $userType;
  57. $info['user_type_name'] = $userType==3?'承兑商':($userType==2?'商家':'会员');
  58. $info['avatar'] = $info['avatar']? get_image_url($info['avatar']) : get_image_url('/images/member/logo.png');
  59. RedisService::set($cacheKey, $info, rand(5,10));
  60. }else{
  61. return showJson(1068,false);
  62. }
  63. return showJson(1010,true, $info);
  64. }
  65. }