false, 'message' => '无效的消息ID']); exit; } // 检查消息存在且用户有权限 $check_sql = "SELECT m.id, m.target_type FROM messages m LEFT JOIN message_recipients mr ON m.id = mr.message_id AND mr.employee_id = $employee_id WHERE m.id = $message_id AND (m.target_type = 2 OR mr.employee_id = $employee_id)"; $check_result = mysqli_query($conn, $check_sql); if (mysqli_num_rows($check_result) == 0) { header('Content-Type: application/json'); echo json_encode(['success' => false, 'message' => '消息不存在或无权操作']); exit; } $message = mysqli_fetch_assoc($check_result); switch ($action) { case 'mark_read': $check_recipient_sql = "SELECT id FROM message_recipients WHERE message_id = $message_id AND employee_id = $employee_id"; $check_recipient_result = mysqli_query($conn, $check_recipient_sql); if (mysqli_num_rows($check_recipient_result) > 0) { // 更新已有记录 $update_sql = "UPDATE message_recipients SET is_read = 1, read_time = NOW() WHERE message_id = $message_id AND employee_id = $employee_id"; $result = mysqli_query($conn, $update_sql); } else if ($message['target_type'] == 2) { // 全体公告,创建新的接收记录 $insert_sql = "INSERT INTO message_recipients (message_id, employee_id, is_read, read_time, created_at) VALUES ($message_id, $employee_id, 1, NOW(), NOW())"; $result = mysqli_query($conn, $insert_sql); } if ($result) { header('Content-Type: application/json'); echo json_encode(['success' => true]); } else { header('Content-Type: application/json'); echo json_encode(['success' => false, 'message' => '操作失败: ' . mysqli_error($conn)]); } break; case 'delete': $check_recipient_sql = "SELECT id FROM message_recipients WHERE message_id = $message_id AND employee_id = $employee_id"; $check_recipient_result = mysqli_query($conn, $check_recipient_sql); if (mysqli_num_rows($check_recipient_result) > 0) { // 更新已有记录,标记为删除 $update_sql = "UPDATE message_recipients SET is_deleted = 1 WHERE message_id = $message_id AND employee_id = $employee_id"; $result = mysqli_query($conn, $update_sql); } else if ($message['target_type'] == 2) { // 全体公告,创建已删除的接收记录 $insert_sql = "INSERT INTO message_recipients (message_id, employee_id, is_read, is_deleted, created_at) VALUES ($message_id, $employee_id, 1, 1, NOW())"; $result = mysqli_query($conn, $insert_sql); } if ($result) { header('Content-Type: application/json'); echo json_encode(['success' => true]); } else { header('Content-Type: application/json'); echo json_encode(['success' => false, 'message' => '操作失败: ' . mysqli_error($conn)]); } break; default: header('Content-Type: application/json'); echo json_encode(['success' => false, 'message' => '未知操作']); } ?>