KbmDocumentTypeService.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. from backend.Form.KbmDocumentTypeForm import KbmDocumentTypeForm
  2. from backend.models import KbmDocumentType, DocumentKbm
  3. from base import logger
  4. from django.core.paginator import Paginator
  5. from django.db import transaction
  6. from DCbackend import settings
  7. from DCbackend.utils.common import success, fail, pageData
  8. #知识库文件分类
  9. class KbmDocumentTypeService:
  10. @staticmethod
  11. @transaction.atomic
  12. def insertType(request):
  13. kb_id = request.POST.get("kb_id")
  14. if not kb_id:
  15. return fail("知识库id为空")
  16. form = KbmDocumentTypeForm(request.POST)
  17. if form.is_valid():
  18. form.save()
  19. return success("保存成功")
  20. else:
  21. return fail(form.errors)
  22. @staticmethod
  23. @transaction.atomic
  24. def updateType(request):
  25. data = KbmDocumentType.objects.filter(id=request.POST.get("id")).first();
  26. if data is not None:
  27. data.name = request.POST.get("name")
  28. data.kb_id = request.POST.get("kb_id")
  29. data.status = request.POST.get("status")
  30. data.parent_id = request.POST.get("parent_id")
  31. data.save()
  32. return success("更新成功")
  33. else:
  34. return fail("更新参数信息失败")
  35. @staticmethod
  36. def selectTypeList(request):
  37. page = request.POST.get("page",1)
  38. pageSize = request.POST.get("pageSize",10)
  39. kb_id = request.POST.get("kb_id")
  40. if not kb_id:
  41. return fail("知识库id为空")
  42. where = {}
  43. name = request.POST.get("name", '')
  44. if name:
  45. where["name__icontains"] = name
  46. status = request.POST.get("status")
  47. if status:
  48. where['status'] = status
  49. where['kb_id'] = kb_id
  50. paginator = Paginator(KbmDocumentType.objects.filter(**where).exclude(status=4).order_by("-id"),
  51. pageSize) # 每页显示10条数据
  52. page_obj = paginator.get_page(page)
  53. dataList = []
  54. for item in page_obj:
  55. count = DocumentKbm.objects.filter(doc_type_id=item.id).count()
  56. info = KbmDocumentTypeService.getDetail(item, count)
  57. dataList.append(info)
  58. return success(pageData(page, pageSize, paginator.num_pages, paginator.count, dataList))
  59. @staticmethod
  60. def getDetail(item, count=None):
  61. info = {
  62. "id": item.id,
  63. 'name': item.name,
  64. 'kb_id': item.kb_id,
  65. 'create_time': item.create_time,
  66. 'status': item.status
  67. }
  68. if count is not None:
  69. info['document_count'] = count
  70. return info
  71. @staticmethod
  72. @transaction.atomic
  73. def delete(request):
  74. id = request.POST.get("id")
  75. if not id:
  76. return fail("id为空")
  77. count = DocumentKbm.objects.filter(doc_type_id=id).exclude(status=4).count()
  78. if count > 0:
  79. return fail("该分类下存在文件,请删除后重试")
  80. KbmDocumentType.objects.filter(id=id).update(status=4)
  81. return success("删除成功")
  82. @staticmethod
  83. def Info(request):
  84. info = KbmDocumentType.objects.filter(id=request.POST.get("id")).first()
  85. return success(KbmDocumentTypeService.getDetail(info),"查询成功")
  86. @staticmethod
  87. def selectType0(request):
  88. type_id = request.POST.get("type_id")
  89. kb_id = request.POST.get("kb_id")
  90. if not type_id:
  91. return fail("type_id为空")
  92. count = DocumentKbm.objects.filter(doc_type_id=type_id,kb_id=kb_id).exclude(status=4).count()
  93. return success(count)