123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- import json
- from django.core.paginator import Paginator
- from DCbackend.utils.common import success, fail, pageData
- from backend.Form.BrandForm import BrandForm
- from backend.Form.ProductForm import ProductForm
- from backend.Service.BrandService import BrandService
- from backend.Service.ProductCategoryService import ProductCategoryService
- from backend.Service.SupplierService import SupplierService
- from backend.models import ProjectCategory, Brand, Product, ProductCategory, Supplier, ProductDocument
- class ProductService:
- @staticmethod
- def Create(request):
- form = ProductForm(request.POST)
- if form.is_valid():
- form.save()
- links = json.loads(request.POST.get("links"))
- for link in links:
- pd = ProductDocument()
- pd.document_id = link
- pd.product_id = form.instance.id
- pd.status = 5
- pd.save()
- return success("成功")
- else:
- return fail(form.errors)
- @staticmethod
- def Update(request):
- data = Product.objects.filter(id=request.POST.get("id")).first()
- if data is not None:
- data.category_id = request.POST.get("category_id")
- data.brand_id = request.POST.get("brand_id")
- data.supplier_id = request.POST.get("supplier_id")
- data.name = request.POST.get("name")
- data.intro = request.POST.get("intro")
- data.price = request.POST.get("price")
- data.product_area = request.POST.get("product_area")
- data.is_safe = request.POST.get("is_safe")
- data.safe_time = request.POST.get("safe_time")
- data.is_package = request.POST.get("is_package")
- data.package_intro = request.POST.get("package_intro")
- data.qualifications = request.POST.get("qualifications")
- data.status = request.POST.get("status")
- data.attrs = request.POST.get("attrs")
- data.save()
- links = json.loads(request.POST.get("links"))
- ProductDocument.objects.filter(product_id=data.id).update(status=4)
- for link in links:
- pd = ProductDocument()
- pd.document_id = link
- pd.product_id = data.id
- pd.status = 5
- pd.save()
- return success("成功")
- else:
- return fail("更新产品信息")
- @staticmethod
- def Info(request):
- info = Product.objects.filter(id=request.POST.get("id")).first()
- return success(ProductService.getDetail(info))
- @staticmethod
- def Delete(request):
- Product.objects.filter(id=request.POST.get("id")).update(status=4)
- return success("成功")
- @staticmethod
- def getDetail(item: Product):
- category = ProductCategory.objects.filter(id=item.category_id).first()
- categoryData = ProductCategoryService.getDetail(category)
- brand = Brand.objects.filter(id=item.brand_id).first()
- brandData = BrandService.getDetail(brand)
- supplier = Supplier.objects.filter(id=item.supplier_id).first()
- supplierData = SupplierService.getDetail(supplier)
- where = {}
- where["product_id"] = item.id
- dpList = ProductDocument.objects.filter(**where).exclude(status=4).all()
- linkProduct = []
- for it in dpList:
- # temp = {
- # 'id': it.id,
- # 'product_id': it.product_id,
- # 'document_id': it.document_id,
- # }
- linkProduct.append( it.document_id)
- return {
- "id": item.id,
- 'category_id': item.category_id,
- 'brand_id': item.brand_id,
- 'supplier_id': item.supplier_id,
- 'linkDocument': linkProduct,
- 'category': categoryData,
- 'supplier': supplierData,
- 'brand': brandData,
- 'name': item.name,
- 'intro': item.intro,
- 'price': item.price,
- 'product_area': item.product_area,
- 'is_safe': item.is_safe,
- 'safe_time': item.safe_time,
- 'is_package': item.is_package,
- 'package_intro': item.package_intro,
- 'qualifications': item.qualifications,
- 'createTime': item.create_time,
- 'attrs': item.attrs,
- 'status': item.status
- }
- @staticmethod
- def Search(request):
- page = request.POST.get("page")
- pageSize = request.POST.get("pageSize")
- if page is None:
- page = 1
- if pageSize is None:
- pageSize = 1
- where = {}
- category_id = request.POST.get("category_id")
- if category_id:
- where["category_id"] = category_id
- brand_id = request.POST.get("brand_id")
- if brand_id:
- where["brand_id"] = brand_id
- ids = request.POST.get("ids")
- if ids:
- idRange = json.loads(ids)
- where['id__in'] = idRange
- supplier_id = request.POST.get("supplier_id")
- if supplier_id:
- where["supplier_id"] = supplier_id
- name = request.POST.get("name")
- if name:
- where["name__icontains"] = name
- status = request.POST.get("status")
- if status:
- where['status'] = status
- paginator = Paginator(Product.objects.filter(**where).exclude(status=4).order_by("-id"), pageSize) # 每页显示10条数据
- page_obj = paginator.get_page(page)
- dataList = []
- for item in page_obj:
- info = ProductService.getDetail(item)
- dataList.append(info)
- return success(pageData(page, pageSize, paginator.num_pages, paginator.count, dataList))
|