Browse Source

feat: 新增常量配置

master
insistence 7 months ago
parent
commit
6109c45dbe
  1. 76
      ruoyi-fastapi-backend/config/constant.py
  2. 25
      ruoyi-fastapi-backend/module_admin/service/login_service.py
  3. 11
      ruoyi-fastapi-backend/utils/response_util.py

76
ruoyi-fastapi-backend/config/constant.py

@ -0,0 +1,76 @@
class CommonConstant:
"""
常用常量
WWW: www主域
HTTP: http请求
HTTPS: https请求
UNIQUE: 校验是否唯一的返回标识
NOT_UNIQUE: 校验是否唯一的返回标识
"""
WWW = 'www.'
HTTP = 'http://'
HTTPS = 'https://'
UNIQUE = True
NOT_UNIQUE = False
class HttpStatusConstant:
"""
返回状态码
SUCCESS: 操作成功
CREATED: 对象创建成功
ACCEPTED: 请求已经被接受
NO_CONTENT: 操作已经执行成功但是没有返回数据
MOVED_PERM: 资源已被移除
SEE_OTHER: 重定向
NOT_MODIFIED: 资源没有被修改
BAD_REQUEST: 参数列表错误缺少格式不匹配
UNAUTHORIZED: 未授权
FORBIDDEN: 访问受限授权过期
NOT_FOUND: 资源服务未找到
BAD_METHOD: 不允许的http方法
CONFLICT: 资源冲突或者资源被锁
UNSUPPORTED_TYPE: 不支持的数据媒体类型
ERROR: 系统内部错误
NOT_IMPLEMENTED: 接口未实现
WARN: 系统警告消息
"""
SUCCESS = 200
CREATED = 201
ACCEPTED = 202
NO_CONTENT = 204
MOVED_PERM = 301
SEE_OTHER = 303
NOT_MODIFIED = 304
BAD_REQUEST = 400
UNAUTHORIZED = 401
FORBIDDEN = 403
NOT_FOUND = 404
BAD_METHOD = 405
CONFLICT = 409
UNSUPPORTED_TYPE = 415
ERROR = 500
NOT_IMPLEMENTED = 501
WARN = 601
class MenuConstant:
"""
菜单常量
TYPE_DIR: 菜单类型目录
TYPE_MENU: 菜单类型菜单
TYPE_BUTTON: 菜单类型按钮
YES_FRAME: 是否菜单外链
NO_FRAME: 是否菜单外链
LAYOUT: Layout组件标识
PARENT_VIEW: ParentView组件标识
INNER_LINK: InnerLink组件标识
"""
TYPE_DIR = 'M'
TYPE_MENU = 'C'
TYPE_BUTTON = 'F'
YES_FRAME = 0
NO_FRAME = 1
LAYOUT = 'Layout'
PARENT_VIEW = 'ParentView'
INNER_LINK = 'InnerLink'

25
ruoyi-fastapi-backend/module_admin/service/login_service.py

