notice.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # -*- coding: utf-8 -*-
  2. # @Author : YY
  3. from typing import List
  4. from pydantic import BeforeValidator
  5. from typing_extensions import Annotated
  6. from ruoyi_common.base.transformer import ids_to_list
  7. from ruoyi_common.base.model import AjaxResponse, TableResponse
  8. from ruoyi_common.descriptor.serializer import JsonSerializer
  9. from ruoyi_common.descriptor.validator import BodyValidator, QueryValidator, PathValidator
  10. from ruoyi_common.domain.enum import BusinessType
  11. from ruoyi_common.utils import security_util as SecurityUtil
  12. from ruoyi_system.domain.entity import SysNotice
  13. from ruoyi_system.service import SysNoticeService
  14. from ruoyi_framework.descriptor.log import Log
  15. from ruoyi_framework.descriptor.permission import HasPerm, PreAuthorize
  16. from ... import reg
  17. @reg.api.route("/system/notice/list", methods=["GET"])
  18. @QueryValidator(is_page=True)
  19. @PreAuthorize(HasPerm("system:notice:list"))
  20. @JsonSerializer()
  21. def system_notice_list(dto:SysNotice):
  22. '''
  23. 获取公告信息列表
  24. '''
  25. rows = SysNoticeService.select_notice_list(dto)
  26. table_response = TableResponse(rows=rows)
  27. return table_response
  28. @reg.api.route("/system/notice/<int:id>", methods=["GET"])
  29. @PathValidator()
  30. @PreAuthorize(HasPerm("system:notice:query"))
  31. @JsonSerializer()
  32. def system_notice_get(id:int):
  33. '''
  34. 根据id,获取公告信息
  35. '''
  36. eo = SysNoticeService.select_notice_by_id(id)
  37. return AjaxResponse.from_success(data=eo) if eo else \
  38. AjaxResponse.from_error()
  39. @reg.api.route("/system/notice", methods=["POST"])
  40. @BodyValidator()
  41. @PreAuthorize(HasPerm("system:notice:add"))
  42. @Log(title="通知公告",business_type=BusinessType.INSERT)
  43. @JsonSerializer()
  44. def system_notice_add(dto:SysNotice):
  45. '''
  46. 添加公告信息
  47. '''
  48. dto.create_by_user(SecurityUtil.get_username())
  49. SysNoticeService.insert_notice(dto)
  50. return AjaxResponse.from_success()
  51. @reg.api.route("/system/notice", methods=["PUT"])
  52. @BodyValidator()
  53. @PreAuthorize(HasPerm("system:notice:edit"))
  54. @Log(title="通知公告",business_type=BusinessType.UPDATE)
  55. @JsonSerializer()
  56. def system_notice_update(dto:SysNotice):
  57. '''
  58. 修改公告信息
  59. '''
  60. dto.update_by_user(SecurityUtil.get_username())
  61. flag = SysNoticeService.update_notice(dto)
  62. return AjaxResponse.from_success() if flag else AjaxResponse.from_error()
  63. @reg.api.route("/system/notice/<ids>", methods=["DELETE"])
  64. @PathValidator()
  65. @PreAuthorize(HasPerm("system:notice:remove"))
  66. @Log(title="通知公告",business_type=BusinessType.DELETE)
  67. @JsonSerializer()
  68. def system_notice_delete(
  69. ids: Annotated[List[int],BeforeValidator(ids_to_list)]
  70. ):
  71. '''
  72. 删除公告信息
  73. '''
  74. flag = SysNoticeService.delete_notice_by_ids(ids)
  75. return AjaxResponse.from_success() if flag else AjaxResponse.from_error()