|
@@ -1,331 +0,0 @@
|
|
|
-from django.shortcuts import render, redirect, HttpResponse
|
|
|
-from django.http import JsonResponse, HttpResponseRedirect
|
|
|
-from django.views.generic import View
|
|
|
-# from . import models
|
|
|
-from .models import User, Menu
|
|
|
-from django.core.serializers import serialize
|
|
|
-from rest_framework.views import APIView
|
|
|
-from api.serializers import *
|
|
|
-import json
|
|
|
-
|
|
|
-# Create your views here.
|
|
|
-
|
|
|
-
|
|
|
-def format_useinfo(user):
|
|
|
- format_user = json.loads(
|
|
|
- serialize('json', user, ensure_ascii=False)
|
|
|
- )
|
|
|
- for item in format_user:
|
|
|
- res = item.get('fields')
|
|
|
- res['userId'] = item.get('pk')
|
|
|
- res['roles'] = [
|
|
|
- {
|
|
|
- 'roleName': res.get('roleName'), 'value': res.get('value')
|
|
|
- }
|
|
|
- ]
|
|
|
- res.pop('roleName')
|
|
|
- res.pop('value')
|
|
|
- res.pop('password')
|
|
|
- return res
|
|
|
-
|
|
|
-
|
|
|
-def format_uselist(list):
|
|
|
- json_user = json.loads(
|
|
|
- serialize('json', list, ensure_ascii=False)
|
|
|
- )
|
|
|
- res = []
|
|
|
- for item in json_user:
|
|
|
- item['fields'].pop('value')
|
|
|
- item['fields'].pop('token')
|
|
|
- user = item.get('fields')
|
|
|
- user['id'] = item.get('pk')
|
|
|
- # res['roles'] = [
|
|
|
- # {
|
|
|
- # 'roleName': res.get('roleName'), 'value': res.get('value')
|
|
|
- # }
|
|
|
- # ]
|
|
|
- # res.pop('roleName')
|
|
|
- # res.pop('value')
|
|
|
- # res.pop('password')
|
|
|
- res.append(user)
|
|
|
- return res
|
|
|
-
|
|
|
-
|
|
|
-def format_login_result(user):
|
|
|
- format_user = json.loads(
|
|
|
- serialize('json', user, ensure_ascii=False)
|
|
|
- )
|
|
|
- for item in format_user:
|
|
|
- res = {}
|
|
|
- res['userId'] = item.get('pk')
|
|
|
- res['menus'] = item.get('menus')
|
|
|
- res['token'] = item.get('fields').get('token')
|
|
|
- res['roles'] = [
|
|
|
- {
|
|
|
- 'roleName': item.get('fields').get('roleName'), 'value': item.get('fields').get('value')
|
|
|
- }
|
|
|
- ]
|
|
|
- return res
|
|
|
-
|
|
|
-
|
|
|
-def format_menus(querySetObj, mode):
|
|
|
- # querySet 转json对象
|
|
|
- data = json.loads(serialize('json', querySetObj, ensure_ascii=False))
|
|
|
- # 定义一级菜单列表(无父id)
|
|
|
- menus = []
|
|
|
- # 子菜单列表
|
|
|
- childrens = []
|
|
|
- for item in data:
|
|
|
- item['fields']['id'] = item.get('pk')
|
|
|
- # mode True -- 否将某些字段合并处理成前台路由需要的数据结构;
|
|
|
- if mode:
|
|
|
- item['fields']['meta'] = {
|
|
|
- "title": item['fields'].pop('title'),
|
|
|
- "affix": item['fields'].pop('affix'),
|
|
|
- "icon": item['fields'].pop('icon'),
|
|
|
- }
|
|
|
- if (item.get('fields').get('parent') == None):
|
|
|
- menus.append(item.get('fields'))
|
|
|
- else:
|
|
|
- childrens.append(item.get('fields'))
|
|
|
-
|
|
|
- for children in childrens:
|
|
|
- # 将列表转化成树形菜单
|
|
|
- getTree(children, menus, childrens)
|
|
|
-
|
|
|
- else: # False -- 不必转成树结构, menuName 语言包需要到前台转中文
|
|
|
- item['fields']["menuName"] = item['fields'].pop("title")
|
|
|
- item['fields'].pop('affix')
|
|
|
- menus.append(item.get('fields'))
|
|
|
-
|
|
|
- return menus
|
|
|
-
|
|
|
-
|
|
|
-"""
|
|
|
-def getTree(children, menus, childrens)
|
|
|
-根据传递过来的父菜单id,递归设置各层次父菜单的子菜单列表
|
|
|
-:children: 单个子菜单
|
|
|
-:param menus: 父菜单列表 一级菜单
|
|
|
-:childrens: 子菜单列表,第二次调用
|
|
|
-"""
|
|
|
-
|
|
|
-
|
|
|
-def getTree(children, menus, childrens):
|
|
|
- # 遍历父菜单
|
|
|
- for m in menus:
|
|
|
- # 当前菜单的id 和 子菜单的父id 是否匹配
|
|
|
- if m.get('id') == children.get('parent'):
|
|
|
- if not m.get('children'):
|
|
|
- m['children'] = []
|
|
|
- if not children in m['children']: # 判单子菜单是否已存在
|
|
|
- m['children'].append(children)
|
|
|
-
|
|
|
- if m.get('children'):
|
|
|
- for children in childrens:
|
|
|
- # 判断子菜单是否还有匹配的子菜单
|
|
|
- getTree(children, m.get('children'), childrens)
|
|
|
-
|
|
|
-
|
|
|
-# 请求---------------------------------------------------------------------
|
|
|
-class login(View):
|
|
|
- def post(self, request):
|
|
|
-
|
|
|
- data = request.POST
|
|
|
-
|
|
|
- user = User.objects.all().filter(username=data.get(
|
|
|
- 'username'), password=data.get('password'))
|
|
|
- print(user)
|
|
|
- if user:
|
|
|
- res = format_login_result(user)
|
|
|
- return JsonResponse({'code': 1, 'msg': 'success', 'result': res}, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- return JsonResponse({'code': 0, 'error': '用户名或密码不正确'}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class getUserInfoById(View):
|
|
|
- def post(self, request):
|
|
|
- userid = request.POST.get('userId')
|
|
|
- print('====================udsaersadf======')
|
|
|
- print(userid)
|
|
|
- print('====================udsaersadf======')
|
|
|
-
|
|
|
- user = User.objects.all().filter(id=userid)
|
|
|
- if user:
|
|
|
- # res = {'codeList': ['1000', '3000', '5000']}
|
|
|
- res = format_useinfo(user)
|
|
|
- return JsonResponse({'code': 1, 'result': res, }, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': 'no role,create role'}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class getUserList(View):
|
|
|
- def get(self, request):
|
|
|
- users = User.objects.all()
|
|
|
- if users:
|
|
|
- res = format_uselist(users)
|
|
|
- return JsonResponse({'code': 1, 'result': res, }, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': 'no role,create role'}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class addUser(APIView):
|
|
|
- serialize_class = UserSerializer
|
|
|
-
|
|
|
- def post(self, request):
|
|
|
- # user = json.loads(request.body)
|
|
|
- user = request.POST
|
|
|
- userSer = UserSerializer(data=user)
|
|
|
- if userSer.is_valid():
|
|
|
- menuIdList = user.pop('menus')
|
|
|
- menus = Menu.objects.all().filter(id__in=menuIdList)
|
|
|
- user['token'] = user.get('username') + 'token'
|
|
|
- userObj = User.objects.create(**user)
|
|
|
- userObj.menus.set(menus)
|
|
|
- return JsonResponse({'code': 1, 'result': {'data': '角色创建成功'}}, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- print(userSer.errors)
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': '字段校验未通过', "result": userSer.errors}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
- # if User.objects.all().filter(username=data.get('username')):
|
|
|
- # return JsonResponse({'code': 0, 'type': 'error', 'message': '该角色名已被占用'}, json_dumps_params={"ensure_ascii": False})
|
|
|
- # else:
|
|
|
- # data['token'] = data.get('username') + 'token'
|
|
|
- # userObj = User.objects.create(**data)
|
|
|
- # userObj.menus.set(menus)
|
|
|
-
|
|
|
- # return JsonResponse({'code': 1, 'result': {'data': '角色创建成功'}}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class editUser(APIView):
|
|
|
- serialize_class = UserSerializer
|
|
|
-
|
|
|
- def post(self, request):
|
|
|
- # data = json.loads(request.body)
|
|
|
- data = request.POST
|
|
|
- userSer = UserSerializer(data=data)
|
|
|
- user = User.objects.all().filter(id=data.get('id')).first()
|
|
|
-
|
|
|
- if not userSer.is_valid() and user.username != data.get('username'):
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': '字段校验未通过', 'result': userSer.errors}, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- menuIdList = data.pop('menus')
|
|
|
- menus = Menu.objects.all().filter(id__in=menuIdList)
|
|
|
- user.username = data.get('username')
|
|
|
- user.password = data.get('password')
|
|
|
- user.nickname = data.get('nickname')
|
|
|
- user.status = data.get('status')
|
|
|
- user.detail = data.get('detail')
|
|
|
- user.menus.set(menus)
|
|
|
- user.save()
|
|
|
- return JsonResponse({'code': 1, 'type': 'error', 'message': '修改成功', 'result': {'data': '修改成功'}}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class deleteUser(View):
|
|
|
- def post(self, request):
|
|
|
- data = request.POST
|
|
|
- user = User.objects.all().filter(id=data.get('id'))
|
|
|
- try:
|
|
|
- if user:
|
|
|
- user.delete()
|
|
|
- return JsonResponse({'code': 1, 'result': {'data': '删除角色成功'}}, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': '查无此人'}, json_dumps_params={"ensure_ascii": False})
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': e}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class getMenuListById(View):
|
|
|
- def post(self, request):
|
|
|
- # 获取参数id
|
|
|
- userId = request.POST.get('id')
|
|
|
- print(userId)
|
|
|
- # 当前用户
|
|
|
- querSetUser = User.objects.all().filter(id=userId)
|
|
|
- user = format_useinfo(querSetUser)
|
|
|
- # 获取当前user 的menus(id集合)
|
|
|
- menuIdList = user.get('menus')
|
|
|
- # 匹配查询 id__in=[1,2,3]
|
|
|
- querySetMenu = Menu.objects.all().filter(id__in=menuIdList)
|
|
|
- menus = format_menus(querySetMenu, True)
|
|
|
- return JsonResponse({'code': 1, 'result': menus})
|
|
|
-
|
|
|
-
|
|
|
-class getAllMenuList(View):
|
|
|
- def get(self, request):
|
|
|
- querySetObj = Menu.objects.all()
|
|
|
- menus = format_menus(querySetObj, False)
|
|
|
- return JsonResponse({'code': 1, 'result': {'format': True, 'menus': menus}}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class addMenu(APIView):
|
|
|
- serialize_class = MenuSerializer
|
|
|
-
|
|
|
- def post(self, request):
|
|
|
- # data = json.loads(request.body)
|
|
|
- data = request.POST
|
|
|
- data.title = data.pop('menuName')
|
|
|
- menuSer = MenuSerializer(data=data)
|
|
|
- if menuSer.is_valid():
|
|
|
- if data.get('parent'):
|
|
|
- parentId = data.pop('parent')
|
|
|
- parent = Menu.objects.all().filter(id=parentId).first()
|
|
|
- data['parent'] = parent
|
|
|
- menuObj = Menu.objects.create(**data)
|
|
|
- return JsonResponse({'code': 1, 'result': {'data': '菜单添加成功'}}, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': '字段校验未通过', "result": menuSer.errors}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class editMenu(APIView):
|
|
|
- serialize_class = MenuSerializer
|
|
|
-
|
|
|
- def post(self, request):
|
|
|
- data = request.POST
|
|
|
- data.title = data.pop('menuName')
|
|
|
- menuSer = MenuSerializer(data=data)
|
|
|
- if menuSer.is_valid():
|
|
|
- menu = Menu.objects.all().filter(id=data.get('id')).first()
|
|
|
- menu.icon = data.get('icon')
|
|
|
- menu.title = data.get('title')
|
|
|
- menu.path = data.get('path')
|
|
|
- menu.reditect = data.get('reditect')
|
|
|
- menu.component = data.get('component')
|
|
|
- menu.status = data.get('status')
|
|
|
- menu.detail = data.get('detail')
|
|
|
- menu.parent = Menu.objects.all().filter(id=data.get('parent')).first()
|
|
|
- menu.save()
|
|
|
- return JsonResponse({'code': 1, 'result': {'data': '菜单修改成功'}}, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': '字段校验未通过', "result": menuSer.errors}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class deleteMenu(View):
|
|
|
- def post(self, request):
|
|
|
- data = request.POST
|
|
|
- menu = Menu.objects.all().filter(id=data.get('id'))
|
|
|
- try:
|
|
|
- if menu:
|
|
|
- menu.delete()
|
|
|
- return JsonResponse({'code': 1, 'result': {'data': '删除菜单成功'}}, json_dumps_params={"ensure_ascii": False})
|
|
|
- else:
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': '没有找到匹配菜单'}, json_dumps_params={"ensure_ascii": False})
|
|
|
- except Exception as e:
|
|
|
- print(e)
|
|
|
- return JsonResponse({'code': 0, 'type': 'error', 'message': 'server error'}, json_dumps_params={"ensure_ascii": False})
|
|
|
-
|
|
|
-
|
|
|
-class FileUpload(View):
|
|
|
- def post(self, request):
|
|
|
- # data = request.body
|
|
|
- print('=====================sendPage==================')
|
|
|
- img = request.FILES.get("file", None)
|
|
|
- print(img)
|
|
|
- print(img.name) # 获取文件名称
|
|
|
- print(img.chunks) # 获取文件内容
|
|
|
- # 创建文件
|
|
|
- print('=====================sendPage==================')
|
|
|
-
|
|
|
- # 报存到数据库
|
|
|
- # FileUpload.objects.create(name=img.name)
|
|
|
- return HttpResponse("ok")
|