From 6039f337cbe78acc7754be1f2f444d7e58a6a95c Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 5 Sep 2025 16:35:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(price):=20=E5=A2=9E=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E4=BB=B7=E5=85=A8=E5=8C=85=E4=BB=B7=E6=A0=BC=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 PriceBiz 和 PriceRepository 中添加对一价全包价格配置的处理逻辑 - 通过 IOnePricePurchaseService 获取一价全包配置信息 - 在查询商品列表时,增加对一价全包配置的判断和处理 -优化分享逻辑,修复了部分情况下分享状态不正确的问题 --- .../java/com/ycwl/basic/biz/PriceBiz.java | 6 +++- .../basic/repository/PriceRepository.java | 31 ++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ycwl/basic/biz/PriceBiz.java b/src/main/java/com/ycwl/basic/biz/PriceBiz.java index a5988a0..60df028 100644 --- a/src/main/java/com/ycwl/basic/biz/PriceBiz.java +++ b/src/main/java/com/ycwl/basic/biz/PriceBiz.java @@ -9,6 +9,8 @@ import com.ycwl.basic.model.pc.price.entity.PriceConfigEntity; import com.ycwl.basic.model.pc.price.resp.GoodsListRespVO; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; +import com.ycwl.basic.pricing.entity.PriceOnePriceConfig; +import com.ycwl.basic.pricing.service.IOnePricePurchaseService; import com.ycwl.basic.repository.FaceRepository; import com.ycwl.basic.repository.PriceRepository; import com.ycwl.basic.repository.ScenicRepository; @@ -37,6 +39,8 @@ public class PriceBiz { private FaceRepository faceRepository; @Autowired private CouponBiz couponBiz; + @Autowired + private IOnePricePurchaseService onePricePurchaseService; public List listGoodsByScenic(Long scenicId) { List goodsList = new ArrayList<>(); @@ -139,7 +143,7 @@ public class PriceBiz { } } respVO.setShare(false); - if (face != null && face.getMemberId().equals(userId)) { + if (face == null || !face.getMemberId().equals(userId)) { respVO.setShare(true); } return respVO; diff --git a/src/main/java/com/ycwl/basic/repository/PriceRepository.java b/src/main/java/com/ycwl/basic/repository/PriceRepository.java index 6c212f3..c3a66d2 100644 --- a/src/main/java/com/ycwl/basic/repository/PriceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/PriceRepository.java @@ -1,5 +1,7 @@ package com.ycwl.basic.repository; +import com.ycwl.basic.pricing.entity.PriceOnePriceConfig; +import com.ycwl.basic.pricing.service.IOnePricePurchaseService; import com.ycwl.basic.utils.JacksonUtil; import com.ycwl.basic.mapper.PriceConfigMapper; import com.ycwl.basic.model.pc.price.entity.PriceConfigEntity; @@ -7,7 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import java.math.BigDecimal; +import java.util.Collections; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -19,8 +21,24 @@ public class PriceRepository { private RedisTemplate redisTemplate; public static final String PRICE_SCENIC_TYPE_GOODS_CACHE = "price:s%s:t%s:g%s"; public static final String PRICE_ID_CACHE = "price:%s"; + @Autowired + private IOnePricePurchaseService onePricePurchaseService; public PriceConfigEntity getPriceConfigByScenicTypeGoods(Long scenicId, Integer type, String goodsId) { + if (type == -1) { + PriceOnePriceConfig config = onePricePurchaseService.getActiveConfigByScenic(scenicId); + if (config == null || !config.isTimeValid() || !config.isScenicMatch(scenicId)) { + return null; + } + PriceConfigEntity entity = new PriceConfigEntity(); + entity.setId(config.getId().intValue()); + entity.setScenicId(config.getScenicId()); + entity.setType(type); + entity.setSlashPrice(config.getOriginalPrice()); + entity.setPrice(config.getOnePrice()); + entity.setGoodsIds(goodsId); + return entity; + } String cacheKey = String.format(PRICE_SCENIC_TYPE_GOODS_CACHE, scenicId, type, goodsId); PriceConfigEntity priceConfigEntity = null; if (redisTemplate.hasKey(cacheKey)) { @@ -37,6 +55,17 @@ public class PriceRepository { } public PriceConfigEntity getPriceConfig(Integer id) { + PriceOnePriceConfig config = onePricePurchaseService.getConfigById(Long.valueOf(id)); + if (config != null && config.isTimeValid() && config.getIsActive()) { + PriceConfigEntity priceConfig = new PriceConfigEntity(); + priceConfig.setId(config.getId().intValue()); + priceConfig.setScenicId(config.getScenicId()); + priceConfig.setType(-1); + priceConfig.setGoodsIds(""); + priceConfig.setSlashPrice(config.getOriginalPrice()); + priceConfig.setPrice(config.getOnePrice()); + return priceConfig; + } String cacheKey = String.format(PRICE_ID_CACHE, id); PriceConfigEntity priceConfigEntity = null; if (redisTemplate.hasKey(cacheKey)) {