diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresServiceImpl.java index e269c2d3..3f46d112 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/wares/service/impl/BdWaresServiceImpl.java @@ -1,6 +1,7 @@ package com.hzs.sale.wares.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -1244,6 +1245,23 @@ public class BdWaresServiceImpl extends ServiceImpl impl specialAreaList = saList; } + // 查询推荐商品 + List recommendWaresList = this.selectByRecommentList(pkCountry, specialAreaList); + // 校验商品奖衔和等级/团队权限 + List waresIdList = recommendWaresList.stream().map(BdWares::getPkId).collect(Collectors.toList()); + Set waresIdSet = new HashSet<>(); + List authWaresList = new ArrayList<>(); + if (waresIdList.size() > 0) { + // 处理商品权限 + List waresGradeAwardsList = iBdWaresGradeService.queryWaresGradeAwards(waresIdList); + // 先处理没有配置等级、奖衔的商品 + waresGradeAwardsList.forEach(waresGradeAwards -> { + waresIdSet.add(waresGradeAwards.getPkWares()); + String key = waresGradeAwards.getPkWares() + "_" + waresGradeAwards.getRangeType() + "_" + waresGradeAwards.getPkRange().toString(); + authWaresList.add(key); + }); + } + RecommendWaresInfoVo recommendWaresInfoVo = new RecommendWaresInfoVo(); // 推荐专区 List resultList = new ArrayList<>(); @@ -1263,16 +1281,27 @@ public class BdWaresServiceImpl extends ServiceImpl impl recommendSpecialAreaVo.setSpecialAreaName(sArea.getLabel()); resultList.add(recommendSpecialAreaVo); - // 推荐商品 取值前两个 - List waresList = this.queryByRecommendList(specialArea, EYesNo.YES.getIntValue(), pkCountry, waresShowMap); List filterList = new ArrayList<>(); - if (waresList.size() > 3) { - filterList.add(waresList.get(0)); - filterList.add(waresList.get(1)); - filterList.add(waresList.get(2)); - } else { - filterList.addAll(waresList); + // 推荐商品,TODO 此处查询推荐商品,可以先全查出来在内存进行分专区处理,后续有时间可以优化 + List waresList = this.queryByRecommendList(specialArea, EYesNo.YES.getIntValue(), pkCountry, waresShowMap); + if (CollectionUtil.isNotEmpty(waresList)) { + for (BdWaresExt waresExt : waresList) { + if (waresIdSet.contains(waresExt.getPkId())) { + String gradeKey = waresExt.getPkId() + "_" + ERangeType.GRADE.getValue() + "_" + loginMember.getPkSettleGrade(); + String awardsKey = waresExt.getPkId() + "_" + ERangeType.AWARDS.getValue() + "_" + loginMember.getPkAwards(); + String authorityKey = waresExt.getPkId() + "_" + ERangeType.AUTHORITY.getValue() + "_" + loginMember.getRegisterAuthority(); + if (!authWaresList.contains(gradeKey) && !authWaresList.contains(awardsKey) && !authWaresList.contains(authorityKey)) { + continue; + } + } + if (filterList.size() > 2) { + break; + } else { + filterList.add(waresExt); + } + } } + List waresVoList = filterList.stream().map(wl -> { WaresVo waresVo = new WaresVo(); waresVo.setPkWares(wl.getPkId()); diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml index 521a2d68..7264e341 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/wares/BdWaresMapper.xml @@ -414,7 +414,6 @@