import datetime import uuid from django.http import HttpResponseRedirect from django.shortcuts import render from django.views import View from .models import * class ChooseLoginView(View): # 选择登录 def get(self, request): return render(request, 'chooselogin.html') class PatientLoginView(View): # 患者登录 def get(self, request): return render(request, 'patientlogin.html') def post(self, request): phone = request.POST.get('phone','') password = request.POST.get('password','') patient_list = Patient.objects.filter(phone=phone, password=password) if patient_list: print(type(patient_list[0])) request.session.clear() request.session['patient'] = patient_list[0].name return HttpResponseRedirect("/patientcenter/") else: return HttpResponseRedirect("/patientlogin/") class DoctorLoginView(View): def get(self, request): return render(request, 'doctorlogin.html') def post(self, request): phone = request.POST.get('phone','') password = request.POST.get('password','') doctor_list = Doctor.objects.filter(phone=phone, password=password) if doctor_list: request.session['doctor'] = doctor_list[0].name request.session['doctor_image'] = str(doctor_list[0].img) return HttpResponseRedirect("/doctorcenter/") else: return HttpResponseRedirect("/doctorlogin/") class PatientRegisterView(View): # 患者注册 def get(self, request): return render(request, 'patientregister.html') def post(self, request): phone = request.POST.get('phone','') patientlist = Patient.objects.filter(phone=phone) if patientlist: return render(request, 'patientregister.html',{"err":1,"tips":"该号码已被注册"}) else: password = request.POST.get('password','') name = request.POST.get('name','') sex = request.POST.get('sex','') age = request.POST.get('age','') patient = Patient.objects.create(phone=phone, password=password, name=name, sex=sex, age=age) if patient: return HttpResponseRedirect("/patientlogin/") return HttpResponseRedirect("/patientregister/") class PatientCenterView(View): def get(self, request): patient = request.session.get('patient','') print(patient) return render(request, 'patientcenter.html',{"patient_name":patient}) class ChooseDepartmentView(View): def get(self, request): department_list = Department.objects.filter().all() return render(request, 'choosedepartment.html',{"department_list":department_list}) class ChooseDoctorAndTimeView(View): def get(self, request, department_id): department_id = int(department_id) department_name= Department.objects.get(id=department_id).name doctor_list = Doctor.objects.filter(department_id=department_id) doctor_time_number_list = [] for doctor in doctor_list: doctor_time_number_list.append([doctor,TimeNumber.objects.get(doctor_id=doctor.id)]) tomorrow =(datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d") return render(request, 'choosedoctorandtime.html',{"department_name":department_name,"doctor_time_number_list":doctor_time_number_list,"tomorrow":tomorrow,"department_id":department_id}) class ConfirmRegistrationView(View): def get(self, request, department_id, doctor_id, consultation_hour): time_number = TimeNumber.objects.get(doctor_id=doctor_id) if consultation_hour[:2] == '08' and time_number.eight == 0: return elif consultation_hour[:2] == '09' and time_number.nine == 0: return elif consultation_hour[:2] == '10' and time_number.ten == 0: return elif consultation_hour[:2] == '11' and time_number.eleven == 0: return elif consultation_hour[:2] == '14' and time_number.fourteen == 0: return elif consultation_hour[:2] == '15' and time_number.fifteen == 0: return elif consultation_hour[:2] == '16' and time_number.sixteen == 0: return elif consultation_hour[:2] == '17' and time_number.seventeen == 0: return department_id = int(department_id) doctor_id = int(doctor_id) patient = request.session.get('patient','') doctor = Doctor.objects.get(id=doctor_id) department = Department.objects.get(id=department_id) patient_name = patient doctor_name = doctor registration_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") consultation_hour = (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d")+" "+consultation_hour patient_id = Patient.objects.filter(name=patient).first().id address = department.address registration_price =doctor.registration_price return render(request, 'confirmregistration.html',{"patient_name":patient_name,"doctor_name":doctor_name,"registration_time":registration_time,"consultation_hour":consultation_hour,"patient_id":patient_id,"address":address,"registration_price":registration_price,"doctor_id":doctor_id}) def post(self, request,*args,**kwargs): registration_time = request.POST.get('registration_time','') consultation_hour = request.POST.get('consultation_hour','') illness = request.POST.get('illness','') doctor_id = request.POST.get('doctor_id','') patient_id = request.POST.get('patient_id','') address = request.POST.get('address','') out_trade_num = uuid.uuid4().hex payway = '支付宝' status = '已支付,未检查' register =Register.objects.filter(consultation_hour=consultation_hour,patient_id=patient_id) if register: return render(request, 'confirmregistration.html',{"message":"支付失败,该时间段已有挂号单"}) else: Register.objects.create(registration_time=registration_time,consultation_hour=consultation_hour,illness=illness,address=address,out_trade_num=out_trade_num,payway=payway,status=status,patient_id=patient_id,doctor_id=doctor_id) time_number = TimeNumber.objects.filter(doctor_id=doctor_id).first() if consultation_hour[11:13] == '08': time_number.eight = time_number.eight - 1 elif consultation_hour[11:13] == '09': time_number.nine = time_number.nine - 1 elif consultation_hour[11:13] == '10': time_number.ten = time_number.ten - 1 elif consultation_hour[11:13] == '11': time_number.eleven = time_number.eleven - 1 elif consultation_hour[11:13] == '14': time_number.fourteen = time_number.fourteen - 1 elif consultation_hour[11:13] == '15': time_number.fifteen = time_number.fifteen - 1 elif consultation_hour[11:13] == '16': time_number.sixteen = time_number.sixteen - 1 elif consultation_hour[11:13] == '17': time_number.seventeen = time_number.seventeen - 1 time_number.save() return render(request, 'confirmregistration.html',{"message":"支付成功"}) class PatientShowRegistrationView(View): def get(self, request): patient = Patient.objects.filter(name=request.session.get('patient','')).first() register_list = Register.objects.filter(patient_id=patient.id) return render(request, 'patientshowregistration.html',{"register_list":register_list}) class DoctorCenterView(View): def get(self, request): doctor =request.session.get('doctor','') doctor_image = request.session.get('doctor_image','') return render(request, 'doctorcenter.html',{"doctor":doctor,"doctor_image":doctor_image}) class DoctorShowRegistrationView(View): def get(self, request): doctor = request.session.get('doctor','') doctor = Doctor.objects.filter(name=doctor).first() try: register_list =doctor.register_set.order_by('consultation_hour').filter(status='已支付,未检查').all() except Exception as e: print(e) register_list=[] return render(request, 'doctorshowregistration.html',{"register_list":register_list,"doctor_image":doctor.img}) def post(self, request): register_id = request.POST.get('register_id','') register = Register.objects.get(id=register_id) register.status = '已检查' print(register.consultation_hour) consultation_hour = str(register.consultation_hour)[11:13] register.save() doctor =request.session.get('doctor','') doctor =Doctor.objects.filter(name=doctor).first() time_number = TimeNumber.objects.filter(doctor_id=doctor.id).first() if consultation_hour == '08': time_number.eight = time_number.eight + 1 elif consultation_hour == '09': time_number.nine = time_number.nine + 1 elif consultation_hour == '10': time_number.ten = time_number.ten + 1 elif consultation_hour == '11': time_number.eleven = time_number.eleven + 1 elif consultation_hour == '14': time_number.fourteen = time_number.fourteen + 1 elif consultation_hour == '15': time_number.fifteen = time_number.fifteen + 1 elif consultation_hour == '16': time_number.sixteen = time_number.sixteen + 1 elif consultation_hour == '17': time_number.seventeen = time_number.seventeen + 1 time_number.save() try: register_list =doctor.register_set.order_by('consultation_hour').filter(status='已支付,未检查').all() except Exception as e: print(e) register_list=[] return render(request, 'doctorshowregistration.html',{"register_list":register_list,"doctor_image":doctor.img})