Notice.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace app\data\controller\api;
  3. use app\data\model\DataNotice;
  4. use hg\apidoc\annotation\Param;
  5. use hg\apidoc\annotation\Returned;
  6. use hg\apidoc\annotation\Title;
  7. use think\db\Query;
  8. use think\Request;
  9. /**
  10. * 公告
  11. * Class Notice
  12. * @package app\data\controller\api
  13. */
  14. class Notice extends Auth
  15. {
  16. /**
  17. * @Title("列表")
  18. *@Param("page",desc="第几页")
  19. *@Param("limit",desc="每页几条")
  20. *@Returned("title",desc="标题")
  21. *@Returned("summary",desc="概要")
  22. *@Returned("content",desc="内容")
  23. *@Returned("title",desc="标题")
  24. *@Returned("create_time",desc="时间")
  25. *@Returned("is_read",desc="是否已读")
  26. */
  27. public function index(Request $request,DataNotice $notice){
  28. $records=$notice
  29. ->with([
  30. 'reads'=>function(Query $query){
  31. $query->where('uuid',$this->uuid);
  32. }
  33. ])
  34. ->withoutField('content')
  35. ->order('id','desc')
  36. ->paginate($request['limit']?:15);
  37. foreach ($records as &$record){
  38. $record['is_read']=!$record['reads']->isEmpty();
  39. $record->hidden(['reads'],true);
  40. }
  41. $this->success('',$records);
  42. }
  43. /**
  44. *@Title("详情")
  45. *@Param("id",desc="id")
  46. */
  47. public function show(Request $request,DataNotice $notice){
  48. $notice=$notice->where('id',$request['id'])->findOrFail();
  49. $notice->reads()->save([
  50. 'uuid'=>$this->uuid,
  51. ]);
  52. $this->success('',$notice);
  53. }
  54. }