from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status import json import ast from User.models import User,Approval from .models import PreFiling,ProjectRegistration,Bid,Case,Invoice,Caselog,SealApplication,Warehousing,RegisterPlatform,Announcement,LawyerFlie,Schedule,permission,role from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from utility.utility import flies from datetime import datetime from django.db.models import Count, Q class registration(APIView): def post(self,request,*args,**kwargs): """ 预立案登记 :param request: :param args: :param kwargs: :return: """ token = request.META.get('token') times = request.data.get('times') client_username = request.data.get('client_username') party_username = request.data.get('party_username') description = request.data.get('description') Undertaker = request.data.get('Undertaker') user = User.objects.get(token=token).username if not all([times,description,Undertaker]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) PreFiling.objects.create( times=times, client_username=client_username, party_username=party_username, description=description, Undertaker=Undertaker, submit=user ) return Response({'message': '登记成功', 'code': 0}, status=status.HTTP_200_OK) class registrationList(APIView): def post(self,request,*args,**kwargs): """ 预立案登记列表接口 :param request: :param args: :param kwargs: :return: """ project_registration_ids = ProjectRegistration.objects.values_list('user_id', flat=True) bid_ids = Bid.objects.values_list('user_id', flat=True) associated_ids = project_registration_ids.union(bid_ids) prefiling_without_association = PreFiling.objects.exclude(id__in=associated_ids) data = [] for prefiling in prefiling_without_association: data.append({ "id": prefiling.id, "client_username": prefiling.client_username, "party_username": prefiling.party_username, }) return Response({'message': '展示成功','data':data, 'code': 0}, status=status.HTTP_200_OK) class registrationDetail(APIView): def post(self,request,*args,**kwargs): """ 预立案登记展示 :param request: :param args: :param kwargs: :return: """ page = request.data.get('page') per_page = request.data.get('per_page') times = request.data.get('times') end_time = request.data.get('end_time') Undertaker = request.data.get('Undertaker') if not all([page, per_page]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) Q_obj = Q() if times and end_time: Q_obj &= Q(times__gte=times) & Q(times__lte=end_time) if Undertaker: Q_obj &= Q(Undertaker__icontains=Undertaker) pre = PreFiling.objects.filter(Q_obj) total = len(pre) paginator = Paginator(pre, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: data.append({ "id": info.id, 'times': info.times, "client_username": info.client_username, "party_username": info.party_username, "description": info.description, "Undertaker": info.Undertaker, }) return Response({'message': '展示成功',"total":total,'data':data, 'code': 0}, status=status.HTTP_200_OK) class Project(APIView): def post(self,request,*args,**kwargs): """ 立项登记 :param request: :param args: :param kwargs: :return: """ type = request.data.get('type') ContractNo = request.data.get('ContractNo') times = request.data.get('times') responsiblefor = request.data.get('responsiblefor') charge = request.data.get('charge') contract = request.FILES.getlist('contract') personincharge = request.data.get('personincharge') id = request.data.get('user_id') import datetime if contract: contract = flies(contract) pro = ProjectRegistration.objects.create( type=type, ContractNo=ContractNo, times=times, responsiblefor=responsiblefor, charge=charge, contract=json.dumps(contract), state="审核中", user_id=id, ) today = datetime.datetime.now() formatted_date = today.strftime("%Y-%m-%d") Approval.objects.create( title=responsiblefor + "立项登记", content=responsiblefor + "在" + times + "办理立项登记,项目类型:" + type + ",合同编号:" + ContractNo + "描述:"+",负责人:"+responsiblefor+",收费情况:"+charge, times=formatted_date, personincharge=personincharge, state='审核中', type="立项登记", user_id=pro.id ) return Response({'message': '登记成功', 'code': 0}, status=status.HTTP_200_OK) class Projectquerytype(APIView): def post(self,request,*args,**kwargs): """ 立项登记类型查询 :param request: :param args: :param kwargs: :return: """ # 获取当前年份 current_year = datetime.now().year # 今年的开始时间 start_of_year = datetime(current_year, 1, 1) # 今年的结束时间 end_of_year = datetime(current_year, 12, 31) # 格式化结果 start_of_year_str = start_of_year.strftime("%Y-%m-%d") end_of_year_str = end_of_year.strftime("%Y-%m-%d") type = request.data.get('type') count = ProjectRegistration.objects.filter(type=type,times__gte=start_of_year_str,times__lte=end_of_year_str).count() data = { "count": count } return Response({'message': '查询成功',"data":data, 'code': 0}, status=status.HTTP_200_OK) class ProjectDetail(APIView): def post(self,request,*args,**kwargs): """ 立项登记展示 :param request: :param args: :param kwargs: :return: """ page = request.data.get('page') per_page = request.data.get('per_page') times = request.data.get('times') end_time = request.data.get('end_time') client_username = request.data.get('client_username') party_username = request.data.get('party_username') if not all([page, per_page]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) Q_obj = Q() if times and end_time: Q_obj &= Q(times__gte=times) & Q(times__lte=end_time) if client_username: pre = PreFiling.objects.filter(client_username__icontains=client_username) pre_id = pre.values_list('id', flat=True) Q_obj &= Q(user_id__in=pre_id) if party_username: pre = PreFiling.objects.filter(party_username__icontains=party_username) pre_id = pre.values_list('id', flat=True) Q_obj &= Q(user_id__in=pre_id) pre = ProjectRegistration.objects.filter(Q_obj) total = len(pre) paginator = Paginator(pre, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: pre = PreFiling.objects.get(id=info.user_id) data.append({ "id": info.id, 'times': info.times, "type": info.type, "ContractNo": info.ContractNo, "responsiblefor": info.responsiblefor, "charge": info.charge, "contract": info.contract, "state": info.state, "user_id": info.user_id, "client_username": pre.client_username, "party_username": pre.party_username, "description": pre.description, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class EditProject(APIView): def post(self,request,*args,**kwargs): """ 编辑立案登记 :param request: :param args: :param kwargs: :return: """ id = request.data.get('id') type = request.data.get('type') ContractNo = request.data.get('ContractNo') times = request.data.get('times') responsiblefor = request.data.get('responsiblefor') charge = request.data.get('charge') contract = request.FILES.getlist('contract') personincharge = request.data.get('personincharge') pro = ProjectRegistration.objects.get(id=id) import datetime if contract: contract = flies(contract) pro.contract = json.dumps(contract) pro.save(update_fields=['contract']) pro.times = times pro.type = type pro.responsiblefor = responsiblefor pro.charge = charge pro.state ="审核中" pro.save(update_fields=['ContractNo', 'times', 'type', 'responsiblefor', 'charge', 'state',"type2"]) today = datetime.datetime.now() formatted_date = today.strftime("%Y-%m-%d") Approval.objects.create( title=responsiblefor + "立项登记重新编辑", content=responsiblefor + "在" + times + "办理立项登记,项目类型:" + type + ",合同编号:" + ContractNo + "描述:"+ ",负责人:" + responsiblefor + ",收费情况:" + charge, times=formatted_date, personincharge=personincharge, state='审核中', type="立项登记", user_id=pro.id ) return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK) class BidRegistration(APIView): def post(self,request,*args,**kwargs): """ 投标登记 :param request: :param args: :param kwargs: :return: """ BiddingUnit = request.data.get('BiddingUnit') ProjectName = request.data.get('ProjectName') times = request.data.get('times') BiddingAnnouncement = request.FILES.getlist('BiddingAnnouncement') personincharge = request.data.get('personincharge') id = request.data.get('user_id') if not all([BiddingUnit, ProjectName, times, personincharge,id]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) import datetime bib = Bid.objects.create( BiddingUnit=BiddingUnit, ProjectName=ProjectName, times=times, BiddingAnnouncement=json.dumps(flies(BiddingAnnouncement)), state="审核中", user_id=id, ) today = datetime.datetime.now() formatted_date = today.strftime("%Y-%m-%d") Approval.objects.create( title=ProjectName + "投标登记", content="项目名称:"+ProjectName+",申请日期:"+times, times=formatted_date, personincharge=personincharge, state='审核中', type="投标登记", user_id=bib.id ) return Response({'message': '登记成功', 'code': 0}, status=status.HTTP_200_OK) class BidDetail(APIView): def post(self,request,*args,**kwargs): page = request.data.get('page') per_page = request.data.get('per_page') times = request.data.get('times') end_time = request.data.get('end_time') client_username = request.data.get('client_username') party_username = request.data.get('party_username') if not all([page, per_page]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) Q_obj = Q() if times and end_time: Q_obj &= Q(times__gte=times) & Q(times__lte=end_time) if client_username: pre = PreFiling.objects.filter(client_username__icontains=client_username) pre_id = pre.values_list('id', flat=True) Q_obj &= Q(user_id__in=pre_id) if party_username: pre = PreFiling.objects.filter(party_username__icontains=party_username) pre_id = pre.values_list('id', flat=True) Q_obj &= Q(user_id__in=pre_id) pre = Bid.objects.filter(Q_obj) total = len(pre) paginator = Paginator(pre, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: pre = PreFiling.objects.get(id=info.user_id) data.append({ "id": info.id, 'times': info.times, "BiddingUnit": info.BiddingUnit, "ProjectName": info.ProjectName, "BiddingAnnouncement": info.BiddingAnnouncement, "state": info.state, "client_username": pre.client_username, "party_username": pre.party_username, "description": pre.description, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class caseManagement(APIView): def post(self,request,*args,**kwargs): """ 案件管理版块 :param request: :param args: :param kwargs: :return: """ id = request.data.get('user_id') times = request.data.get('times') AgencyContract = request.FILES.getlist('AgencyContract') Contractreturn = request.FILES.getlist('Contractreturn') Closingapplication = request.FILES.getlist('Closingapplication') ChangeRequest = request.data.get('ChangeRequest') paymentcollection = request.data.get('paymentcollection') personincharge = request.data.get('personincharge') case = Case.objects.filter(user_id=id).first() if not case: case_id = Case.objects.create( user_id=id, times=times, AgencyContract=json.dumps(flies(AgencyContract)), Contractreturn=json.dumps(flies(Contractreturn)), Closingapplication=json.dumps(flies(Closingapplication)), ChangeRequest=ChangeRequest, paymentcollection=paymentcollection, state="审核中" ) Approval.objects.create( title="案件管理信息提交", content=times+"提交了一份案件信息,请审核", times=times, personincharge=personincharge, state='审核中', type="案件管理", user_id=case_id.id ) else: if times: case.times = times case.save(update_fields=['times']) if AgencyContract: case.AgencyContract = json.dumps(flies(AgencyContract)) case.save(update_fields=['AgencyContract']) if Contractreturn: case.Contractreturn = json.dumps(flies(Contractreturn)) case.save(update_fields=['Contractreturn']) if Closingapplication: case.Closingapplication = json.dumps(flies(Closingapplication)) case.save(update_fields=['Closingapplication']) if ChangeRequest: case.ChangeRequest = ChangeRequest case.state = "审核中" Approval.objects.create( title="案件管理信息提交", content=times + "提交了一份案件信息,更改了变更申请", times=times, personincharge=personincharge, state='审核中', type="案件管理", user_id=case.id ) case.save(update_fields=['ChangeRequest',"state"]) if paymentcollection: case.paymentcollection = paymentcollection case.save(update_fields=['paymentcollection']) return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK) class caseManagementDetail(APIView): def post(self,request,*args,**kwargs): """ 案件管理版块展示 :param request: :param args: :param kwargs: :return: """ page = request.data.get('page') per_page = request.data.get('per_page') times = request.data.get('times') end_time = request.data.get('end_time') type = request.data.get('type') if not all([page, per_page]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) Q_obj = Q() if times and end_time: Q_obj &= Q(times__gte=times) & Q(times__lte=end_time) if type: por_id = ProjectRegistration.objects.filter(type=type).values_list('user_id', flat=True) Q_obj &= Q(user_id__in=por_id) # if client_username: # pre = PreFiling.objects.filter(client_username__icontains=client_username) # pre_id = pre.values_list('id', flat=True) # Q_obj &= Q(user_id__in=pre_id) # if party_username: # pre = PreFiling.objects.filter(party_username__icontains=party_username) # pre_id = pre.values_list('id', flat=True) # Q_obj &= Q(user_id__in=pre_id) pre = Case.objects.filter(Q_obj) total = len(pre) paginator = Paginator(pre, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: pre = PreFiling.objects.get(id=info.user_id) pro = ProjectRegistration.objects.get(user_id=info.user_id) data.append({ "id": info.id, "ContractNo": pro.ContractNo, # 合同编号 "type_pro": pro.type, # 项目类型 "client_username": pre.client_username, # 委托人信息 "party_username": pre.party_username, # 相对方信息 "description": pre.description, # 项目简述 "responsiblefor": pro.responsiblefor, # 负责人 "charge": pro.charge, 'times': info.times, "AgencyContract": info.AgencyContract, "Contractreturn": info.Contractreturn, "Closingapplication": info.Closingapplication, "ChangeRequest": info.ChangeRequest, "paymentcollection": info.paymentcollection, "state": info.state, "user_id": info.user_id, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class Uploadinvoice(APIView): def post(self,request,*args,**kwargs): """案件管理发票""" id = request.data.get('user_id') amount = request.data.get('amount') file = request.FILES.getlist('file') if not id: return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) Invoice.objects.create( amount=amount, file=json.dumps(flies(file)), user_id=id, ) return Response({'message': '上传成功', 'code': 0}, status=status.HTTP_200_OK) class InvoiceDetail(APIView): def post(self,request,*args,**kwargs): """ 发票展示 :param request: :param args: :param kwargs: :return: """ id = request.data.get('id') if not id: return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) invoices = Invoice.objects.filter(user_id=id) data = [] for invoice in invoices: data.append({ "id": invoice.id, "amount": invoice.amount, "file": invoice.file, }) return Response({'message': '展示成功', 'data': data, 'code': 0}, status=status.HTTP_200_OK) class Log(APIView): def post(self,request,*args,**kwargs): """ 案件日志 """ token = request.META.get('token') id = request.data.get('user_id') content = request.data.get('content') file = request.FILES.getlist('file') if not all([id,content]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) user = User.objects.get(token=token) now = datetime.now() date_str = now.strftime('%Y-%m-%d') Caselog.objects.create( user_id=id, content=content, file=json.dumps(flies(file)), times = date_str, username = user.username, ) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class LogDetail(APIView): def post(self,request,*args,**kwargs): """ 案件日志展示 :param request: :param args: :param kwargs: :return: """ page = request.data.get('page') per_page = request.data.get('per_page') if not all([page, per_page]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) pre = Caselog.objects.all() total = len(pre) paginator = Paginator(pre, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: data.append({ "id": info.id, "content": info.content, # 合同编号 "times": info.times, # 项目类型 "username": info.username, "file": info.file, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class accumulate(APIView): def post(self,request,*args,**kwargs): """ 累加 :param request: :param args: :param kwargs: :return: """ user_id = request.data.get('user_id') paymentcollection = request.data.get('paymentcollection') case = Case.objects.get(user_id=user_id) if case.paymentcollection == "": number = 0 else: number = float(case.paymentcollection) case.paymentcollection = float(number+float(paymentcollection)) case.save(update_fields=['paymentcollection']) return Response({'message': '成功', 'code': 0}, status=status.HTTP_200_OK) class preFilingLinkedCases(APIView): def post(self,request,*args,**kwargs): """ 预立案关联立案列表接口 :param request: :param args: :param kwargs: :return: """ proa = ProjectRegistration.objects.all() data = [] for prefiling in proa: pre = PreFiling.objects.get(id=prefiling.user_id) data.append({ "id": prefiling.user_id, "client_username": pre.client_username, "party_username": pre.party_username, }) return Response({'message': '展示成功', 'data': data, 'code': 0}, status=status.HTTP_200_OK) class Application(APIView): def post(self,request,*args,**kwargs): """ 申请用印 :param request: :param args: :param kwargs: :return: """ token = request.META.get('token') Printingpurpose = request.data.get('Printingpurpose') CaseNumber = request.data.get('CaseNumber') Reason = request.data.get('Reason') seal_number = request.data.get('seal_number') seal_type = request.data.get('seal_type') file = request.FILES.getlist('file') personincharge = request.data.get('personincharge') if not all([Printingpurpose,Reason,seal_number,seal_type,file,personincharge]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) now = datetime.now() date_str = now.strftime('%Y-%m-%d') user = User.objects.get(token=token) sea = SealApplication.objects.create( Printingpurpose=Printingpurpose, CaseNumber=CaseNumber, Reason=Reason, seal_number=seal_number, seal_type=seal_type, file=json.dumps(flies(file)), times=date_str, state="审核中", username=user.username, ) Approval.objects.create( title=user.username + "申请用印", content=user.username + "在" + date_str + "申请用印,用印事由:" + Reason + ",盖章份数:" + seal_number + "盖着类型:" + seal_type, times=date_str, personincharge=personincharge, state='审核中', type="申请用印", user_id=sea.id ) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class ApplicationDetail(APIView): def post(self,request,*args,**kwargs): """ 申请用印展示 :param request: :param args: :param kwargs: :return: """ page = request.data.get('page') per_page = request.data.get('per_page') times = request.data.get('times') end_time = request.data.get('end_time') seal_type = request.data.get('seal_type') if not all([page, per_page]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) Q_obj = Q() if times and end_time: Q_obj &= Q(times__gte=times) & Q(times__lte=end_time) if seal_type: Q_obj &= Q(seal_type=seal_type) seas = SealApplication.objects.filter(Q_obj) total = len(seas) paginator = Paginator(seas, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: data.append({ "id": info.id, "Printingpurpose": info.Printingpurpose, "CaseNumber": info.CaseNumber, "Reason": info.Reason, "seal_number": info.seal_number, "seal_type": info.seal_type, "file": info.file, 'times': info.times, "state": info.state, "username": info.username, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class WarehousingRegistration(APIView): def post(self,request,*args,**kwargs): """ 入库登记 :param request: :param args: :param kwargs: :return: """ unit = request.data.get('unit') mark = request.data.get('mark') lawyer = request.data.get('lawyer') deadline = request.data.get('deadline') contract = request.FILES.getlist('contract') if not all([unit, mark, lawyer, deadline, contract]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) now = datetime.now() date_str = now.strftime('%Y-%m-%d') Warehousing.objects.create( unit=unit, mark=mark, lawyer=lawyer, deadline=deadline, contract=json.dumps(flies(contract)), times=date_str, ) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class WarehousingDetail(APIView): def post(self,request,*args,**kwargs): """ 入库登记展示 :param request: :param args: :param kwargs: :return: """ page = request.data.get('page') per_page = request.data.get('per_page') times = request.data.get('times') end_time = request.data.get('end_time') unit = request.data.get('unit') if not all([page, per_page]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) Q_obj = Q() if times and end_time: Q_obj &= Q(times__gte=times) & Q(times__lte=end_time) if unit: Q_obj &= Q(unit__icontains=unit) seas = Warehousing.objects.filter(Q_obj) total = len(seas) paginator = Paginator(seas, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: data.append({ "id": info.id, "unit": info.unit, "mark": info.mark, "lawyer": info.lawyer, "deadline": info.deadline, "contract": info.contract, "times": info.times, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class PlatformRegistration(APIView): def post(self,request,*args,**kwargs): """ 注册平台登记 :param request: :param args: :param kwargs: :return: """ platform = request.data.get('platform') number = request.data.get('number') password = request.data.get('password') username = request.data.get('username') if not all([platform, number, password, username]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) RegisterPlatform.objects.create( platform=platform, number=number, password=password, username=username, ) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class PlatformDetail(APIView): def post(self,request,*args,**kwargs): """ 注册平台登记展示 :param request: :param args: :param kwargs: :return: """ page = request.data.get('page') per_page = request.data.get('per_page') seas = RegisterPlatform.objects.all() total = len(seas) paginator = Paginator(seas, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: data.append({ "id": info.id, "platform": info.platform, "number": info.number, "password": info.password, "username": info.username, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class EditPlatformDetail(APIView): def post(self,request,*args,**kwargs): """ 注册平台登记编辑 :param request: :param args: :param kwargs: :return: """ ID = request.data.get('id') platform = request.data.get('platform') number = request.data.get('number') password = request.data.get('password') username = request.data.get('username') if not all([platform, number, password, username,ID]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) reg = RegisterPlatform.objects.get(id=ID) reg.platform = platform reg.number = number reg.password = password reg.username = username reg.save(update_fields=['platform', 'number', 'password', 'username']) return Response({'message': '修改成功', 'code': 0}, status=status.HTTP_200_OK) class DeletePlatformDetail(APIView): def post(self,request,*args,**kwargs): """ 删除注册平台登记 :param request: :param args: :param kwargs: :return: """ ID = request.data.get('id') RegisterPlatform.objects.get(id=ID).delete() return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK) class bulletin(APIView): def post(self,request,*args,**kwargs): """ 公告 :param request: :param args: :param kwargs: :return: """ title = request.data.get('title') content = request.data.get('content') file = request.FILES.getlist('file') state = request.data.get('state') token = request.META.get('token') if not all([title, content]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) now = datetime.now() date_str = now.strftime('%Y-%m-%d') bol = 0 if state == "置顶": bol = 1 user = User.objects.get(token=token).username Announcement.objects.create( title=title, content=content, file=json.dumps(flies(file)), username=user, times=date_str, state=bol ) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class BulletinDetail(APIView): def post(self,request,*args,**kwargs): """ 公告展示 :param request: :param args: :param kwargs: :return: """ page = request.data.get('page') per_page = request.data.get('per_page') seas = Announcement.objects.all().order_by('-state', '-times') total = len(seas) paginator = Paginator(seas, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: data.append({ "id": info.id, "title": info.title, "content": info.content, "times": info.times, "file": info.file, "username": info.username, "state": info.state, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class EditBulletin(APIView): def post(self, request, *args, **kwargs): """ 编辑公告 :param request: :param args: :param kwargs: :return: """ ID = request.data.get('id') title = request.data.get('title') content = request.data.get('content') file = request.FILES.getlist('file') state = request.data.get('state') token = request.META.get('HTTP_AUTHORIZATION') if not all([title, content, ID]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) now = datetime.now() date_str = now.strftime('%Y-%m-%d') ann = Announcement.objects.get(id=ID) if state: bol = 0 if state == "置顶": bol = 1 ann.state = bol ann.save(update_fields=['state']) user = User.objects.get(token=token).username if title: ann.title = title # 去掉多余的逗号 ann.save(update_fields=['title']) if content: ann.content = content # 去掉多余的逗号 ann.save(update_fields=['content']) if file: ann.file = json.dumps([f.name for f in file]) # 假设你想保存文件名列表 ann.save(update_fields=['file']) ann.username = user # 去掉多余的逗号 ann.times = date_str # 去掉多余的逗号 ann.save(update_fields=['username', 'times']) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class deleteBulletin(APIView): def post(self,request,*args,**kwargs): ID = request.data.get('id') Announcement.objects.get(id=ID).delete() return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK) class Lawyersdocuments(APIView): def post(self,request,*args,**kwargs): title = request.data.get('title') file = request.FILES.getlist('file') remark = request.data.get('remark') if not all([title, file]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) now = datetime.now() date_str = now.strftime('%Y-%m-%d') LawyerFlie.objects.create( title=title, remark=remark, file=json.dumps(flies(file)), times=date_str, ) return Response({'message': '文件上传成功', 'code': 0}, status=status.HTTP_200_OK) class LawyersdocumentsDetail(APIView): def post(self,request,*args,**kwargs): law = LawyerFlie.objects.all().order_by('-times') total = law.count() data = [] for info in law: data.append({ "id": info.id, "title": info.title, "remark": info.remark, "file": info.file, "times": info.times, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class LwaDetail(APIView): def post(self,request,*args,**kwargs): id = request.data.get('id') LawyerFlie.objects.get(id=id).delete() return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK) class CreateSchedule(APIView): def post(self,request,*args,**kwargs): """ 日常创建 :param request: :param args: :param kwargs: :return: """ title = request.data.get('title') tiems = request.data.get('tiems') end_time = request.data.get('end_time') remark = request.data.get('remark') if not all([title, tiems, end_time]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) Schedule.objects.create( title=title, tiems=tiems, end_time=end_time, remark=remark, state="未完成" ) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class DeleteSchedule(APIView): def post(self,request,*args,**kwargs): id = request.data.get('id') Schedule.objects.get(id=id).delete() return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK) class ScheduleDetail(APIView): def post(self,request,*args,**kwargs): """ 日程展示 :param request: :param args: :param kwargs: :return: """ sches = Schedule.objects.filter(state="未完成") page = request.data.get('page') per_page = request.data.get('per_page') total = len(sches) paginator = Paginator(sches, per_page) try: user_agents_page = paginator.page(page) except PageNotAnInteger: user_agents_page = paginator.page(1) except EmptyPage: user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: data.append({ "id": info.id, "title": info.title, "tiems": info.tiems, "end_time": info.end_time, "remark": info.remark, 'state': info.state, }) return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK) class handleSchedule(APIView): def post(self,request,*args,**kwargs): id = request.data.get('id') state = request.data.get('state') if not all([id, state]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) sc = Schedule.objects.get(id=id) sc.state=state sc.save(update_fields=['state']) return Response({'message': '修改成功', 'code': 0}, status=status.HTTP_200_OK) class AddRermission(APIView): """ 添加权限 """ def post(self,request,*args,**kwargs): permission_name = request.data.get('permission_name') permission_logo = request.data.get('permission_logo') parent = request.data.get('parent') if not all([permission_name,permission_logo,parent]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) permission.objects.create( permission_name=permission_name, permission_logo=permission_logo, parent=parent, ) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class DisplayRermission(APIView): def post(self,request,*args,**kwargs): permissions = permission.objects.all() # 先将数据转换为字典格式 data = [] permission_dict = {} for per in permissions: item = { "id": str(per.id), "permission_name": per.permission_name, "permission_logo": per.permission_logo, "parent": str(per.parent), "children": [] } data.append(item) permission_dict[str(per.id)] = item # 构建树形结构 tree = [] for item in data: parent_id = item["parent"] # 如果parent是0或者不存在,说明是根节点 if parent_id == "0" or parent_id not in permission_dict: tree.append(item) else: # 找到父节点并添加到children中 parent_node = permission_dict.get(parent_id) if parent_node: parent_node["children"].append(item) return Response({ 'message': '展示成功', "data": tree, 'code': 0 }, status=status.HTTP_200_OK) class DeleteRermission(APIView): def post(self,request,*args,**kwargs): ID = request.data.get('id') permission.objects.get(id=ID).delete() return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK) class EditRermission(APIView): def post(self,request,*args,**kwargs): id = request.data.get('id') permission_name = request.data.get('permission_name') permission_logo = request.data.get('permission_logo') parent = request.data.get('parent') per = permission.objects.get(id=id) if permission_name: per.permission_name = permission_name per.save(update_fields=['permission_name']) if permission_logo: per.permission_logo = permission_logo per.save(update_fields=['permission_logo']) if parent: per.parent = parent per.save(update_fields=['parent']) return Response({'message': '修改成功', 'code': 0}, status=status.HTTP_200_OK) class addRole(APIView): def post(self,request,*args,**kwargs): RoleName = request.data.get('RoleName') remark = request.data.get('remark') if not all([RoleName]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) role.objects.create(RoleName=RoleName,remark=remark) return Response({'message': '添加成功', 'code': 0}, status=status.HTTP_200_OK) class DeleteRole(APIView): def post(self,request,*args,**kwargs): id = request.data.get('id') role.objects.get(id=id).delete() return Response({'message': '删除成功', 'code': 0}, status=status.HTTP_200_OK) class EditRole(APIView): def post(self,request,*args,**kwargs): id = request.data.get('id') RoleName = request.data.get('RoleName') remark = request.data.get('remark') if not all([id]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) ro = role.objects.get(id=id) if RoleName: ro.RoleName = RoleName ro.save(update_fields=['RoleName']) if remark: ro.remark = remark ro.save(update_fields=['remark']) return Response({'message': '编辑成功', 'code': 0}, status=status.HTTP_200_OK) class displayRole(APIView): def post(self,request,*args,**kwargs): RoleName = request.data.get('RoleName') obj = Q() if RoleName: obj = Q(RoleName__icontains=RoleName) roles = role.objects.filter(obj) data = [] for ro in roles: data.append({ "id": str(ro.id), "role_name": ro.RoleName, "remark": ro.remark, }) return Response({'message': '展示成功','data' :data,'code': 0}, status=status.HTTP_200_OK) class modifypermissions(APIView): def post(self,request,*args,**kwargs): id = request.data.get('id') permissionId = request.data.get('permissionId') if not all([id,permissionId]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) permissionId = ast.literal_eval(permissionId) ro = role.objects.get(id=id) ro.permissionId = permissionId ro.save(update_fields=['permissionId']) return Response({'message': '权限修改成功', 'code': 0}, status=status.HTTP_200_OK)