Skip to content

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_idparent_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_iduser_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、deleteduser_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、deletedaccount_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、deletedparent_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_idtenant_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_iduser_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_iduser_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_iduser_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);核心服务:OAuth2ClientServiceImplOAuth2 客户端配置表,支撑第三方系统接入。
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_iduser_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_iduser_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_iduser_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_idtenant_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_idtenant_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_idrole_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_idtenant_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、deletedchannel_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、deletedchannel_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_idtenant_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_idtenant_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_iduser_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、deletedpackage_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_iduser_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_iduser_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_iddept_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_iduser_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_iduser_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、deletedtable_id -> infra_codegen_table.idCodegenColumnDO(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、deleteddata_source_config_id -> infra_data_source_config.idCodegenTableDO(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、deletedconfig_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、deletedconfig_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、deletedjob_id -> infra_job.idJobLogDO(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、updateruser_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_iduser_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_idtenant_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、statustenant_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_idtenant_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_idtenant_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_idtenant_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_iduser_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_idparent_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_iduser_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_iduser_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、deletedtenant_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、deletedtenant_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_idspu_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_idcategory_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_idspu_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_idcategory_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_idtenant_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_idtenant_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_idspu_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_iduser_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_iduser_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_idspu_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_idspu_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_idspu_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_iduser_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_idtenant_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_idtenant_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_idspu_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_idtenant_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_idtenant_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_iduser_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_idtenant_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_idspu_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_idspu_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_idtenant_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_idspu_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_idtenant_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_idspu_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_iduser_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_iduser_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_iduser_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_idtenant_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_iduser_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_iduser_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_idtenant_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_idtenant_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_idtenant_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_idtenant_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_idtenant_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_idtenant_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_iduser_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_iduser_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_iduser_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_idtenant_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_idtenant_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_idapp_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_iduser_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_idapp_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_idtenant_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_idapp_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_idapp_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_idorder_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_idapp_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_idapp_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_iduser_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_idpackage_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_idtenant_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_idtenant_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_idcustomer_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_idbusiness_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、deletedtenant_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、deletedtenant_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_idcustomer_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_idcustomer_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_idbusiness_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_idcustomer_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_idtenant_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_idcontract_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_idtenant_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_idtenant_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_idtenant_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_idtenant_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_iduser_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、deletedcategory_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_idparent_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_idcustomer_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_idcustomer_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_idtenant_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_idtenant_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_idsupplier_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_idtenant_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_idcustomer_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_idtenant_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_idcategory_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_idparent_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_idtenant_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_idsupplier_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_idwarehouse_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_idsupplier_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_idorder_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_idsupplier_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_idwarehouse_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_idcustomer_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_idorder_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_idcustomer_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_idwarehouse_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_idcustomer_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_idwarehouse_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_idproduct_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_idtenant_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_idwarehouse_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_idsupplier_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_idwarehouse_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_idtenant_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_idproduct_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_idcustomer_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_idwarehouse_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_idproduct_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_idtenant_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_idtenant_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_idtenant_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_idtenant_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_iduser_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_idtenant_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_idtenant_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_iduser_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_idtenant_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_idtenant_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_idapp_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_idaccount_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_idaccount_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_idaccount_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_idaccount_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_idaccount_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_idaccount_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_idtenant_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_iduser_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_iduser_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_idtenant_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_iduser_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_iduser_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_iduser_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_iduser_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_iduser_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_idtenant_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_idparent_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_idtenant_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_idtenant_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_idtenant_id -> 多租户隔离Demo03StudentDO(yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/demo/demo03/Demo03StudentDO.java)承载模块内的核心业务实体,通常作为其它子表或关联表的归属对象。

4. 读这套表时建议优先抓住的 5 个模式 ​

  1. 看表名前缀。先判断模块归属,再谈字段。
  2. 看是不是头表 + 行表。凡是交易、采购、销售、收付款、支付,大概率都不是一张表能讲清。
  3. 看有没有中间表。出现多对多关系时,芋道的设计基本都会落成关联表。
  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

这样你会更容易把“表结构”和“代码逻辑”同时看懂。

Lucking