@ -10,6 +10,7 @@ from module_admin.entity.vo.login_vo import *
from module_admin.entity.vo.common_vo import CrudResponseModel
from module_admin.dao.login_dao import *
from exceptions.exception import LoginException, AuthException
from config.constant import CommonConstant, MenuConstant
from config.env import AppConfig, JwtConfig, RedisInitKeyConfig
from config.get_db import get_db
from utils.common_util import CamelCaseUtil
@ -231,7 +232,7 @@ class LoginService:
:return: 当前用户路由信息对象
"""
query_user = await UserDao.get_user_by_id(query_db, user_id=user_id)
user_router_menu = sorted([row for row in query_user.get('user_menu_info') if row.menu_type in ['M', 'C']], key=lambda x: x.order_num)
user_router_menu = sorted([row for row in query_user.get('user_menu_info') if row.menu_type in [MenuConstant.TYPE_DIR, MenuConstant.TYPE_MENU]], key=lambda x: x.order_num)
menus = cls.__generate_menus(0, user_router_menu)
user_router = cls.__generate_user_router_menu(menus)
return [router.model_dump(exclude_unset=True, by_alias=True) for router in user_router]
@ -278,7 +279,7 @@ class LoginService:
)
)
c_menus = permission.children
if c_menus and permission.menu_type == 'M':
if c_menus and permission.menu_type == MenuConstant.TYPE_DIR:
router.always_show = True
router.redirect = 'noRedirect'
router.children = cls.__generate_user_router_menu(c_menus)
@ -309,7 +310,7 @@ class LoginService:
router_path = RouterUtil.inner_link_replace_each(permission.path)
children = RouterModel(
path=router_path,
component='InnerLink',
component=MenuConstant.INNER_LINK,
name=router_path.capitalize(),
meta=MetaModel(
title=permission.menu_name,
@ -457,7 +458,7 @@ class RouterUtil:
if menu.parent_id != 0 and cls.is_inner_link(menu):
router_path = cls.inner_link_replace_each(router_path)
# 非外链并且是一级目录(类型为目录)
if menu.parent_id == 0 and menu.menu_type == 'M' and menu.is_frame == 1:
if menu.parent_id == 0 and menu.menu_type == MenuConstant.TYPE_DIR and menu.is_frame == MenuConstant.NO_FRAME:
router_path = f'/{menu.path}'
# 非外链并且是一级目录(类型为菜单)
elif cls.is_menu_frame(menu):
@ -471,13 +472,13 @@ class RouterUtil:
:param menu: 菜单数对象
:return: 组件信息
"""
component = 'Layout'
component = MenuConstant.LAYOUT
if menu.component and not cls.is_menu_frame(menu):
component = menu.component
elif (menu.component is None or menu.component == '') and menu.parent_id != 0 and cls.is_inner_link(menu):
component = 'InnerLink'
component = MenuConstant.INNER_LINK
elif (menu.component is None or menu.component == '') and cls.is_parent_view(menu):
component = 'ParentView'
component = MenuConstant.PARENT_VIEW
return component
@classmethod
@ -487,7 +488,7 @@ class RouterUtil:
:param menu: 菜单数对象
:return: 是否为菜单内部跳转
"""
return menu.parent_id == 0 and menu.menu_type == 'C' and menu.is_frame == 1
return menu.parent_id == 0 and menu.menu_type == MenuConstant.TYPE_MENU and menu.is_frame == MenuConstant.NO_FRAME
@classmethod
def is_inner_link(cls, menu: MenuTreeModel):
@ -496,7 +497,7 @@ class RouterUtil:
:param menu: 菜单数对象
:return: 是否为内链组件
"""
return menu.is_frame == 1 and cls.is_http(menu.path)
return menu.is_frame == MenuConstant.NO_FRAME and cls.is_http(menu.path)
@classmethod
def is_parent_view(cls, menu: MenuTreeModel):
@ -505,7 +506,7 @@ class RouterUtil:
:param menu: 菜单数对象
:return: 是否为parent_view组件
"""
return menu.parent_id != 0 and menu.menu_type == 'M'
return menu.parent_id != 0 and menu.menu_type == MenuConstant.TYPE_DIR
@classmethod
def is_http(cls, link: str):
@ -514,7 +515,7 @@ class RouterUtil:
:param link: 链接
:return: 是否为http(s)://开头
"""
return link.startswith('http://') or link.startswith('https://')
return link.startswith(CommonConstant.HTTP) or link.startswith(CommonConstant.HTTPS)
@classmethod
def inner_link_replace_each(cls, path: str):
@ -523,7 +524,7 @@ class RouterUtil:
:param path: 内链域名
:return: 替换后的内链域名
"""
old_values = ["http://", "https://", "www.", ".", ":"]
old_values = [CommonConstant.HTTP, CommonConstant.HTTPS, CommonConstant.WWW, ".", ":"]
new_values = ["", "", "", "/", "/"]
for old, new in zip(old_values, new_values):
path = path.replace(old, new)

11
ruoyi-fastapi-backend/utils/response_util.py

@ -4,6 +4,7 @@ from fastapi.encoders import jsonable_encoder
from typing import Any, Dict, Optional
from pydantic import BaseModel
from datetime import datetime
from config.constant import HttpStatusConstant
class ResponseUtil:
@ -24,7 +25,7 @@ class ResponseUtil:
:return: 成功响应结果
"""
result = {
'code': 200,
'code': HttpStatusConstant.SUCCESS,
'msg': msg
}
@ -57,7 +58,7 @@ class ResponseUtil:
:return: 失败响应结果
"""
result = {
'code': 601,
'code': HttpStatusConstant.WARN,
'msg': msg
}
@ -90,7 +91,7 @@ class ResponseUtil:
:return: 未认证响应结果
"""
result = {
'code': 401,
'code': HttpStatusConstant.UNAUTHORIZED,
'msg': msg
}
@ -123,7 +124,7 @@ class ResponseUtil:
:return: 未认证响应结果
"""
result = {
'code': 403,
'code': HttpStatusConstant.FORBIDDEN,
'msg': msg
}
@ -156,7 +157,7 @@ class ResponseUtil:
:return: 错误响应结果
"""
result = {
'code': 500,
'code': HttpStatusConstant.ERROR,
'msg': msg
}

Loading…
Cancel
Save