Jeesite4关于权限控制之根据部门公司进行过滤

在开发中,根据不同的部门或者公司展示相应的数据这种情况是很常见的,但是在jeesite4 中该怎样进行过滤呢?其实在这个方面作者也有考虑,都直接封装好了官方文档请参考: 数据权限调用 ,文档中也明确指出,这个是通过在后台管理系统中,通过打对勾的方式给予访问权限,这个就比较简单了吧,创建角色,设置访问权限,分配用户…Java代码中需要的东西文档中也有说到,下面我把我的代码贴图放在下面
在controller 中,在掉findList 或者get 方法前 将过滤器加进去(每个都得加):

在这里插入图片描述

在service中重写addDataSccopeFilter方法:

在这里插入图片描述

在entity中

在这里插入图片描述

由此可见他和js_sys_employee进行了关联 ,关联的键就是,create_by 这个字段和js_sys_employee中的 emp_code 这俩了,同时js_sys_employee又关联了js_sys_office和js_sys_company,机构表和公司表可以根据这两个来进行过滤,此处我举例的是公司切记(建表的时候一定要将create_by ,update_by,create_time,update_time,status,remarks加进去,再生成代码)在你存数据对的时候,框架会将当前登录的用户自动存到create_by字段中,后面代码这样写了之后,再回到管理系统,创建公司或机构,创建角色,分配用户,给用户数据权限(本公司或本机构)下面附上我的代码片段,希望对你有帮助
controller
/**
	 * 查询列表数据
	 */
	@RequiresPermissions("goods:goods:view")
	@RequestMapping(value = "listData")
	@ResponseBody
	public Page<Goods> listData(Goods goods, HttpServletRequest request, HttpServletResponse response) {
		goods.setPage(new Page<>(request, response));
		goodsService.addDataScopeFilter(goods);
		Page<Goods> page = goodsService.findPage(goods);
		return page;
	}
service
/**
	 * 根据公司进行过滤
	 * @param goods
	 */
	@Override
	public void addDataScopeFilter(Goods goods){
		goods.getSqlMap().getDataScope().addFilter("dsf", "Company",
				"e.company_code", UserDataScope.CTRL_PERMI_HAVE);
	}
entity
@Column(name="school_id", attrName="schoolId", label="学校id", isUpdate=false),
	@Column(name="school_name", attrName="schoolName", label="学校名称", isUpdate=false, queryType=QueryType.LIKE),
}, joinTable={
	@JoinTable(type=JoinTable.Type.JOIN, entity=Employee.class, alias="e",
			on="e.emp_code = a.create_by",attrName = "employee",
			columns={@Column(includeEntity=Employee.class)}),
},extWhereKeys="dsf", orderBy="a.goods_id DESC"
)

猜你喜欢

转载自blog.csdn.net/qq_44212951/article/details/100217772