ShiErFeng/shierfeng-fastapi-backend/common/constant.py
2026-07-24 09:43:10 +08:00

857 lines
29 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from config.env import DataBaseConfig
class CommonConstant:
"""
常用常量
PASSWORD_ERROR_COUNT: 密码错误次数
WWW: www主域
HTTP: http请求
HTTPS: https请求
LOOKUP_RMI: RMI远程方法调用
LOOKUP_LDAP: LDAP远程方法调用
LOOKUP_LDAPS: LDAPS远程方法调用
YES: 是否为系统默认(是)
NO: 是否为系统默认(否)
DEPT_NORMAL: 部门正常状态
DEPT_DISABLE: 部门停用状态
UNIQUE: 校验是否唯一的返回标识(是)
NOT_UNIQUE: 校验是否唯一的返回标识(否)
"""
PASSWORD_ERROR_COUNT = 5
WWW = 'www.'
HTTP = 'http://'
HTTPS = 'https://'
LOOKUP_RMI = 'rmi:'
LOOKUP_LDAP = 'ldap:'
LOOKUP_LDAPS = 'ldaps:'
YES = 'Y'
NO = 'N'
DEPT_NORMAL = '0'
DEPT_DISABLE = '1'
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: 不支持的数据,媒体类型
TOO_MANY_REQUESTS: 请求过于频繁
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
TOO_MANY_REQUESTS = 429
ERROR = 500
NOT_IMPLEMENTED = 501
WARN = 601
class JobConstant:
"""
定时任务常量
JOB_ERROR_LIST: 定时任务禁止调用模块及违规字符串列表
JOB_WHITE_LIST: 定时任务允许调用模块列表
"""
JOB_ERROR_LIST = [
'app',
'config',
'exceptions',
'import ',
'middlewares',
'module_admin',
'open(',
'os.',
'server',
'sub_applications',
'subprocess.',
'sys.',
'utils',
'while ',
'__import__',
'"',
"'",
',',
'?',
':',
';',
'/',
'|',
'+',
'-',
'=',
'~',
'!',
'#',
'$',
'%',
'^',
'&',
'*',
'<',
'>',
'(',
')',
'[',
']',
'{',
'}',
' ',
]
JOB_WHITE_LIST = ['module_task']
class LockConstant:
"""
分布式锁常量
"""
APP_STARTUP_LOCK_KEY = 'app:startup:lock'
LOCK_EXPIRE_SECONDS = 60
LOCK_RENEWAL_INTERVAL = 20
class ApiNamespace:
"""
接口注解通用命名空间常量
这一组常量统一提供给 `ApiCache`、`ApiCacheEvict`、`ApiRateLimit`
等接口注解使用,用同一套“模块:功能”命名规则收敛缓存和限流场景。
LOGIN: 登录接口命名空间
REGISTER: 注册接口命名空间
LOGIN_USER_INFO: 登录用户信息接口命名空间
LOGIN_USER_ROUTERS: 登录用户路由接口命名空间
CAPTCHA_IMAGE: 图片验证码接口命名空间
COMMON_UPLOAD: 通用上传接口命名空间
TRANSPORT_CRYPTO_PUBLIC_KEY: 传输层加密公钥接口命名空间
TRANSPORT_CRYPTO_FRONTEND_CONFIG: 传输层加密前端配置接口命名空间
MONITOR_SERVER_INFO: 服务监控信息接口命名空间
MONITOR_CACHE_CLEAR_NAME: 缓存名称清理接口命名空间
MONITOR_CACHE_CLEAR_KEY: 缓存键清理接口命名空间
MONITOR_CACHE_CLEAR_ALL: 缓存全量清理接口命名空间
MONITOR_ONLINE_FORCE_LOGOUT: 在线用户强退接口命名空间
MONITOR_OPERLOG_CLEAN: 操作日志清空接口命名空间
MONITOR_OPERLOG_DELETE: 操作日志删除接口命名空间
MONITOR_OPERLOG_EXPORT: 操作日志导出接口命名空间
MONITOR_LOGININFO_CLEAN: 登录日志清空接口命名空间
MONITOR_LOGININFO_DELETE: 登录日志删除接口命名空间
MONITOR_LOGININFO_UNLOCK: 账户解锁接口命名空间
MONITOR_LOGININFO_EXPORT: 登录日志导出接口命名空间
MONITOR_JOB_LIST: 定时任务分页列表接口命名空间
MONITOR_JOB_DETAIL: 定时任务详情接口命名空间
MONITOR_JOB_RUN: 定时任务执行接口命名空间
MONITOR_JOB_DELETE: 定时任务删除接口命名空间
MONITOR_JOB_EXPORT: 定时任务导出接口命名空间
MONITOR_JOB_LOG_CLEAN: 定时任务日志清空接口命名空间
MONITOR_JOB_LOG_DELETE: 定时任务日志删除接口命名空间
MONITOR_JOB_LOG_EXPORT: 定时任务日志导出接口命名空间
SYSTEM_DEPT_EDIT_TREE: 部门编辑树接口命名空间
SYSTEM_DEPT_LIST: 部门列表接口命名空间
SYSTEM_DEPT_DETAIL: 部门详情接口命名空间
SYSTEM_CONFIG_LIST: 参数配置列表接口命名空间
SYSTEM_CONFIG_DETAIL: 参数配置详情接口命名空间
SYSTEM_CONFIG_REFRESH_CACHE: 参数缓存刷新接口命名空间
SYSTEM_CONFIG_EXPORT: 参数导出接口命名空间
SYSTEM_DICT_TYPE_LIST: 字典类型列表接口命名空间
SYSTEM_DICT_TYPE_OPTIONS: 字典类型选项接口命名空间
SYSTEM_DICT_TYPE_DETAIL: 字典类型详情接口命名空间
SYSTEM_DICT_REFRESH_CACHE: 字典缓存刷新接口命名空间
SYSTEM_DICT_TYPE_EXPORT: 字典类型导出接口命名空间
SYSTEM_DICT_DATA_LIST: 字典数据列表接口命名空间
SYSTEM_DICT_DATA_DETAIL: 字典数据详情接口命名空间
SYSTEM_DICT_DATA_EXPORT: 字典数据导出接口命名空间
SYSTEM_MENU_TREE: 菜单树接口命名空间
SYSTEM_MENU_ROLE_TREE: 角色菜单树接口命名空间
SYSTEM_MENU_LIST: 菜单分页列表接口命名空间
SYSTEM_MENU_DETAIL: 菜单详情接口命名空间
SYSTEM_NOTICE_LIST: 通知公告列表接口命名空间
SYSTEM_NOTICE_DETAIL: 通知公告详情接口命名空间
SYSTEM_POST_LIST: 岗位列表接口命名空间
SYSTEM_POST_DETAIL: 岗位详情接口命名空间
SYSTEM_POST_EXPORT: 岗位导出接口命名空间
SYSTEM_ROLE_DEPT_TREE: 角色部门树接口命名空间
SYSTEM_ROLE_LIST: 角色列表接口命名空间
SYSTEM_ROLE_DETAIL: 角色详情接口命名空间
SYSTEM_ROLE_ALLOCATED_USER_LIST: 已分配用户角色列表接口命名空间
SYSTEM_ROLE_UNALLOCATED_USER_LIST: 未分配用户角色列表接口命名空间
SYSTEM_ROLE_EXPORT: 角色导出接口命名空间
SYSTEM_ROLE_AUTH_USER_SELECT_ALL: 角色批量分配用户接口命名空间
SYSTEM_ROLE_AUTH_USER_CANCEL: 角色取消分配用户接口命名空间
SYSTEM_ROLE_AUTH_USER_CANCEL_ALL: 角色批量取消分配用户接口命名空间
SYSTEM_USER_DEPT_TREE: 用户部门树接口命名空间
SYSTEM_USER_LIST: 用户列表接口命名空间
SYSTEM_USER_PROFILE: 用户个人信息接口命名空间
SYSTEM_USER_DETAIL: 用户详情接口命名空间
SYSTEM_USER_PROFILE_AVATAR: 用户头像上传接口命名空间
SYSTEM_USER_IMPORT: 用户导入接口命名空间
SYSTEM_USER_EXPORT: 用户导出接口命名空间
AI_MODEL_LIST: AI模型列表接口命名空间
AI_MODEL_ALL: AI模型全量列表接口命名空间
AI_MODEL_DETAIL: AI模型详情接口命名空间
AI_CHAT_CONFIG: AI对话配置接口命名空间
AI_CHAT_SEND: AI对话发送接口命名空间
AI_CHAT_CANCEL: AI对话取消接口命名空间
TOOL_GEN_LIST: 代码生成列表接口命名空间
TOOL_GEN_DB_LIST: 代码生成数据源列表接口命名空间
TOOL_GEN_DETAIL: 代码生成详情接口命名空间
TOOL_GEN_PREVIEW: 代码生成预览接口命名空间
TOOL_GEN_IMPORT_TABLE: 代码生成导入表接口命名空间
TOOL_GEN_CREATE_TABLE: 代码生成建表接口命名空间
TOOL_GEN_BATCH_GEN_CODE: 代码生成批量下载接口命名空间
TOOL_GEN_GEN_CODE_LOCAL: 代码生成到本地接口命名空间
TOOL_GEN_SYNC_DB: 代码生成同步库结构接口命名空间
"""
LOGIN = 'login'
REGISTER = 'register'
LOGIN_USER_INFO = 'login:user:info'
LOGIN_USER_ROUTERS = 'login:user:routers'
CAPTCHA_IMAGE = 'captcha:image'
COMMON_UPLOAD = 'common:upload'
TRANSPORT_CRYPTO_PUBLIC_KEY = 'transport-crypto:public-key'
TRANSPORT_CRYPTO_FRONTEND_CONFIG = 'transport-crypto:frontend-config'
MONITOR_SERVER_INFO = 'monitor:server:info'
MONITOR_CACHE_CLEAR_NAME = 'monitor:cache:clear-name'
MONITOR_CACHE_CLEAR_KEY = 'monitor:cache:clear-key'
MONITOR_CACHE_CLEAR_ALL = 'monitor:cache:clear-all'
MONITOR_ONLINE_FORCE_LOGOUT = 'monitor:online:force-logout'
MONITOR_OPERLOG_CLEAN = 'monitor:operlog:clean'
MONITOR_OPERLOG_DELETE = 'monitor:operlog:delete'
MONITOR_OPERLOG_EXPORT = 'monitor:operlog:export'
MONITOR_LOGININFO_CLEAN = 'monitor:logininfor:clean'
MONITOR_LOGININFO_DELETE = 'monitor:logininfor:delete'
MONITOR_LOGININFO_UNLOCK = 'monitor:logininfor:unlock'
MONITOR_LOGININFO_EXPORT = 'monitor:logininfor:export'
MONITOR_JOB_LIST = 'monitor:job:list'
MONITOR_JOB_DETAIL = 'monitor:job:detail'
MONITOR_JOB_RUN = 'monitor:job:run'
MONITOR_JOB_DELETE = 'monitor:job:delete'
MONITOR_JOB_EXPORT = 'monitor:job:export'
MONITOR_JOB_LOG_CLEAN = 'monitor:job-log:clean'
MONITOR_JOB_LOG_DELETE = 'monitor:job-log:delete'
MONITOR_JOB_LOG_EXPORT = 'monitor:job-log:export'
SYSTEM_DEPT_EDIT_TREE = 'system:dept:edit-tree'
SYSTEM_DEPT_LIST = 'system:dept:list'
SYSTEM_DEPT_DETAIL = 'system:dept:detail'
SYSTEM_CONFIG_LIST = 'system:config:list'
SYSTEM_CONFIG_DETAIL = 'system:config:detail'
SYSTEM_CONFIG_REFRESH_CACHE = 'system:config:refresh-cache'
SYSTEM_CONFIG_EXPORT = 'system:config:export'
SYSTEM_DICT_TYPE_LIST = 'system:dict:type-list'
SYSTEM_DICT_TYPE_OPTIONS = 'system:dict:type-options'
SYSTEM_DICT_TYPE_DETAIL = 'system:dict:type-detail'
SYSTEM_DICT_REFRESH_CACHE = 'system:dict:refresh-cache'
SYSTEM_DICT_TYPE_EXPORT = 'system:dict:type-export'
SYSTEM_DICT_DATA_LIST = 'system:dict:data-list'
SYSTEM_DICT_DATA_DETAIL = 'system:dict:data-detail'
SYSTEM_DICT_DATA_EXPORT = 'system:dict:data-export'
SYSTEM_MENU_TREE = 'system:menu:tree'
SYSTEM_MENU_ROLE_TREE = 'system:menu:role-tree'
SYSTEM_MENU_LIST = 'system:menu:list'
SYSTEM_MENU_DETAIL = 'system:menu:detail'
SYSTEM_NOTICE_LIST = 'system:notice:list'
SYSTEM_NOTICE_DETAIL = 'system:notice:detail'
SYSTEM_POST_LIST = 'system:post:list'
SYSTEM_POST_DETAIL = 'system:post:detail'
SYSTEM_POST_EXPORT = 'system:post:export'
SYSTEM_ROLE_DEPT_TREE = 'system:role:dept-tree'
SYSTEM_ROLE_LIST = 'system:role:list'
SYSTEM_ROLE_DETAIL = 'system:role:detail'
SYSTEM_ROLE_ALLOCATED_USER_LIST = 'system:role:allocated-user-list'
SYSTEM_ROLE_UNALLOCATED_USER_LIST = 'system:role:unallocated-user-list'
SYSTEM_ROLE_EXPORT = 'system:role:export'
SYSTEM_ROLE_AUTH_USER_SELECT_ALL = 'system:role:auth-user-select-all'
SYSTEM_ROLE_AUTH_USER_CANCEL = 'system:role:auth-user-cancel'
SYSTEM_ROLE_AUTH_USER_CANCEL_ALL = 'system:role:auth-user-cancel-all'
SYSTEM_USER_DEPT_TREE = 'system:user:dept-tree'
SYSTEM_USER_LIST = 'system:user:list'
SYSTEM_USER_PROFILE = 'system:user:profile'
SYSTEM_USER_DETAIL = 'system:user:detail'
SYSTEM_USER_PROFILE_AVATAR = 'system:user:profile-avatar'
SYSTEM_USER_IMPORT = 'system:user:import'
SYSTEM_USER_EXPORT = 'system:user:export'
AI_MODEL_LIST = 'ai:model:list'
AI_MODEL_ALL = 'ai:model:all'
AI_MODEL_DETAIL = 'ai:model:detail'
AI_CHAT_CONFIG = 'ai:chat:config'
AI_CHAT_SEND = 'ai:chat:send'
AI_CHAT_CANCEL = 'ai:chat:cancel'
TOOL_GEN_LIST = 'tool:gen:list'
TOOL_GEN_DB_LIST = 'tool:gen:db-list'
TOOL_GEN_DETAIL = 'tool:gen:detail'
TOOL_GEN_PREVIEW = 'tool:gen:preview'
TOOL_GEN_IMPORT_TABLE = 'tool:gen:import-table'
TOOL_GEN_CREATE_TABLE = 'tool:gen:create-table'
TOOL_GEN_BATCH_GEN_CODE = 'tool:gen:batch-gen-code'
TOOL_GEN_GEN_CODE_LOCAL = 'tool:gen:gen-code-local'
TOOL_GEN_SYNC_DB = 'tool:gen:sync-db'
class ApiGroup:
"""
接口命名空间分组常量
当前主要用于 `ApiCacheEvict` 批量清理关联命名空间,分组成员均来自
`ApiNamespace`,按业务写操作影响范围收敛管理。
PERMISSION_MUTATION: 权限与菜单视图关联命名空间分组
DATA_SCOPE_MUTATION: 数据范围相关视图关联命名空间分组
MENU_MUTATION: 菜单写操作关联命名空间分组
JOB_MUTATION: 定时任务写操作关联命名空间分组
POST_MUTATION: 岗位写操作关联命名空间分组
NOTICE_MUTATION: 通知公告写操作关联命名空间分组
ROLE_ENTITY_MUTATION: 角色实体信息变更关联命名空间分组
ROLE_PERMISSION_MUTATION: 角色权限变更关联命名空间分组
ROLE_MUTATION: 角色通用写操作关联命名空间组合分组
USER_ENTITY_MUTATION: 用户实体信息变更关联命名空间分组
USER_PERMISSION_MUTATION: 用户权限变更关联命名空间分组
USER_INFO_MUTATION: 用户资料与安全相关写操作关联命名空间分组
LOGIN_SUCCESS_MUTATION: 登录成功后关联命名空间分组
LOGOUT_MUTATION: 登出后关联命名空间分组
CONFIG_MUTATION: 参数配置写操作关联命名空间分组
DICT_TYPE_MUTATION: 字典类型写操作关联命名空间分组
DICT_DATA_MUTATION: 字典数据写操作关联命名空间分组
AI_MODEL_MUTATION: AI模型写操作关联命名空间分组
AI_CHAT_CONFIG_MUTATION: AI对话配置写操作关联命名空间分组
GEN_MUTATION: 代码生成写操作关联命名空间分组
"""
PERMISSION_MUTATION = (
ApiNamespace.LOGIN_USER_INFO,
ApiNamespace.LOGIN_USER_ROUTERS,
ApiNamespace.SYSTEM_MENU_TREE,
ApiNamespace.SYSTEM_MENU_ROLE_TREE,
ApiNamespace.SYSTEM_MENU_LIST,
)
DATA_SCOPE_MUTATION = (
ApiNamespace.LOGIN_USER_INFO,
ApiNamespace.SYSTEM_DEPT_EDIT_TREE,
ApiNamespace.SYSTEM_DEPT_LIST,
ApiNamespace.SYSTEM_DEPT_DETAIL,
ApiNamespace.SYSTEM_ROLE_DEPT_TREE,
ApiNamespace.SYSTEM_ROLE_LIST,
ApiNamespace.SYSTEM_ROLE_DETAIL,
ApiNamespace.SYSTEM_ROLE_ALLOCATED_USER_LIST,
ApiNamespace.SYSTEM_ROLE_UNALLOCATED_USER_LIST,
ApiNamespace.SYSTEM_USER_DEPT_TREE,
ApiNamespace.SYSTEM_USER_LIST,
ApiNamespace.SYSTEM_USER_DETAIL,
ApiNamespace.SYSTEM_USER_PROFILE,
ApiNamespace.AI_MODEL_LIST,
ApiNamespace.AI_MODEL_ALL,
ApiNamespace.AI_MODEL_DETAIL,
)
MENU_MUTATION = (
*PERMISSION_MUTATION,
ApiNamespace.SYSTEM_MENU_DETAIL,
)
JOB_MUTATION = (
ApiNamespace.MONITOR_JOB_LIST,
ApiNamespace.MONITOR_JOB_DETAIL,
)
POST_MUTATION = (
ApiNamespace.SYSTEM_POST_LIST,
ApiNamespace.SYSTEM_POST_DETAIL,
ApiNamespace.SYSTEM_USER_DETAIL,
ApiNamespace.SYSTEM_USER_PROFILE,
)
NOTICE_MUTATION = (
ApiNamespace.SYSTEM_NOTICE_LIST,
ApiNamespace.SYSTEM_NOTICE_DETAIL,
)
ROLE_ENTITY_MUTATION = (
ApiNamespace.SYSTEM_ROLE_DEPT_TREE,
ApiNamespace.SYSTEM_ROLE_LIST,
ApiNamespace.SYSTEM_ROLE_DETAIL,
ApiNamespace.SYSTEM_ROLE_ALLOCATED_USER_LIST,
ApiNamespace.SYSTEM_ROLE_UNALLOCATED_USER_LIST,
ApiNamespace.SYSTEM_MENU_ROLE_TREE,
ApiNamespace.SYSTEM_USER_DETAIL,
)
ROLE_PERMISSION_MUTATION = (
*ROLE_ENTITY_MUTATION,
ApiNamespace.SYSTEM_USER_PROFILE,
ApiNamespace.LOGIN_USER_INFO,
*PERMISSION_MUTATION,
)
ROLE_MUTATION = (
*ROLE_PERMISSION_MUTATION,
*DATA_SCOPE_MUTATION,
)
USER_ENTITY_MUTATION = (
ApiNamespace.SYSTEM_USER_LIST,
ApiNamespace.SYSTEM_USER_DETAIL,
ApiNamespace.SYSTEM_ROLE_ALLOCATED_USER_LIST,
ApiNamespace.SYSTEM_ROLE_UNALLOCATED_USER_LIST,
)
USER_PERMISSION_MUTATION = (
*DATA_SCOPE_MUTATION,
*PERMISSION_MUTATION,
)
USER_INFO_MUTATION = (
ApiNamespace.SYSTEM_USER_LIST,
ApiNamespace.SYSTEM_USER_DETAIL,
ApiNamespace.SYSTEM_USER_PROFILE,
ApiNamespace.LOGIN_USER_INFO,
)
LOGIN_SUCCESS_MUTATION = (
ApiNamespace.SYSTEM_USER_LIST,
ApiNamespace.LOGIN_USER_INFO,
ApiNamespace.LOGIN_USER_ROUTERS,
ApiNamespace.SYSTEM_USER_PROFILE,
ApiNamespace.SYSTEM_USER_DETAIL,
)
LOGOUT_MUTATION = (
ApiNamespace.LOGIN_USER_INFO,
ApiNamespace.LOGIN_USER_ROUTERS,
)
CONFIG_MUTATION = (
ApiNamespace.SYSTEM_CONFIG_LIST,
ApiNamespace.SYSTEM_CONFIG_DETAIL,
)
DICT_TYPE_MUTATION = (
ApiNamespace.SYSTEM_DICT_TYPE_LIST,
ApiNamespace.SYSTEM_DICT_TYPE_OPTIONS,
ApiNamespace.SYSTEM_DICT_TYPE_DETAIL,
ApiNamespace.SYSTEM_DICT_DATA_LIST,
ApiNamespace.SYSTEM_DICT_DATA_DETAIL,
)
DICT_DATA_MUTATION = (
ApiNamespace.SYSTEM_DICT_DATA_LIST,
ApiNamespace.SYSTEM_DICT_DATA_DETAIL,
)
AI_MODEL_MUTATION = (
ApiNamespace.AI_MODEL_LIST,
ApiNamespace.AI_MODEL_ALL,
ApiNamespace.AI_MODEL_DETAIL,
)
AI_CHAT_CONFIG_MUTATION = (ApiNamespace.AI_CHAT_CONFIG,)
GEN_MUTATION = (
ApiNamespace.TOOL_GEN_LIST,
ApiNamespace.TOOL_GEN_DB_LIST,
ApiNamespace.TOOL_GEN_DETAIL,
ApiNamespace.TOOL_GEN_PREVIEW,
)
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'
class GenConstant:
"""
代码生成常量
TPL_CRUD: 单表(增删改查
TPL_TREE: 树表(增删改查)
TPL_SUB: 主子表(增删改查)
TREE_CODE: 树编码字段
TREE_PARENT_CODE: 树父编码字段
TREE_NAME: 树名称字段
PARENT_MENU_ID: 上级菜单ID字段
PARENT_MENU_NAME: 上级菜单名称字段
COLUMNTYPE_STR: 数据库字符串类型
COLUMNTYPE_TEXT: 数据库文本类型
COLUMNTYPE_TIME: 数据库时间类型
COLUMNTYPE_GEOMETRY: 数据库字空间类型
COLUMNTYPE_NUMBER: 数据库数字类型
COLUMNNAME_NOT_EDIT: 页面不需要编辑字段
COLUMNNAME_NOT_LIST: 页面不需要显示的列表字段
COLUMNNAME_NOT_QUERY: 页面不需要查询字段
BASE_ENTITY: Entity基类字段
TREE_ENTITY: Tree基类字段
HTML_INPUT: 文本框
HTML_TEXTAREA: 文本域
HTML_SELECT: 下拉框
HTML_RADIO: 单选框
HTML_CHECKBOX: 复选框
HTML_DATETIME: 日期控件
HTML_IMAGE_UPLOAD: 图片上传控件
HTML_FILE_UPLOAD: 文件上传控件
HTML_EDITOR: 富文本控件
TYPE_DECIMAL: 高精度计算类型
TYPE_DATE: 时间类型
QUERY_LIKE: 模糊查询
QUERY_EQ: 相等查询
REQUIRE: 需要
DB_TO_SQLALCHEMY_TYPE_MAPPING: 数据库类型与sqlalchemy类型映射
DB_TO_PYTHON_TYPE_MAPPING: 数据库类型与python类型映射
"""
TPL_CRUD = 'crud'
TPL_TREE = 'tree'
TPL_SUB = 'sub'
TREE_CODE = 'treeCode'
TREE_PARENT_CODE = 'treeParentCode'
TREE_NAME = 'treeName'
PARENT_MENU_ID = 'parentMenuId'
PARENT_MENU_NAME = 'parentMenuName'
COLUMNTYPE_STR = (
['character varying', 'varchar', 'character', 'char']
if DataBaseConfig.db_type == 'postgresql'
else ['char', 'varchar', 'nvarchar', 'varchar2']
)
COLUMNTYPE_TEXT = (
['text', 'citext'] if DataBaseConfig.db_type == 'postgresql' else ['tinytext', 'text', 'mediumtext', 'longtext']
)
COLUMNTYPE_TIME = (
[
'date',
'time',
'time with time zone',
'time without time zone',
'timestamp',
'timestamp with time zone',
'timestamp without time zone',
'interval',
]
if DataBaseConfig.db_type == 'postgresql'
else ['datetime', 'time', 'date', 'timestamp']
)
COLUMNTYPE_GEOMETRY = (
['point', 'line', 'lseg', 'box', 'path', 'polygon', 'circle']
if DataBaseConfig.db_type == 'postgresql'
else [
'geometry',
'point',
'linestring',
'polygon',
'multipoint',
'multilinestring',
'multipolygon',
'geometrycollection',
]
)
COLUMNTYPE_NUMBER = [
'tinyint',
'smallint',
'mediumint',
'int',
'number',
'integer',
'bit',
'bigint',
'float',
'double',
'decimal',
]
COLUMNNAME_NOT_ADD_SHOW = ['create_by', 'create_time']
COLUMNNAME_NOT_EDIT_SHOW = ['update_by', 'update_time']
COLUMNNAME_NOT_EDIT = ['id', 'create_by', 'create_time', 'del_flag']
COLUMNNAME_NOT_LIST = ['id', 'create_by', 'create_time', 'del_flag', 'update_by', 'update_time']
COLUMNNAME_NOT_QUERY = ['id', 'create_by', 'create_time', 'del_flag', 'update_by', 'update_time', 'remark']
BASE_ENTITY = ['createBy', 'createTime', 'updateBy', 'updateTime', 'remark']
TREE_ENTITY = ['parentName', 'parentId', 'orderNum', 'ancestors', 'children']
HTML_INPUT = 'input'
HTML_TEXTAREA = 'textarea'
HTML_SELECT = 'select'
HTML_RADIO = 'radio'
HTML_CHECKBOX = 'checkbox'
HTML_DATETIME = 'datetime'
HTML_IMAGE_UPLOAD = 'imageUpload'
HTML_FILE_UPLOAD = 'fileUpload'
HTML_EDITOR = 'editor'
TYPE_DECIMAL = 'Decimal'
TYPE_DATE = ['date', 'time', 'datetime']
QUERY_LIKE = 'LIKE'
QUERY_EQ = 'EQ'
REQUIRE = '1'
DB_TO_SQLALCHEMY_TYPE_MAPPING = (
{
'boolean': 'Boolean',
'smallint': 'SmallInteger',
'integer': 'Integer',
'bigint': 'BigInteger',
'real': 'Float',
'double precision': 'Float',
'numeric': 'Numeric',
'character varying': 'String',
'character': 'String',
'text': 'Text',
'bytea': 'LargeBinary',
'date': 'Date',
'time': 'Time',
'time with time zone': 'Time',
'time without time zone': 'Time',
'timestamp': 'DateTime',
'timestamp with time zone': 'DateTime',
'timestamp without time zone': 'DateTime',
'interval': 'Interval',
'json': 'JSON',
'jsonb': 'JSONB',
'uuid': 'Uuid',
'inet': 'INET',
'cidr': 'CIDR',
'macaddr': 'MACADDR',
'point': 'Geometry',
'line': 'Geometry',
'lseg': 'Geometry',
'box': 'Geometry',
'path': 'Geometry',
'polygon': 'Geometry',
'circle': 'Geometry',
'bit': 'Bit',
'bit varying': 'Bit',
'tsvector': 'TSVECTOR',
'tsquery': 'TSQUERY',
'xml': 'String',
'array': 'ARRAY',
'composite': 'JSON',
'enum': 'Enum',
'range': 'Range',
'money': 'Numeric',
'pg_lsn': 'BigInteger',
'txid_snapshot': 'String',
'oid': 'BigInteger',
'regproc': 'String',
'regclass': 'String',
'regtype': 'String',
'regrole': 'String',
'regnamespace': 'String',
'int2vector': 'ARRAY',
'oidvector': 'ARRAY',
'pg_node_tree': 'Text',
}
if DataBaseConfig.db_type == 'postgresql'
else {
# 数值类型
'TINYINT': 'SmallInteger',
'SMALLINT': 'SmallInteger',
'MEDIUMINT': 'Integer',
'INT': 'Integer',
'INTEGER': 'Integer',
'BIGINT': 'BigInteger',
'FLOAT': 'Float',
'DOUBLE': 'Float',
'DECIMAL': 'DECIMAL',
'BIT': 'Integer',
# 日期和时间类型
'DATE': 'Date',
'TIME': 'Time',
'DATETIME': 'DateTime',
'TIMESTAMP': 'TIMESTAMP',
'YEAR': 'Integer',
# 字符串类型
'CHAR': 'CHAR',
'VARCHAR': 'String',
'TINYTEXT': 'Text',
'TEXT': 'Text',
'MEDIUMTEXT': 'Text',
'LONGTEXT': 'Text',
'BINARY': 'BINARY',
'VARBINARY': 'VARBINARY',
'TINYBLOB': 'LargeBinary',
'BLOB': 'LargeBinary',
'MEDIUMBLOB': 'LargeBinary',
'LONGBLOB': 'LargeBinary',
# 枚举和集合类型
'ENUM': 'Enum',
'SET': 'String',
# JSON 类型
'JSON': 'JSON',
# 空间数据类型(需要扩展支持,如 GeoAlchemy2
'GEOMETRY': 'Geometry', # 需要安装 geoalchemy2
'POINT': 'Geometry',
'LINESTRING': 'Geometry',
'POLYGON': 'Geometry',
'MULTIPOINT': 'Geometry',
'MULTILINESTRING': 'Geometry',
'MULTIPOLYGON': 'Geometry',
'GEOMETRYCOLLECTION': 'Geometry',
}
)
DB_TO_PYTHON_TYPE_MAPPING = (
{
'boolean': 'bool',
'smallint': 'int',
'integer': 'int',
'bigint': 'int',
'real': 'float',
'double precision': 'float',
'numeric': 'Decimal',
'character varying': 'str',
'character': 'str',
'text': 'str',
'bytea': 'bytes',
'date': 'date',
'time': 'time',
'time with time zone': 'time',
'time without time zone': 'time',
'timestamp': 'datetime',
'timestamp with time zone': 'datetime',
'timestamp without time zone': 'datetime',
'interval': 'timedelta',
'json': 'dict',
'jsonb': 'dict',
'uuid': 'str',
'inet': 'str',
'cidr': 'str',
'macaddr': 'str',
'point': 'list',
'line': 'list',
'lseg': 'list',
'box': 'list',
'path': 'list',
'polygon': 'list',
'circle': 'list',
'bit': 'int',
'bit varying': 'int',
'tsvector': 'str',
'tsquery': 'str',
'xml': 'str',
'array': 'list',
'composite': 'dict',
'enum': 'str',
'range': 'list',
'money': 'Decimal',
'pg_lsn': 'int',
'txid_snapshot': 'str',
'oid': 'int',
'regproc': 'str',
'regclass': 'str',
'regtype': 'str',
'regrole': 'str',
'regnamespace': 'str',
'int2vector': 'list',
'oidvector': 'list',
'pg_node_tree': 'str',
}
if DataBaseConfig.db_type == 'postgresql'
else {
# 数值类型
'TINYINT': 'int',
'SMALLINT': 'int',
'MEDIUMINT': 'int',
'INT': 'int',
'INTEGER': 'int',
'BIGINT': 'int',
'FLOAT': 'float',
'DOUBLE': 'float',
'DECIMAL': 'Decimal',
'BIT': 'int',
# 日期和时间类型
'DATE': 'date',
'TIME': 'time',
'DATETIME': 'datetime',
'TIMESTAMP': 'datetime',
'YEAR': 'int',
# 字符串类型
'CHAR': 'str',
'VARCHAR': 'str',
'TINYTEXT': 'str',
'TEXT': 'str',
'MEDIUMTEXT': 'str',
'LONGTEXT': 'str',
'BINARY': 'bytes',
'VARBINARY': 'bytes',
'TINYBLOB': 'bytes',
'BLOB': 'bytes',
'MEDIUMBLOB': 'bytes',
'LONGBLOB': 'bytes',
# 枚举和集合类型
'ENUM': 'str',
'SET': 'str',
# JSON 类型
'JSON': 'dict',
# 空间数据类型(通常需要特殊处理)
'GEOMETRY': 'bytes',
'POINT': 'bytes',
'LINESTRING': 'bytes',
'POLYGON': 'bytes',
'MULTIPOINT': 'bytes',
'MULTILINESTRING': 'bytes',
'MULTIPOLYGON': 'bytes',
'GEOMETRYCOLLECTION': 'bytes',
}
)