feat: 新增对PostgreSQL数据库的支持

This commit is contained in:
insistence
2024-10-22 16:27:47 +08:00
parent bb143ac15a
commit c7af974d3f
18 changed files with 1092 additions and 94 deletions

View File

@@ -2,9 +2,10 @@ import os
from datetime import datetime
from fastapi import APIRouter, Depends, File, Form, Query, Request, UploadFile
from sqlalchemy.ext.asyncio import AsyncSession
from typing import Optional, Union
from typing import Literal, Optional, Union
from pydantic_validation_decorator import ValidateFields
from config.get_db import get_db
from config.enums import BusinessType
from config.env import UploadConfig
from module_admin.annotation.log_annotation import Log
from module_admin.aspect.data_scope import GetDataScope
@@ -30,7 +31,6 @@ from module_admin.service.login_service import LoginService
from module_admin.service.user_service import UserService
from module_admin.service.role_service import RoleService
from module_admin.service.dept_service import DeptService
from config.enums import BusinessType
from utils.common_util import bytes2file_response
from utils.log_util import logger
from utils.page_util import PageResponseModel
@@ -220,7 +220,7 @@ async def query_detail_system_user_profile(
)
async def query_detail_system_user(
request: Request,
user_id: Optional[Union[int, str]] = '',
user_id: Optional[Union[int, Literal['']]] = '',
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
data_scope_sql: str = Depends(GetDataScope('SysUser')),

View File

@@ -19,4 +19,4 @@ class SysConfig(Base):
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
update_by = Column(String(64), nullable=True, default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
remark = Column(String(500), nullable=True, default='', comment='备注')
remark = Column(String(500), nullable=True, default=None, comment='备注')

View File

@@ -18,8 +18,8 @@ class SysDept(Base):
leader = Column(String(20), nullable=True, default=None, comment='负责人')
phone = Column(String(11), nullable=True, default=None, comment='联系电话')
email = Column(String(50), nullable=True, default=None, comment='邮箱')
status = Column(String(1), nullable=True, default=0, comment='部门状态0正常 1停用')
del_flag = Column(String(1), nullable=True, default=0, comment='删除标志0代表存在 2代表删除')
status = Column(String(1), nullable=True, default='0', comment='部门状态0正常 1停用')
del_flag = Column(String(1), nullable=True, default='0', comment='删除标志0代表存在 2代表删除')
create_by = Column(String(64), nullable=True, default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
update_by = Column(String(64), nullable=True, default='', comment='更新者')

View File

@@ -18,7 +18,7 @@ class SysDictType(Base):
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
update_by = Column(String(64), nullable=True, default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
remark = Column(String(500), nullable=True, default='', comment='备注')
remark = Column(String(500), nullable=True, default=None, comment='备注')
__table_args__ = (UniqueConstraint('dict_type', name='uq_sys_dict_type_dict_type'),)
@@ -35,12 +35,12 @@ class SysDictData(Base):
dict_label = Column(String(100), nullable=True, default='', comment='字典标签')
dict_value = Column(String(100), nullable=True, default='', comment='字典键值')
dict_type = Column(String(100), nullable=True, default='', comment='字典类型')
css_class = Column(String(100), nullable=True, default='', comment='样式属性(其他样式扩展)')
list_class = Column(String(100), nullable=True, default='', comment='表格回显样式')
css_class = Column(String(100), nullable=True, default=None, comment='样式属性(其他样式扩展)')
list_class = Column(String(100), nullable=True, default=None, comment='表格回显样式')
is_default = Column(String(1), nullable=True, default='N', comment='是否默认Y是 N否')
status = Column(String(1), nullable=True, default='0', comment='状态0正常 1停用')
create_by = Column(String(64), nullable=True, default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
update_by = Column(String(64), nullable=True, default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
remark = Column(String(500), nullable=True, default='', comment='备注')
remark = Column(String(500), nullable=True, default=None, comment='备注')

View File

@@ -11,32 +11,26 @@ class SysJob(Base):
__tablename__ = 'sys_job'
job_id = Column(Integer, primary_key=True, autoincrement=True, comment='任务ID')
job_name = Column(String(64, collation='utf8_general_ci'), nullable=False, comment='任务名称')
job_group = Column(String(64, collation='utf8_general_ci'), nullable=False, default='default', comment='任务组名')
job_executor = Column(
String(64, collation='utf8_general_ci'), nullable=False, default='default', comment='任务执行器'
)
invoke_target = Column(String(500, collation='utf8_general_ci'), nullable=False, comment='调用目标字符串')
job_args = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='位置参数')
job_kwargs = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='关键字参数')
cron_expression = Column(
String(255, collation='utf8_general_ci'), nullable=True, default='', comment='cron执行表达式'
)
job_name = Column(String(64), nullable=True, default='', comment='任务名称')
job_group = Column(String(64), nullable=True, default='default', comment='任务组名')
job_executor = Column(String(64), nullable=True, default='default', comment='任务执行器')
invoke_target = Column(String(500), nullable=False, comment='调用目标字符串')
job_args = Column(String(255), nullable=True, default='', comment='位置参数')
job_kwargs = Column(String(255), nullable=True, default='', comment='关键字参数')
cron_expression = Column(String(255), nullable=True, default='', comment='cron执行表达式')
misfire_policy = Column(
String(20, collation='utf8_general_ci'),
String(20),
nullable=True,
default='3',
comment='计划执行错误策略1立即执行 2执行一次 3放弃执行',
)
concurrent = Column(
String(1, collation='utf8_general_ci'), nullable=True, default='1', comment='是否并发执行0允许 1禁止'
)
status = Column(String(1, collation='utf8_general_ci'), nullable=True, default='0', comment='状态0正常 1暂停')
create_by = Column(String(64, collation='utf8_general_ci'), nullable=True, default='', comment='创建者')
concurrent = Column(String(1), nullable=True, default='1', comment='是否并发执行0允许 1禁止')
status = Column(String(1), nullable=True, default='0', comment='状态0正常 1暂停')
create_by = Column(String(64), nullable=True, default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
update_by = Column(String(64, collation='utf8_general_ci'), nullable=True, default='', comment='更新者')
update_by = Column(String(64), nullable=True, default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
remark = Column(String(500, collation='utf8_general_ci'), nullable=True, default='', comment='备注信息')
remark = Column(String(500), nullable=True, default='', comment='备注信息')
class SysJobLog(Base):
@@ -47,18 +41,14 @@ class SysJobLog(Base):
__tablename__ = 'sys_job_log'
job_log_id = Column(Integer, primary_key=True, autoincrement=True, comment='任务日志ID')
job_name = Column(String(64, collation='utf8_general_ci'), nullable=False, comment='任务名称')
job_group = Column(String(64, collation='utf8_general_ci'), nullable=False, comment='任务组名')
job_executor = Column(
String(64, collation='utf8_general_ci'), nullable=False, default='default', comment='任务执行器'
)
invoke_target = Column(String(500, collation='utf8_general_ci'), nullable=False, comment='调用目标字符串')
job_args = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='位置参数')
job_kwargs = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='关键字参数')
job_trigger = Column(String(255, collation='utf8_general_ci'), nullable=True, comment='任务触发器')
job_message = Column(String(500, collation='utf8_general_ci'), nullable=True, default='', comment='日志信息')
status = Column(
String(1, collation='utf8_general_ci'), nullable=True, default='0', comment='执行状态0正常 1失败'
)
exception_info = Column(String(2000, collation='utf8_general_ci'), nullable=True, default='', comment='异常信息')
job_name = Column(String(64), nullable=False, comment='任务名称')
job_group = Column(String(64), nullable=False, comment='任务组名')
job_executor = Column(String(64), nullable=False, comment='任务执行器')
invoke_target = Column(String(500), nullable=False, comment='调用目标字符串')
job_args = Column(String(255), nullable=True, default='', comment='位置参数')
job_kwargs = Column(String(255), nullable=True, default='', comment='关键字参数')
job_trigger = Column(String(255), nullable=True, default='', comment='任务触发器')
job_message = Column(String(500), nullable=True, default='', comment='日志信息')
status = Column(String(1), nullable=True, default='0', comment='执行状态0正常 1失败')
exception_info = Column(String(2000), nullable=True, default='', comment='异常信息')
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')

View File

@@ -11,15 +11,13 @@ class SysLogininfor(Base):
__tablename__ = 'sys_logininfor'
info_id = Column(Integer, primary_key=True, autoincrement=True, comment='访问ID')
user_name = Column(String(50, collation='utf8_general_ci'), nullable=True, default='', comment='用户账号')
ipaddr = Column(String(128, collation='utf8_general_ci'), nullable=True, default='', comment='登录IP地址')
login_location = Column(String(255, collation='utf8_general_ci'), nullable=True, default='', comment='登录地点')
browser = Column(String(50, collation='utf8_general_ci'), nullable=True, default='', comment='浏览器类型')
os = Column(String(50, collation='utf8_general_ci'), nullable=True, default='', comment='操作系统')
status = Column(
String(1, collation='utf8_general_ci'), nullable=True, default='0', comment='登录状态0成功 1失败'
)
msg = Column(String(255, collation='utf8_general_ci'), nullable=True, default='', comment='提示消息')
user_name = Column(String(50), nullable=True, default='', comment='用户账号')
ipaddr = Column(String(128), nullable=True, default='', comment='登录IP地址')
login_location = Column(String(255), nullable=True, default='', comment='登录地点')
browser = Column(String(50), nullable=True, default='', comment='浏览器类型')
os = Column(String(50), nullable=True, default='', comment='操作系统')
status = Column(String(1), nullable=True, default='0', comment='登录状态0成功 1失败')
msg = Column(String(255), nullable=True, default='', comment='提示消息')
login_time = Column(DateTime, nullable=True, default=datetime.now(), comment='访问时间')
idx_sys_logininfor_s = Index('idx_sys_logininfor_s', status)
@@ -34,20 +32,20 @@ class SysOperLog(Base):
__tablename__ = 'sys_oper_log'
oper_id = Column(BigInteger, primary_key=True, autoincrement=True, comment='日志主键')
title = Column(String(50, collation='utf8_general_ci'), nullable=True, default='', comment='模块标题')
title = Column(String(50), nullable=True, default='', comment='模块标题')
business_type = Column(Integer, default=0, comment='业务类型0其它 1新增 2修改 3删除')
method = Column(String(100, collation='utf8_general_ci'), nullable=True, default='', comment='方法名称')
request_method = Column(String(10, collation='utf8_general_ci'), nullable=True, default='', comment='请求方式')
method = Column(String(100), nullable=True, default='', comment='方法名称')
request_method = Column(String(10), nullable=True, default='', comment='请求方式')
operator_type = Column(Integer, default=0, comment='操作类别0其它 1后台用户 2手机端用户')
oper_name = Column(String(50, collation='utf8_general_ci'), nullable=True, default='', comment='操作人员')
dept_name = Column(String(50, collation='utf8_general_ci'), nullable=True, default='', comment='部门名称')
oper_url = Column(String(255, collation='utf8_general_ci'), nullable=True, default='', comment='请求URL')
oper_ip = Column(String(128, collation='utf8_general_ci'), nullable=True, default='', comment='主机地址')
oper_location = Column(String(255, collation='utf8_general_ci'), nullable=True, default='', comment='操作地点')
oper_param = Column(String(2000, collation='utf8_general_ci'), nullable=True, default='', comment='请求参数')
json_result = Column(String(2000, collation='utf8_general_ci'), nullable=True, default='', comment='返回参数')
oper_name = Column(String(50), nullable=True, default='', comment='操作人员')
dept_name = Column(String(50), nullable=True, default='', comment='部门名称')
oper_url = Column(String(255), nullable=True, default='', comment='请求URL')
oper_ip = Column(String(128), nullable=True, default='', comment='主机地址')
oper_location = Column(String(255), nullable=True, default='', comment='操作地点')
oper_param = Column(String(2000), nullable=True, default='', comment='请求参数')
json_result = Column(String(2000), nullable=True, default='', comment='返回参数')
status = Column(Integer, default=0, comment='操作状态0正常 1异常')
error_msg = Column(String(2000, collation='utf8_general_ci'), nullable=True, default='', comment='错误消息')
error_msg = Column(String(2000), nullable=True, default='', comment='错误消息')
oper_time = Column(DateTime, nullable=True, default=datetime.now(), comment='操作时间')
cost_time = Column(BigInteger, default=0, comment='消耗时间')

View File

@@ -11,12 +11,12 @@ class SysNotice(Base):
__tablename__ = 'sys_notice'
notice_id = Column(Integer, primary_key=True, autoincrement=True, comment='公告ID')
notice_title = Column(String(50, collation='utf8_general_ci'), nullable=False, comment='公告标题')
notice_type = Column(String(1, collation='utf8_general_ci'), nullable=False, comment='公告类型1通知 2公告')
notice_title = Column(String(50), nullable=False, comment='公告标题')
notice_type = Column(String(1), nullable=False, comment='公告类型1通知 2公告')
notice_content = Column(LargeBinary, comment='公告内容')
status = Column(String(1, collation='utf8_general_ci'), default='0', comment='公告状态0正常 1关闭')
create_by = Column(String(64, collation='utf8_general_ci'), default='', comment='创建者')
status = Column(String(1), default='0', comment='公告状态0正常 1关闭')
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, comment='创建时间', default=datetime.now())
update_by = Column(String(64, collation='utf8_general_ci'), default='', comment='更新者')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, comment='更新时间', default=datetime.now())
remark = Column(String(255, collation='utf8_general_ci'), comment='备注')
remark = Column(String(255), comment='备注')

View File

@@ -19,4 +19,4 @@ class SysPost(Base):
create_time = Column(DateTime, nullable=True, default=datetime.now(), comment='创建时间')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=datetime.now(), comment='更新时间')
remark = Column(String(500), nullable=True, default='', comment='备注')
remark = Column(String(500), nullable=True, default=None, comment='备注')

View File

@@ -11,23 +11,23 @@ class SysRole(Base):
__tablename__ = 'sys_role'
role_id = Column(Integer, primary_key=True, autoincrement=True, comment='角色ID')
role_name = Column(String(30, collation='utf8_general_ci'), nullable=False, comment='角色名称')
role_key = Column(String(100, collation='utf8_general_ci'), nullable=False, comment='角色权限字符串')
role_name = Column(String(30), nullable=False, comment='角色名称')
role_key = Column(String(100), nullable=False, comment='角色权限字符串')
role_sort = Column(Integer, nullable=False, comment='显示顺序')
data_scope = Column(
String(1, collation='utf8_general_ci'),
String(1),
default='1',
comment='数据范围1全部数据权限 2自定数据权限 3本部门数据权限 4本部门及以下数据权限',
)
menu_check_strictly = Column(Integer, default=1, comment='菜单树选择项是否关联显示')
dept_check_strictly = Column(Integer, default=1, comment='部门树选择项是否关联显示')
status = Column(String(1, collation='utf8_general_ci'), nullable=False, comment='角色状态0正常 1停用')
del_flag = Column(String(1, collation='utf8_general_ci'), default='0', comment='删除标志0代表存在 2代表删除')
create_by = Column(String(64, collation='utf8_general_ci'), default='', comment='创建者')
status = Column(String(1), nullable=False, default='0', comment='角色状态0正常 1停用')
del_flag = Column(String(1), default='0', comment='删除标志0代表存在 2代表删除')
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now(), comment='创建时间')
update_by = Column(String(64, collation='utf8_general_ci'), default='', comment='更新者')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, default=datetime.now(), comment='更新时间')
remark = Column(String(500, collation='utf8_general_ci'), comment='备注')
remark = Column(String(500), default=None, comment='备注')
class SysRoleDept(Base):

