feat(price): 增加一价全包价格配置支持
All checks were successful
ZhenTu-BE/pipeline/head This commit looks good

- 在 PriceBiz 和 PriceRepository 中添加对一价全包价格配置的处理逻辑
- 通过 IOnePricePurchaseService 获取一价全包配置信息
- 在查询商品列表时,增加对一价全包配置的判断和处理
-优化分享逻辑,修复了部分情况下分享状态不正确的问题
This commit is contained in:
2025-09-05 16:35:59 +08:00
parent 13bd60f24b
commit 6039f337cb
2 changed files with 35 additions and 2 deletions

View File

@@ -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.price.resp.GoodsListRespVO;
import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity; import com.ycwl.basic.model.pc.scenic.entity.ScenicConfigEntity;
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; 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.FaceRepository;
import com.ycwl.basic.repository.PriceRepository; import com.ycwl.basic.repository.PriceRepository;
import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.repository.ScenicRepository;
@@ -37,6 +39,8 @@ public class PriceBiz {
private FaceRepository faceRepository; private FaceRepository faceRepository;
@Autowired @Autowired
private CouponBiz couponBiz; private CouponBiz couponBiz;
@Autowired
private IOnePricePurchaseService onePricePurchaseService;
public List<GoodsListRespVO> listGoodsByScenic(Long scenicId) { public List<GoodsListRespVO> listGoodsByScenic(Long scenicId) {
List<GoodsListRespVO> goodsList = new ArrayList<>(); List<GoodsListRespVO> goodsList = new ArrayList<>();
@@ -139,7 +143,7 @@ public class PriceBiz {
} }
} }
respVO.setShare(false); respVO.setShare(false);
if (face != null && face.getMemberId().equals(userId)) { if (face == null || !face.getMemberId().equals(userId)) {
respVO.setShare(true); respVO.setShare(true);
} }
return respVO; return respVO;

View File

@@ -1,5 +1,7 @@
package com.ycwl.basic.repository; 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.utils.JacksonUtil;
import com.ycwl.basic.mapper.PriceConfigMapper; import com.ycwl.basic.mapper.PriceConfigMapper;
import com.ycwl.basic.model.pc.price.entity.PriceConfigEntity; 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.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.util.Collections;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -19,8 +21,24 @@ public class PriceRepository {
private RedisTemplate<String, String> redisTemplate; private RedisTemplate<String, String> redisTemplate;
public static final String PRICE_SCENIC_TYPE_GOODS_CACHE = "price:s%s:t%s:g%s"; 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"; public static final String PRICE_ID_CACHE = "price:%s";
@Autowired
private IOnePricePurchaseService onePricePurchaseService;
public PriceConfigEntity getPriceConfigByScenicTypeGoods(Long scenicId, Integer type, String goodsId) { 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); String cacheKey = String.format(PRICE_SCENIC_TYPE_GOODS_CACHE, scenicId, type, goodsId);
PriceConfigEntity priceConfigEntity = null; PriceConfigEntity priceConfigEntity = null;
if (redisTemplate.hasKey(cacheKey)) { if (redisTemplate.hasKey(cacheKey)) {
@@ -37,6 +55,17 @@ public class PriceRepository {
} }
public PriceConfigEntity getPriceConfig(Integer id) { 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); String cacheKey = String.format(PRICE_ID_CACHE, id);
PriceConfigEntity priceConfigEntity = null; PriceConfigEntity priceConfigEntity = null;
if (redisTemplate.hasKey(cacheKey)) { if (redisTemplate.hasKey(cacheKey)) {