123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- import uuid
- from django.forms import model_to_dict
- from DCbackend.utils.common import success, fail, pageData, handle_uploaded_file, oss_upload_file
- from DCbackend.utils.token import decrypt, encrypt
- from backend.Form.SuperAdminForm import SuperAdminForm
- from backend.Form.SuperSettingsForm import SuperSettingsForm
- from backend.Form.UserForm import UserForm
- from backend.models import ProjectCategory, DefaultStatus, Project, Admin, SuperAdmin, SuperSettings, AuthMenu
- from django.core.cache import cache
- class SuperAdminService:
- @staticmethod
- def createPassword(request):
- password = request.POST.get("password")
- password = encrypt(password)
- return success(password)
- @staticmethod
- def createAccount(request):
- form = SuperAdminForm(request.POST)
- if form.is_valid():
- form.instance.password = encrypt(form.instance.password)
- form.save()
- return success("新建账号成功")
- else:
- return fail(form.errors)
- @staticmethod
- def superLogin(request):
- username = request.POST.get("username", "")
- password = request.POST.get("password", "")
- adminInfo = SuperAdmin.objects.filter(username=username).first()
- if adminInfo is not None:
- if password == decrypt(adminInfo.password):
- # 检查是否存在有效的 token
- existing_token = SuperAdminService.get_existing_supertoken(adminInfo.id)
- if existing_token:
- # 如果存在有效的 token,直接返回
- return success({"token": existing_token})
- else:
- # 如果不存在有效的 token,生成新的
- new_token = uuid.uuid4().hex
- cache.set(f"superadmin_token:{new_token}", adminInfo.id, timeout=60 * 60 * 24)
- cache.set(f"superadmin_id_to_token:{adminInfo.id}", new_token, timeout=60 * 60 * 24)
- return success({"token": new_token})
- else:
- return fail("登录密码不正确")
- else:
- return fail("登录失败,管理员用户名不存在")
- @staticmethod
- def get_existing_supertoken(admin_id):
- # 尝试从缓存中获取该管理员的 token
- token = cache.get(f"superadmin_id_to_token:{admin_id}")
- if token:
- # 如果找到 token,检查它是否仍然有效
- if cache.get(f"superadmin_token:{token}"):
- return token
- return None
- @staticmethod
- def verify_token(token):
- admin_id = cache.get(f"superadmin_token:{token}")
- if admin_id:
- return SuperAdmin.objects.filter(id=admin_id).first()
- return None
- #获取配置信息
- @staticmethod
- def selcetSetting(request):
- token = request.POST.get("token")
- if not token:
- return fail("token为空")
- superInfo = SuperAdminService.verify_token(token)
- if not superInfo:
- return fail("用户不存在")
- setting = SuperSettings.objects.filter(id=superInfo).first()
- superInfo_dict = model_to_dict(setting)
- return success(superInfo_dict)
- @staticmethod
- def insertSetting(request):
- count = SuperSettings.objects.filter().count()
- if count > 0:
- return fail("已存在配置参数,请勿重复添加")
- form = SuperSettingsForm(request.POST)
- if form.is_valid():
- form.save()
- return success("新增成功")
- else:
- return fail(form.errors)
- @staticmethod
- def updateSettings(request):
- data = SuperSettings.objects.filter(id=request.POST.get("id")).first()
- if data is not None:
- data.logo = request.POST.get("logo")
- data.name = request.POST.get("name")
- data.sidebar_color = request.POST.get("sidebar_color")
- data.internal_color = request.POST.get("internal_color")
- data.button_color = request.POST.get("button_color")
- data.log_color = request.POST.get("log_color")
- data.log_color_url = request.POST.get("log_color_url")
- data.head_color = request.POST.get("head_color")
- data.save()
- return success("更新成功")
- else:
- return fail("更新源数据失败")
- @staticmethod
- def deleteSettings(request):
- id = request.POST.get("id")
- SuperSettings.objects.filter(id=id).delete()
- return success("物理删除成功")
- @staticmethod
- def getSuperMenu(request):
- token = request.POST.get("token")
- if not token:
- return fail("token为空")
- superInfo = SuperAdminService.verify_token(token)
- if not superInfo:
- return fail("用户不存在")
- parent_menus = AuthMenu.objects.filter(parent_id=0).order_by("id")
- dataList = []
- for parent in parent_menus:
- # 查询每个一级菜单项的子菜单项
- child_menus = AuthMenu.objects.filter(parent_id=parent.id).order_by("id")
- # 将一级菜单及其子菜单存储在字典中
- children = []
- for child in child_menus:
- children.append({
- "id": child.id,
- "name": child.name,
- "code": child.code,
- "parent_id": child.parent_id,
- "sort": child.sort,
- "status": child.status,
- "path": child.path,
- "type": child.type
- })
- dataList.append({
- "id": parent.id,
- "name": parent.name,
- "code": parent.code,
- "parent_id": parent.parent_id,
- "sort": parent.sort,
- "status": parent.status,
- "path": parent.path,
- "type": parent.type,
- "children": children
- })
- return success(dataList)
- @staticmethod
- def creatAdmin(request):
- form = UserForm(request.POST)
- if form.is_valid():
- form.instance.password = encrypt(form.instance.password)
- new_admin = form.save()
- return success("创建admin成功")
- else:
- return fail(form.errors)
|