海南旅游SAAS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.3 KiB

  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Message;
  5. use App\Models\MessageRead;
  6. use Illuminate\Http\Request;
  7. /**
  8. * 短消息
  9. * Class MessageController
  10. * @package App\Http\Controllers\Api
  11. */
  12. class MessageController extends Controller
  13. {
  14. public function index()
  15. {
  16. $list = Message::where('agent_id', $this->agent_id)
  17. ->whereIn('user_id', [$this->user_id, 0]) //0是所有人都接收的系统消息
  18. ->select('id', 'user_id', 'title', 'created_at')
  19. ->orderBy('id', 'DESC')
  20. ->simplePaginate(15);
  21. if (!empty($list->items())) {
  22. foreach ($list->items() as &$v) {
  23. $v->is_read = (int)MessageRead::where(['id' => $v->id, 'user_id' => $this->user_id])->exists();
  24. }
  25. }
  26. return $this->success($list);
  27. }
  28. public function show()
  29. {
  30. $id = (int)request()->input('id');
  31. //增加where条件是为了防止偷看别人的消息
  32. $message = Message::where(['agent_id' => $this->agent_id])
  33. ->whereIn('user_id', [$this->user_id, 0]) //0是所有人都接收的系统消息
  34. ->find($id);
  35. if (!$message) {
  36. return $this->error('消息不存在或已删除');
  37. }
  38. //标记短消息为已读
  39. MessageRead::insertOrIgnore(['id' => $id, 'user_id' => $this->user_id]);
  40. return $this->success($message);
  41. }
  42. }