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', } )