ProductCategoryService.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from django.core.paginator import Paginator
  2. from DCbackend.utils.common import success, fail, pageData
  3. from backend.Form.BrandForm import BrandForm
  4. from backend.Form.ProductCategoryForm import ProductCategoryForm
  5. from backend.Form.ProductForm import ProductForm
  6. from backend.models import ProjectCategory, Brand, Product, ProductCategory
  7. class ProductCategoryService:
  8. @staticmethod
  9. def Create(request):
  10. form = ProductCategoryForm(request.POST)
  11. if form.is_valid():
  12. form.save()
  13. return success("成功")
  14. else:
  15. return fail(form.errors)
  16. @staticmethod
  17. def Update(request):
  18. data = ProductCategory.objects.filter(id=request.POST.get("id")).first();
  19. if data is not None:
  20. data.name = request.POST.get("name")
  21. data.parent_id = request.POST.get("parent_id")
  22. data.attrs = request.POST.get("attrs")
  23. data.status = request.POST.get("status")
  24. data.save()
  25. return success("成功")
  26. else:
  27. return fail("更新产品分类失败")
  28. @staticmethod
  29. def Info(request):
  30. info = ProductCategory.objects.filter(id=request.POST.get("id")).first()
  31. return success(ProductCategoryService.getDetail(info))
  32. @staticmethod
  33. def Delete(request):
  34. ProductCategory.objects.filter(id=request.POST.get("id")).update(status=4)
  35. return success("成功")
  36. @staticmethod
  37. def getDetail(item: ProductCategory):
  38. parentData = {}
  39. if item.parent_id > 0:
  40. parentItem = ProductCategory.objects.filter(id=item.parent_id).first()
  41. parentData = ProductCategoryService.getDetail(parentItem)
  42. return {
  43. "id": item.id,
  44. 'parent_id': item.parent_id,
  45. 'parentData': parentData,
  46. 'name': item.name,
  47. 'attrs': item.attrs,
  48. 'createTime': item.create_time,
  49. 'children':[],
  50. 'status': item.status
  51. }
  52. @staticmethod
  53. def Search(request):
  54. page = request.POST.get("page")
  55. pageSize = request.POST.get("pageSize")
  56. if page is None:
  57. page = 1
  58. if pageSize is None:
  59. pageSize = 1
  60. where = {}
  61. parent_id = request.POST.get("parent_id")
  62. if parent_id:
  63. where["parent_id"] = parent_id
  64. else:
  65. where['parent_id'] = 0
  66. name = request.POST.get("name")
  67. if name:
  68. where["name__icontains"] = name
  69. status = request.POST.get("status")
  70. if status:
  71. where['status'] = status
  72. paginator = Paginator(ProductCategory.objects.filter(**where).exclude(status=4).order_by("-id"),
  73. pageSize) # 每页显示10条数据
  74. page_obj = paginator.get_page(page)
  75. dataList = []
  76. for item in page_obj:
  77. info = ProductCategoryService.getDetail(item)
  78. dataList.append(info)
  79. return success(pageData(page, pageSize, paginator.num_pages, paginator.count, dataList))
  80. @staticmethod
  81. def getAllCategories():
  82. top = ProductCategory.objects.filter(status=5, parent_id=0).order_by("id").all()
  83. dataList = []
  84. for item in top:
  85. itemData={
  86. "id": item.id,
  87. 'children': ProductCategoryService.getSubCategory(item),
  88. 'value': item.id,
  89. 'label': item.name,
  90. 'attrs': item.attrs,
  91. }
  92. dataList.append(itemData)
  93. return success(dataList)
  94. @staticmethod
  95. def getSubCategory(topCategory: ProductCategory):
  96. items = ProductCategory.objects.filter(status=5, parent_id=topCategory.id).order_by("id").all()
  97. dataList = []
  98. for item in items:
  99. itemData = {
  100. "id": item.id,
  101. 'label': item.name,
  102. 'value': item.id,
  103. 'attrs':item.attrs,
  104. }
  105. dataList.append(itemData)
  106. return dataList