1 # mgr.customer.py
2 import json
3
4 from django.http import JsonResponse
5
6 from common.models import Customer
7
8
9 def mgr_login_required(view_func):
10 def wrapper(request, *args, **kwargs):
11 if 'usertype' not in request.session:
12 return JsonResponse({
13 'ret': 302,
14 'msg': '未登录',
15 'redirect': '/mgr/sign.html'
16 }, status=302)
17
18 if request.session['usertype'] != 'mgr':
19 return JsonResponse({
20 'ret': 302,
21 'msg': '用户非mgr类型',
22 'redirect': '/mgr/sign.html'
23 }, status=302)
24
25 return view_func(request, *args, **kwargs)
26
27 return wrapper
28
29
30 @mgr_login_required
31 def dispatcher(request):
32 # 将请求参数统一放到request 的params的属性中,方便后续处理
33
34 # GET请求 参数在url中,通过request对象的GET属性获取
35 if request.method == 'GET':
36 request.params = request.GET
37
38 # POST/PUT/DELETE 请求参数从request 对象的body属性中获取
39 # 根据接口,POST/PUT/DELETE 请求的消息体都是 json格式
40 elif request.method in ['POST', 'PUT', 'DELETE']:
41 request.params = json.loads(request.body)
42
43 # 根据不同的action分派给不同的函数进行处理
44 action = request.params['action']
45 if action == 'list_customer':
46 return listcustomers(request)
47 elif action == 'add_customer':
48 return addcustomer(request)
49 elif action == 'modify_customer':
50 return modifycustomer(request)
51 elif action == 'del_customer':
52 return deletecustomer(request)
53
54 else:
55 return JsonResponse({'ret': 1, 'msg': '不支持该类型http请求'})
56
57
58 def listcustomers(request):
59 # 返回一个 QuerySet 对象,包含所有的表记录
60 qs = Customer.objects.values()
61
62 # 将QuerySet 对象转化为list 类型,否则不能被转化为JSON字符串
63 retlist = list(qs)
64
65 return JsonResponse({'ret': 0, 'retlist': retlist})
66
67
68 def addcustomer(request):
69 info = request.params['data']
70 # 从请求消息中,获取要添加客户的信息
71 # 并且插入到数据库中
72 # 返回值就是对应插入记录的对象
73 record = Customer.objects.create(name=info['name'], phonenumber=info['phonenumber'], address=info['address'])
74
75 return JsonResponse({
76 "ret": 0,
77 "id": record.id
78 })
79
80
81 def modifycustomer(request):
82 # 从请求消息中 获取修改客户的信息
83 # 找到该客户,并且进行修改操作
84 customerid = request.params['id']
85 newdata = request.params['newdata']
86
87 try:
88 # 根据id 从数据库中找到相应的客户记录
89 customer = Customer.objects.get(id=customerid)
90 except Customer.DoesNotExist:
91 return {
92 'ret': 1,
93 'msg': f'id为`{customerid}`的客户不存在'
94 }
95
96 if 'name' in newdata:
97 customer.name = newdata['name']
98
99 if 'phonenumber' in newdata:
100 customer.phonenumber = newdata['phonenumber']
101
102 if 'address' in newdata:
103 customer.address = newdata['address']
104
105 # 注意,一定要执行save才能将修改的信息保存到数据库中
106 customer.save()
107
108 return JsonResponse({'ret': 0})
109
110
111 def deletecustomer(request):
112 customerid = request.params['id']
113
114 try:
115 # 根据id 从数据库中找到相应的客户记录
116 customer = Customer.objects.get(id=customerid)
117 except Customer.DoesNotExist:
118 return {
119 'ret': 1,
120 'msg': f'id 为`{customerid}` 的客户不存在'
121 }
122
123 # delete 方法就将该记录从数据库中删除了
124 customer.delete()
125 return JsonResponse({'ret': 0})