Browse Source

!18 RuoYi-Vue3-FastAPI v1.4.0

Merge pull request !18 from insistence/develop
master
insistence 4 months ago
committed by Gitee
parent
commit
c6c9020d89
No known key found for this signature in database GPG Key ID: 173E9B9CA92EEF8F
  1. 4
      README.md
  2. 2
      ruoyi-fastapi-backend/.env.dev
  3. 2
      ruoyi-fastapi-backend/.env.prod
  4. 6
      ruoyi-fastapi-backend/module_admin/controller/config_controller.py
  5. 4
      ruoyi-fastapi-backend/module_admin/controller/dept_controller.py
  6. 10
      ruoyi-fastapi-backend/module_admin/controller/dict_controller.py
  7. 10
      ruoyi-fastapi-backend/module_admin/controller/job_controller.py
  8. 10
      ruoyi-fastapi-backend/module_admin/controller/log_controller.py
  9. 4
      ruoyi-fastapi-backend/module_admin/controller/menu_controller.py
  10. 4
      ruoyi-fastapi-backend/module_admin/controller/notice_controller.py
  11. 6
      ruoyi-fastapi-backend/module_admin/controller/online_controller.py
  12. 6
      ruoyi-fastapi-backend/module_admin/controller/post_controler.py
  13. 14
      ruoyi-fastapi-backend/module_admin/controller/role_controller.py
  14. 8
      ruoyi-fastapi-backend/module_admin/controller/user_controller.py
  15. 3
      ruoyi-fastapi-backend/module_admin/entity/vo/config_vo.py
  16. 2
      ruoyi-fastapi-backend/module_admin/entity/vo/dept_vo.py
  17. 5
      ruoyi-fastapi-backend/module_admin/entity/vo/dict_vo.py
  18. 5
      ruoyi-fastapi-backend/module_admin/entity/vo/job_vo.py
  19. 5
      ruoyi-fastapi-backend/module_admin/entity/vo/log_vo.py
  20. 2
      ruoyi-fastapi-backend/module_admin/entity/vo/menu_vo.py
  21. 3
      ruoyi-fastapi-backend/module_admin/entity/vo/notice_vo.py
  22. 2
      ruoyi-fastapi-backend/module_admin/entity/vo/online_vo.py
  23. 3
      ruoyi-fastapi-backend/module_admin/entity/vo/post_vo.py
  24. 3
      ruoyi-fastapi-backend/module_admin/entity/vo/role_vo.py
  25. 6
      ruoyi-fastapi-backend/module_admin/entity/vo/user_vo.py
  26. 8
      ruoyi-fastapi-backend/module_admin/service/role_service.py
  27. 2
      ruoyi-fastapi-backend/requirements.txt
  28. 2
      ruoyi-fastapi-frontend/package.json
  29. 11
      ruoyi-fastapi-frontend/src/api/login.js

4
README.md

@ -1,12 +1,12 @@
<p align="center">
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
</p>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi-Vue3-FastAPI v1.3.3</h1>
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi-Vue3-FastAPI v1.4.0</h1>
<h4 align="center">基于RuoYi-Vue3+FastAPI前后端分离的快速开发框架</h4>
<p align="center">
<a href="https://gitee.com/insistence2022/RuoYi-Vue3-FastAPI/stargazers"><img src="https://gitee.com/insistence2022/RuoYi-Vue3-FastAPI/badge/star.svg?theme=dark"></a>
<a href="https://github.com/insistence/RuoYi-Vue3-FastAPI"><img src="https://img.shields.io/github/stars/insistence/RuoYi-Vue3-FastAPI?style=social"></a>
<a href="https://gitee.com/insistence2022/RuoYi-Vue3-FastAPI"><img src="https://img.shields.io/badge/RuoYiVue3FastAPI-v1.3.3-brightgreen.svg"></a>
<a href="https://gitee.com/insistence2022/RuoYi-Vue3-FastAPI"><img src="https://img.shields.io/badge/RuoYiVue3FastAPI-v1.4.0-brightgreen.svg"></a>
<a href="https://gitee.com/insistence2022/RuoYi-Vue3-FastAPI/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
<img src="https://img.shields.io/badge/python-≥3.9-blue">
<img src="https://img.shields.io/badge/MySQL-≥5.7-blue">

2
ruoyi-fastapi-backend/.env.dev

