config.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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.constant import UserConstants
  9. from ruoyi_common.base.model import AjaxResponse, TableResponse
  10. from ruoyi_common.descriptor.serializer import JsonSerializer
  11. from ruoyi_common.descriptor.validator import BodyValidator, QueryValidator, PathValidator
  12. from ruoyi_common.domain.enum import BusinessType
  13. from ruoyi_common.utils import security_util as SecurityUtil
  14. from ruoyi_system.domain.entity import SysConfig
  15. from ruoyi_system.service.sys_config import SysConfigService
  16. from ruoyi_framework.descriptor.log import Log
  17. from ruoyi_framework.descriptor.permission import HasPerm, PreAuthorize
  18. from ... import reg
  19. @reg.api.route("/system/config/list", methods=["GET"])
  20. @QueryValidator(is_page=True)
  21. @PreAuthorize(HasPerm('system:config:list'))
  22. @JsonSerializer()
  23. def system_config_list(dto:SysConfig):
  24. '''
  25. 获取配置项列表
  26. '''
  27. rows = SysConfigService.select_config_list(dto)
  28. table_response = TableResponse(rows=rows)
  29. return table_response
  30. @reg.api.route("/system/config/export", methods=["POST"])
  31. @BodyValidator()
  32. @PreAuthorize(HasPerm('system:config:export'))
  33. @Log(title="参数管理",business_type=BusinessType.EXPORT)
  34. @JsonSerializer()
  35. def system_config_export(dto:SysConfig):
  36. '''
  37. # todo
  38. 导出配置项列表
  39. '''
  40. rows = SysConfigService.select_user_list(dto)
  41. table_response = TableResponse(rows=rows)
  42. return table_response
  43. @reg.api.route("/system/config/<int:id>", methods=["GET"])
  44. @PathValidator()
  45. @PreAuthorize(HasPerm('system:config:query'))
  46. @JsonSerializer()
  47. def system_config_get(id:int):
  48. '''
  49. 根据id,获取配置项
  50. '''
  51. sysconfig = SysConfigService.select_config_by_id(id)
  52. ajax_response = AjaxResponse.from_success(data=sysconfig)
  53. return ajax_response
  54. @reg.api.route("/system/config/configKey/<key>", methods=["GET"])
  55. @PathValidator()
  56. @login_required
  57. @JsonSerializer()
  58. def system_config_get_by_key(key:str):
  59. '''
  60. 根据key,获取配置项
  61. '''
  62. value = SysConfigService.select_config_by_key(key)
  63. ajax_response = AjaxResponse.from_success(data = value)
  64. return ajax_response
  65. @reg.api.route("/system/config", methods=["POST"])
  66. @BodyValidator()
  67. @PreAuthorize(HasPerm('system:config:add'))
  68. @Log(title = "参数管理", business_type = BusinessType.INSERT)
  69. @JsonSerializer()
  70. def system_config_add(dto:SysConfig):
  71. '''
  72. 添加配置项
  73. '''
  74. if UserConstants.NOT_UNIQUE == SysConfigService.check_config_key_unique(dto):
  75. return AjaxResponse.from_error("配置项已存在:{}".format(dto.config_name))
  76. dto.create_by_user(SecurityUtil.get_username())
  77. SysConfigService.insert_config(dto)
  78. ajax_response = AjaxResponse.from_success()
  79. return ajax_response
  80. @reg.api.route("/system/config", methods=["PUT"])
  81. @BodyValidator()
  82. @PreAuthorize(HasPerm('system:config:edit'))
  83. @Log(title = "参数管理", business_type = BusinessType.UPDATE)
  84. @JsonSerializer()
  85. def system_config_update(dto:SysConfig):
  86. '''
  87. 修改配置项
  88. '''
  89. if UserConstants.NOT_UNIQUE == \
  90. SysConfigService.check_config_key_unique(dto):
  91. return AjaxResponse.from_error(f"修改参数'{dto.config_key}'失败,参数键名已存在")
  92. dto.update_by_user(SecurityUtil.get_username())
  93. flag = SysConfigService.update_config(dto)
  94. return AjaxResponse.from_success() if flag else AjaxResponse.from_error()
  95. @reg.api.route("/system/config/<ids>", methods=["DELETE"])
  96. @PathValidator()
  97. @PreAuthorize(HasPerm('system:config:remove'))
  98. @Log(title = "参数管理", business_type = BusinessType.DELETE)
  99. @JsonSerializer()
  100. def system_config_delete(
  101. ids: Annotated[List[int],BeforeValidator(ids_to_list)]
  102. ):
  103. '''
  104. 删除配置项
  105. '''
  106. SysConfigService.delete_config_by_ids(ids)
  107. return AjaxResponse.from_success()
  108. @reg.api.route("/system/config/refreshCache", methods=["DELETE"])
  109. @PreAuthorize(HasPerm('system:config:remove'))
  110. @Log(title = "参数管理", business_type = BusinessType.CLEAN)
  111. @JsonSerializer()
  112. def system_config_refresh():
  113. '''
  114. 刷新配置项缓存
  115. '''
  116. SysConfigService.reset_config_cache()
  117. return AjaxResponse.from_success()