From b977cdf63098585ec5912f1e3dc0733f3bc38d2c Mon Sep 17 00:00:00 2001 From: zhangheng Date: Wed, 29 Oct 2025 17:32:06 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E6=8A=A5=E5=8D=95=E8=B5=A0=E9=80=81?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/AcTourismServiceProvider.java | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java index 0b400a51..c7d928e8 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/tourism/provider/AcTourismServiceProvider.java @@ -178,6 +178,17 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { .filter(order -> !existSet.contains(order.getOrderCode())) .collect(Collectors.toList()); + + // 批量查询这些活动对应的权限记录 + List allAuthorityList = iAcBaseAuthorityService.list( + Wrappers.lambdaQuery() + .in(AcBaseAuthority::getPkBaseId, declarationBaseIds) + .eq(AcBaseAuthority::getDelFlag, EDelFlag.UN_DELETE.getValue()) + ); + + Map> authorityCache = allAuthorityList.stream() + .collect(Collectors.groupingBy(AcBaseAuthority::getPkBaseId)); + List recordList = new ArrayList<>(); orderList.forEach(order -> { // 新会员信息 @@ -199,8 +210,7 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { return; } // 查询活动权限 - AcBaseConfig baseConfig = iAcBaseConfigService.getById(matchedConfig.getPkBaseId()); - if (!this.checkAuthority(baseConfig, order.getPkMember())) { + if (!this.checkAuthority(matchedConfig.getPkBaseId(), order.getPkMember(),newMember.getMemberCode(),authorityCache)) { return; } AcDeclarationGiftRecord record = AcDeclarationGiftRecord.builder() @@ -225,15 +235,15 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { /** * 校验活动权限(true:进行处理,false:不进行处理) * - * @param baseConfig 活动配置 - * @param pkMember 会员ID + * @param memberCode + * @param authorityCache * @return */ - private boolean checkAuthority(AcBaseConfig baseConfig, Long pkMember) { - List authList = iAcBaseAuthorityService.list(Wrappers.lambdaQuery() - .eq(AcBaseAuthority::getPkBaseId, baseConfig.getPkId()) - .orderByDesc(AcBaseAuthority::getAuthorityType) - ); + private boolean checkAuthority(Long pkBaseId, Long pkMember, String memberCode, Map> authorityCache) { + List authList = authorityCache.get(pkBaseId); + if (CollectionUtil.isEmpty(authList)) { + return true; + } if (CollectionUtil.isNotEmpty(authList)) { Map> authMap = new HashMap<>(); for (AcBaseAuthority authority : authList) { @@ -275,7 +285,15 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi { } else { return false; } + case MEMBER: + // 指定会员 + if (authMap.get(key).contains(memberCode)) { + return true; + } else { + return false; + } default: + return true; } } }