diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/util/SmHotelMerchantScopeHelper.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/util/SmHotelMerchantScopeHelper.java index bb3696c4..fe426a7f 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/util/SmHotelMerchantScopeHelper.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/util/SmHotelMerchantScopeHelper.java @@ -1,8 +1,11 @@ package com.bsd.pjcloud.supermarket.util; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bsd.pjcloud.admin.api.dto.UserInfo; +import com.bsd.pjcloud.admin.api.entity.SysDept; +import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.common.core.constant.CommonRoleConstant; import com.bsd.pjcloud.common.core.constant.enums.MerchantTypeEnum; @@ -18,40 +21,48 @@ import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** - * 酒店管理数据隔离(防水平/垂直越权): + * 酒店管理数据隔离(移动端/PC 管理端共用): *
「向上找酒店商户」{@link #resolveHotelMerchantDeptId()} 仍保留,供归属解析等场景使用,不作为列表隔离条件。
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class SmHotelMerchantScopeHelper {
- private final RemoteMchService remoteMchService;
+ private final RemoteDeptService remoteDeptService;
private final RemoteUserService remoteUserService;
+ private final RemoteMchService remoteMchService;
+
/**
- * @return null=平台超管不限制;empty=无酒店商户;单元素=商户绑定部门
+ * @return null=平台超管不限制;empty=无部门/无范围;非空=本部门及下级 deptId
*/
public List 支付/归属解析沿用;管理端列表隔离请用 {@link #resolveHotelDeptScope()}。
+ */
public Long resolveHotelMerchantDeptId() {
PjcloudUser user = SecurityUtils.getUser();
if (user == null || user.getDeptId() == null) {
@@ -70,6 +81,27 @@ public class SmHotelMerchantScopeHelper {
return null;
}
+ /** 本部门 + 下级部门(含自身)。失败时退化为仅本部门。 */
+ private List> deptR = remoteDeptService.getDescendantList(rootDeptId);
+ if (deptR != null && deptR.isOk() && CollUtil.isNotEmpty(deptR.getData())) {
+ List