数据权限隔离修改调整

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
@@ -120,8 +120,8 @@ public class LeaseApplicationService {
leaseDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
leaseDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
leaseDO.setTopOrganizationId(2827L);
}
}
}
@@ -352,8 +352,8 @@ public class LeaseApplicationService {
shipperLeaseDetailsDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
shipperLeaseDetailsDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
shipperLeaseDetailsDO.setTopOrganizationId(2827L);
}
}
}
@@ -82,8 +82,8 @@ public class BatchApplicationService {
batchDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
batchDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
batchDO.setTopOrganizationId(2827L);
}
}
}
@@ -80,8 +80,8 @@ public class BrandApplicationService {
brandDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
brandDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
brandDO.setTopOrganizationId(2827L);
}
}
}
@@ -72,10 +72,40 @@ public class ContractManageApplicationService {
public List<ContractManagePO> queryList(ContractManageDO contractManageDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
contractManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
if (loginUser != null && loginUser.getUserPo() != null) {
Long userOrganizationId = loginUser.getUserPo().getOrganizationId();
Long frontendOrganizationId = contractManageDO.getOrganizationId(); // 前端传递的 organizationId
// 当前登录用户的 organizationId 为 2827 时,可查全部组织数据;其他组织只能查自己且 topOrganizationId=2827
if (userOrganizationId != null && userOrganizationId == 2827L) {
// 南光组织(organizationId=2827):可以查询所有组织的数据
if (frontendOrganizationId != null) {
// 前端传递了 organizationId(包括2827或其他组织),使用前端传递的值进行过滤
contractManageDO.setOrganizationId(frontendOrganizationId);
contractManageDO.setTopOrganizationId(null); // 明确设置为 null,避免使用 topOrganizationId 条件
} else {
// 前端没有传递 organizationId,清空组织过滤条件,查询所有组织的数据
contractManageDO.setOrganizationId(null);
contractManageDO.setTopOrganizationId(null);
}
} else {
// 其他组织:设置organizationId为当前组织ID,并且设置topOrganizationId=2827
// 如果前端传递了 organizationId,验证是否与当前登录用户的组织ID一致
if (frontendOrganizationId != null && userOrganizationId != null) {
// 前端传递了 organizationId,验证是否与当前登录用户的组织ID一致
if (!frontendOrganizationId.equals(userOrganizationId)) {
// 前端传递了其他组织的 organizationId,强制使用当前登录用户的组织ID,防止越权查询
contractManageDO.setOrganizationId(userOrganizationId);
}
// 如果前端传递的 organizationId 与当前登录用户的组织ID一致,使用前端传递的值
} else {
// 前端没有传递 organizationId,使用当前登录用户的组织ID
if (userOrganizationId != null) {
contractManageDO.setOrganizationId(userOrganizationId);
}
}
// 对于非2827组织,必须设置 topOrganizationId=2827
contractManageDO.setTopOrganizationId(2827L);
}
}
return contractManageDomainService.queryList(contractManageDO);
@@ -86,8 +86,8 @@ public class MaterialBaseInfoApplicationService {
materialBaseInfoDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
materialBaseInfoDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
materialBaseInfoDO.setTopOrganizationId(2827L);
}
}
}
@@ -81,8 +81,8 @@ public class PackApplicationService {
packDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
packDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
packDO.setTopOrganizationId(2827L);
}
}
}
@@ -76,15 +76,22 @@ public class ShipperLeaseDetailsApplicationService {
shipperLeaseDetailsDO.setTopOrganizationId(null);
}
} else {
// 其他组织:设置organizationId,只查询当前组织的数据
if (topOrganizationId != null && topOrganizationId != 1){
shipperLeaseDetailsDO.setTopOrganizationId(topOrganizationId);
}
// 其他组织:设置organizationId为当前组织ID,并且设置topOrganizationId=2827
// 如果前端传递了organizationId,验证是否与当前登录用户的组织ID一致
if (shipperLeaseDetailsDO.getOrganizationId() != null && !shipperLeaseDetailsDO.getOrganizationId().equals(loginUserOrganizationId)) {
Long frontendOrganizationId = shipperLeaseDetailsDO.getOrganizationId();
if (frontendOrganizationId != null && loginUserOrganizationId != null) {
if (!frontendOrganizationId.equals(loginUserOrganizationId)) {
// 前端传递了其他组织的organizationId,强制使用当前登录用户的组织ID,防止越权查询
shipperLeaseDetailsDO.setOrganizationId(loginUserOrganizationId);
}
} else {
// 前端没有传递 organizationId,使用当前登录用户的组织ID
if (loginUserOrganizationId != null) {
shipperLeaseDetailsDO.setOrganizationId(loginUserOrganizationId);
}
}
// 对于非2827组织,必须设置 topOrganizationId=2827
shipperLeaseDetailsDO.setTopOrganizationId(2827L);
}
}
return shipperLeaseDetailsDomainService.queryList(shipperLeaseDetailsDO);
@@ -87,8 +87,8 @@ public class StorageLocationApplicationService {
storageLocationDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
storageLocationDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
storageLocationDO.setTopOrganizationId(2827L);
}
}
@@ -71,8 +71,8 @@ public class StorageLocationGroupApplicationService {
storageLocationGroupDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
storageLocationGroupDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
storageLocationGroupDO.setTopOrganizationId(2827L);
}
}
}
@@ -86,8 +86,8 @@ public class StorageSectionApplicationService {
storageSectionDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
storageSectionDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
storageSectionDO.setTopOrganizationId(2827L);
}
}
}
@@ -85,8 +85,8 @@ public class WarehouseApplicationService {
warehouseDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null,清空 topOrganizationId,确保查询使用 organizationId
warehouseDO.setTopOrganizationId(null);
// 对于非2827组织,必须设置 topOrganizationId=2827
warehouseDO.setTopOrganizationId(2827L);
}
}
}
@@ -187,6 +187,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND date_format(effective_date,'%Y-%m-%d') <![CDATA[<=]]> #{contractManageDO.nowDateString}
)
</if>
<if test="contractManageDO.organizationId != null">
and organization_id = #{contractManageDO.organizationId}
</if>
<if test="contractManageDO.topOrganizationId != null">
and top_organization_id = #{contractManageDO.topOrganizationId}
</if>
</sql>
</mapper>
@@ -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);
}
}
}
@@ -101,6 +101,9 @@
<if test="settlementCustomersDO.mainRole != null and settlementCustomersDO.mainRole != ''">
and main_role = #{settlementCustomersDO.mainRole}
</if>
<if test="settlementCustomersDO.organizationId != null">
and organization_id = #{settlementCustomersDO.organizationId}
</if>
<if test="settlementCustomersDO.topOrganizationId != null and settlementCustomersDO.topOrganizationId != ''">
and top_organization_id = #{settlementCustomersDO.topOrganizationId}
</if>
@@ -75,8 +75,8 @@ public class DifferentManageApplicationService {
differentManageDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
differentManageDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
differentManageDO.setTopOrganizationId(2827L);
}
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
@@ -106,8 +106,8 @@ public class HandoverTaskOrderApplicationService {
handoverTaskOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
handoverTaskOrderDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
handoverTaskOrderDO.setTopOrganizationId(2827L);
}
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
@@ -93,8 +93,8 @@ public class InventoryAdjustmentRecordApplicationService {
inventoryAdjustmentRecordDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
inventoryAdjustmentRecordDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
inventoryAdjustmentRecordDO.setTopOrganizationId(2827L);
}
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
@@ -107,8 +107,8 @@ public class InvestigationManageApplicationService {
investigationManageDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
investigationManageDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
investigationManageDO.setTopOrganizationId(2827L);
}
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
@@ -102,8 +102,8 @@ public class MaterialBaseInfoApplicationService {
materialBaseInfoDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
materialBaseInfoDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
materialBaseInfoDO.setTopOrganizationId(2827L);
}
}
}
@@ -94,8 +94,8 @@ public class MaterialInventoryApplicationService {
materialInventoryDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
materialInventoryDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
materialInventoryDO.setTopOrganizationId(2827L);
}
}
// 前端有传warehouseId则优先使用传参未传时才使用"用户关联仓库"作为默认值
@@ -104,8 +104,8 @@ public class PickingOrderApplicationService {
pickingOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
pickingOrderDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
pickingOrderDO.setTopOrganizationId(2827L);
}
}
}
@@ -110,8 +110,8 @@ public class ShiftManageApplicationService {
shiftManageDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
shiftManageDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
shiftManageDO.setTopOrganizationId(2827L);
}
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
@@ -96,8 +96,8 @@ public class StatementStatisticsService {
immediateInventoryDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
immediateInventoryDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
immediateInventoryDO.setTopOrganizationId(2827L);
}
}
// 只有在用户没有明确指定仓库参数时才使用缓存中的仓库信息
@@ -111,8 +111,8 @@ public class StockInOrderApplicationService {
stockInOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockInOrderDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
stockInOrderDO.setTopOrganizationId(2827L);
}
}
// 前端有传warehouseId则优先使用传参未传时才使用"用户关联仓库"作为默认值
@@ -138,8 +138,8 @@ public class StockOutOrderApplicationService {
stockOutOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockOutOrderDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
stockOutOrderDO.setTopOrganizationId(2827L);
}
}
}
@@ -89,8 +89,8 @@ public class StockOutTaskOrderApplicationService {
stockOutTaskOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockOutTaskOrderDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
stockOutTaskOrderDO.setTopOrganizationId(2827L);
}
}
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
@@ -134,8 +134,8 @@ public class StockReceiptOrderApplicationService {
stockReceiptOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockReceiptOrderDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
stockReceiptOrderDO.setTopOrganizationId(2827L);
}
}
try {
@@ -140,8 +140,8 @@ public class StockShelfOrderApplicationService {
stockShelfOrderDO.setTopOrganizationId(topOrganizationId);
}
} else {
// 如果 organizationId 不为 null清空 topOrganizationId确保查询使用 organizationId
stockShelfOrderDO.setTopOrganizationId(null);
// 对于非2827组织必须设置 topOrganizationId=2827
stockShelfOrderDO.setTopOrganizationId(2827L);
}
}
try {