message_action.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. require_once 'conn.php';
  3. checkLogin();
  4. $employee_id = $_SESSION['employee_id'];
  5. $action = $_POST['action'] ?? '';
  6. $message_id = isset($_POST['message_id']) ? intval($_POST['message_id']) : 0;
  7. if ($message_id <= 0) {
  8. header('Content-Type: application/json');
  9. echo json_encode(['success' => false, 'message' => '无效的消息ID']);
  10. exit;
  11. }
  12. // 检查消息存在且用户有权限
  13. $check_sql = "SELECT m.id, m.target_type
  14. FROM messages m
  15. LEFT JOIN message_recipients mr ON m.id = mr.message_id AND mr.employee_id = $employee_id
  16. WHERE m.id = $message_id AND (m.target_type = 2 OR mr.employee_id = $employee_id)";
  17. $check_result = mysqli_query($conn, $check_sql);
  18. if (mysqli_num_rows($check_result) == 0) {
  19. header('Content-Type: application/json');
  20. echo json_encode(['success' => false, 'message' => '消息不存在或无权操作']);
  21. exit;
  22. }
  23. $message = mysqli_fetch_assoc($check_result);
  24. switch ($action) {
  25. case 'mark_read':
  26. $check_recipient_sql = "SELECT id FROM message_recipients WHERE message_id = $message_id AND employee_id = $employee_id";
  27. $check_recipient_result = mysqli_query($conn, $check_recipient_sql);
  28. if (mysqli_num_rows($check_recipient_result) > 0) {
  29. // 更新已有记录
  30. $update_sql = "UPDATE message_recipients SET is_read = 1, read_time = NOW() WHERE message_id = $message_id AND employee_id = $employee_id";
  31. $result = mysqli_query($conn, $update_sql);
  32. } else if ($message['target_type'] == 2) {
  33. // 全体公告,创建新的接收记录
  34. $insert_sql = "INSERT INTO message_recipients (message_id, employee_id, is_read, read_time, created_at)
  35. VALUES ($message_id, $employee_id, 1, NOW(), NOW())";
  36. $result = mysqli_query($conn, $insert_sql);
  37. }
  38. if ($result) {
  39. header('Content-Type: application/json');
  40. echo json_encode(['success' => true]);
  41. } else {
  42. header('Content-Type: application/json');
  43. echo json_encode(['success' => false, 'message' => '操作失败: ' . mysqli_error($conn)]);
  44. }
  45. break;
  46. case 'delete':
  47. $check_recipient_sql = "SELECT id FROM message_recipients WHERE message_id = $message_id AND employee_id = $employee_id";
  48. $check_recipient_result = mysqli_query($conn, $check_recipient_sql);
  49. if (mysqli_num_rows($check_recipient_result) > 0) {
  50. // 更新已有记录,标记为删除
  51. $update_sql = "UPDATE message_recipients SET is_deleted = 1 WHERE message_id = $message_id AND employee_id = $employee_id";
  52. $result = mysqli_query($conn, $update_sql);
  53. } else if ($message['target_type'] == 2) {
  54. // 全体公告,创建已删除的接收记录
  55. $insert_sql = "INSERT INTO message_recipients (message_id, employee_id, is_read, is_deleted, created_at)
  56. VALUES ($message_id, $employee_id, 1, 1, NOW())";
  57. $result = mysqli_query($conn, $insert_sql);
  58. }
  59. if ($result) {
  60. header('Content-Type: application/json');
  61. echo json_encode(['success' => true]);
  62. } else {
  63. header('Content-Type: application/json');
  64. echo json_encode(['success' => false, 'message' => '操作失败: ' . mysqli_error($conn)]);
  65. }
  66. break;
  67. default:
  68. header('Content-Type: application/json');
  69. echo json_encode(['success' => false, 'message' => '未知操作']);
  70. }
  71. ?>