|
|
import json
|
|
|
from django.db.models.signals import pre_init
|
|
|
from random import randint
|
|
|
from django.core.mail import send_mail
|
|
|
from django.http import HttpResponse, JsonResponse
|
|
|
from django.shortcuts import render, redirect
|
|
|
|
|
|
from FilmSystem.settings import EMAIL_HOST_USER, BASE_DIR
|
|
|
from userApp import models
|
|
|
# Create your views here.
|
|
|
from userApp.models import User, Birthday, VIP
|
|
|
from django.utils.deprecation import MiddlewareMixin
|
|
|
|
|
|
from mallApp.models import mallOrder
|
|
|
from movieApp.models import AppMovie1, AppMovie2, AppMovie3, AppMovie
|
|
|
from userApp.models import Order
|
|
|
from seatsApp.models import Seats
|
|
|
|
|
|
|
|
|
"""
|
|
|
def index(request):
|
|
|
|
|
|
return HttpResponse("<h1>Hello, World!</h1>")
|
|
|
"""
|
|
|
code = ''
|
|
|
# 主页加载
|
|
|
def index(request):
|
|
|
keyword = request.GET.get('keyword', '')
|
|
|
movie = []
|
|
|
if keyword:
|
|
|
movie = AppMovie.objects.filter(moviename__contains=keyword)
|
|
|
|
|
|
movielist1 = AppMovie.objects.filter(movietype=1);
|
|
|
movielist2 = AppMovie.objects.filter(movietype=2);
|
|
|
movielist3 = AppMovie.objects.filter(movietype=3);
|
|
|
movielist4 = AppMovie.objects.filter(movietype=4);
|
|
|
return render(request, 'index.html', {'movielist1': movielist1, 'movielist2': movielist2, 'movielist3': movielist3, 'movielist4': movielist4, 'keyword': keyword, 'movie': movie})
|
|
|
|
|
|
def all(request):
|
|
|
keyword = request.GET.get('keyword', '')
|
|
|
if keyword:
|
|
|
movie = AppMovie.objects.filter(moviename__contains=keyword)
|
|
|
else:
|
|
|
movie = AppMovie.objects.all()
|
|
|
return render(request, 'all.html', {'movie': movie, 'keyword': keyword})
|
|
|
|
|
|
# 注册时的用户唯一性验证
|
|
|
def account(request):
|
|
|
user = request.GET.get('username')
|
|
|
print("username ==> "+user)
|
|
|
cnt = User.objects.filter(username=user).count()
|
|
|
print(cnt)
|
|
|
if cnt == 1:
|
|
|
# 这里说明已经存在ajax应该返回一个错误进行验证
|
|
|
# exist
|
|
|
print("!!!")
|
|
|
return JsonResponse({'msg':'exist'})
|
|
|
elif cnt == 0:
|
|
|
# 说明此账号可以使用
|
|
|
# ok
|
|
|
print("???")
|
|
|
return JsonResponse({'msg':'ok'})
|
|
|
|
|
|
# 登录
|
|
|
def login(request):
|
|
|
# 获取登录信息
|
|
|
if request.method == 'POST':
|
|
|
username = request.POST.get('username')
|
|
|
password = request.POST.get('password')
|
|
|
# 查询用户信息
|
|
|
user = User.objects.filter(username=username,password=password)
|
|
|
# 判断用户信息
|
|
|
if user:
|
|
|
request.session['username'] = username
|
|
|
request.session['password'] = password
|
|
|
return redirect('/movie')
|
|
|
return render(request,'login.html',{'ERROR':'用户名或密码错误'})
|
|
|
return render(request, 'login.html')
|
|
|
|
|
|
# 无用
|
|
|
def login_check(request):
|
|
|
value = request.session.get('username')
|
|
|
if value:
|
|
|
return render(request, 'index.html')
|
|
|
else:
|
|
|
return redirect('/user/login')
|
|
|
|
|
|
# 验证码正确性检验
|
|
|
def codecheck(requset):
|
|
|
value = requset.GET.get('value')
|
|
|
print('value -----> ' + value)
|
|
|
global code
|
|
|
print('code ------> ' + code)
|
|
|
if value == '':
|
|
|
return JsonResponse({'msg': 'null'})
|
|
|
if code == value:
|
|
|
return JsonResponse({'msg':'ok'})
|
|
|
else:
|
|
|
return JsonResponse({'msg':'error'})
|
|
|
|
|
|
# 发送验证码
|
|
|
def sendcode(request):
|
|
|
email = request.GET.get('email')
|
|
|
print("email -----> " + email)
|
|
|
value = randint(100000, 999999)
|
|
|
global code
|
|
|
print("code -----> " + code)
|
|
|
code = str(value)
|
|
|
print("code -----> " + code)
|
|
|
return JsonResponse({'msg': 'ok', 'asd': code})
|
|
|
# send_status = send_mail('欢迎注册xxx电影院', '你的验证码: ' + code, '1250173534@qq.com', [email], fail_silently=False)
|
|
|
# if send_status:
|
|
|
# return JsonResponse({'msg':'ok', 'asd': code})
|
|
|
# return JsonResponse({'msg':'error'})
|
|
|
|
|
|
# 注册
|
|
|
def register(request):
|
|
|
# 上面的code 怎么和前端提交过来的验证码进行验证
|
|
|
if request.method == 'POST':
|
|
|
# 获取注册信息
|
|
|
realname = request.POST.get('realname')
|
|
|
username = request.POST.get('username')
|
|
|
email = request.POST.get('email')
|
|
|
phonenumber = request.POST.get('phone_num')
|
|
|
password = request.POST.get('password')
|
|
|
gender = request.POST.get('gender')
|
|
|
age = request.POST.get('age')
|
|
|
# 生日
|
|
|
birthday = Birthday(username=username)
|
|
|
birthday.save()
|
|
|
# VIP
|
|
|
vip = VIP(vipname=username)
|
|
|
vip.save()
|
|
|
# 新用户入库
|
|
|
user = User(username=username,password=password,email=email,phonenumber=phonenumber,birthday_id=birthday.id,gender=gender,age=age,realname=realname,vip_id=vip.id)
|
|
|
user.save()
|
|
|
user.image = 'user' + str(user.id) + '.jpg'
|
|
|
user.save()
|
|
|
return render(request,'login.html')
|
|
|
return render(request, 'register.html')
|
|
|
|
|
|
# 过滤器
|
|
|
class AuthMiddleware(MiddlewareMixin):
|
|
|
def process_request(self, request):
|
|
|
username = request.session.get('username',0)
|
|
|
user = User.objects.filter(username=username).first()
|
|
|
request.tracer = user
|
|
|
|
|
|
# 退出登录
|
|
|
def logout(request):
|
|
|
request.session.flush()
|
|
|
return redirect('/')
|
|
|
|
|
|
# 电影订单的展示与删除
|
|
|
def movieorder(request):
|
|
|
user = User.objects.get(username=request.session.get('username'))
|
|
|
type = request.GET.get('type')
|
|
|
# 删除订单
|
|
|
if type == '1':
|
|
|
id = request.GET.get('id')
|
|
|
order = Order.objects.get(id=id)
|
|
|
seatlist = order.seats.split(' ')
|
|
|
movieid = order.movieid
|
|
|
# 删除该订单中被选中的座位(数据表app_seats)
|
|
|
for seat_Order in seatlist:
|
|
|
seat_Seats = Seats.objects.filter(movieid=movieid,row_column=seat_Order)
|
|
|
seat_Seats.delete()
|
|
|
user.vip.money += 50
|
|
|
user.vip.save()
|
|
|
# 删除该条订单记录(数据表app_order)
|
|
|
order.delete()
|
|
|
return redirect('/user/center/movieorder?type=2')
|
|
|
|
|
|
# 响应展示
|
|
|
order = Order.objects.filter(username=request.session.get('username'))
|
|
|
movie = AppMovie.objects.all()
|
|
|
return render(request, 'movie_order.html', {'order': order, 'movie': movie, 'user': user})
|
|
|
|
|
|
# vip等级与金额的展示
|
|
|
def vip(money,user):
|
|
|
user.vip.money += money
|
|
|
user.vip.score += money/5
|
|
|
if user.vip.score > 200:
|
|
|
user.vip.level = '高级会员'
|
|
|
if user.vip.score > 500:
|
|
|
user.vip.level = '贵宾'
|
|
|
if user.vip.score > 1000:
|
|
|
user.vip.level = '至尊'
|
|
|
return user
|
|
|
|
|
|
# 充值
|
|
|
def charge(request):
|
|
|
user = User.objects.get(username=request.session.get('username'))
|
|
|
money = request.GET.get('money')
|
|
|
flag = 'isNum'
|
|
|
for item in money:
|
|
|
if item > '9' or item < '0':
|
|
|
flag = 'notNum'
|
|
|
break
|
|
|
print(flag)
|
|
|
if flag == 'isNum':
|
|
|
money = int(money)
|
|
|
user = vip(money, user)
|
|
|
user.vip.save()
|
|
|
return JsonResponse({'msg':'pass'})
|
|
|
else:
|
|
|
return JsonResponse({'msg':'error'})
|
|
|
# 用户个人信息的展示与修改
|
|
|
def userinfo(request):
|
|
|
# 获取当前用户信息
|
|
|
username = request.session.get('username')
|
|
|
user = User.objects.get(username=username)
|
|
|
orders = Order.objects.filter(username=username)
|
|
|
|
|
|
# 更新个人信息
|
|
|
if request.method == 'POST':
|
|
|
# 用户个人信息修改
|
|
|
user.vip.vipname = user.birthday.username = user.username = request.POST.get('username')
|
|
|
user.realname = request.POST.get('realname')
|
|
|
user.gender = request.POST.get('gender')
|
|
|
user.age = request.POST.get('age')
|
|
|
user.personality = request.POST.get('personality')
|
|
|
user.phonenumber = request.POST.get('phonenumber')
|
|
|
user.email = request.POST.get('email')
|
|
|
# 生日
|
|
|
user.birthday.year = request.POST.get('year')
|
|
|
user.birthday.month = request.POST.get('month')
|
|
|
user.birthday.day = request.POST.get('day')
|
|
|
# 更新表
|
|
|
user.save()
|
|
|
# session修改
|
|
|
request.session['username'] = user.username
|
|
|
# 电影选座订单表(因为该表未用外键关联用户)
|
|
|
for order in orders:
|
|
|
order.username = user.username
|
|
|
order.save()
|
|
|
user.vip.save()
|
|
|
user.birthday.save()
|
|
|
# 展示个人信息
|
|
|
return render(request, 'user_info.html',{'user':user})
|
|
|
|
|
|
# 商城订单的展示与删除
|
|
|
def mallorder(request):
|
|
|
type = request.GET.get('type')
|
|
|
user = User.objects.get(username=request.session.get('username'))
|
|
|
# 删除订单
|
|
|
if type == '1':
|
|
|
id = request.GET.get('id')
|
|
|
print(id)
|
|
|
order = mallOrder.objects.get(id=id)
|
|
|
# 退钱
|
|
|
vip = VIP.objects.get(vipname=user.username)
|
|
|
vip.money += int(order.goodsid.goodsprice)/2
|
|
|
vip.save()
|
|
|
|
|
|
order.delete()
|
|
|
# 响应展示
|
|
|
order = mallOrder.objects.filter(userid=user.id)
|
|
|
|
|
|
if type == '1':
|
|
|
return redirect('/user/center/mallorder?type=2')
|
|
|
return render(request, 'mall_order.html',{'order':order,'user':user})
|
|
|
|
|
|
# 头像更换时的加载
|
|
|
def upload(request):
|
|
|
if request.method == 'POST':
|
|
|
image = request.FILES.get('image')
|
|
|
user = User.objects.get(username=request.session.get('username'))
|
|
|
with open('static/img/' + user.image,'wb') as f:
|
|
|
# 加载图片数据
|
|
|
for line in image:
|
|
|
f.write(line)
|
|
|
print("image.name = ",image.name)
|
|
|
print("user.image = ",user.image)
|
|
|
# 返回ajax
|
|
|
try:
|
|
|
data = {'state':1}
|
|
|
except:
|
|
|
data = {'state':0}
|
|
|
f.close()
|
|
|
return JsonResponse(data)
|
|
|
|
|
|
return redirect('/user/center/userinfo')
|
|
|
|
|
|
# 用户的登录状态(是否有用户登录)
|
|
|
def check_user(request):
|
|
|
if request.session.is_empty():
|
|
|
return JsonResponse({'msg':'none_user'})
|
|
|
return JsonResponse({'msg':'has_user'})
|
|
|
|
|
|
|
|
|
def cancel(request):
|
|
|
|
|
|
id = request.POST.get('id')
|
|
|
row = Order.objects.get(id=id)
|
|
|
seats = row.seats
|
|
|
seats = seats.split()
|
|
|
money = len(seats) * 100
|
|
|
|
|
|
vip = VIP.objects.get(vipname=request.session.get('username'))
|
|
|
vip.money += money
|
|
|
vip.save()
|
|
|
|
|
|
row.delete()
|
|
|
|
|
|
return JsonResponse({'msg':'pass'})
|