Appearance
RuoYi-Vue-Pro 数据库表设计解析
1. 文档范围
- 主要依据:
sql/mysql/ruoyi-vue-pro.sql以及各业务模块的 MySQL 增量脚本。 - 补充依据:
member、report模块的测试建表脚本,因为它们在仓库里没有独立的主库增量 SQL。 - 结合代码:优先关联每张表对应的
DO、常见ServiceImpl,说明表不是孤立存在,而是如何被业务逻辑驱动。 - 不展开范围:
Quartz调度底层表、MES/IOT等尚未并入主 MySQL 发布脚本的独立模块表。
2. 先从设计层次看这套库为什么这样拆
2.1 第一层:主体对象
这层表保存“系统里真正长期存在的对象”,例如用户、角色、商品、订单、客户、供应商、流程表单。它们通常是主表,特点是:
- 有稳定主键
id。 - 会被很多其它表引用。
- 保存的是“当前有效状态”或“核心主数据”。
2.2 第二层:关系对象
像 system_user_role、system_role_menu、system_user_post 这类表,不是为了多建表,而是为了把多对多关系拆开。否则用户表会出现“角色数组”“岗位数组”这种难维护设计。
2.3 第三层:业务过程对象
像订单、支付、售后、采购、销售、库存流水、回款计划,本质上都在记录“过程”。这类过程型表通常会拆成:
- 头表:保存一笔业务的汇总状态。
- 行表:保存逐项明细。
- 日志/流水表:保存状态迁移、通知重试、审计历史。
2.4 第四层:平台能力对象
infra_、消息模板、OAuth2、文件存储、代码生成、定时任务这一层,不直接产生收入,但它们决定了整套系统是不是“平台型产品”。这也是芋道/RuoYi-Vue-Pro 和简单 CRUD 项目最大的差异之一。
2.5 第五层:租户与审计
很多表都带:
tenant_id:多租户隔离。creator/create_time/updater/update_time:审计字段。deleted:逻辑删除。
这说明系统设计目标不是“单公司后台”,而是“可运营、可审计、可 SaaS 化”的企业产品。
3. 模块总览
系统管理:32 张表基础设施:11 张表会员:6 张表商城:49 张表支付:14 张表CRM:19 张表ERP:33 张表BPM:8 张表公众号:7 张表AI:9 张表报表:1 张表示例:5 张表
系统管理
系统模块是整套后端的身份、组织、权限、租户、消息和审计中心。它把“谁能进系统、能看什么、能做什么、属于哪个组织、动作如何留痕”拆成多张表,是典型的企业后台核心设计。这里最重要的拆分思想是:用户不直接持有所有权限,而是通过部门、岗位、角色、菜单、租户和 OAuth2 会话逐层组合。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
system_dept(部门表) | 树形主表 | id、name、parent_id、sort、leader_user_id、phone、email、status、creator、create_time、updater、update_time、deleted、tenant_id | parent_id -> 同表主键,形成树结构;tenant_id -> 多租户隔离 | DeptDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/DeptDO.java);核心服务:DeptServiceImpl | 组织树主表,用 parent_id 表达层级,并把负责人绑定到用户。 |
system_dict_data(字典数据表) | 主表 | id、sort、label、value、dict_type、status、color_type、css_class、remark、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | DictDataDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dict/DictDataDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
system_dict_type(字典类型表) | 主表 | id、name、type、status、remark、creator、create_time、updater、update_time、deleted、deleted_time | 以业务字段和状态字段为主,弱外键关联为主。 | DictTypeDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dict/DictTypeDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
system_login_log(系统访问记录) | 日志表 | id、log_type、trace_id、user_id、user_type、username、result、user_ip、user_agent、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | LoginLogDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/LoginLogDO.java);核心服务:LoginLogServiceImpl | 登录日志表,记录账号访问、结果、IP、UA。 |
system_mail_account(邮箱账号表) | 主表 | id、mail、username、password、host、port、ssl_enable、starttls_enable、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | MailAccountDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailAccountDO.java);核心服务:MailAccountServiceImpl | 邮件账号配置表,适合一套系统配置多个发信身份。 |
system_mail_log(邮件日志表) | 日志表 | id、user_id、user_type、to_mails、cc_mails、bcc_mails、account_id、from_mail、template_id、template_code、template_nickname、template_title、template_content、template_params、send_status、send_time、send_message_id、send_exception、creator、create_time、updater、update_time、deleted | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);account_id -> system_mail_account.id / erp_account.id(按模块区分) | MailLogDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailLogDO.java);核心服务:MailLogServiceImpl / MailSendServiceImpl | 邮件发送日志表,记录投递对象、模板和结果。 |
system_mail_template(邮件模版表) | 模板表 | id、name、code、account_id、nickname、title、content、params、status、remark、creator、create_time、updater、update_time、deleted | account_id -> system_mail_account.id / erp_account.id(按模块区分) | MailTemplateDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/mail/MailTemplateDO.java);核心服务:MailTemplateServiceImpl | 邮件模板表,和账号拆分后可以一份模板复用多个账号。 |
system_menu(菜单权限表) | 树形主表 | id、name、permission、type、sort、parent_id、path、icon、component、component_name、status、visible、keep_alive、always_show、creator、create_time、updater、update_time、deleted | parent_id -> 同表主键,形成树结构 | MenuDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/MenuDO.java);核心服务:MenuServiceImpl / PermissionServiceImpl | 菜单与按钮权限主表,前端路由、页面按钮、接口权限都从这里映射。 |
system_notice(通知公告表) | 主表 | id、title、content、type、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | NoticeDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/notice/NoticeDO.java);核心服务:NoticeServiceImpl | 公告表,适合后台统一发布通知和公告。 |
system_notify_message(站内信消息表) | 主表 | id、user_id、user_type、template_id、template_code、template_nickname、template_content、template_type、template_params、read_status、read_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | NotifyMessageDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/notify/NotifyMessageDO.java);核心服务:NotifyMessageServiceImpl / NotifySendServiceImpl | 站内信消息实例表,表示模板渲染后的最终消息。 |
system_notify_template(站内信模板表) | 模板表 | id、name、code、nickname、content、type、params、status、remark、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | NotifyTemplateDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/notify/NotifyTemplateDO.java);核心服务:NotifyTemplateServiceImpl | 站内信模板表,沉淀统一消息内容模型。 |
system_oauth2_access_token(OAuth2 访问令牌) | 主表 | id、user_id、user_type、user_info、access_token、refresh_token、client_id、scopes、expires_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | OAuth2AccessTokenDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2AccessTokenDO.java);核心服务:OAuth2TokenServiceImpl | 访问令牌落库表,记录当前登录态与 token 元数据。 |
system_oauth2_approve(OAuth2 批准表) | 主表 | id、user_id、user_type、client_id、scope、approved、expires_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | OAuth2ApproveDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ApproveDO.java);核心服务:OAuth2ApproveServiceImpl | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
system_oauth2_client(OAuth2 客户端表) | 主表 | id、client_id、secret、name、logo、description、status、access_token_validity_seconds、refresh_token_validity_seconds、redirect_uris、authorized_grant_types、scopes、auto_approve_scopes、authorities、resource_ids、additional_information、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | OAuth2ClientDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2ClientDO.java);核心服务:OAuth2ClientServiceImpl | OAuth2 客户端配置表,支撑第三方系统接入。 |
system_oauth2_code(OAuth2 授权码表) | 主表 | id、user_id、user_type、code、client_id、scopes、expires_time、redirect_uri、state、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | OAuth2CodeDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2CodeDO.java);核心服务:OAuth2CodeServiceImpl | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
system_oauth2_refresh_token(OAuth2 刷新令牌) | 主表 | id、user_id、refresh_token、user_type、client_id、scopes、expires_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | OAuth2RefreshTokenDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/oauth2/OAuth2RefreshTokenDO.java);核心服务:OAuth2TokenServiceImpl | 刷新令牌表,用来延长会话而不重复登录。 |
system_operate_log(操作日志记录 V2 版本) | 日志表 | id、trace_id、user_id、user_type、type、sub_type、biz_id、action、success、extra、request_method、request_url、user_ip、user_agent、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | OperateLogDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/logger/OperateLogDO.java);核心服务:OperateLogServiceImpl | 操作日志表,用于审计关键业务操作。 |
system_post(岗位信息表) | 主表 | id、code、name、sort、status、remark、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | PostDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/PostDO.java);核心服务:PostServiceImpl | 岗位主数据,适合做职责归类,而不是直接替代角色。 |
system_role(角色信息表) | 主表 | id、name、code、sort、data_scope、data_scope_dept_ids、status、type、remark、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | RoleDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/RoleDO.java);核心服务:RoleServiceImpl / PermissionServiceImpl | 角色主表,既表达功能权限,也承载数据权限范围。 |
system_role_menu(角色和菜单关联表) | 关联表 | id、role_id、menu_id、creator、create_time、updater、update_time、deleted、tenant_id | role_id -> system_role.id;menu_id -> system_menu.id;tenant_id -> 多租户隔离 | RoleMenuDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/RoleMenuDO.java);核心服务:PermissionServiceImpl | 角色与菜单权限的多对多关联表,是权限收敛到角色的关键中间层。 |
system_sms_channel(短信渠道) | 主表 | id、signature、code、status、remark、api_key、api_secret、callback_url、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | SmsChannelDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SmsChannelDO.java);核心服务:SmsChannelServiceImpl | 短信渠道主表,抽象不同短信供应商配置。 |
system_sms_code(手机验证码) | 主表 | id、mobile、code、create_ip、scene、today_index、used、used_time、used_ip、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | SmsCodeDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SmsCodeDO.java);核心服务:SmsCodeServiceImpl | 验证码表,单独保存验证码生命周期和使用状态。 |
system_sms_log(短信日志) | 日志表 | id、channel_id、channel_code、template_id、template_code、template_type、template_content、template_params、api_template_id、mobile、user_id、user_type、send_status、send_time、api_send_code、api_send_msg、api_request_id、api_serial_no、receive_status、receive_time、api_receive_code、api_receive_msg、creator、create_time、updater、update_time、deleted | channel_id -> pay_channel.id / system_sms_channel.id(按模块区分);user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分) | SmsLogDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SmsLogDO.java);核心服务:SmsLogServiceImpl / SmsSendServiceImpl | 短信发送结果日志,便于排查发送链路和供应商返回值。 |
system_sms_template(短信模板) | 模板表 | id、type、status、code、name、content、params、remark、api_template_id、channel_id、channel_code、creator、create_time、updater、update_time、deleted | channel_id -> pay_channel.id / system_sms_channel.id(按模块区分) | SmsTemplateDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/sms/SmsTemplateDO.java);核心服务:SmsTemplateServiceImpl | 短信模板表,把业务文案、参数、渠道模板编号独立出来。 |
system_social_client(社交客户端表) | 主表 | id、name、social_type、user_type、client_id、client_secret、agent_id、public_key、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | SocialClientDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/social/SocialClientDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
system_social_user(社交用户表) | 主表 | id、type、openid、token、raw_token_info、nickname、avatar、raw_user_info、code、state、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | SocialUserDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/social/SocialUserDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
system_social_user_bind(社交绑定表) | 主表 | id、user_id、user_type、social_type、social_user_id、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);social_user_id -> system_social_user.id;tenant_id -> 多租户隔离 | SocialUserBindDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/social/SocialUserBindDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
system_tenant(租户表) | 主表 | id、name、contact_user_id、contact_name、contact_mobile、status、websites、package_id、expire_time、account_count、creator、create_time、updater、update_time、deleted | package_id -> system_tenant_package.id 或 pay_wallet_recharge_package.id(按模块区分) | TenantDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/tenant/TenantDO.java);核心服务:TenantServiceImpl | 租户主表,定义租户生命周期、套餐、账号上限和域名。 |
system_tenant_package(租户套餐表) | 主表 | id、name、status、remark、menu_ids、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | TenantPackageDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/tenant/TenantPackageDO.java);核心服务:TenantPackageServiceImpl | 租户套餐表,把可用菜单能力独立成可复用配置。 |
system_user_post(用户岗位表) | 关联表 | id、user_id、post_id、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);post_id -> system_post.id;tenant_id -> 多租户隔离 | UserPostDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/UserPostDO.java) | 用户与岗位的多对多关联表,让岗位可独立维护。 |
system_user_role(用户和角色关联表) | 关联表 | id、user_id、role_id、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);role_id -> system_role.id;tenant_id -> 多租户隔离 | UserRoleDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/UserRoleDO.java);核心服务:PermissionServiceImpl | 用户与角色的多对多关联表,用来避免在用户表里堆角色字段。 |
system_users(用户信息表) | 主表 | id、username、password、nickname、remark、dept_id、post_ids、email、mobile、sex、avatar、status、login_ip、login_date、creator、create_time、updater、update_time、deleted、tenant_id | dept_id -> system_dept.id;tenant_id -> 多租户隔离 | AdminUserDO(yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java);核心服务:AdminUserServiceImpl | 后台管理员主表,承载登录账号、部门归属、基础资料和租户隔离。 |
系统模块的关键关系链是:system_users -> system_user_role -> system_role -> system_role_menu -> system_menu,再加上 system_dept、system_post、system_tenant。这套设计的核心是“身份、组织、权限、租户”分层,不把职责压在一张用户表里。
基础设施
基础设施模块不直接承载业务单据,而是提供配置、文件、代码生成、任务调度、访问日志和数据源管理。这类表拆得细,是为了让技术能力成为平台能力,而不是写死在代码里。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
infra_api_access_log(API 访问日志表) | 日志表 | id、trace_id、user_id、user_type、application_name、request_method、request_url、request_params、response_body、user_ip、user_agent、operate_module、operate_name、operate_type、begin_time、end_time、duration、result_code、result_msg、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | ApiAccessLogDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiAccessLogDO.java) | 历史留痕层,和主业务表拆开,避免主表既承载当前态又承载无限增长的历史。 |
infra_api_error_log(系统异常日志) | 日志表 | id、trace_id、user_id、user_type、application_name、request_method、request_url、request_params、user_ip、user_agent、exception_time、exception_name、exception_message、exception_root_cause_message、exception_stack_trace、exception_class_name、exception_file_name、exception_method_name、exception_line_number、process_status、process_time、process_user_id、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | ApiErrorLogDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/logger/ApiErrorLogDO.java) | 历史留痕层,和主业务表拆开,避免主表既承载当前态又承载无限增长的历史。 |
infra_codegen_column(代码生成表字段定义) | 主表 | id、table_id、column_name、data_type、column_comment、nullable、primary_key、ordinal_position、java_type、java_field、dict_type、example、create_operation、update_operation、list_operation、list_operation_condition、list_operation_result、html_type、creator、create_time、updater、update_time、deleted | table_id -> infra_codegen_table.id | CodegenColumnDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/codegen/CodegenColumnDO.java);核心服务:CodegenServiceImpl | 代码生成的字段级定义,保存字段如何映射到 Java / 前端表单。 |
infra_codegen_table(代码生成表定义) | 主表 | id、data_source_config_id、scene、table_name、table_comment、remark、module_name、business_name、class_name、class_comment、author、template_type、front_type、parent_menu_id、master_table_id、sub_join_column_id、sub_join_many、tree_parent_column_id、tree_name_column_id、creator、create_time、updater、update_time、deleted | data_source_config_id -> infra_data_source_config.id | CodegenTableDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/codegen/CodegenTableDO.java);核心服务:CodegenServiceImpl | 代码生成的表级定义,保存生成场景、模块名、模板类型。 |
infra_config(参数配置表) | 配置表 | id、category、type、name、config_key、value、visible、remark、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | ConfigDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/config/ConfigDO.java);核心服务:ConfigServiceImpl | 参数配置表,把系统可热修改配置从代码中抽离。 |
infra_data_source_config(数据源配置表) | 配置表 | id、name、url、username、password、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | DataSourceConfigDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/db/DataSourceConfigDO.java);核心服务:DataSourceConfigServiceImpl | 配置中心表,把变化频繁但不属于事务数据的内容独立出来。 |
infra_file(文件表) | 主表 | id、config_id、name、path、url、type、size、creator、create_time、updater、update_time、deleted | config_id -> infra_file_config.id / ai_api_key.id(按模块区分) | FileDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileDO.java);核心服务:FileServiceImpl | 文件元数据表,只存路径、URL、配置来源等索引信息。 |
infra_file_config(文件配置表) | 配置表 | id、name、storage、remark、master、config、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | FileConfigDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileConfigDO.java);核心服务:FileConfigServiceImpl | 文件存储配置表,抽象本地、OSS、COS、MinIO 等存储实现。 |
infra_file_content(文件表) | 主表 | id、config_id、path、content、creator、create_time、updater、update_time、deleted | config_id -> infra_file_config.id / ai_api_key.id(按模块区分) | FileContentDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileContentDO.java) | 文件内容表,给数据库存储场景或小文件存储做补充。 |
infra_job(定时任务表) | 主表 | id、name、status、handler_name、handler_param、cron_expression、retry_count、retry_interval、monitor_timeout、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | JobDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/job/JobDO.java);核心服务:JobServiceImpl | 定时任务主表,描述调度器需要执行什么任务。 |
infra_job_log(定时任务日志表) | 日志表 | id、job_id、handler_name、handler_param、execute_index、begin_time、end_time、duration、status、result、creator、create_time、updater、update_time、deleted | job_id -> infra_job.id | JobLogDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/job/JobLogDO.java);核心服务:JobLogServiceImpl | 定时任务执行日志表,和任务定义拆开便于留历史。 |
基础设施模块的关键思想是“能力配置化”:文件上传靠 infra_file_config + infra_file,代码生成靠 infra_data_source_config + infra_codegen_table + infra_codegen_column,定时任务靠 infra_job + infra_job_log,访问监控靠 infra_api_access_log + infra_api_error_log。
会员
会员模块面向商城或 C 端用户,与后台管理员分库逻辑、分账号体系。这样能把前台注册、手机号登录、等级标签、收货地址和营销数据与后台权限体系隔开。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
member_address(用户收件地址) | 主表 | id、user_id、name、mobile、area_id、detail_address、default_status、create_time、creator、update_time、deleted、updater | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分) | MemberAddressDO(yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/address/MemberAddressDO.java) | 会员地址表,一对多保存收货地址。 |
member_brokerage_record(佣金记录) | 流水/历史表 | id、user_id、biz_id、biz_type、title、price、total_price、description、status、frozen_days、unfreeze_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | 未在当前扫描中定位到 DO | 会员分佣流水,保留每次佣金变动来源。 |
member_group(用户分组) | 主表 | id、name、remark、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | MemberGroupDO(yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/group/MemberGroupDO.java) | 会员分组表,用于精细化运营分群。 |
member_level(会员等级) | 主表 | id、name、experience、level、discount_percent、icon、background_url、creator、create_time、updater、update_time、deleted、tenant_id、status | tenant_id -> 多租户隔离 | MemberLevelDO(yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/level/MemberLevelDO.java) | 会员等级表,用于成长体系和权益分层。 |
member_tag(会员标签) | 主表 | id、name、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | MemberTagDO(yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/tag/MemberTagDO.java) | 会员标签表,用于画像标签和营销筛选。 |
member_user(会员表) | 主表 | id、nickname、name、sex、birthday、area_id、mark、point、avatar、status、mobile、password、register_ip、login_ip、login_date、tag_ids、level_id、experience、group_id、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | MemberUserDO(yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java);核心服务:MemberUserServiceImpl | 会员用户主表,面向商城前台,而不是后台管理员。 |
会员模块和后台用户拆开,是因为它们的注册方式、登录方式、运营属性和权限模型完全不同。后台用户强调 RBAC,会员用户强调登录、营销、地址、等级、标签和资产。
商城
商城模块按照“商品主数据 -> 营销活动 -> 交易履约”三层拆开。这样做的原因是商品可以长期存在,营销活动是阶段性的,而交易订单一旦形成就必须保持历史稳定,不应被商品或活动的后续变更直接污染。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
product_brand(商品品牌) | 主表 | id、name、pic_url、sort、description、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ProductBrandDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/brand/ProductBrandDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
product_browse_history(商品浏览记录表) | 流水/历史表 | id、user_id、spu_id、user_deleted、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);spu_id -> product_spu.id;tenant_id -> 多租户隔离 | ProductBrowseHistoryDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/history/ProductBrowseHistoryDO.java) | 记录过程变化而不是当前汇总状态,适合审计、对账和回放。 |
product_category(商品分类) | 树形主表 | id、parent_id、name、pic_url、sort、status、creator、create_time、updater、update_time、deleted、tenant_id | parent_id -> 同表主键,形成树结构;tenant_id -> 多租户隔离 | ProductCategoryDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java) | 树形主数据,通过 parent_id 实现层级管理,便于递归查询和级联展示。 |
product_comment(商品评论) | 主表 | id、user_id、user_nickname、user_avatar、anonymous、order_id、order_item_id、spu_id、spu_name、sku_id、sku_pic_url、sku_properties、visible、scores、description_scores、benefit_scores、content、pic_urls、reply_status、reply_user_id、reply_content、reply_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);order_id -> 订单主表 id;spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | ProductCommentDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
product_favorite(商品收藏表) | 主表 | id、user_id、spu_id、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);spu_id -> product_spu.id;tenant_id -> 多租户隔离 | ProductFavoriteDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/favorite/ProductFavoriteDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
product_property(商品属性项) | 主表 | id、name、status、remark、create_time、update_time、creator、updater、tenant_id、deleted | tenant_id -> 多租户隔离 | ProductPropertyDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
product_property_value(商品属性值) | 主表 | id、property_id、name、status、remark、create_time、update_time、creator、updater、tenant_id、deleted | tenant_id -> 多租户隔离 | ProductPropertyValueDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyValueDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
product_sku(商品sku) | 主表 | id、spu_id、properties、price、market_price、cost_price、bar_code、pic_url、stock、weight、volume、first_brokerage_price、second_brokerage_price、sales_count、create_time、update_time、creator、updater、deleted、tenant_id | spu_id -> product_spu.id;tenant_id -> 多租户隔离 | ProductSkuDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/sku/ProductSkuDO.java);核心服务:ProductSkuServiceImpl | 商品 SKU 明细表,承载规格组合、库存和销售价格。 |
product_spu(商品spu) | 主表 | id、name、keyword、introduction、description、category_id、brand_id、pic_url、slider_pic_urls、sort、status、spec_type、price、market_price、cost_price、stock、delivery_types、delivery_template_id、give_integral、sub_commission_type、sales_count、virtual_sales_count、browse_count、create_time、update_time、creator、updater、deleted、tenant_id | category_id -> 分类主表 id;brand_id -> 品牌主表 id;tenant_id -> 多租户隔离 | ProductSpuDO(yudao-module-mall/yudao-module-product/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/spu/ProductSpuDO.java);核心服务:ProductSpuServiceImpl | 商品 SPU 主表,沉淀商品公共信息和聚合统计字段。 |
product_statistics(商品统计表) | 主表 | id、time、spu_id、browse_count、browse_user_count、favorite_count、cart_count、order_count、order_pay_count、order_pay_price、after_sale_count、after_sale_refund_price、browse_convert_percent、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;tenant_id -> 多租户隔离 | ProductStatisticsDO(yudao-module-mall/yudao-module-statistics/src/main/java/cn/iocoder/yudao/module/statistics/dal/dataobject/product/ProductStatisticsDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_article(文章管理表) | 主表 | id、category_id、spu_id、title、author、pic_url、introduction、browse_count、sort、status、recommend_hot、recommend_banner、content、creator、create_time、updater、update_time、deleted、tenant_id | category_id -> 分类主表 id;spu_id -> product_spu.id;tenant_id -> 多租户隔离 | ArticleDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/article/ArticleDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_article_category(文章分类表) | 主表 | id、name、pic_url、status、sort、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ArticleCategoryDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/article/ArticleCategoryDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_banner(Banner 广告位) | 主表 | id、title、pic_url、url、status、sort、position、memo、browse_count、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | BannerDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/banner/BannerDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_bargain_activity(砍价活动) | 主表 | id、name、start_time、end_time、status、spu_id、sku_id、bargain_first_price、bargain_min_price、stock、total_stock、help_max_count、bargain_count、total_limit_count、random_min_price、random_max_price、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | BargainActivityDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/bargain/BargainActivityDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_bargain_help(砍价助力表) | 主表 | id、user_id、activity_id、record_id、reduce_price、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | BargainHelpDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/bargain/BargainHelpDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_bargain_record(砍价记录表) | 流水/历史表 | id、activity_id、user_id、spu_id、sku_id、bargain_first_price、bargain_price、status、order_id、end_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);spu_id -> product_spu.id;sku_id -> product_sku.id;order_id -> 订单主表 id;tenant_id -> 多租户隔离 | BargainRecordDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/bargain/BargainRecordDO.java) | 记录过程变化而不是当前汇总状态,适合审计、对账和回放。 |
promotion_combination_activity(拼团活动) | 主表 | id、name、spu_id、total_limit_count、single_limit_count、start_time、end_time、user_size、virtual_group、status、limit_duration、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;tenant_id -> 多租户隔离 | CombinationActivityDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/combination/CombinationActivityDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_combination_product(拼团商品) | 主表 | id、activity_id、spu_id、sku_id、activity_status、activity_start_time、activity_end_time、combination_price、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | CombinationProductDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/combination/CombinationProductDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_combination_record(拼团记录) | 流水/历史表 | id、activity_id、spu_id、pic_url、spu_name、sku_id、count、user_id、nickname、avatar、head_id、order_id、user_size、user_count、virtual_group、status、combination_price、expire_time、start_time、end_time、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;sku_id -> product_sku.id;user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);order_id -> 订单主表 id;tenant_id -> 多租户隔离 | CombinationRecordDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/combination/CombinationRecordDO.java) | 记录过程变化而不是当前汇总状态,适合审计、对账和回放。 |
promotion_coupon(优惠劵) | 主表 | id、template_id、name、status、user_id、take_type、use_price、valid_start_time、valid_end_time、product_scope、product_scope_values、discount_type、discount_percent、discount_price、discount_limit_price、use_order_id、use_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | CouponDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/coupon/CouponDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_coupon_template(优惠劵模板) | 模板表 | id、name、description、status、total_count、take_limit_count、take_type、use_price、product_scope、product_scope_values、validity_type、valid_start_time、valid_end_time、fixed_start_term、fixed_end_term、discount_type、discount_percent、discount_price、discount_limit_price、take_count、use_count、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | CouponTemplateDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/coupon/CouponTemplateDO.java) | 模板定义层,先存规则模板,再由消息/任务实例表引用。 |
promotion_discount_activity(限时折扣活动) | 主表 | id、name、status、start_time、end_time、remark、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | DiscountActivityDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/discount/DiscountActivityDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_discount_product(限时折扣商品\n) | 主表 | id、activity_id、spu_id、sku_id、discount_type、discount_percent、discount_price、activity_status、activity_name、activity_start_time、activity_end_time、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | DiscountProductDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/discount/DiscountProductDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_diy_page(装修页面) | 主表 | id、template_id、name、remark、preview_pic_urls、property、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | DiyPageDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/diy/DiyPageDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_diy_template(装修模板) | 模板表 | id、name、used、used_time、remark、preview_pic_urls、property、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | DiyTemplateDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/diy/DiyTemplateDO.java) | 模板定义层,先存规则模板,再由消息/任务实例表引用。 |
promotion_kefu_conversation(客服会话) | 主表 | id、user_id、last_message_time、last_message_content、last_message_content_type、admin_pinned、user_deleted、admin_deleted、admin_unread_message_count、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | KeFuConversationDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/kefu/KeFuConversationDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_kefu_message(客服消息) | 主表 | id、conversation_id、sender_id、sender_type、receiver_id、receiver_type、content_type、content、read_status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | KeFuMessageDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/kefu/KeFuMessageDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_point_activity(积分商城活动) | 主表 | id、spu_id、status、remark、sort、stock、total_stock、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;tenant_id -> 多租户隔离 | PointActivityDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/point/PointActivityDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_point_product(积分商城商品) | 主表 | id、activity_id、spu_id、sku_id、count、point、price、stock、activity_status、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | PointProductDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/point/PointProductDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_reward_activity(满减送活动) | 主表 | id、name、status、start_time、end_time、remark、condition_type、product_scope、product_scope_values、rules、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | RewardActivityDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/reward/RewardActivityDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_seckill_activity(秒杀活动) | 主表 | id、spu_id、name、status、remark、start_time、end_time、sort、config_ids、total_limit_count、single_limit_count、stock、total_stock、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;tenant_id -> 多租户隔离 | SeckillActivityDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/SeckillActivityDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
promotion_seckill_config(秒杀时段) | 配置表 | id、name、start_time、end_time、slider_pic_urls、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | SeckillConfigDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/SeckillConfigDO.java) | 配置中心表,把变化频繁但不属于事务数据的内容独立出来。 |
promotion_seckill_product(秒杀参与商品) | 主表 | id、activity_id、config_ids、spu_id、sku_id、seckill_price、stock、activity_status、activity_start_time、activity_end_time、creator、create_time、updater、update_time、deleted、tenant_id | spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | SeckillProductDO(yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/SeckillProductDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
trade_after_sale(售后订单) | 主表 | id、no、type、status、way、user_id、apply_reason、apply_description、apply_pic_urls、order_id、order_no、order_item_Id、spu_id、spu_name、sku_id、properties、pic_url、count、audit_time、audit_user_id、audit_reason、refund_price、pay_refund_id、refund_time、logistics_id、logistics_no、delivery_time、receive_time、receive_reason、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);order_id -> 订单主表 id;spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | AfterSaleDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/aftersale/AfterSaleDO.java);核心服务:AfterSaleServiceImpl | 售后主表,统一退款、退货、换货等售后申请。 |
trade_after_sale_log(售后订单日志) | 日志表 | id、user_id、user_type、after_sale_id、before_status、after_status、operate_type、content、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | AfterSaleLogDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/aftersale/AfterSaleLogDO.java);核心服务:AfterSaleLogServiceImpl | 售后流转日志,记录审批、退款、关闭等动作。 |
trade_brokerage_record(佣金记录) | 流水/历史表 | id、user_id、biz_id、biz_type、title、price、total_price、description、status、frozen_days、unfreeze_time、source_user_level、source_user_id、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | BrokerageRecordDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/brokerage/BrokerageRecordDO.java) | 记录过程变化而不是当前汇总状态,适合审计、对账和回放。 |
trade_brokerage_user(分销用户) | 主表 | id、bind_user_id、bind_user_time、brokerage_enabled、brokerage_time、brokerage_price、frozen_price、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | BrokerageUserDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/brokerage/BrokerageUserDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
trade_brokerage_withdraw(佣金提现) | 主表 | id、user_id、price、fee_price、total_price、type、name、account_no、bank_name、bank_address、account_qr_code_url、status、audit_reason、audit_time、remark、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | BrokerageWithdrawDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/brokerage/BrokerageWithdrawDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
trade_cart(购物车的商品信息) | 主表 | id、user_id、spu_id、sku_id、count、selected、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | CartDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/cart/CartDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
trade_config(交易中心配置) | 配置表 | id、after_sale_refund_reasons、after_sale_return_reasons、delivery_express_free_enabled、delivery_express_free_price、delivery_pick_up_enabled、brokerage_enabled、brokerage_enabled_condition、brokerage_bind_mode、brokerage_poster_urls、brokerage_first_percent、brokerage_second_percent、brokerage_withdraw_min_price、brokerage_withdraw_fee_percent、brokerage_frozen_days、brokerage_withdraw_types、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | TradeConfigDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/config/TradeConfigDO.java) | 配置中心表,把变化频繁但不属于事务数据的内容独立出来。 |
trade_delivery_express(快递公司) | 主表 | id、code、name、logo、sort、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | DeliveryExpressDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryExpressDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
trade_delivery_express_template(快递运费模板) | 模板表 | id、name、charge_mode、sort、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | DeliveryExpressTemplateDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateDO.java) | 模板定义层,先存规则模板,再由消息/任务实例表引用。 |
trade_delivery_express_template_charge(快递运费模板计费配置) | 主表 | id、template_id、area_ids、charge_mode、start_count、start_price、extra_count、extra_price、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | DeliveryExpressTemplateChargeDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateChargeDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
trade_delivery_express_template_free(快递运费模板包邮配置) | 主表 | id、template_id、area_ids、free_price、free_count、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | DeliveryExpressTemplateFreeDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateFreeDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
trade_delivery_pick_up_store(自提门店) | 主表 | id、name、introduction、phone、area_id、detail_address、logo、opening_time、closing_time、latitude、longitude、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | DeliveryPickUpStoreDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/delivery/DeliveryPickUpStoreDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
trade_order(交易订单表) | 主表 | id、no、type、terminal、user_id、user_ip、user_remark、status、product_count、cancel_type、remark、comment_status、brokerage_user_id、pay_order_id、pay_status、pay_time、pay_channel_code、finish_time、cancel_time、total_price、discount_price、delivery_price、adjust_price、pay_price、delivery_type、logistics_id、logistics_no、delivery_time、receive_time、receiver_name、receiver_mobile、receiver_area_id、receiver_detail_address、pick_up_store_id、pick_up_verify_code、refund_status、refund_price、coupon_id、coupon_price、use_point、point_price、give_point、refund_point、vip_price、give_coupon_template_counts、give_coupon_ids、seckill_activity_id、bargain_activity_id、bargain_record_id、combination_activity_id、combination_head_id、combination_record_id、point_activity_id、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | TradeOrderDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java);核心服务:TradeOrderUpdateServiceImpl / TradeOrderQueryServiceImpl | 交易订单主表,负责订单状态机、金额汇总、履约信息。 |
trade_order_item(交易订单明细表) | 明细表 | id、user_id、order_id、cart_id、spu_id、spu_name、sku_id、properties、pic_url、count、comment_status、price、discount_price、delivery_price、adjust_price、pay_price、coupon_price、point_price、use_point、give_point、vip_price、after_sale_id、after_sale_status、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);order_id -> 订单主表 id;spu_id -> product_spu.id;sku_id -> product_sku.id;tenant_id -> 多租户隔离 | TradeOrderItemDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java) | 订单行项目表,把一笔订单拆成多个商品明细。 |
trade_order_log(交易订单日志) | 日志表 | id、user_id、user_type、order_id、before_status、after_status、operate_type、content、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);order_id -> 订单主表 id;tenant_id -> 多租户隔离 | TradeOrderLogDO(yudao-module-mall/yudao-module-trade/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderLogDO.java);核心服务:TradeOrderLogServiceImpl | 订单状态日志表,用于追踪订单状态变化。 |
trade_statistics(交易统计表) | 主表 | id、time、order_create_count、order_pay_count、order_pay_price、after_sale_count、after_sale_refund_price、brokerage_settlement_price、wallet_pay_price、recharge_pay_count、recharge_pay_price、recharge_refund_count、recharge_refund_price、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | TradeStatisticsDO(yudao-module-mall/yudao-module-statistics/src/main/java/cn/iocoder/yudao/module/statistics/dal/dataobject/trade/TradeStatisticsDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
商城模块最重要的链路是:product_spu/product_sku -> promotion_* -> trade_order/trade_order_item -> trade_after_sale。商品、营销、交易拆层之后,历史订单不会因为商品改价或活动下线而失真。
支付
支付模块把业务订单与支付单解耦,形成支付应用、支付渠道、支付订单、支付提交扩展、退款、通知任务、钱包流水几个层级。这种拆法的核心收益是:同一业务单可以多次发起支付,同一个支付平台可以给多个业务应用复用。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
pay_app(支付应用信息) | 主表 | id、app_key、name、status、remark、order_notify_url、refund_notify_url、transfer_notify_url、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | PayAppDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/app/PayAppDO.java) | 支付应用表,把商城、钱包、演示等支付入口独立建模。 |
pay_channel(支付渠道\n) | 主表 | id、code、status、remark、fee_rate、app_id、config、creator、create_time、updater、update_time、deleted、tenant_id | app_id -> pay_app.id / mp_account.app_id(按模块区分);tenant_id -> 多租户隔离 | PayChannelDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/channel/PayChannelDO.java) | 支付渠道表,把支付宝、微信等商户参数挂到应用下面。 |
pay_demo_order(示例订单\n) | 主表 | id、user_id、spu_id、spu_name、price、pay_status、pay_order_id、pay_channel_code、pay_time、pay_refund_id、refund_price、refund_time、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);spu_id -> product_spu.id;tenant_id -> 多租户隔离 | PayDemoOrderDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/demo/PayDemoOrderDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
pay_demo_transfer(示例业务转账订单) | 主表 | id、app_id、type、price、user_name、alipay_logon_id、openid、transfer_status、pay_transfer_id、pay_channel_code、transfer_time、creator、create_time、updater、update_time、deleted、tenant_id | app_id -> pay_app.id / mp_account.app_id(按模块区分);tenant_id -> 多租户隔离 | 未在当前扫描中定位到 DO | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
pay_notify_log(支付通知 App 的日志) | 日志表 | id、task_id、notify_times、response、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | PayNotifyLogDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/notify/PayNotifyLogDO.java) | 支付通知日志,记录每次通知响应。 |
pay_notify_task(商户支付、退款等的通知\n) | 主表 | id、app_id、type、data_id、status、merchant_order_id、merchant_transfer_id、next_notify_time、last_execute_time、notify_times、max_notify_times、notify_url、creator、create_time、updater、update_time、deleted、tenant_id | app_id -> pay_app.id / mp_account.app_id(按模块区分);tenant_id -> 多租户隔离 | PayNotifyTaskDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/notify/PayNotifyTaskDO.java) | 异步通知任务表,保障支付结果回调可重试。 |
pay_order(支付订单\n) | 主表 | id、app_id、channel_id、channel_code、merchant_order_id、subject、body、notify_url、price、channel_fee_rate、channel_fee_price、status、user_ip、expire_time、success_time、extension_id、no、refund_price、channel_user_id、channel_order_no、creator、create_time、updater、update_time、deleted、tenant_id | app_id -> pay_app.id / mp_account.app_id(按模块区分);channel_id -> pay_channel.id / system_sms_channel.id(按模块区分);tenant_id -> 多租户隔离 | PayOrderDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/order/PayOrderDO.java);核心服务:PayOrderServiceImpl | 支付订单主表,负责统一商户订单与渠道支付的映射。 |
pay_order_extension(支付订单\n) | 明细表 | id、no、order_id、channel_id、channel_code、user_ip、status、channel_extras、channel_error_code、channel_error_msg、channel_notify_data、creator、create_time、updater、update_time、deleted、tenant_id | order_id -> 订单主表 id;channel_id -> pay_channel.id / system_sms_channel.id(按模块区分);tenant_id -> 多租户隔离 | PayOrderExtensionDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/order/PayOrderExtensionDO.java) | 支付尝试扩展表,一笔商户单可有多次提交或多个渠道尝试。 |
pay_refund(退款订单) | 主表 | id、no、app_id、channel_id、channel_code、order_id、order_no、merchant_order_id、merchant_refund_id、notify_url、status、pay_price、refund_price、reason、user_ip、channel_order_no、channel_refund_no、success_time、channel_error_code、channel_error_msg、channel_notify_data、creator、create_time、updater、update_time、deleted、tenant_id | app_id -> pay_app.id / mp_account.app_id(按模块区分);channel_id -> pay_channel.id / system_sms_channel.id(按模块区分);order_id -> 订单主表 id;tenant_id -> 多租户隔离 | PayRefundDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/refund/PayRefundDO.java);核心服务:PayRefundServiceImpl | 退款主表,把退款过程和支付订单拆分,支持多次退款。 |
pay_transfer(转账单表) | 主表 | id、no、app_id、channel_id、channel_code、merchant_transfer_id、type、status、success_time、price、subject、user_name、alipay_logon_id、openid、notify_url、user_ip、channel_extras、channel_transfer_no、channel_error_code、channel_error_msg、channel_notify_data、creator、create_time、updater、update_time、deleted、tenant_id | app_id -> pay_app.id / mp_account.app_id(按模块区分);channel_id -> pay_channel.id / system_sms_channel.id(按模块区分);tenant_id -> 多租户隔离 | PayTransferDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/transfer/PayTransferDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
pay_wallet(会员钱包表) | 主表 | id、user_id、user_type、balance、total_expense、total_recharge、freeze_price、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | PayWalletDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/wallet/PayWalletDO.java) | 钱包账户表,保存用户余额汇总。 |
pay_wallet_recharge(会员钱包充值) | 主表 | id、wallet_id、total_price、pay_price、bonus_price、package_id、pay_status、pay_order_id、pay_channel_code、pay_time、pay_refund_id、refund_total_price、refund_pay_price、refund_bonus_price、refund_time、refund_status、creator、create_time、updater、update_time、deleted、tenant_id | package_id -> system_tenant_package.id 或 pay_wallet_recharge_package.id(按模块区分);tenant_id -> 多租户隔离 | PayWalletRechargeDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/wallet/PayWalletRechargeDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
pay_wallet_recharge_package(充值套餐表) | 主表 | id、name、pay_price、bonus_price、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | PayWalletRechargePackageDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/wallet/PayWalletRechargePackageDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
pay_wallet_transaction(会员钱包流水表) | 主表 | id、wallet_id、biz_type、biz_id、no、title、price、balance、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | PayWalletTransactionDO(yudao-module-pay/src/main/java/cn/iocoder/yudao/module/pay/dal/dataobject/wallet/PayWalletTransactionDO.java) | 钱包流水表,和余额拆分可保留完整账务历史。 |
支付模块最核心的设计是:业务订单不直接等于支付订单。pay_order 只管支付,pay_order_extension 处理多次支付提交,pay_refund 处理退款,pay_notify_task/log 保证异步通知可靠送达。
CRM
CRM 模块把销售链路拆成线索、客户、联系人、商机、合同、回款和共享权限。这样可以让销售过程从“潜在机会”逐步沉淀为“可回款资产”,每个阶段的数据口径也更清晰。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
crm_business(CRM 商机表) | 主表 | id、name、customer_id、follow_up_status、contact_last_time、contact_next_time、owner_user_id、status_type_id、status_id、end_status、deal_time、total_product_price、discount_percent、total_price、remark、creator、updater、create_time、update_time、end_remark、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);tenant_id -> 多租户隔离 | CrmBusinessDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessDO.java) | 商机表,用来表达销售机会和阶段推进。 |
crm_business_product(CRM 商机产品关联表) | 主表 | id、business_id、product_id、product_price、business_price、count、total_price、creator、create_time、updater、update_time、deleted、tenant_id | business_id -> crm_business.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | CrmBusinessProductDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessProductDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
crm_business_status(CRM 商机状态表) | 主表 | id、type_id、name、percent、sort、creator、create_time、updater、update_time、tenant_id、deleted | tenant_id -> 多租户隔离 | CrmBusinessStatusDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessStatusDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
crm_business_status_type(CRM 商机状态组表) | 主表 | id、name、dept_ids、creator、create_time、updater、update_time、tenant_id、deleted | tenant_id -> 多租户隔离 | CrmBusinessStatusTypeDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/business/CrmBusinessStatusTypeDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
crm_clue(CRM 线索表) | 主表 | id、name、follow_up_status、contact_last_time、contact_last_content、contact_next_time、owner_user_id、transform_status、customer_id、mobile、telephone、qq、wechat、email、area_id、detail_address、industry_id、level、source、remark、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);tenant_id -> 多租户隔离 | CrmClueDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/clue/CrmClueDO.java) | 线索表,保存未转化前的潜客信息。 |
crm_contact(CRM 联系人) | 树形主表 | id、name、customer_id、contact_last_time、contact_last_content、contact_next_time、owner_user_id、mobile、telephone、email、qq、wechat、area_id、detail_address、sex、master、parent_id、post、remark、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);parent_id -> 同表主键,形成树结构;tenant_id -> 多租户隔离 | CrmContactDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contact/CrmContactDO.java) | 联系人表,把联系人从客户主体里拆开。 |
crm_contact_business(CRM 联系人商机关联表) | 关联表 | id、contact_id、business_id、creator、create_time、updater、update_time、deleted、tenant_id | business_id -> crm_business.id;tenant_id -> 多租户隔离 | CrmContactBusinessDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contact/CrmContactBusinessDO.java) | 中间关联层,把多对多关系拆开,避免在主表里保存数组或重复列。 |
crm_contract(CRM 合同表) | 主表 | id、name、no、customer_id、business_id、contact_last_time、owner_user_id、process_instance_id、audit_status、order_date、start_time、end_time、total_product_price、discount_percent、total_price、sign_contact_id、sign_user_id、remark、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);business_id -> crm_business.id;tenant_id -> 多租户隔离 | CrmContractDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contract/CrmContractDO.java) | 合同表,用来固化成交结果和回款依据。 |
crm_contract_config(CRM 合同配置表) | 配置表 | id、notify_enabled、notify_days、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | CrmContractConfigDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contract/CrmContractConfigDO.java) | 配置中心表,把变化频繁但不属于事务数据的内容独立出来。 |
crm_contract_product(CRM 合同产品关联表) | 主表 | id、contract_id、product_id、product_price、contract_price、count、total_price、creator、create_time、updater、update_time、deleted、tenant_id | contract_id -> crm_contract.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | CrmContractProductDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contract/CrmContractProductDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
crm_customer(CRM 客户表) | 主表 | id、name、follow_up_status、contact_last_time、contact_last_content、contact_next_time、owner_user_id、owner_time、lock_status、deal_status、mobile、telephone、qq、wechat、email、area_id、detail_address、industry_id、level、source、remark、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | CrmCustomerDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/customer/CrmCustomerDO.java);核心服务:CrmCustomerServiceImpl | 客户主表,是 CRM 的核心资产对象。 |
crm_customer_limit_config(CRM 客户限制配置表) | 配置表 | id、type、user_ids、dept_ids、max_count、deal_count_enabled、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | CrmCustomerLimitConfigDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/customer/CrmCustomerLimitConfigDO.java) | 配置中心表,把变化频繁但不属于事务数据的内容独立出来。 |
crm_customer_pool_config(CRM 客户公海配置表) | 配置表 | id、enabled、contact_expire_days、deal_expire_days、notify_enabled、notify_days、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | CrmCustomerPoolConfigDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/customer/CrmCustomerPoolConfigDO.java) | 配置中心表,把变化频繁但不属于事务数据的内容独立出来。 |
crm_follow_up_record(CRM 跟进记录) | 流水/历史表 | id、biz_type、biz_id、type、content、next_time、pic_urls、file_urls、business_ids、contact_ids、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | CrmFollowUpRecordDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/followup/CrmFollowUpRecordDO.java) | 记录过程变化而不是当前汇总状态,适合审计、对账和回放。 |
crm_permission(CRM 数据权限表) | 主表 | id、biz_type、biz_id、user_id、level、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | CrmPermissionDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/permission/CrmPermissionDO.java) | CRM 业务对象权限表,把客户/商机/合同的共享权限独立建模。 |
crm_product(CRM 产品表) | 主表 | id、name、no、unit、price、status、category_id、description、owner_user_id、creator、create_time、updater、update_time、tenant_id、deleted | category_id -> 分类主表 id;tenant_id -> 多租户隔离 | CrmProductDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
crm_product_category(CRM 产品分类表) | 树形主表 | id、name、parent_id、creator、create_time、updater、update_time、deleted、tenant_id | parent_id -> 同表主键,形成树结构;tenant_id -> 多租户隔离 | CrmProductCategoryDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductCategoryDO.java) | 树形主数据,通过 parent_id 实现层级管理,便于递归查询和级联展示。 |
crm_receivable(CRM 回款表) | 主表 | id、no、plan_id、customer_id、contract_id、owner_user_id、audit_status、process_instance_id、return_time、return_type、price、remark、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);contract_id -> crm_contract.id;tenant_id -> 多租户隔离 | CrmReceivableDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivableDO.java) | 回款表,表示已发生或待确认的回款记录。 |
crm_receivable_plan(CRM 回款计划表) | 主表 | id、period、customer_id、contract_id、owner_user_id、receivable_id、return_time、return_type、price、remind_days、remind_time、remark、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);contract_id -> crm_contract.id;receivable_id -> crm_receivable.id;tenant_id -> 多租户隔离 | CrmReceivablePlanDO(yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/receivable/CrmReceivablePlanDO.java) | 回款计划表,把未来回款节点提前拆出来。 |
CRM 模块的业务推进顺序通常是:线索 crm_clue -> 客户 crm_customer / 联系人 crm_contact -> 商机 crm_business -> 合同 crm_contract -> 回款计划 crm_receivable_plan -> 回款 crm_receivable。权限共享单独由 crm_permission 处理。
ERP
ERP 模块是典型的主数据 + 单据头 + 单据体 + 库存流水设计。采购、销售、出入库、盘点、调拨、收付款都拆成头表和行表,是为了同时满足汇总查询和明细追溯。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
erp_account(ERP 结算账户) | 主表 | id、name、no、remark、status、sort、default_status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpAccountDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpAccountDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
erp_customer(ERP 客户表) | 主表 | id、name、contact、mobile、telephone、email、fax、remark、status、sort、tax_no、tax_percent、bank_name、bank_account、bank_address、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpCustomerDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpCustomerDO.java) | ERP 客户主数据表。 |
erp_finance_payment(ERP 付款单表) | 主表 | id、no、status、payment_time、finance_user_id、supplier_id、account_id、total_price、discount_price、payment_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | supplier_id -> erp_supplier.id;account_id -> system_mail_account.id / erp_account.id(按模块区分);tenant_id -> 多租户隔离 | ErpFinancePaymentDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java) | 付款主表。 |
erp_finance_payment_item(ERP 付款项表) | 明细表 | id、payment_id、biz_type、biz_id、biz_no、total_price、paid_price、payment_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpFinancePaymentItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentItemDO.java) | 付款分摊明细表。 |
erp_finance_receipt(ERP 收款单表) | 主表 | id、no、status、receipt_time、finance_user_id、customer_id、account_id、total_price、discount_price、receipt_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);account_id -> system_mail_account.id / erp_account.id(按模块区分);tenant_id -> 多租户隔离 | ErpFinanceReceiptDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptDO.java) | 收款主表,让财务收款与销售单据解耦。 |
erp_finance_receipt_item(ERP 收款项表) | 明细表 | id、receipt_id、biz_type、biz_id、biz_no、total_price、receipted_price、receipt_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpFinanceReceiptItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinanceReceiptItemDO.java) | 收款分摊明细表。 |
erp_product(ERP 产品表) | 主表 | id、name、bar_code、category_id、unit_id、status、standard、remark、expiry_day、weight、purchase_price、sale_price、min_price、creator、create_time、updater、update_time、deleted、tenant_id | category_id -> 分类主表 id;tenant_id -> 多租户隔离 | ErpProductDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductDO.java) | ERP 商品主数据表,偏库存和进销存口径。 |
erp_product_category(ERP 产品分类) | 树形主表 | id、parent_id、name、code、sort、status、creator、create_time、updater、update_time、deleted、tenant_id | parent_id -> 同表主键,形成树结构;tenant_id -> 多租户隔离 | ErpProductCategoryDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductCategoryDO.java) | ERP 商品分类树。 |
erp_product_unit(ERP 产品单位表) | 主表 | id、name、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpProductUnitDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/product/ErpProductUnitDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
erp_purchase_in(ERP 采购入库表) | 主表 | id、no、status、supplier_id、account_id、in_time、order_id、order_no、total_count、total_price、payment_price、total_product_price、total_tax_price、discount_percent、discount_price、other_price、file_url、remark、creator、create_time、updater、update_time、deleted、tenant_id | supplier_id -> erp_supplier.id;account_id -> system_mail_account.id / erp_account.id(按模块区分);order_id -> 订单主表 id;tenant_id -> 多租户隔离 | ErpPurchaseInDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInDO.java) | 采购入库主表。 |
erp_purchase_in_items(ERP 销售入库项表) | 明细表 | id、in_id、order_item_id、warehouse_id、product_id、product_unit_id、product_price、count、total_price、tax_percent、tax_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | warehouse_id -> erp_warehouse.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpPurchaseInItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseInItemDO.java) | 采购入库明细表。 |
erp_purchase_order(ERP 采购订单表) | 主表 | id、no、status、supplier_id、account_id、order_time、total_count、total_price、total_product_price、total_tax_price、discount_percent、discount_price、deposit_price、file_url、remark、in_count、return_count、creator、create_time、updater、update_time、deleted、tenant_id | supplier_id -> erp_supplier.id;account_id -> system_mail_account.id / erp_account.id(按模块区分);tenant_id -> 多租户隔离 | ErpPurchaseOrderDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderDO.java) | 采购订单主表。 |
erp_purchase_order_items(ERP 采购订单项表) | 明细表 | id、order_id、product_id、product_unit_id、product_price、count、total_price、tax_percent、tax_price、remark、in_count、return_count、creator、create_time、updater、update_time、deleted、tenant_id | order_id -> 订单主表 id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpPurchaseOrderItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseOrderItemDO.java) | 采购订单明细表。 |
erp_purchase_return(ERP 采购退货表) | 主表 | id、no、status、supplier_id、account_id、return_time、order_id、order_no、total_count、total_price、refund_price、total_product_price、total_tax_price、discount_percent、discount_price、other_price、file_url、remark、creator、create_time、updater、update_time、deleted、tenant_id | supplier_id -> erp_supplier.id;account_id -> system_mail_account.id / erp_account.id(按模块区分);order_id -> 订单主表 id;tenant_id -> 多租户隔离 | ErpPurchaseReturnDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnDO.java) | 采购退货主表。 |
erp_purchase_return_items(ERP 采购退货项表) | 明细表 | id、return_id、order_item_id、warehouse_id、product_id、product_unit_id、product_price、count、total_price、tax_percent、tax_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | warehouse_id -> erp_warehouse.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpPurchaseReturnItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpPurchaseReturnItemDO.java) | 采购退货明细表。 |
erp_sale_order(ERP 销售订单表) | 主表 | id、no、status、customer_id、account_id、sale_user_id、order_time、total_count、total_price、total_product_price、total_tax_price、discount_percent、discount_price、deposit_price、file_url、remark、out_count、return_count、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);account_id -> system_mail_account.id / erp_account.id(按模块区分);tenant_id -> 多租户隔离 | ErpSaleOrderDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderDO.java);核心服务:ErpSaleOrderServiceImpl | 销售订单主表。 |
erp_sale_order_items(ERP 销售订单项表) | 明细表 | id、order_id、product_id、product_unit_id、product_price、count、total_price、tax_percent、tax_price、remark、out_count、return_count、creator、create_time、updater、update_time、deleted、tenant_id | order_id -> 订单主表 id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpSaleOrderItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOrderItemDO.java) | 销售订单明细表。 |
erp_sale_out(ERP 销售出库表) | 主表 | id、no、status、customer_id、account_id、sale_user_id、out_time、order_id、order_no、total_count、total_price、receipt_price、total_product_price、total_tax_price、discount_percent、discount_price、other_price、file_url、remark、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);account_id -> system_mail_account.id / erp_account.id(按模块区分);order_id -> 订单主表 id;tenant_id -> 多租户隔离 | ErpSaleOutDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutDO.java) | 销售出库主表。 |
erp_sale_out_items(ERP 销售出库项表) | 明细表 | id、out_id、order_item_id、warehouse_id、product_id、product_unit_id、product_price、count、total_price、tax_percent、tax_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | warehouse_id -> erp_warehouse.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpSaleOutItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleOutItemDO.java) | 销售出库明细表。 |
erp_sale_return(ERP 销售退货表) | 主表 | id、no、status、customer_id、account_id、sale_user_id、return_time、order_id、order_no、total_count、total_price、refund_price、total_product_price、total_tax_price、discount_percent、discount_price、other_price、file_url、remark、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);account_id -> system_mail_account.id / erp_account.id(按模块区分);order_id -> 订单主表 id;tenant_id -> 多租户隔离 | ErpSaleReturnDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnDO.java) | 销售退货主表。 |
erp_sale_return_items(ERP 销售退货项表) | 明细表 | id、return_id、order_item_id、warehouse_id、product_id、product_unit_id、product_price、count、total_price、tax_percent、tax_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | warehouse_id -> erp_warehouse.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpSaleReturnItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/sale/ErpSaleReturnItemDO.java) | 销售退货明细表。 |
erp_stock(ERP 产品库存表) | 主表 | id、product_id、warehouse_id、count、creator、create_time、updater、update_time、deleted、tenant_id | product_id -> crm_product.id / erp_product.id(按模块区分);warehouse_id -> erp_warehouse.id;tenant_id -> 多租户隔离 | ErpStockDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockDO.java) | 库存汇总表,按商品 + 仓库聚合当前库存。 |
erp_stock_check(ERP 库存盘点单表) | 主表 | id、no、check_time、total_count、total_price、status、remark、file_url、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpStockCheckDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
erp_stock_check_item(ERP 库存盘点项表) | 明细表 | id、check_id、warehouse_id、product_id、product_unit_id、product_price、stock_count、actual_count、count、total_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | warehouse_id -> erp_warehouse.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpStockCheckItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockCheckItemDO.java) | 从属于头表的子表,用一对多结构保存逐行明细,便于统计与追溯并存。 |
erp_stock_in(ERP 其它入库单表) | 主表 | id、no、supplier_id、in_time、total_count、total_price、status、remark、file_url、creator、create_time、updater、update_time、deleted、tenant_id | supplier_id -> erp_supplier.id;tenant_id -> 多租户隔离 | ErpStockInDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
erp_stock_in_item(ERP 其它入库单项表) | 明细表 | id、in_id、warehouse_id、product_id、product_unit_id、product_price、count、total_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | warehouse_id -> erp_warehouse.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpStockInItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockInItemDO.java) | 从属于头表的子表,用一对多结构保存逐行明细,便于统计与追溯并存。 |
erp_stock_move(ERP 库存调拨单表) | 主表 | id、no、move_time、total_count、total_price、status、remark、file_url、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpStockMoveDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
erp_stock_move_item(ERP 库存调拨项表) | 明细表 | id、move_id、from_warehouse_id、to_warehouse_id、product_id、product_unit_id、product_price、count、total_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpStockMoveItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockMoveItemDO.java) | 从属于头表的子表,用一对多结构保存逐行明细,便于统计与追溯并存。 |
erp_stock_out(ERP 其它入库单表) | 主表 | id、no、customer_id、out_time、total_count、total_price、status、remark、file_url、creator、create_time、updater、update_time、deleted、tenant_id | customer_id -> crm_customer.id / erp_customer.id(按模块区分);tenant_id -> 多租户隔离 | ErpStockOutDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
erp_stock_out_item(ERP 其它出库单项表) | 明细表 | id、out_id、warehouse_id、product_id、product_unit_id、product_price、count、total_price、remark、creator、create_time、updater、update_time、deleted、tenant_id | warehouse_id -> erp_warehouse.id;product_id -> crm_product.id / erp_product.id(按模块区分);tenant_id -> 多租户隔离 | ErpStockOutItemDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutItemDO.java) | 从属于头表的子表,用一对多结构保存逐行明细,便于统计与追溯并存。 |
erp_stock_record(ERP 产品库存明细表) | 流水/历史表 | id、product_id、warehouse_id、count、total_count、biz_type、biz_id、biz_item_id、biz_no、creator、create_time、updater、update_time、deleted、tenant_id | product_id -> crm_product.id / erp_product.id(按模块区分);warehouse_id -> erp_warehouse.id;tenant_id -> 多租户隔离 | ErpStockRecordDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockRecordDO.java) | 库存流水表,记录每次出入库造成的数量变化。 |
erp_supplier(ERP 供应商表) | 主表 | id、name、contact、mobile、telephone、email、fax、remark、status、sort、tax_no、tax_percent、bank_name、bank_account、bank_address、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpSupplierDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/purchase/ErpSupplierDO.java) | 供应商主数据表。 |
erp_warehouse(ERP 仓库表) | 主表 | id、name、address、sort、remark、principal、warehouse_price、truckage_price、status、default_status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | ErpWarehouseDO(yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpWarehouseDO.java) | 仓库主数据表。 |
ERP 模块统一采用“主数据 + 单据头 + 单据体 + 库存流水”模式。例如采购订单、采购入库、采购退货、销售订单、销售出库、销售退货都成对拆分;库存现状靠 erp_stock,历史变动靠 erp_stock_record。
BPM
BPM 模块保存流程定义补充信息、表单、表达式、监听器和业务单据示例。它并不替代 Flowable 的运行时表,而是补足业务系统自身需要维护的“流程元数据”和“业务单据”。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
bpm_category(BPM 流程分类) | 主表 | id、name、code、description、status、sort、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | BpmCategoryDO(yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmCategoryDO.java) | 流程分类表。 |
bpm_form(BPM 表单定义表) | 主表 | id、name、status、conf、fields、remark、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | BpmFormDO(yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmFormDO.java);核心服务:BpmFormServiceImpl | 流程表单定义表。 |
bpm_oa_leave(OA 请假申请表) | 主表 | id、user_id、type、reason、start_time、end_time、day、status、process_instance_id、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | BpmOALeaveDO(yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOALeaveDO.java) | 请假业务表,是流程驱动的业务单据示例。 |
bpm_process_definition_info(BPM 流程定义的信息表) | 主表 | id、process_definition_id、model_id、model_type、icon、description、form_type、form_id、form_conf、form_fields、form_custom_create_path、form_custom_view_path、simple_model、sort、visible、start_user_ids、manager_user_ids、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | BpmProcessDefinitionInfoDO(yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java) | 流程定义扩展信息表,把 Flowable 运行时定义外的业务属性单独存放。 |
bpm_process_expression(BPM 流程表达式表) | 主表 | id、name、status、expression、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | BpmProcessExpressionDO(yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessExpressionDO.java) | 流程表达式表。 |
bpm_process_instance_copy(BPM 流程实例抄送表) | 主表 | id、user_id、start_user_id、process_instance_id、process_instance_name、category、activity_id、activity_name、task_id、reason、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | BpmProcessInstanceCopyDO(yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/task/BpmProcessInstanceCopyDO.java) | 流程抄送表。 |
bpm_process_listener(BPM 流程监听器表) | 主表 | id、name、type、status、event、value_type、value、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | BpmProcessListenerDO(yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessListenerDO.java) | 流程监听器配置表。 |
bpm_user_group(BPM 用户组表) | 主表 | id、name、description、user_ids、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | BpmUserGroupDO(yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmUserGroupDO.java) | 审批用户组表。 |
BPM 模块不是重复造流程引擎,而是围绕流程引擎维护自己的业务元数据与表单资产。所以它会出现“流程定义扩展表”“流程分类表”“流程监听器表”“业务单据表示例”这样的补充结构。
公众号
公众号模块围绕一个公众号账号,把粉丝、素材、菜单、消息、标签和自动回复拆开。这样可以独立同步微信侧资源,并在本地维持管理视图。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
mp_account(公众号账号表) | 主表 | id、name、account、app_id、app_secret、url、token、aes_key、qr_code_url、remark、creator、create_time、updater、update_time、deleted、tenant_id | app_id -> pay_app.id / mp_account.app_id(按模块区分);tenant_id -> 多租户隔离 | MpAccountDO(yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/account/MpAccountDO.java);核心服务:MpAccountServiceImpl | 公众号账号主表。 |
mp_auto_reply(公众号消息自动回复表) | 主表 | id、account_id、app_id、type、request_keyword、request_match、request_message_type、response_message_type、response_content、response_media_id、response_media_url、response_title、response_description、response_thumb_media_id、response_thumb_media_url、response_articles、response_music_url、response_hq_music_url、creator、create_time、updater、update_time、deleted、tenant_id | account_id -> system_mail_account.id / erp_account.id(按模块区分);app_id -> pay_app.id / mp_account.app_id(按模块区分);tenant_id -> 多租户隔离 | MpAutoReplyDO(yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/message/MpAutoReplyDO.java) | 自动回复配置表。 |
mp_material(公众号素材表) | 主表 | id、account_id、app_id、media_id、type、permanent、url、name、mp_url、title、introduction、creator、create_time、updater、update_time、deleted、tenant_id | account_id -> system_mail_account.id / erp_account.id(按模块区分);app_id -> pay_app.id / mp_account.app_id(按模块区分);tenant_id -> 多租户隔离 | MpMaterialDO(yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/material/MpMaterialDO.java) | 公众号素材表。 |
mp_menu(公众号菜单表) | 树形主表 | id、account_id、app_id、name、menu_key、parent_id、type、url、mini_program_app_id、mini_program_page_path、article_id、reply_message_type、reply_content、reply_media_id、reply_media_url、reply_title、reply_description、reply_thumb_media_id、reply_thumb_media_url、reply_articles、reply_music_url、reply_hq_music_url、creator、create_time、updater、update_time、deleted、tenant_id | account_id -> system_mail_account.id / erp_account.id(按模块区分);app_id -> pay_app.id / mp_account.app_id(按模块区分);parent_id -> 同表主键,形成树结构;tenant_id -> 多租户隔离 | MpMenuDO(yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/menu/MpMenuDO.java) | 公众号菜单表。 |
mp_message(公众号消息表 ) | 主表 | id、msg_id、account_id、app_id、user_id、openid、type、send_from、content、media_id、media_url、recognition、format、title、description、thumb_media_id、thumb_media_url、url、location_x、location_y、scale、label、articles、music_url、hq_music_url、event、event_key、creator、create_time、updater、update_time、deleted、tenant_id | account_id -> system_mail_account.id / erp_account.id(按模块区分);app_id -> pay_app.id / mp_account.app_id(按模块区分);user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | MpMessageDO(yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/message/MpMessageDO.java) | 公众号消息收发表。 |
mp_tag(公众号标签表) | 主表 | id、tag_id、name、count、account_id、app_id、creator、create_time、updater、update_time、deleted、tenant_id | account_id -> system_mail_account.id / erp_account.id(按模块区分);app_id -> pay_app.id / mp_account.app_id(按模块区分);tenant_id -> 多租户隔离 | MpTagDO(yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/tag/MpTagDO.java) | 公众号标签表。 |
mp_user(公众号粉丝表) | 主表 | id、openid、union_id、subscribe_status、subscribe_time、nickname、head_image_url、unsubscribe_time、language、country、province、city、remark、tag_ids、account_id、app_id、creator、create_time、updater、update_time、deleted、tenant_id | account_id -> system_mail_account.id / erp_account.id(按模块区分);app_id -> pay_app.id / mp_account.app_id(按模块区分);tenant_id -> 多租户隔离 | MpUserDO(yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/dal/dataobject/user/MpUserDO.java) | 公众号粉丝用户表。 |
公众号模块的对象边界很清晰:账号、粉丝、素材、菜单、标签、消息和自动回复分别建表,便于与微信侧接口进行同步、重建和审计。
AI
AI 模块把平台密钥、角色、会话、消息和各种生成任务拆开。生成式业务通常是“配置”和“任务实例”并存,因此会自然形成主配置表 + 任务结果表的结构。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
ai_api_key(AI API 密钥表) | 主表 | id、name、api_key、platform、url、status、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | AiApiKeyDO(yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiApiKeyDO.java) | AI 平台密钥表,把平台接入凭据与模型配置分离。 |
ai_chat_conversation(AI 聊天对话表) | 主表 | id、user_id、role_id、knowledge_id、title、model_id、model、pinned、pinned_time、system_message、temperature、max_tokens、max_contexts、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);role_id -> system_role.id;tenant_id -> 多租户隔离 | AiChatConversationDO(yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/chat/AiChatConversationDO.java) | 聊天会话主表。 |
ai_chat_message(AI 聊天消息表) | 主表 | id、conversation_id、reply_id、user_id、role_id、segment_ids、type、model、model_id、content、use_context、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);role_id -> system_role.id;tenant_id -> 多租户隔离 | AiChatMessageDO(yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/chat/AiChatMessageDO.java) | 聊天消息明细表。 |
ai_chat_model(AI 聊天模型表) | 主表 | id、key_id、name、model、platform、sort、status、temperature、max_tokens、max_contexts、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | 未在当前扫描中定位到 DO | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
ai_chat_role(AI 聊天角色表) | 主表 | id、user_id、model_id、name、avatar、category、sort、description、system_message、public_status、status、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | AiChatRoleDO(yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiChatRoleDO.java) | 聊天角色表,保存 persona 配置。 |
ai_image(AI 绘画表) | 主表 | id、user_id、prompt、platform、model、width、height、status、finish_time、error_message、public_status、pic_url、options、task_id、buttons、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | AiImageDO(yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/image/AiImageDO.java) | AI 绘图任务表。 |
ai_mind_map(AI 思维导图表) | 主表 | id、user_id、prompt、generated_content、platform、model、error_message、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | AiMindMapDO(yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/mindmap/AiMindMapDO.java) | AI 脑图生成任务表。 |
ai_music(AI 音乐表) | 主表 | id、user_id、title、lyric、image_url、audio_url、video_url、status、description、prompt、platform、model、generate_mode、tags、duration、public_status、task_id、error_message、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | AiMusicDO(yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/music/AiMusicDO.java) | AI 音乐生成任务表。 |
ai_write(AI 写作表) | 主表 | id、user_id、type、platform、model、prompt、generated_content、original_content、length、format、tone、language、error_message、creator、create_time、updater、update_time、deleted、tenant_id | user_id -> system_users.id 或 member_user.id(按 user_type / 模块区分);tenant_id -> 多租户隔离 | AiWriteDO(yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/write/AiWriteDO.java) | AI 写作任务表。 |
AI 模块把“配置”与“任务实例”拆开:密钥/角色/模型是配置,会话/消息/绘图/写作/音乐/脑图是运行结果。这样既能沉淀模型配置,也能保存生成记录。
报表
报表模块当前落库重点是大屏项目定义。它更偏向内容资产,而不是事务型业务。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
report_go_view_project(GoView 项目表) | 主表 | id、name、pic_url、content、status、remark、creator、create_time、updater、update_time、deleted | 以业务字段和状态字段为主,弱外键关联为主。 | GoViewProjectDO(yudao-module-report/src/main/java/cn/iocoder/yudao/module/report/dal/dataobject/goview/GoViewProjectDO.java) | 大屏项目表,用于 GoView 报表设计保存。 |
示例
示例模块主要用于演示代码生成、树结构、一对多等常见建模方式,适合理解框架推荐的拆表套路。
| 表名 | 表类型 | 表结构 | 主要关系 | 代码入口 | 设计作用与拆分目的 |
|---|---|---|---|---|---|
yudao_demo01_contact(示例联系人表) | 主表 | id、name、sex、birthday、description、avatar、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | Demo01ContactDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo01/Demo01ContactDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
yudao_demo02_category(示例分类表) | 树形主表 | id、name、parent_id、creator、create_time、updater、update_time、deleted、tenant_id | parent_id -> 同表主键,形成树结构;tenant_id -> 多租户隔离 | Demo02CategoryDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo02/Demo02CategoryDO.java) | 树形主数据,通过 parent_id 实现层级管理,便于递归查询和级联展示。 |
yudao_demo03_course(学生课程表) | 主表 | id、student_id、name、score、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | Demo03CourseDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03CourseDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
yudao_demo03_grade(学生班级表) | 主表 | id、student_id、name、teacher、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | Demo03GradeDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03GradeDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
yudao_demo03_student(学生表) | 主表 | id、name、sex、birthday、description、creator、create_time、updater、update_time、deleted、tenant_id | tenant_id -> 多租户隔离 | Demo03StudentDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03StudentDO.java) | 承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。 |
4. 读这套表时建议优先抓住的 5 个模式
- 看表名前缀。先判断模块归属,再谈字段。
- 看是不是头表 + 行表。凡是交易、采购、销售、收付款、支付,大概率都不是一张表能讲清。
- 看有没有中间表。出现多对多关系时,芋道的设计基本都会落成关联表。
- 看有没有日志/流水。凡是状态会反复变化的业务,都需要把当前态和历史态分开。
- 看
tenant_id与deleted。这两个字段往往直接决定查询条件、索引策略和 Service 逻辑。
5. 最后总结
RuoYi-Vue-Pro 的表设计并不是“把业务拆碎”,而是在做三件事:
- 用主表沉淀长期稳定的业务对象。
- 用关联表和明细表表达复杂关系和过程。
- 用日志、模板、配置、租户字段把系统做成可运营的平台。
如果你后续还想继续深入,最建议先从三条链路去读源码:
- 后台权限链:
system_users -> system_user_role -> system_role -> system_role_menu -> system_menu - 商城下单链:
product_spu/product_sku -> trade_order/trade_order_item -> pay_order -> trade_after_sale - ERP 出入库链:
erp_purchase_order / erp_sale_order -> erp_stock_* -> erp_stock_record
这样你会更容易把“表结构”和“代码逻辑”同时看懂。