View File

@@ -11,24 +11,24 @@ class SysUser(Base):
__tablename__ = 'sys_user'
user_id = Column(Integer, primary_key=True, autoincrement=True, comment='用户ID')
dept_id = Column(Integer, comment='部门ID')
user_name = Column(String(30, collation='utf8_general_ci'), nullable=False, comment='用户账号')
nick_name = Column(String(30, collation='utf8_general_ci'), nullable=False, comment='用户昵称')
user_type = Column(String(2, collation='utf8_general_ci'), default='00', comment='用户类型00系统用户')
email = Column(String(50, collation='utf8_general_ci'), default='', comment='用户邮箱')
phonenumber = Column(String(11, collation='utf8_general_ci'), default='', comment='手机号码')
sex = Column(String(1, collation='utf8_general_ci'), default='0', comment='用户性别0男 1女 2未知')
avatar = Column(String(100, collation='utf8_general_ci'), default='', comment='头像地址')
password = Column(String(100, collation='utf8_general_ci'), default='', comment='密码')
status = Column(String(1, collation='utf8_general_ci'), default='0', comment='帐号状态0正常 1停用')
del_flag = Column(String(1, collation='utf8_general_ci'), default='0', comment='删除标志0代表存在 2代表删除')
login_ip = Column(String(128, collation='utf8_general_ci'), default='', comment='最后登录IP')
dept_id = Column(Integer, default=None, comment='部门ID')
user_name = Column(String(30), nullable=False, comment='用户账号')
nick_name = Column(String(30), nullable=False, comment='用户昵称')
user_type = Column(String(2), default='00', comment='用户类型00系统用户')
email = Column(String(50), default='', comment='用户邮箱')
phonenumber = Column(String(11), default='', comment='手机号码')
sex = Column(String(1), default='0', comment='用户性别0男 1女 2未知')
avatar = Column(String(100), default='', comment='头像地址')
password = Column(String(100), default='', comment='密码')
status = Column(String(1), default='0', comment='帐号状态0正常 1停用')
del_flag = Column(String(1), default='0', comment='删除标志0代表存在 2代表删除')
login_ip = Column(String(128), default='', comment='最后登录IP')
login_date = Column(DateTime, comment='最后登录时间')
create_by = Column(String(64, collation='utf8_general_ci'), default='', comment='创建者')
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, comment='创建时间', default=datetime.now())
update_by = Column(String(64, collation='utf8_general_ci'), default='', comment='更新者')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, comment='更新时间', default=datetime.now())
remark = Column(String(500, collation='utf8_general_ci'), comment='备注')
remark = Column(String(500), default=None, comment='备注')
class SysUserRole(Base):

View File

@@ -253,7 +253,7 @@ class DeptService:
:return:
"""
dept_id_list = dept.ancestors.split(',')
await DeptDao.update_dept_status_normal_dao(query_db, dept_id_list)
await DeptDao.update_dept_status_normal_dao(query_db, list(map(int, dept_id_list)))
@classmethod
async def update_dept_children(cls, query_db: AsyncSession, dept_id: int, new_ancestors: str, old_ancestors: str):