海南旅游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.

47 lines
1.2 KiB

4 years ago
4 years ago
4 years ago
4 years ago
  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::query()->where('agent_id', $this->agent_id)
  17. ->whereIn('user_id', [$this->user_id, 0]) //0是所有人都接收的系统消息
  18. ->select('id', 'title', 'created_at')
  19. ->selectRaw('IF((SELECT 1 FROM `message_reads` AS `mr` WHERE mr.id = messages.id AND mr.user_id = ' . $this->user_id . '), 1, 0) AS `is_read`')
  20. ->orderBy('id', 'DESC')
  21. ->simplePaginate(15);
  22. return $this->success($list);
  23. }
  24. public function show()
  25. {
  26. $id = (int)request()->input('id');
  27. //增加where条件是为了防止偷看别人的消息
  28. $message = Message::where(['agent_id' => $this->agent_id])
  29. ->whereIn('user_id', [$this->user_id, 0]) //0是所有人都接收的系统消息
  30. ->find($id);
  31. if (!$message) {
  32. return $this->error('消息不存在或已删除');
  33. }
  34. //标记短消息为已读
  35. MessageRead::insertOrIgnore(['id' => $id, 'user_id' => $this->user_id]);
  36. return $this->success($message);
  37. }
  38. }