123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- import logging
- import time
- from django.db.models import Q
- from django.utils.decorators import method_decorator
- from django.views import View
- from django.views.decorators.csrf import csrf_exempt
- from Model.models import UserModel
- from Object.ResponseObject import ResponseObject
- from Object.TokenObject import TokenObject
- from Service.ModelService import ModelService
- class UserView(View):
- @method_decorator(csrf_exempt)
- def dispatch(self, request, *args, **kwargs):
- return super(UserView, self).dispatch(request, *args, **kwargs)
- def get(self, request, *args, **kwargs):
- # print('get')
- request.encoding = 'utf-8'
- request_dict = request.GET
- operation = kwargs.get('operation')
- return self.validation(request_dict, operation)
- def post(self, request, *args, **kwargs):
- request.encoding = 'utf-8'
- request_dict = request.POST
- operation = kwargs.get('operation')
- return self.validation(request_dict, operation)
- def validation(self, request_dict, operation):
- if operation == 'login':
- return self.login(request_dict)
- elif operation == 'logout':
- return self.logout(request_dict)
- else:
- token = request_dict.get('token', None)
- token = TokenObject(token)
- response = ResponseObject()
- if token.code != 0:
- return response.json(token.code)
- if operation == 'query':
- return self.do_query(request_dict)
- elif operation == 'modify':
- return self.do_modify_password(request_dict)
- elif operation == 'list':
- return self.do_list(request_dict)
- elif operation == 'adminAdd':
- return self.do_admin_add(token.userID, request_dict, response)
- elif operation == 'adminDelete':
- return self.do_admin_delete(token.userID, request_dict, response)
- elif operation == 'adminUpdate':
- return self.do_admin_update(token.userID, request_dict, response)
- elif operation == 'adminReset':
- return self.do_admin_reset(token.userID, request_dict, response)
- else:
- return ResponseObject().json(309)
- def login(self, request_dict):
- djangoLogger = logging.getLogger('info')
- djangoLogger.info('进入登录接口')
- username = request_dict.get('username', None)
- password = request_dict.get('password', None)
- response = ResponseObject()
- if username is None or password is None:
- return response.json(444)
- try:
- user = UserModel.objects.filter(username=username)
- if not user.exists():
- return response.json(99)
- if user[0].password != password:
- return response.json(99)
- else:
- token = TokenObject()
- res = token.generate({'userID': user[0].id})
- res['permission'] = user[0].permission
- res['username'] = user[0].username
- user[0].online = 1
- update = {
- 'online': 1
- }
- user.update(**update)
- return response.json(0, res)
- except Exception as e:
- djangoLogger.info('登录接口异常:{}'.format(repr(e)))
- return response.json(99)
- def do_query(self, request_dict):
- # print('do_query')
- token = TokenObject(request_dict.get('token', None))
- # page = request_dict.get('page', None)
- # line = request_dict.get('line', None)
- # username = request_dict.get('username', None)
- response = ResponseObject()
- if token.code != 0:
- return response.json(token.code)
- # if username:
- # user_qs = UserModel.objects.filter(username__icontains=username)
- # if user_qs.exists():
- # users = list(user_qs.values('username'))
- # return response.json(0, {'data': users})
- # else:
- # return response.json(0, {'data': []})
- # elif page and line:
- # print('query_page')
- # user_qs = UserModel.objects.filter(id=token.userID)
- # if user_qs.exists():
- # user = user_qs[0]
- # if user.permission == '0':
- # return self.do_query_pagination(int(page), int(line), response)
- # else:
- # return response.json(404)
- # else:
- # return response.json(9)
- user_qs = UserModel.objects.filter(~Q(Q(permission='0'))).values('id', 'username')
- return response.json(0, {'data': list(user_qs)})
- def do_query_pagination(self, page, line, response):
- # print('query start')
- user_qs = UserModel.objects.filter().values()
- if user_qs.exists():
- count = user_qs.count()
- start = (page - 1) * line
- end = start + line
- users = list(user_qs[start:end])
- # print('query end')
- return response.json(0, {'count': count, 'data': users})
- else:
- return response.json(0, {'count': 0, 'data': []})
- def do_modify_password(self, request_dict):
- token = request_dict.get('token', None)
- old_password = request_dict.get('oldPassword', None)
- new_password = request_dict.get('newPassword', None)
- token = TokenObject(token)
- response = ResponseObject()
- if token.code != 0:
- return response.json(token.code)
- if old_password and new_password:
- user_qs = UserModel.objects.filter(id=token.userID)
- if user_qs.exists():
- if user_qs[0].password != old_password:
- return response.json(47)
- user = {
- 'password': new_password
- }
- user_qs.update(**user)
- return response.json(0)
- else:
- return response.json(9)
- else:
- return response.json(444)
- def logout(self, request_dict):
- token = request_dict.get('token', None)
- token = TokenObject(token)
- response = ResponseObject()
- if token.code != 0:
- return response.json(0)
- user_qs = UserModel.objects.filter(id=token.userID)
- if user_qs.exists():
- user = {
- 'online': 0
- }
- user_qs.update(**user)
- return response.json(0)
- else:
- return response.json(0)
- def do_list(self, request_dict):
- token = request_dict.get('token', None)
- response = ResponseObject()
- token = TokenObject(token)
- if token.code != 0:
- return response.json(token.code)
- page = request_dict.get('page', None)
- line = request_dict.get('limit', None)
- if page and line:
- user_qs = UserModel.objects.filter()
- res = {
- 'count': user_qs.count(),
- 'data': []
- }
- if user_qs.exists():
- page = int(page)
- line = int(line)
- start = (page - 1) * line
- end = start + line
- user_qs = user_qs[start:end].values('id', 'username', 'permission', 'phone', 'login_time', 'add_time')
- res['data'] = list(user_qs)
- return response.json(0, res)
- else:
- return response.json(444)
- def do_admin_add(self, userID, request_dict, response):
- perm = ModelService.check_perm(userID, 0)
- if not perm:
- return response.json(309)
- print(request_dict)
- username = request_dict.get('username', None)
- password = request_dict.get('password', None)
- phone = request_dict.get('phone', None)
- role = request_dict.get('role', None)
- if username and password and role:
- user = UserModel()
- user.username = username
- user.password = password
- user.permission = role
- user.phone = phone
- user.add_time = int(time.time())
- user.save()
- return response.json(0)
- else:
- return response.json(444)
- def do_admin_delete(self, userID, request_dict, response):
- perm = ModelService.check_perm(userID, 0)
- if not perm:
- return response.json(309)
- username = request_dict.get('username', None)
- if username:
- user_qs = UserModel.objects.filter(username=username)
- if user_qs.exists():
- user_qs.delete()
- return response.json(0)
- else:
- return response.json(9)
- else:
- return response.json(444)
- def do_admin_update(self, userID, request_dict, response):
- perm = ModelService.check_perm(userID, 0)
- if not perm:
- return response.json(309)
- username = request_dict.get('username', None)
- role = request_dict.get('role', None)
- password = request_dict.get('password', None)
- phone = request_dict.get('phone', None)
- if username:
- update_data = {}
- if role:
- update_data['permission'] = role
- if password:
- update_data['password'] = password
- if phone:
- update_data['phone'] = phone
- UserModel.objects.filter(username=username).update(**update_data)
- return response.json(0)
- else:
- return response.json(444)
- def do_admin_reset(self, userID, request_dict, response):
- perm = ModelService.check_perm(userID, 0)
- if not perm:
- return response.json(309)
- username = request_dict.get('username', None)
- if username:
- user_qs = UserModel.objects.filter(username=username)
- if user_qs.exists():
- user_qs.update(password='123456')
- return response.json(0)
- else:
- return response.json(9)
- else:
- return response.json(444)
|