修复悄悄话文字颜色及不能发数字0的问题

This commit is contained in:
2026-04-11 22:48:15 +08:00
parent ff402be02f
commit dd9a8c5db8
4 changed files with 37 additions and 3 deletions

View File

@@ -362,7 +362,7 @@ class ChatController extends Controller
// 1. 过滤净化消息体
$pureContent = $this->filter->filter($data['content'] ?? '');
if (empty($pureContent)) {
if ($pureContent === '') {
return response()->json(['status' => 'error', 'message' => '消息内容不能为空或不合法。'], 422);
}

View File

@@ -28,7 +28,7 @@ class MessageFilterService
*/
public function filter(string $content): string
{
if (empty($content)) {
if ($content === '') {
return '';
}

View File

@@ -725,7 +725,8 @@
const verbStr = msg.action ?
buildActionStr(msg.action, fromHtml, toHtml, '悄悄说') :
`${fromHtml}对${toHtml}悄悄说:`;
html = `<span class="msg-secret">${headImg}${verbStr}${msg.content}</span>`;
html =
`${headImg}<span class="msg-secret">${verbStr}</span><span class="msg-content" style="color: ${fontColor}; font-style: italic;">${msg.content}</span>`;
}
} else if (msg.to_user && msg.to_user !== '大家') {
// 对特定对象说话

View File

@@ -67,6 +67,39 @@ class ChatControllerTest extends TestCase
$this->assertTrue($found, 'Message not found in Redis');
}
public function test_can_send_zero_message_content(): void
{
$room = Room::create(['room_name' => 'test_send_zero']);
$user = User::factory()->create();
$this->actingAs($user)->get(route('chat.room', $room->id));
$response = $this->actingAs($user)->postJson(route('chat.send', $room->id), [
'to_user' => '大家',
'content' => '0',
'is_secret' => false,
'font_color' => '#000000',
'action' => '',
]);
$response->assertOk();
$response->assertJson(['status' => 'success']);
$messages = Redis::lrange("room:{$room->id}:messages", 0, -1);
$found = false;
foreach ($messages as $msgJson) {
$msg = json_decode($msgJson, true);
if ($msg['from_user'] === $user->username && $msg['content'] === '0') {
$found = true;
break;
}
}
$this->assertTrue($found, 'Zero message not found in Redis');
}
public function test_can_trigger_heartbeat()
{
$room = Room::create(['room_name' => 'test_hb']);