class CreatorDataScopeSqlHandler implements SqlHandler{

    @Resource
    UserService userService;

    @Resource
    private DataScopeProperties dataScopeProperties;

    /**
     * 返回需要增加的where条件，返回空字符的话则代表不需要权限控制
     *
     * @return where条件
     * 如果角色是全部权限的话则不进行控制，如果是个人权限的话则自动加入create_id = user_id
     */
    @Override
    public String handleScopeSql() {<FILL_FUNCTION_BODY>}
}

        LoginAppUser user = LoginUserContextHolder.getUser();
        Assert.notNull(user, "登陆人不能为空");
        List<SysRole> roleList = userService.findRolesByUserId(user.getId());
        return StrUtil.isBlank(dataScopeProperties.getCreatorIdColumnName())
                ||CollUtil.isEmpty(roleList)
                || roleList.stream().anyMatch(item-> Objects.isNull(item.getDataScope()) || DataScope.ALL.equals(item.getDataScope()))
                ? DO_NOTHING:
                // 这里确保有配置权限范围控制的字段
                // 1. 如果没有配置角色的情况默认采用只读全部的记录
                // 2. 如果有配置角色的话判断是否存在有ALL获取null的情况，如果没有ALL的话读取个人创建记录
                String.format("%s = '%s'", dataScopeProperties.getCreatorIdColumnName(), user.getId());
    
<no_super_class>