wesmiler 2 роки тому
батько
коміт
79083e3640

+ 3 - 3
app/Console/Commands/SocketServer.php

@@ -259,9 +259,9 @@ class SocketServer extends Command
                     }
 
                     $msgData = [
-                        'from_user_id' => $fromUid,
-                        'to_user_id' => $toUid,
-                        'msg_type' => $msgType,
+                        'from_uid' => $fromUid,
+                        'to_uid' => $toUid,
+                        'msg_type' => 1,
                         'live_id' => $liveId,
                         'message' => $message,
                         'chat_key' => $chatKey,

+ 12 - 0
app/Http/Controllers/Api/v1/MessageController.php

@@ -37,6 +37,18 @@ class MessageController extends webApp
     }
 
     /**
+     * 直播消息列表
+     * @return array|mixed
+     */
+    public function live()
+    {
+        $params = request()->post();
+        $pageSize = request()->post('pageSize', 20);
+        $datas = MessageService::make()->getLiveDataList($this->userId, $params, $pageSize);
+        return message(1010, true, $datas);
+    }
+
+    /**
      * 聊天分组数据
      * @return array
      */

+ 62 - 0
app/Services/Api/MessageService.php

@@ -12,6 +12,7 @@
 namespace App\Services\Api;
 
 use App\Models\ImChatModel;
+use App\Models\LiveChatModel;
 use App\Models\MerchantModel;
 use App\Models\MessageModel;
 use App\Services\BaseService;
@@ -144,6 +145,67 @@ class MessageService extends BaseService
     }
 
     /**
+     * 直播间消息列表
+     * @param $userId
+     * @param $params
+     * @param int $pageSize
+     * @return array
+     */
+    public function getLiveDataList($userId, $params, $pageSize = 0)
+    {
+        $page = request()->post('page', 1);
+        $liveId = request()->post('live_id', 0);
+        $cacheKey = "caches:messages:live_{$liveId}_{$page}_" . md5(json_encode($params) . $pageSize);
+        $datas = RedisService::get($cacheKey);
+        if ($datas) {
+            return $datas;
+        }
+
+        $where = ['a.status' => 1, 'a.mark' => 1];
+        $field = ['a.id', 'a.type', 'a.msg_type','a.chat_key','a.live_id', 'a.description', 'a.message', 'a.from_uid', 'a.to_uid', 'a.create_time', 'a.status'];
+        $datas = LiveChatModel::from('live_chat as a')
+            ->leftJoin('member as b', 'b.id', '=', 'a.from_uid')
+            ->leftJoin('member as c', 'c.id', '=', 'a.to_uid')
+            ->where($where)
+            ->where(function ($query) use ($params, $userId) {
+                $fromUid = isset($params['from_uid']) ? intval($params['from_uid']) : 0;
+                if ($fromUid) {
+                    $query->where('a.from_uid', $fromUid);
+                }
+
+                $liveId = isset($params['live_id']) ? intval($params['live_id']) : 0;
+                if ($liveId) {
+                    $query->where('a.live_id', $liveId);
+                }
+
+                $chatKey = isset($params['chat_key']) ? trim($params['chat_key']) : '';
+                if ($chatKey) {
+                    $query->where('a.chat_key', $chatKey);
+                }
+            })->select($field)
+            ->orderBy('a.create_time', 'desc')
+            ->orderBy('a.id', 'desc')
+            ->paginate($pageSize > 0 ? $pageSize : 9999999);
+        $datas = $datas ? $datas->toArray() : [];
+
+        if ($datas) {
+            foreach ($datas['data'] as &$item) {
+                $item['time_text'] = isset($item['create_time']) && $item['create_time'] ? dateForWeek($item['create_time']) : '';$item['from_user_avatar'] = $item['from_user_avatar'] ? get_image_url($item['from_user_avatar']) : get_image_url('/images/member/logo.png');
+            }
+            unset($item);
+
+            arsort($datas['data'], true);
+            $datas['data'] = array_reverse($datas['data'], false);
+            RedisService::set($cacheKey, $datas, rand(3, 5));
+        }
+        return [
+            'list' => isset($datas['data']) ? $datas['data'] : [],
+            'total' => isset($datas['total']) ? $datas['total'] : 0,
+            'pageSize' => $pageSize
+        ];
+    }
+
+    /**
      * 获取站内消息窗口列表
      * @param $userId
      * @return array|mixed

+ 1 - 0
routes/api.php

@@ -106,6 +106,7 @@ Route::prefix('v1')->group(function(){
     Route::post('/message/index', [\App\Http\Controllers\Api\v1\MessageController::class, 'index']);
     Route::post('/message/chat', [\App\Http\Controllers\Api\v1\MessageController::class, 'chatGroupList']);
     Route::post('/message/history', [\App\Http\Controllers\Api\v1\MessageController::class, 'history']);
+    Route::post('/message/live', [\App\Http\Controllers\Api\v1\MessageController::class, 'live']);
     Route::post('/message/unread', [\App\Http\Controllers\Api\v1\MessageController::class, 'unread']);
     Route::post('/message/barCount', [\App\Http\Controllers\Api\v1\MessageController::class, 'getBarCount']);
     Route::post('/message/clear', [\App\Http\Controllers\Api\v1\MessageController::class, 'clear']);