数据权限隔离修改调整

This commit is contained in:
秦鸿展
2026-02-25 14:25:59 +08:00
parent 3ce2c06105
commit 8443d739d1
33 changed files with 151 additions and 75 deletions
@@ -116,8 +116,8 @@ public class BillManageApplicationService {
billManageDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
billManageDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
billManageDO.setTopOrganizationId(2827L);
}
}
}
@@ -110,8 +110,8 @@ public class BillingStatementApplicationService {
billingStatementDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
billingStatementDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
billingStatementDO.setTopOrganizationId(2827L);
}
}
}
@@ -162,8 +162,8 @@ public class BillingStatementApplicationService {
billingStatementCollectDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
billingStatementCollectDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
billingStatementCollectDO.setTopOrganizationId(2827L);
}
}
}
@@ -123,8 +123,8 @@ public class BusinessDocumentApplicationService {
businessDocumentDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
businessDocumentDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
businessDocumentDO.setTopOrganizationId(2827L);
}
}
}
@@ -79,8 +79,8 @@ public class PaymentOrderApplicationService {
paymentOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
paymentOrderDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
paymentOrderDO.setTopOrganizationId(2827L);
}
}
}
@@ -86,8 +86,8 @@ public class ReceiptManageApplicationService {
receiptManageDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
receiptManageDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
receiptManageDO.setTopOrganizationId(2827L);
}
}
}
@@ -72,10 +72,40 @@ public class SettlementCustomersApplicationService {
private void setTopOrganizationIdLogin(SettlementCustomersDO settlementCustomersDO){
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
settlementCustomersDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = settlementCustomersDO.getOrganizationId(); // 前端传递的 organizationId
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己且 topOrganizationId=2827
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织(organizationId=2827):可以查询所有组织的数据
if (frontendOrganizationId != null) {
// 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤
settlementCustomersDO.setOrganizationId(frontendOrganizationId);
settlementCustomersDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件
} else {
// 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据
settlementCustomersDO.setOrganizationId(null);
settlementCustomersDO.setTopOrganizationId(null);
}
} else {
// 其他组织:设置organizationId为当前组织ID,并且设置topOrganizationId=2827
// 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致
if (frontendOrganizationId != null && userOrganizationId != null) {
// 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致
if (!frontendOrganizationId.equals(userOrganizationId)) {
// 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询
settlementCustomersDO.setOrganizationId(userOrganizationId);
}
// 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值
} else {
// 前端没有传递 organizationId,使用当前登录用户的组织ID
if (userOrganizationId != null) {
settlementCustomersDO.setOrganizationId(userOrganizationId);
}
}
// 对于非2827组织,必须设置 topOrganizationId=2827
settlementCustomersDO.setTopOrganizationId(2827L);
}
}
}