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<String> rolePermission = loginUser.getRolePermission();
|
Map<String, Object> params = bo.getParams();
|
List<Long> 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.JIEDAN);
|
}
|
params.put("createBy", userList);
|
}
|
|
//维修工单
|
public void filterRepairRes(EimsRepairResBo bo){
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
Set<String> rolePermission = loginUser.getRolePermission();
|
Map<String, Object> params = bo.getParams();
|
List<Long> 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.JIEDAN);
|
}
|
params.put("createBy", userList);
|
}
|
|
}
|