Files
chatroom/app/Events/MarriageExpired.php
lkddi 4f49fb7ce8 功能:婚姻系统第8&10步(Controllers + Events + 路由)
- MarriageController:propose/accept/reject/divorce/confirmDivorce/status
- WeddingController:tiers/setup(立即触发)/claim/envelopeStatus
- 8个 WebSocket Events:
  Marriage{Proposed|Accepted|Rejected|Expired|Divorced|DivorceRequested}
  WeddingCelebration / EnvelopeClaimed
- 前台路由:marriage.* + wedding.*
- 后台路由:admin.marriages.*(superlevel 层)
2026-03-01 15:09:33 +08:00

61 lines
1.5 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* 文件功能:求婚超时失效事件(广播至求婚方私人频道)
*
* 触发时机Horizon Job ExpireMarriageProposals 扫描到超时求婚后广播。
*
* @author ChatRoom Laravel
*
* @version 1.0.0
*/
namespace App\Events;
use App\Models\Marriage;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class MarriageExpired implements ShouldBroadcastNow
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* @param Marriage $marriage 婚姻记录
*/
public function __construct(
public readonly Marriage $marriage,
) {}
/**
* 广播至求婚方私人频道。
*
* @return array<int, \Illuminate\Broadcasting\Channel>
*/
public function broadcastOn(): array
{
return [new PrivateChannel('user.'.$this->marriage->user_id)];
}
/**
* @return array<string, mixed>
*/
public function broadcastWith(): array
{
return [
'partner_username' => $this->marriage->partner?->username,
'ring_name' => $this->marriage->ringItem?->name,
'message' => '求婚已超时失效,戒指已消失。',
];
}
/** 广播事件名称。 */
public function broadcastAs(): string
{
return 'marriage.expired';
}
}