@ -10,7 +10,7 @@ APP_HOST = '0.0.0.0'
# 应用端口
APP_PORT = 9099
# 应用版本
APP_VERSION= '1.3.3'
APP_VERSION= '1.4.0'
# 应用是否开启热重载
APP_RELOAD = true
# 应用是否开启IP归属区域查询

2
ruoyi-fastapi-backend/.env.prod

@ -10,7 +10,7 @@ APP_HOST = '0.0.0.0'
# 应用端口
APP_PORT = 9099
# 应用版本
APP_VERSION= '1.3.3'
APP_VERSION= '1.4.0'
# 应用是否开启热重载
APP_RELOAD = false
# 应用是否开启IP归属区域查询

6
ruoyi-fastapi-backend/module_admin/controller/config_controller.py

@ -1,5 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Form, Query, Request
from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from config.enums import BusinessType
@ -24,7 +24,7 @@ configController = APIRouter(prefix='/system/config', dependencies=[Depends(Logi
)
async def get_system_config_list(
request: Request,
config_page_query: ConfigPageQueryModel = Depends(ConfigPageQueryModel.as_query),
config_page_query: ConfigPageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
@ -112,7 +112,7 @@ async def query_system_config(request: Request, config_key: str):
@Log(title='参数管理', business_type=BusinessType.EXPORT)
async def export_system_config_list(
request: Request,
config_page_query: ConfigPageQueryModel = Depends(ConfigPageQueryModel.as_form),
config_page_query: ConfigPageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据

4
ruoyi-fastapi-backend/module_admin/controller/dept_controller.py

@ -1,5 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Query, Request
from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from typing import List
@ -42,7 +42,7 @@ async def get_system_dept_tree_for_edit_option(
)
async def get_system_dept_list(
request: Request,
dept_query: DeptQueryModel = Depends(DeptQueryModel.as_query),
dept_query: DeptQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
data_scope_sql: str = Depends(GetDataScope('SysDept')),
):

10
ruoyi-fastapi-backend/module_admin/controller/dict_controller.py

@ -1,5 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Form, Query, Request
from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from typing import List
@ -32,7 +32,7 @@ dictController = APIRouter(prefix='/system/dict', dependencies=[Depends(LoginSer
)
async def get_system_dict_type_list(
request: Request,
dict_type_page_query: DictTypePageQueryModel = Depends(DictTypePageQueryModel.as_query),
dict_type_page_query: DictTypePageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
@ -123,7 +123,7 @@ async def query_detail_system_dict_type(request: Request, dict_id: int, query_db
@Log(title='字典类型', business_type=BusinessType.EXPORT)
async def export_system_dict_type_list(
request: Request,
dict_type_page_query: DictTypePageQueryModel = Depends(DictTypePageQueryModel.as_form),
dict_type_page_query: DictTypePageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据
@ -152,7 +152,7 @@ async def query_system_dict_type_data(request: Request, dict_type: str, query_db
)
async def get_system_dict_data_list(
request: Request,
dict_data_page_query: DictDataPageQueryModel = Depends(DictDataPageQueryModel.as_query),
dict_data_page_query: DictDataPageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
@ -226,7 +226,7 @@ async def query_detail_system_dict_data(request: Request, dict_code: int, query_
@Log(title='字典数据', business_type=BusinessType.EXPORT)
async def export_system_dict_data_list(
request: Request,
dict_data_page_query: DictDataPageQueryModel = Depends(DictDataPageQueryModel.as_form),
dict_data_page_query: DictDataPageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据

10
ruoyi-fastapi-backend/module_admin/controller/job_controller.py

@ -1,5 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Form, Query, Request
from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from config.enums import BusinessType
@ -32,7 +32,7 @@ jobController = APIRouter(prefix='/monitor', dependencies=[Depends(LoginService.
)
async def get_system_job_list(
request: Request,
job_page_query: JobPageQueryModel = Depends(JobPageQueryModel.as_query),
job_page_query: JobPageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
@ -132,7 +132,7 @@ async def query_detail_system_job(request: Request, job_id: int, query_db: Async
@Log(title='定时任务', business_type=BusinessType.EXPORT)
async def export_system_job_list(
request: Request,
job_page_query: JobPageQueryModel = Depends(JobPageQueryModel.as_form),
job_page_query: JobPageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据
@ -148,7 +148,7 @@ async def export_system_job_list(
)
async def get_system_job_log_list(
request: Request,
job_log_page_query: JobLogPageQueryModel = Depends(JobLogPageQueryModel.as_query),
job_log_page_query: JobLogPageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
@ -183,7 +183,7 @@ async def delete_system_job_log(request: Request, job_log_ids: str, query_db: As
@Log(title='定时任务调度日志', business_type=BusinessType.EXPORT)
async def export_system_job_log_list(
request: Request,
job_log_page_query: JobLogPageQueryModel = Depends(JobLogPageQueryModel.as_form),
job_log_page_query: JobLogPageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据

10
ruoyi-fastapi-backend/module_admin/controller/log_controller.py

@ -1,4 +1,4 @@
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Form, Query, Request
from sqlalchemy.ext.asyncio import AsyncSession
from config.enums import BusinessType
from config.get_db import get_db
@ -29,7 +29,7 @@ logController = APIRouter(prefix='/monitor', dependencies=[Depends(LoginService.
)
async def get_system_operation_log_list(
request: Request,
operation_log_page_query: OperLogPageQueryModel = Depends(OperLogPageQueryModel.as_query),
operation_log_page_query: OperLogPageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
@ -66,7 +66,7 @@ async def delete_system_operation_log(request: Request, oper_ids: str, query_db:
@Log(title='操作日志', business_type=BusinessType.EXPORT)
async def export_system_operation_log_list(
request: Request,
operation_log_page_query: OperLogPageQueryModel = Depends(OperLogPageQueryModel.as_form),
operation_log_page_query: OperLogPageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据
@ -88,7 +88,7 @@ async def export_system_operation_log_list(
)
async def get_system_login_log_list(
request: Request,
login_log_page_query: LoginLogPageQueryModel = Depends(LoginLogPageQueryModel.as_query),
login_log_page_query: LoginLogPageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
@ -137,7 +137,7 @@ async def unlock_system_user(request: Request, user_name: str, query_db: AsyncSe
@Log(title='登录日志', business_type=BusinessType.EXPORT)
async def export_system_login_log_list(
request: Request,
login_log_page_query: LoginLogPageQueryModel = Depends(LoginLogPageQueryModel.as_form),
login_log_page_query: LoginLogPageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据

4
ruoyi-fastapi-backend/module_admin/controller/menu_controller.py

@ -1,5 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Query, Request
from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from typing import List
@ -48,7 +48,7 @@ async def get_system_role_menu_tree(
)
async def get_system_menu_list(
request: Request,
menu_query: MenuQueryModel = Depends(MenuQueryModel.as_query),
menu_query: MenuQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):

4
ruoyi-fastapi-backend/module_admin/controller/notice_controller.py

@ -1,5 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Query, Request
from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from config.enums import BusinessType
@ -23,7 +23,7 @@ noticeController = APIRouter(prefix='/system/notice', dependencies=[Depends(Logi
)
async def get_system_notice_list(
request: Request,
notice_page_query: NoticePageQueryModel = Depends(NoticePageQueryModel.as_query),
notice_page_query: NoticePageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据

6
ruoyi-fastapi-backend/module_admin/controller/online_controller.py

@ -1,4 +1,4 @@
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Query, Request
from sqlalchemy.ext.asyncio import AsyncSession
from config.enums import BusinessType
from config.get_db import get_db
@ -18,9 +18,7 @@ onlineController = APIRouter(prefix='/monitor/online', dependencies=[Depends(Log
@onlineController.get(
'/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('monitor:online:list'))]
)
async def get_monitor_online_list(
request: Request, online_page_query: OnlineQueryModel = Depends(OnlineQueryModel.as_query)
):
async def get_monitor_online_list(request: Request, online_page_query: OnlineQueryModel = Query()):
# 获取全量数据
online_query_result = await OnlineService.get_online_list_services(request, online_page_query)
logger.info('获取成功')

6
ruoyi-fastapi-backend/module_admin/controller/post_controler.py

@ -1,5 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Form, Query, Request
from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from config.enums import BusinessType
@ -24,7 +24,7 @@ postController = APIRouter(prefix='/system/post', dependencies=[Depends(LoginSer
)
async def get_system_post_list(
request: Request,
post_page_query: PostPageQueryModel = Depends(PostPageQueryModel.as_query),
post_page_query: PostPageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
# 获取分页数据
@ -94,7 +94,7 @@ async def query_detail_system_post(request: Request, post_id: int, query_db: Asy
@Log(title='岗位管理', business_type=BusinessType.EXPORT)
async def export_system_post_list(
request: Request,
post_page_query: PostPageQueryModel = Depends(PostPageQueryModel.as_form),
post_page_query: PostPageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
):
# 获取全量数据

14
ruoyi-fastapi-backend/module_admin/controller/role_controller.py

@ -1,5 +1,5 @@
from datetime import datetime
from fastapi import APIRouter, Depends, Request
from fastapi import APIRouter, Depends, Form, Query, Request
from pydantic_validation_decorator import ValidateFields
from sqlalchemy.ext.asyncio import AsyncSession
from config.enums import BusinessType
@ -43,7 +43,7 @@ async def get_system_role_dept_tree(
)
async def get_system_role_list(
request: Request,
role_page_query: RolePageQueryModel = Depends(RolePageQueryModel.as_query),
role_page_query: RolePageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
data_scope_sql: str = Depends(GetDataScope('SysDept')),
):
@ -165,7 +165,7 @@ async def query_detail_system_role(
@Log(title='角色管理', business_type=BusinessType.EXPORT)
async def export_system_role_list(
request: Request,
role_page_query: RolePageQueryModel = Depends(RolePageQueryModel.as_form),
role_page_query: RolePageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
data_scope_sql: str = Depends(GetDataScope('SysDept')),
):
@ -211,7 +211,7 @@ async def reset_system_role_status(
)
async def get_system_allocated_user_list(
request: Request,
user_role: UserRolePageQueryModel = Depends(UserRolePageQueryModel.as_query),
user_role: UserRolePageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
data_scope_sql: str = Depends(GetDataScope('SysUser')),
):
@ -230,7 +230,7 @@ async def get_system_allocated_user_list(
)
async def get_system_unallocated_user_list(
request: Request,
user_role: UserRolePageQueryModel = Depends(UserRolePageQueryModel.as_query),
user_role: UserRolePageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
data_scope_sql: str = Depends(GetDataScope('SysUser')),
):
@ -246,7 +246,7 @@ async def get_system_unallocated_user_list(
@Log(title='角色管理', business_type=BusinessType.GRANT)
async def add_system_role_user(
request: Request,
add_role_user: CrudUserRoleModel = Depends(CrudUserRoleModel.as_query),
add_role_user: CrudUserRoleModel = Query(),
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
data_scope_sql: str = Depends(GetDataScope('SysDept')),
@ -274,7 +274,7 @@ async def cancel_system_role_user(
@Log(title='角色管理', business_type=BusinessType.GRANT)
async def batch_cancel_system_role_user(
request: Request,
batch_cancel_user_role: CrudUserRoleModel = Depends(CrudUserRoleModel.as_query),
batch_cancel_user_role: CrudUserRoleModel = Query(),
query_db: AsyncSession = Depends(get_db),
):
batch_cancel_user_role_result = await UserService.delete_user_role_services(query_db, batch_cancel_user_role)

8
ruoyi-fastapi-backend/module_admin/controller/user_controller.py

@ -1,6 +1,6 @@
import os
from datetime import datetime
from fastapi import APIRouter, Depends, File, Query, Request, UploadFile
from fastapi import APIRouter, Depends, File, Form, Query, Request, UploadFile
from sqlalchemy.ext.asyncio import AsyncSession
from typing import Optional, Union
from pydantic_validation_decorator import ValidateFields
@ -57,7 +57,7 @@ async def get_system_dept_tree(
)
async def get_system_user_list(
request: Request,
user_page_query: UserPageQueryModel = Depends(UserPageQueryModel.as_query),
user_page_query: UserPageQueryModel = Query(),
query_db: AsyncSession = Depends(get_db),
data_scope_sql: str = Depends(GetDataScope('SysUser')),
):
@ -296,7 +296,7 @@ async def change_system_user_profile_info(
@Log(title='个人信息', business_type=BusinessType.UPDATE)
async def reset_system_user_password(
request: Request,
reset_password: ResetPasswordModel = Depends(ResetPasswordModel.as_query),
reset_password: ResetPasswordModel = Query(),
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
@ -344,7 +344,7 @@ async def export_system_user_template(request: Request, query_db: AsyncSession =
@Log(title='用户管理', business_type=BusinessType.EXPORT)
async def export_system_user_list(
request: Request,
user_page_query: UserPageQueryModel = Depends(UserPageQueryModel.as_form),
user_page_query: UserPageQueryModel = Form(),
query_db: AsyncSession = Depends(get_db),
data_scope_sql: str = Depends(GetDataScope('SysUser')),
):

3
ruoyi-fastapi-backend/module_admin/entity/vo/config_vo.py

@ -3,7 +3,6 @@ from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size
from typing import Literal, Optional
from module_admin.annotation.pydantic_annotation import as_form, as_query
class ConfigModel(BaseModel):
@ -54,8 +53,6 @@ class ConfigQueryModel(ConfigModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class ConfigPageQueryModel(ConfigQueryModel):
"""
参数配置管理分页查询模型

2
ruoyi-fastapi-backend/module_admin/entity/vo/dept_vo.py

@ -3,7 +3,6 @@ from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import Network, NotBlank, Size
from typing import Literal, Optional
from module_admin.annotation.pydantic_annotation import as_query
class DeptModel(BaseModel):
@ -53,7 +52,6 @@ class DeptModel(BaseModel):
self.get_email()
@as_query
class DeptQueryModel(DeptModel):
"""
部门管理不分页查询模型

5
ruoyi-fastapi-backend/module_admin/entity/vo/dict_vo.py

@ -3,7 +3,6 @@ from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Pattern, Size
from typing import Literal, Optional
from module_admin.annotation.pydantic_annotation import as_form, as_query
class DictTypeModel(BaseModel):
@ -100,8 +99,6 @@ class DictTypeQueryModel(DictTypeModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class DictTypePageQueryModel(DictTypeQueryModel):
"""
字典类型管理分页查询模型
@ -130,8 +127,6 @@ class DictDataQueryModel(DictDataModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class DictDataPageQueryModel(DictDataQueryModel):
"""
字典数据管理分页查询模型

5
ruoyi-fastapi-backend/module_admin/entity/vo/job_vo.py

@ -3,7 +3,6 @@ from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size
from typing import Literal, Optional
from module_admin.annotation.pydantic_annotation import as_form, as_query
class JobModel(BaseModel):
@ -77,8 +76,6 @@ class JobQueryModel(JobModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class JobPageQueryModel(JobQueryModel):
"""
定时任务管理分页查询模型
@ -115,8 +112,6 @@ class JobLogQueryModel(JobLogModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class JobLogPageQueryModel(JobLogQueryModel):
"""
定时任务日志管理分页查询模型

5
ruoyi-fastapi-backend/module_admin/entity/vo/log_vo.py

@ -2,7 +2,6 @@ from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from typing import Literal, Optional
from module_admin.annotation.pydantic_annotation import as_form, as_query
class OperLogModel(BaseModel):
@ -68,8 +67,6 @@ class OperLogQueryModel(OperLogModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class OperLogPageQueryModel(OperLogQueryModel):
"""
操作日志管理分页查询模型
@ -102,8 +99,6 @@ class LoginLogQueryModel(LogininforModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class LoginLogPageQueryModel(LoginLogQueryModel):
"""
登录日志管理分页查询模型

2
ruoyi-fastapi-backend/module_admin/entity/vo/menu_vo.py

@ -3,7 +3,6 @@ from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size
from typing import Literal, Optional
from module_admin.annotation.pydantic_annotation import as_query
class MenuModel(BaseModel):
@ -68,7 +67,6 @@ class MenuModel(BaseModel):
self.get_perms()
@as_query
class MenuQueryModel(MenuModel):
"""
菜单管理不分页查询模型

3
ruoyi-fastapi-backend/module_admin/entity/vo/notice_vo.py

@ -3,7 +3,6 @@ from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size, Xss
from typing import Literal, Optional
from module_admin.annotation.pydantic_annotation import as_form, as_query
class NoticeModel(BaseModel):
@ -43,8 +42,6 @@ class NoticeQueryModel(NoticeModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class NoticePageQueryModel(NoticeQueryModel):
"""
通知公告管理分页查询模型

2
ruoyi-fastapi-backend/module_admin/entity/vo/online_vo.py

@ -2,7 +2,6 @@ from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from typing import Optional
from module_admin.annotation.pydantic_annotation import as_query
class OnlineModel(BaseModel):
@ -22,7 +21,6 @@ class OnlineModel(BaseModel):
login_time: Optional[datetime] = Field(default=None, description='登录时间')
@as_query
class OnlineQueryModel(OnlineModel):
"""
岗位管理不分页查询模型

3
ruoyi-fastapi-backend/module_admin/entity/vo/post_vo.py

@ -3,7 +3,6 @@ from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size
from typing import Literal, Optional
from module_admin.annotation.pydantic_annotation import as_form, as_query
class PostModel(BaseModel):
@ -53,8 +52,6 @@ class PostQueryModel(PostModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class PostPageQueryModel(PostQueryModel):
"""
岗位管理分页查询模型

3
ruoyi-fastapi-backend/module_admin/entity/vo/role_vo.py

@ -3,7 +3,6 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator, model_valida
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size
from typing import List, Literal, Optional, Union
from module_admin.annotation.pydantic_annotation import as_form, as_query
class RoleModel(BaseModel):
@ -104,8 +103,6 @@ class RoleQueryModel(RoleModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class RolePageQueryModel(RoleQueryModel):
"""
角色管理分页查询模型

6
ruoyi-fastapi-backend/module_admin/entity/vo/user_vo.py

@ -5,7 +5,6 @@ from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import Network, NotBlank, Size, Xss
from typing import List, Literal, Optional, Union
from exceptions.exception import ModelValidatorException
from module_admin.annotation.pydantic_annotation import as_form, as_query
from module_admin.entity.vo.dept_vo import DeptModel
from module_admin.entity.vo.post_vo import PostModel
from module_admin.entity.vo.role_vo import RoleModel
@ -162,8 +161,6 @@ class UserQueryModel(UserModel):
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
@as_form
class UserPageQueryModel(UserQueryModel):
"""
用户管理分页查询模型
@ -191,7 +188,6 @@ class EditUserModel(AddUserModel):
role: Optional[List] = Field(default=[], description='角色信息')
@as_query
class ResetPasswordModel(BaseModel):
"""
重置密码模型
@ -241,7 +237,6 @@ class UserRoleQueryModel(UserModel):
role_id: Optional[int] = Field(default=None, description='角色ID')
@as_query
class UserRolePageQueryModel(UserRoleQueryModel):
"""
用户角色关联管理分页查询模型
@ -270,7 +265,6 @@ class UserRoleResponseModel(BaseModel):
user: UserInfoModel = Field(description='用户信息')
@as_query
class CrudUserRoleModel(BaseModel):
"""
新增删除用户关联角色及角色关联用户模型

8
ruoyi-fastapi-backend/module_admin/service/role_service.py

@ -144,9 +144,9 @@ class RoleService:
"""
add_role = RoleModel(**page_object.model_dump(by_alias=True))
if not await cls.check_role_name_unique_services(query_db, page_object):
raise ServiceException(message=f'新增角色{page_object.post_name}失败,角色名称已存在')
raise ServiceException(message=f'新增角色{page_object.role_name}失败,角色名称已存在')
elif not await cls.check_role_key_unique_services(query_db, page_object):
raise ServiceException(message=f'新增角色{page_object.post_name}失败,角色权限已存在')
raise ServiceException(message=f'新增角色{page_object.role_name}失败,角色权限已存在')
else:
try:
add_result = await RoleDao.add_role_dao(query_db, add_role)
@ -178,9 +178,9 @@ class RoleService:
if role_info:
if page_object.type != 'status':
if not await cls.check_role_name_unique_services(query_db, page_object):
raise ServiceException(message=f'修改角色{page_object.post_name}失败,角色名称已存在')
raise ServiceException(message=f'修改角色{page_object.role_name}失败,角色名称已存在')
elif not await cls.check_role_key_unique_services(query_db, page_object):
raise ServiceException(message=f'修改角色{page_object.post_name}失败,角色权限已存在')
raise ServiceException(message=f'修改角色{page_object.role_name}失败,角色权限已存在')
try:
await RoleDao.edit_role_dao(query_db, edit_role)
if page_object.type != 'status':

2
ruoyi-fastapi-backend/requirements.txt

@ -1,7 +1,7 @@
APScheduler==3.10.4
asyncmy==0.2.9
DateTime==5.5
fastapi[all]==0.111.1
fastapi[all]==0.115.0
loguru==0.7.2
openpyxl==3.1.5
pandas==2.2.2

2
ruoyi-fastapi-frontend/package.json

@ -1,6 +1,6 @@
{
"name": "vfadmin",
"version": "1.3.3",
"version": "1.4.0",
"description": "vfadmin管理系统",
"author": "insistence",
"license": "MIT",

11
ruoyi-fastapi-frontend/src/api/login.js

@ -2,11 +2,12 @@ import request from '@/utils/request'
// 登录方法
export function login(username, password, code, uuid) {
const data = new FormData();
data.append("username", username);
data.append("password", password);
data.append("code", code);
data.append("uuid", uuid);
const data = {
username,
password,
code,
uuid
}
return request({
url: '/login',
headers: {

Loading…
Cancel
Save