部门结构变化权限如何控制 - xinwu-yang/cube-java GitHub Wiki
Since 2.5.x 如果部门结构经常变动,如果采用原来方式会导致业务表的sysOrgCode无法跟随其部门结构变化而变化。
- 外键还是使用部门id
@DBField(length = 64)
@FormField(title = "所属部门", groupId = 1, component = ComponentType.SELECT_DEPART)
@Dict(table = "sys_depart", value = "id", text = "depart_name")
private String departId;
- 实体上注解 @EnableOrgCodeView
@Data
@ForcedSync
@EnableOrgCodeView
@TableName("week_report")
@SubTables(WeekPlan.class)
@Form(isGroup = true, description = "周报")
@QueryFields({@QueryField(label = "标题", value = "title", component = ComponentType.STRING)})
@Groups({@Group(id = 1, name = "基础信息"), @Group(id = 2, name = "周报信息")})
public class WeekReport implements Serializable {
- application配置文件配置需要使用视图的表
cube:
permission:
orgcode:
# 是否替换sql中全部表名
replaceAll: true
tables:
- week_report
- 创建业务表视图
视图名必须是业务表名 + ‘_view’
CREATE VIEW `cube`.`week_report_view` AS SELECT
wr.*,
sd.org_code
FROM
week_report wr
LEFT JOIN sys_depart sd ON wr.depart_id = sd.id;
- 在菜单中添加数据权限并授权给角色
规则字段必须叫 orgCode 和 视图的 org_code 对应上
- API接口上配置注解 @PermissionData
@GetMapping("/list")
@PermissionData("modules/weekplan/WeekReportList")
public Result<?> queryPageList(WeekReport weekReport,
@RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<WeekReport> queryWrapper = QueryGenerator.initQueryWrapper(weekReport, req.getParameterMap());
Page<WeekReport> page = new Page<>(pageNo, pageSize);
IPage<WeekReport> pageList = weekReportService.page(page, queryWrapper);
return Result.ok(pageList);
}
配置成功后调用查询 API 就可以在 SQL 看到权限条件已经加上了