TemplateService.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. from django.core.paginator import Paginator
  2. from DCbackend.utils.common import success, fail, pageData
  3. from backend.Form.TemplateForm import TemplateForm
  4. from backend.Service.TemplateCategoryService import TemplateCategoryService
  5. from backend.models import Template, TemplateCategory
  6. class TemplateService:
  7. @staticmethod
  8. def Create(request):
  9. try:
  10. form = TemplateForm(request.POST)
  11. if form.is_valid():
  12. template = form.save()
  13. # 将 code 更新为 id
  14. template.code = str(template.id)
  15. template.save()
  16. return success("创建成功")
  17. else:
  18. return fail(form.errors)
  19. except Exception as e:
  20. return fail(str(e))
  21. @staticmethod
  22. def Update(request):
  23. data = Template.objects.filter(id=request.POST.get("id")).first()
  24. if data is not None:
  25. data.name = request.POST.get("name")
  26. data.code=request.POST.get("code")
  27. data.content = request.POST.get("content")
  28. data.attrs = request.POST.get("attrs")
  29. data.category_id = request.POST.get("category_id")
  30. data.status = request.POST.get("status")
  31. data.lay_id = request.POST.get("lay_id")
  32. data.intro = request.POST.get("intro")
  33. data.type = request.POST.get("type")
  34. data.save()
  35. return success("更新成功")
  36. else:
  37. return fail("更新模板信息")
  38. @staticmethod
  39. def Info(request):
  40. info = Template.objects.filter(id=request.POST.get("id")).first()
  41. return success(TemplateService.getDetail(info))
  42. @staticmethod
  43. def Delete(request):
  44. Template.objects.filter(id=request.POST.get("id")).update(status=4)
  45. return success("删除成功")
  46. @staticmethod
  47. def getDetail(item: Template):
  48. category = TemplateCategory.objects.filter(id=item.category_id).first()
  49. categoryData = TemplateCategoryService.getDetail(category)
  50. return {
  51. "id": item.id,
  52. "code":item.code,
  53. 'name': item.name,
  54. 'lay_id': item.lay_id,
  55. 'intro': item.intro,
  56. 'type': item.type,
  57. 'category_id': item.category_id,
  58. 'category': categoryData,
  59. 'content': item.content,
  60. 'attrs':item.attrs,
  61. 'createTime': item.create_time,
  62. 'status': item.status
  63. }
  64. @staticmethod
  65. def Search(request):
  66. page = request.POST.get("page")
  67. pageSize = request.POST.get("pageSize")
  68. if page is None:
  69. page = 1
  70. if pageSize is None:
  71. pageSize = 1
  72. where = {}
  73. category_id = request.POST.get("category_id", '')
  74. if category_id:
  75. where["category_id"] = category_id
  76. name = request.POST.get("name", '')
  77. if name:
  78. where["name__icontains"] = name
  79. status = request.POST.get("status")
  80. if status:
  81. where['status'] = status
  82. paginator = Paginator(Template.objects.filter(**where).exclude(status=4).order_by("-id"), pageSize) # 每页显示10条数据
  83. page_obj = paginator.get_page(page)
  84. dataList = []
  85. for item in page_obj:
  86. info = TemplateService.getDetail(item)
  87. dataList.append(info)
  88. return success(pageData(page, pageSize, paginator.num_pages, paginator.count, dataList))
  89. @staticmethod
  90. def pageTemplate(request):
  91. page = request.POST.get("page")
  92. pageSize = request.POST.get("pageSize")
  93. if page is None:
  94. page = 1
  95. if pageSize is None:
  96. pageSize = 1
  97. where = {}
  98. category_id = request.POST.get("category_id", '')
  99. if category_id:
  100. where["category_id"] = category_id
  101. name = request.POST.get("name", '')
  102. if name:
  103. where["name__icontains"] = name
  104. status = request.POST.get("status")
  105. if status:
  106. where['status'] = status
  107. paginator = Paginator(Template.objects.filter(**where).exclude(status=4).order_by("-id").values('id','name','category_id','create_time','status'), pageSize) # 每页显示10条数据
  108. page_obj = paginator.get_page(page)
  109. # 获取所有需要的 category_id
  110. category_ids = set(info['category_id'] for info in page_obj if info['category_id'] is not None)
  111. # 一次性查询所有需要的 DocumentCategory
  112. categories = {
  113. cat['id']: cat['name']
  114. for cat in TemplateCategory.objects.filter(id__in=category_ids).exclude(status=4).values('id', 'name')
  115. }
  116. dataList = []
  117. for info in page_obj:
  118. info_dict = dict(info) # 转换为可变的字典
  119. category_id = info_dict['category_id']
  120. info_dict['type_name'] = categories.get(category_id, '')
  121. dataList.append(info_dict)
  122. return success(pageData(page, pageSize, paginator.num_pages, paginator.count, dataList))