大屏项目:report_go_view_project
本表每行代表一个 GoView 大屏项目,保存项目 JSON、展示信息、发布状态和可访问角色列表。实体继承 BaseDO,不声明租户字段。
业务流程是创建项目并绑定可见角色,编辑时保存大屏配置到 content,通过 status 区分发布与未发布,再按角色范围列出和读取项目。图片 URL 与内容 JSON 是项目展示资料;角色关系决定能否访问,发布状态本身不代替角色授权。更新和删除项目时需要同时满足项目角色范围与操作权限,删除走继承的逻辑删除字段。
实体来源:ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/dataobject/goview/GoViewProjectDO.java:20。
完整字段
下表列名按实体驼峰转下划线映射;Java 类型为源码事实。2026-09-18 的实测 SQL 类型见后文,role_ids 已确认为 JSON 列。
| 数据库列 | Java 字段 / 类型 | 语义与转换 | 声明行 |
|---|---|---|---|
id | id / Long | 项目主键,@TableId;注释声明数据库自增 | 33 |
name | name / String | 项目名称 | 37 |
pic_url | picUrl / String | 预览图片 URL | 41 |
content | content / String | 大屏完整 JSON 配置,以字符串保存 | 47 |
status | status / Integer | 0 已发布、1 未发布 | 56 |
remark | remark / String | 项目备注 | 60 |
role_ids | roleIds / List<Long> | JacksonTypeHandler;非 null 时才更新 | 64 |
create_time | createTime / LocalDateTime | 创建时自动填充 | BaseDO:30 |
update_time | updateTime / LocalDateTime | 创建/更新时自动填充 | BaseDO:35 |
creator | creator / String | 创建者 ID,保留字符串拓展能力 | BaseDO:42 |
updater | updater / String | 更新者 ID | BaseDO:49 |
deleted | deleted / Boolean | @TableLogic 逻辑删除字段 | BaseDO:54 |
继承来源:ik_project/yudao-cloud/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/dataobject/BaseDO.java:24。transMap 是框架转换附加属性,不是该基类声明的数据库列。
角色关系与查询方式
角色 ID 逻辑关联 system 服务角色。当前用户及有效角色由 AdminUserApi、PermissionApi、RoleApi 获取;受信 system 返回的 admin 用户或有效固定角色 ID 1 拥有特权。普通用户需要有效角色与项目 role_ids 有交集,并具备对应操作权限。
历史 NULL 和空数组不默认向普通用户开放。修改角色时,省略或 null 保持旧绑定,[] 才是清空;因此不能在文档中把 NULL 和 [] 描述为“公开项目”。角色列表会去重、排序,并限制最多 200 个正整数 ID。
分页在 SQL 层以参数绑定执行 JSON_CONTAINS(role_ids, ...),按 id 倒序;写入事务通过 SELECT ... FOR UPDATE 锁定项目,避免并发撤权后仍用旧角色关系写入。实测本表只有 PRIMARY(id),没有角色 JSON 索引或外键。
来源:
ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/mysql/goview/GoViewProjectMapper.java:19:角色 过滤和分页。ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/mysql/goview/GoViewProjectMapper.java:36:行锁。ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/goview/GoViewProjectAccessService.java:31:用户与角色来源。ik_project/yudao-cloud/yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/goview/GoViewProjectAccessService.java:99:角色更新规则。
实测物理结构与差异
采集时间:2026-09-18 20:51,库 ik_yudao_report,MySQL 8.0.35;引擎 InnoDB,表排序规则 utf8mb4_unicode_ci。以下 — 表示未声明默认值;可空列以 NULL 表示其默认空值。
| 列 | 实际 SQL 类型 | 可空 | 默认/额外行为 |
|---|---|---|---|
id | bigint | 否 | —;auto_increment;PRIMARY |
name | varchar(255) | 否 | — |
pic_url | varchar(1024) | 是 | NULL |
content | longtext | 是 | NULL |
status | tinyint | 否 | — |
remark | varchar(255) | 是 | NULL |
creator | varchar(64) | 是 | 空字符串 |
create_time | datetime | 否 | CURRENT_TIMESTAMP |
updater | varchar(64) | 是 | 空字符串 |
update_time | datetime | 否 | CURRENT_TIMESTAMP;更新时自动刷新 |
deleted | bit(1) | 否 | b'0' |
tenant_id | bigint | 否 | 0;数据库额外列,DO 未声明 |
role_ids | json | 是 | NULL |
12 个 Java 持久化字段都在数据库中存在,另有 tenant_id。源码未声明该字段不意味着物理表没有它;本轮只采集结构,未验证租户插件实际生成的 SQL 或历史数据租户归属。实体 @TableName 尾部提及 system_user/system_users 的注释与本表无关,表名以注解值和实测为准。
原始结构汇总见 Report 主库物理字典。