dict_data.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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 flask_login import login_required
  7. from ruoyi_common.base.transformer import ids_to_list
  8. from ruoyi_common.base.model import AjaxResponse, TableResponse
  9. from ruoyi_common.constant import UserConstants
  10. from ruoyi_common.domain.entity import SysDictData
  11. from ruoyi_common.domain.enum import BusinessType
  12. from ruoyi_common.descriptor.serializer import BaseSerializer, JsonSerializer
  13. from ruoyi_common.descriptor.validator import BodyValidator, QueryValidator, PathValidator
  14. from ruoyi_common.utils import security_util as SecurityUtil
  15. from ruoyi_system.service import SysDictDataService
  16. from ruoyi_system.service.sys_dict_type import SysDictTypeService
  17. from ruoyi_framework.descriptor.log import Log
  18. from ruoyi_framework.descriptor.permission import HasPerm, PreAuthorize
  19. from ... import reg
  20. @reg.api.route("/system/dict/data/list", methods=["GET"])
  21. @QueryValidator(is_page=True)
  22. @PreAuthorize(HasPerm("system:dict:list"))
  23. @JsonSerializer()
  24. def system_dict_data_list(dto:SysDictData):
  25. '''
  26. 获取字典数据列表
  27. '''
  28. rows = SysDictDataService.select_dict_data_list(dto)
  29. return TableResponse(rows=rows)
  30. @reg.api.route("/system/dict/data/export", methods=["POST"])
  31. @BodyValidator()
  32. @PreAuthorize(HasPerm("system:dict:export"))
  33. @Log(title = "字典数据", business_type = BusinessType.EXPORT)
  34. @BaseSerializer()
  35. def system_dict_data_export(dto:SysDictData):
  36. '''
  37. # todo
  38. 导出字典数据列表
  39. '''
  40. rows = SysDictDataService.select_dict_data_list(dto)
  41. return TableResponse(rows=rows)
  42. @reg.api.route("/system/dict/data/<int:id>", methods=["GET"])
  43. @PathValidator()
  44. @PreAuthorize(HasPerm("system:dict:query"))
  45. @JsonSerializer()
  46. def system_dict_data_get(id:int):
  47. '''
  48. 根据id,获取字典数据
  49. '''
  50. eo = SysDictDataService.select_dict_data_by_id(id)
  51. return AjaxResponse.from_success(data=eo)
  52. @reg.api.route("/system/dict/data/type/<name>", methods=["GET"])
  53. @PathValidator()
  54. @login_required
  55. @JsonSerializer()
  56. def system_dict_data_by_type(name:str):
  57. '''
  58. 根据字典类型查询字典数据信息
  59. '''
  60. eos: List[SysDictData] = SysDictTypeService.select_dict_data_by_type(name)
  61. return AjaxResponse.from_success(data=eos)
  62. @reg.api.route("/system/dict/data", methods=["POST"])
  63. @BodyValidator()
  64. @PreAuthorize(HasPerm("system:dict:add"))
  65. @Log(title = "字典数据", business_type = BusinessType.INSERT)
  66. @JsonSerializer()
  67. def system_dict_data_add(dto:SysDictData):
  68. '''
  69. 添加字典数据
  70. '''
  71. dto.create_by_user(SecurityUtil.get_username())
  72. SysDictDataService.insert_dict_data(dto)
  73. ajax_response = AjaxResponse.from_success()
  74. return ajax_response
  75. @reg.api.route("/system/dict/data", methods=["PUT"])
  76. @BodyValidator()
  77. @PreAuthorize(HasPerm("system:dict:edit"))
  78. @Log(title = "字典数据", business_type = BusinessType.UPDATE)
  79. @JsonSerializer()
  80. def system_dict_data_update(dto:SysDictData):
  81. '''
  82. 修改字典数据
  83. '''
  84. dto.update_by_user(SecurityUtil.get_username())
  85. flag = SysDictDataService.update_dict_data(dto)
  86. return AjaxResponse.from_success() if flag else AjaxResponse.from_error()
  87. @reg.api.route("/system/dict/data/<ids>", methods=["DELETE"])
  88. @PathValidator()
  89. @PreAuthorize(HasPerm("system:dict:remove"))
  90. @Log(title="字典数据",business_type = BusinessType.DELETE)
  91. @JsonSerializer()
  92. def system_dict_data_delete(
  93. ids: Annotated[List[int],BeforeValidator(ids_to_list)]
  94. ):
  95. '''
  96. 删除字典数据
  97. '''
  98. flag = SysDictDataService.delete_dict_data_by_ids(ids)
  99. return AjaxResponse.from_success() if flag else AjaxResponse.from_error()