controller.py.vm 4.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from flask import request, Blueprint
  2. from ruoyi_common.descriptor.validator import QueryValidator, BodyValidator, PathValidator
  3. from ruoyi_common.descriptor.serializer import JsonSerializer
  4. from ruoyi_framework.descriptor.permission import HasPerm, PreAuthorize
  5. from ruoyi_generator.domain.po import {{ table.class_name }}PO
  6. from ruoyi_generator.domain.entity import {{ table.class_name }}
  7. from ruoyi_generator.service.{{ underscore(table.class_name) }}_service import {{ table.class_name }}Service
  8. from ruoyi_common.base.model import AjaxResponse, TableResponse
  9. from ruoyi_common.constant import HttpStatus
  10. # 创建蓝图
  11. gen = Blueprint('{{ underscore(table.class_name) }}', __name__, url_prefix='/{{ table.module_name }}/{{ table.business_name }}')
  12. {{ table.class_name|lower }}_service = {{ table.class_name }}Service()
  13. @gen.route('/list', methods=["GET"])
  14. @QueryValidator(is_page=True)
  15. @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:list'))
  16. @JsonSerializer()
  17. def {{ table.business_name }}_list(dto: {{ table.class_name }}PO):
  18. """查询{{ table.function_name }}列表"""
  19. {{ table.class_name|lower }} = {{ table.class_name }}()
  20. # 转换PO到Entity对象
  21. for attr in dto.model_fields.keys():
  22. if hasattr({{ table.class_name|lower }}, attr):
  23. setattr({{ table.class_name|lower }}, attr, getattr(dto, attr))
  24. {{ table.business_name }}s, total = {{ table.class_name|lower }}_service.select_{{ table.business_name }}_list({{ table.class_name|lower }})
  25. return TableResponse(code=HttpStatus.SUCCESS, msg='查询成功', rows={{ table.business_name }}s, total=total)
  26. {# 修复第35行的语法错误 #}
  27. {% if table.pk_column %}
  28. @gen.route('/<int:{{ underscore(table.pk_column.java_field) }}>', methods=['GET'])
  29. @PathValidator()
  30. @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:query'))
  31. @JsonSerializer()
  32. def get_{{ table.business_name }}({{ underscore(table.pk_column.java_field) }}: int):
  33. """获取{{ table.function_name }}详细信息"""
  34. {{ table.class_name|lower }} = {{ table.class_name|lower }}_service.select_{{ table.business_name }}_by_id({{ underscore(table.pk_column.java_field) }})
  35. return AjaxResponse.from_success(data={{ table.class_name|lower }})
  36. {% endif %}
  37. @gen.route('', methods=['POST'])
  38. @BodyValidator()
  39. @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:add'))
  40. @JsonSerializer()
  41. def add_{{ table.business_name }}(dto: {{ table.class_name }}PO):
  42. """新增{{ table.function_name }}"""
  43. {{ table.class_name|lower }} = {{ table.class_name }}()
  44. # 转换PO到Entity对象
  45. for attr in dto.model_fields.keys():
  46. if hasattr({{ table.class_name|lower }}, attr):
  47. setattr({{ table.class_name|lower }}, attr, getattr(dto, attr))
  48. result = {{ table.class_name|lower }}_service.insert_{{ table.business_name }}({{ table.class_name|lower }})
  49. return AjaxResponse.from_success(msg='操作成功' if result else '操作失败')
  50. {# 修复PUT路由的语法错误 #}
  51. {% if table.pk_column %}
  52. @gen.route('/<int:{{ underscore(table.pk_column.java_field) }}>', methods=['PUT'])
  53. @BodyValidator()
  54. @PathValidator()
  55. @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:edit'))
  56. @JsonSerializer()
  57. def update_{{ table.business_name }}({{ underscore(table.pk_column.java_field) }}: int, dto: {{ table.class_name }}PO):
  58. """修改{{ table.function_name }}"""
  59. {{ table.class_name|lower }} = {{ table.class_name }}()
  60. # 转换PO到Entity对象
  61. for attr in dto.model_fields.keys():
  62. if hasattr({{ table.class_name|lower }}, attr):
  63. setattr({{ table.class_name|lower }}, attr, getattr(dto, attr))
  64. {{ table.class_name|lower }}.{{ underscore(table.pk_column.java_field) }} = {{ underscore(table.pk_column.java_field) }}
  65. result = {{ table.class_name|lower }}_service.update_{{ table.business_name }}({{ table.class_name|lower }})
  66. return AjaxResponse.from_success(msg='操作成功' if result else '操作失败')
  67. {% endif %}
  68. {% if table.pk_column %}
  69. @gen.route('/<ids>', methods=['DELETE'])
  70. @PathValidator()
  71. @PreAuthorize(HasPerm('{{ table.module_name }}:{{ table.business_name }}:remove'))
  72. @JsonSerializer()
  73. def delete_{{ table.business_name }}(ids: str):
  74. """删除{{ table.function_name }}"""
  75. try:
  76. id_list = [int(id) for id in ids.split(',')]
  77. result = {{ table.class_name|lower }}_service.delete_{{ table.business_name }}_by_ids(id_list)
  78. return AjaxResponse.from_success(msg='操作成功' if result else '操作失败')
  79. except Exception as e:
  80. return AjaxResponse.from_error(msg=f'操作失败: {str(e)}')
  81. {% endif %}