package org.dromara.eims.utils; import org.dromara.common.core.constant.DictConstants; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.eims.domain.bo.EimsRepairReqBo; import org.dromara.eims.domain.bo.EimsRepairResBo; import java.util.*; /** * 自定义数据隔离 */ public class DataFilterUtil { //TODO 保持与数据库一直 定义角色类型 operator-操作工 repair-维修工 private enum Role { operator, repair } private static final DataFilterUtil INSTANCE = new DataFilterUtil(); private DataFilterUtil() { } public static DataFilterUtil getInstance() { return INSTANCE; } //报修单 public void filterRepairReq(EimsRepairReqBo bo){ LoginUser loginUser = LoginHelper.getLoginUser(); Set rolePermission = loginUser.getRolePermission(); Map params = bo.getParams(); List userList = new ArrayList<>(); if (rolePermission == null) { //没有权限不允许查询数据 userList.add(-1L); }else if (rolePermission.contains(Role.operator.name())) { //操作工只能查询自己的数据 userList.add(loginUser.getUserId()); }else if (rolePermission.contains(Role.repair.name())) { //TODO 维修工只能查询未接单状态的报修单(具体状态参考字典repair_req_status) bo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.YIJIEDAN); } if(userList.size()>0){ params.put("createBy", userList); } } //维修工单 public void filterRepairRes(EimsRepairResBo bo){ LoginUser loginUser = LoginHelper.getLoginUser(); Set rolePermission = loginUser.getRolePermission(); Map params = bo.getParams(); if (rolePermission == null) { //没有权限不允许查询数据 bo.setReqUser(-1L); bo.setResUser(-1L); }else if (rolePermission.contains(Role.operator.name())) { //操作工只能查询自己的数据 bo.setReqUser(loginUser.getUserId()); }else if (rolePermission.contains(Role.repair.name())) { //TODO 维修工只能查询未接单状态的报修单(具体状态参考字典repair_req_status) bo.setResUser(loginUser.getUserId()); } } }