目录
1.创建数据表
(1)首先我们先若依数据库中创建一张车间表,并添加相应的数据
2.生成代码
使用若依自动生成代码功能生成代码,并添加到相应得的文件夹中,然后重启若依
我们当前的用户为admin即超级管理者,所以可以看到所有数据。
3.设置用户权限
(1)我们需要将普通用户ry的权限设置为“本部门数据权限”
(2)并为其分配对应的菜单权限以及通过用户管理编辑其所属的部门
4.修改后端代码
(1)修改service层
即CarRoomServiceImpl。需要在getlist方法上添加@DataScope,用来限制不同的用户所读取的数据。
/**
* 查询车间信息列表
*
* @param carRoom 车间信息
* @return 车间信息
*/
@Override
@DataScope(deptAlias = "d",userAlias = "u")
public List<CarRoom> selectCarRoomList(CarRoom carRoom)
{
return carRoomMapper.selectCarRoomList(carRoom);
}
(2)修改Mapper.xml文件
(1)做出以下修改
<sql id="selectCarRoomVo">
select c.Id, c.device_id, c.temp, c.dept_id from car_room c
left join sys_dept d on c.dept_id = d.dept_id
where c.Id IS NOT NULL
</sql>
//将自己的车间表与若依的部门表进行连接,进行多表联查
<select id="selectCarRoomList" parameterType="CarRoom" resultMap="CarRoomResult">
<include refid="selectCarRoomVo"/>
<where>
<if test="deviceId != null and deviceId != ''"> and device_id = #{deviceId}</if>
<if test="temp != null and temp != ''"> and temp = #{temp}</if>
<if test="deptId != null and deptId != ''"> and dept_id = #{deptId}</if>
</where>
//params.dataScope通过占位符嵌入在这里
${params.dataScope}
</select>
(2)params指的是parameterType="SysUser"传来的参数 SysUse的一个属性,然后这个属性的dataScope属性。
(3)我们返回到sysUser实体类中,发现sysUser中并没有params 这个属性。这里我们可以看到SysUser继承了BaseEntity,果然我们在BaseEntity这个类中发现了 params 这个属性.
public class BaseEntity implements Serializable
{
private static final long serialVersionUID = 1L;
/** 搜索值 */
private String searchValue;
/** 创建者 */
private String createBy;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 更新者 */
private String updateBy;
/** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/** 备注 */
private String remark;
/** 请求参数 */
private Map<String, Object> params;
5.测试
(1)我们可以看到当前ry为普通用户,且属于财务部门
(2)登录ry用户
当前ry为财务部门,所以只能看到属于自己部门的成员。
(3)切换ry所属部门
(4)重新登录ry
我们发现已经实现了不同部门只能查看对应部门的数据的权限设置。