123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- from django.core.paginator import Paginator
- import json
- from DCbackend.utils.common import success, fail, pageData
- from backend.Form.ProjectCategoryForm import ProjectCategoryForm
- from backend.Form.ProjectForm import ProjectForm
- from backend.Service.CustomerService import CustomerService
- from backend.Service.ProjectCategoryService import ProjectCategoryService
- from backend.models import ProjectCategory, DefaultStatus, Project, Customer, ProjectDocument
- class ProjectService:
- @staticmethod
- def Create(request):
- form = ProjectForm(request.POST)
- if form.is_valid():
- form.save()
- project_id = form.instance.id
- links = json.loads(request.POST.get("links"))
- for p in links:
- pr = ProjectDocument()
- pr.project_id = project_id
- pr.doc_id = p
- pr.status = 5
- pr.save()
- return success("成功")
- else:
- return fail(form.errors)
- @staticmethod
- def Update(request):
- data = Project.objects.filter(id=request.POST.get("id")).first()
- if data is not None:
- data.name = request.POST.get("name")
- data.intro = request.POST.get("intro")
- data.customer_id = request.POST.get("customer_id")
- data.category_id = request.POST.get("category_id")
- data.status = request.POST.get("status")
- data.save()
- project_id = data.id
- ProjectDocument.objects.filter(project_id=project_id).update(status=4)
- links = json.loads(request.POST.get("links"))
- for p in links:
- pr = ProjectDocument()
- pr.project_id = project_id
- pr.doc_id = p
- pr.status = 5
- pr.save()
- return success("成功")
- else:
- return fail("保存分类失败")
- @staticmethod
- def Info(request):
- info = Project.objects.filter(id=request.POST.get("id")).first()
- return success(ProjectService.getDetail(info))
- @staticmethod
- def Delete(request):
- Project.objects.filter(id=request.POST.get("id")).update(status=4)
- return success("成功")
- @staticmethod
- def getDetail(item: Project):
- category = ProjectCategory.objects.filter(id=item.category_id).first()
- if category:
- categoryInfo = ProjectCategoryService.getDetail(category)
- c = Customer.objects.filter(id=item.customer_id).first()
- if c:
- customerInfo = CustomerService.getDetail(c)
- prList = ProjectDocument.objects.filter(project_id=item.id).exclude(status=4).all()
- linkDoc = []
- for it in prList:
- linkDoc.append(it.doc_id)
- return {
- "id": item.id,
- 'name': item.name,
- 'intro': item.intro,
- 'customerId': item.customer_id,
- 'categoryId': item.category_id,
- 'createTime': item.create_time,
- 'category': categoryInfo,
- 'status': item.status,
- 'customer': customerInfo,
- 'linkDoc':linkDoc,
- }
- @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 = {}
- name = request.POST.get("name", '')
- if name:
- where["name__icontains"] = name
- status = request.POST.get("status")
- if status:
- where['status'] = status
- paginator = Paginator(Project.objects.filter(**where).exclude(status=4).order_by("-id"), pageSize) # 每页显示10条数据
- page_obj = paginator.get_page(page)
- dataList = []
- for item in page_obj:
- adminInfo = ProjectService.getDetail(item)
- dataList.append(adminInfo)
- return success(pageData(page, pageSize, paginator.num_pages, paginator.count, dataList))
|