数据权限的修改
This commit is contained in:
+34
-7
@@ -85,12 +85,25 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
|
||||
if (ObjectUtil.isNull(loginUser)) {
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
// 数据权限验证:南光组织(organizationId=2827)可以删除所有组织的数据,其他组织只能删除自己组织的数据
|
||||
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
|
||||
Long loginUserTopOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
|
||||
for (Long dictCode : dictCodes)
|
||||
{
|
||||
SysDictData data = selectDictDataById(dictCode);
|
||||
if (ObjectUtil.notEqual(data.getTopOrganizationId(), loginUser.getUserPo().getTopOrganizationId())) {
|
||||
throw new ServiceException("修改失败");
|
||||
|
||||
// 南光组织(organizationId=2827)可以删除所有组织的数据
|
||||
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
|
||||
// 南光组织可以删除,不需要验证 topOrganizationId
|
||||
} else {
|
||||
// 其他组织:只能删除自己组织的数据
|
||||
// 使用 Objects.equals 安全比较,处理 null 值的情况
|
||||
if (!java.util.Objects.equals(data.getTopOrganizationId(), loginUserTopOrganizationId)) {
|
||||
throw new ServiceException("删除失败:无权删除其他组织的字典数据");
|
||||
}
|
||||
}
|
||||
|
||||
dictDataMapper.deleteDictDataById(dictCode);
|
||||
SysDictData dictData = new SysDictData();
|
||||
dictData.setDictType(data.getDictType());
|
||||
@@ -146,11 +159,25 @@ public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDi
|
||||
if (ObjectUtil.isNull(sysDictData)) {
|
||||
throw new ServiceException("字典数据未找到");
|
||||
}
|
||||
if ("Y".equals(sysDictData.getIsDefault())) {
|
||||
throw new ServiceException("默认数据不允许修改");
|
||||
}
|
||||
if (ObjectUtil.notEqual(sysDictData.getTopOrganizationId(), loginUser.getUserPo().getTopOrganizationId())) {
|
||||
throw new ServiceException("修改失败");
|
||||
|
||||
// 数据权限验证:南光组织(organizationId=2827)可以修改所有组织的数据(包括默认数据),其他组织只能修改自己组织的数据(包括默认数据)
|
||||
Long loginUserOrganizationId = loginUser.getUserPo().getOrganizationId();
|
||||
Long loginUserTopOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
Long dictDataTopOrganizationId = sysDictData.getTopOrganizationId();
|
||||
Long dictDataOrganizationId = sysDictData.getOrganizationId();
|
||||
|
||||
// 南光组织(organizationId=2827)可以修改所有组织的数据(包括默认数据)
|
||||
if (loginUserOrganizationId != null && loginUserOrganizationId.equals(2827L)) {
|
||||
// 南光组织可以修改,不需要验证 topOrganizationId
|
||||
} else {
|
||||
// 其他组织:只能修改自己组织的数据(包括默认数据)
|
||||
// 使用 Objects.equals 安全比较,处理 null 值的情况
|
||||
boolean isSameTopOrg = java.util.Objects.equals(dictDataTopOrganizationId, loginUserTopOrganizationId);
|
||||
boolean isSameOrg = java.util.Objects.equals(dictDataOrganizationId, loginUserOrganizationId);
|
||||
|
||||
if (!isSameTopOrg || !isSameOrg) {
|
||||
throw new ServiceException("修改失败:无权修改其他组织的字典数据");
|
||||
}
|
||||
}
|
||||
data.setUpdateBy(loginUser.getUserPo().getUserName());
|
||||
int row = dictDataMapper.updateDictData(data);
|
||||
|
||||
Reference in New Issue
Block a user