## 报单赠送定时任务优化

This commit is contained in:
zhangheng 2025-10-29 17:32:06 +08:00
parent 1bfa07ad34
commit b977cdf630
1 changed files with 27 additions and 9 deletions

View File

@ -178,6 +178,17 @@ public class AcTourismServiceProvider implements IAcTourismServiceApi {
.filter(order -> !existSet.contains(order.getOrderCode()))
.collect(Collectors.toList());
// 批量查询这些活动对应的权限记录
List<AcBaseAuthority> allAuthorityList = iAcBaseAuthorityService.list(
Wrappers.<AcBaseAuthority>lambdaQuery()
.in(AcBaseAuthority::getPkBaseId, declarationBaseIds)
.eq(AcBaseAuthority::getDelFlag, EDelFlag.UN_DELETE.getValue())
);
Map<Long, List<AcBaseAuthority>> authorityCache = allAuthorityList.stream()
.collect(Collectors.groupingBy(AcBaseAuthority::getPkBaseId));
List<AcDeclarationGiftRecord> 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<AcBaseAuthority> authList = iAcBaseAuthorityService.list(Wrappers.<AcBaseAuthority>lambdaQuery()
.eq(AcBaseAuthority::getPkBaseId, baseConfig.getPkId())
.orderByDesc(AcBaseAuthority::getAuthorityType)
);
private boolean checkAuthority(Long pkBaseId, Long pkMember, String memberCode, Map<Long, List<AcBaseAuthority>> authorityCache) {
List<AcBaseAuthority> authList = authorityCache.get(pkBaseId);
if (CollectionUtil.isEmpty(authList)) {
return true;
}
if (CollectionUtil.isNotEmpty(authList)) {
Map<Integer, List<String>> 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;
}
}
}