新增座驾购买公屏通知
This commit is contained in:
@@ -8,9 +8,12 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Events\MessageSent;
|
||||
use App\Http\Requests\BuyRideRequest;
|
||||
use App\Jobs\SaveMessageJob;
|
||||
use App\Models\Ride;
|
||||
use App\Models\Room;
|
||||
use App\Models\User;
|
||||
use App\Services\ChatStateService;
|
||||
use App\Services\RideService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
@@ -67,6 +70,8 @@ class RideController extends Controller
|
||||
return response()->json(['status' => 'error', 'message' => $result['message']], 400);
|
||||
}
|
||||
|
||||
$this->pushRidePurchaseNotice($user, $item, $roomId);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => $result['message'],
|
||||
@@ -75,4 +80,36 @@ class RideController extends Controller
|
||||
'jjb' => $user->fresh()->jjb,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 向当前房间广播座驾购买成功通知,方便其他用户快速打开座驾页面。
|
||||
*/
|
||||
private function pushRidePurchaseNotice(User $user, Ride $item, int $roomId): void
|
||||
{
|
||||
$button = '<button onclick="openRideModal()">购买座驾</button>';
|
||||
$content = sprintf(
|
||||
'🚀 【座驾】 <b>%s</b> 购买了 <b>%s</b>,有效期 <b>%d 天</b>,排面已安排!%s',
|
||||
e($user->username),
|
||||
e($item->name),
|
||||
(int) $item->duration_days,
|
||||
$button,
|
||||
);
|
||||
|
||||
$message = [
|
||||
'id' => $this->chatState->nextMessageId($roomId),
|
||||
'room_id' => $roomId,
|
||||
'from_user' => '系统传音',
|
||||
'to_user' => '大家',
|
||||
'content' => $content,
|
||||
'is_secret' => false,
|
||||
'font_color' => '#0f766e',
|
||||
'action' => 'ride_purchase',
|
||||
'sent_at' => now()->toDateTimeString(),
|
||||
];
|
||||
|
||||
// 购买通知需要写入房间消息缓存、实时广播并落库,刷新后仍可追溯。
|
||||
$this->chatState->pushMessage($roomId, $message);
|
||||
broadcast(new MessageSent($roomId, $message));
|
||||
SaveMessageJob::dispatch($message);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user