Bläddra i källkod

设置平台规格价格,下架店铺小于最低价格的同规格

zoujiajian 2 år sedan
förälder
incheckning
abb9eaed05

+ 9 - 0
netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopGoodsSkuMapper.java

@@ -5,6 +5,9 @@ import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.entity.YhShopGoodsSku;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+import java.math.BigDecimal;
 
 /**
  * @author zwhui
@@ -15,4 +18,10 @@ public interface YhShopGoodsSkuMapper extends BaseMapper<YhShopGoodsSku> {
 	@Select("select sku.*,ygs.price as yhShopSkuPrice from (select user_id from yh_shop where id = #{yhsId} limit 1) ys inner join yh_shop_goods_sku ygs on ygs.user_id = ys.user_id and ygs.sku_id = #{skuId} and ygs.deleted is true and ygs.status is true" +
 			" inner join goods_don_sku sku on sku.id = ygs.sku_id")
 	GoodsDonSku selectGoodsDonSkuBySkuIdAndYhsId(@Param("yhsId") Long yhsId, @Param("skuId") Long skuId);
+
+	@Update("update yh_shop_goods_sku set status = 0 where sku_id = #{skuId} and price < #{minPrice}")
+	Integer setBelowPriceShopSkuDown(@Param("skuId") Long skuId, @Param("minPrice") BigDecimal minPrice);
+
+	@Select("select sku_id,price from yh_shop_goods_sku where yhs_id = #{yhsId} and goods_id = #{goodsId} order by price limit 1")
+	YhShopGoodsSku selectMinPriceSkuByYhsId(@Param("yhsId") Long yhsId, @Param("skuId") Long goodsId);
 }

+ 7 - 1
netflix-dao/src/main/java/com/cyksj/model/views/YhShopGoodsFrontCategoryView.java

@@ -75,7 +75,13 @@ public class YhShopGoodsFrontCategoryView {
 	/**
 	 * 店铺最低规格价格
 	 */
-	@DbField("yg.price")
+	@DbIgnore
+	private Long skuId;
+
+	/**
+	 * 店铺最低规格价格
+	 */
+	@DbIgnore
 	private BigDecimal price;
 
 	/**

+ 3 - 0
netflix-service/src/main/java/com/cyksj/service/mange/CmsGoodsDonSkuService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.cyksj.model.entity.GoodsDiscountPlusPurchaseRelation;
 import com.cyksj.model.entity.GoodsDonSku;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -14,4 +15,6 @@ public interface CmsGoodsDonSkuService extends IService<GoodsDonSku> {
 	void handleDiscountPurchaseGoods(GoodsDonSku sku, List<GoodsDiscountPlusPurchaseRelation> discountPlusPurchaseGoods);
 
 	void updateMirrorCarUserNum(GoodsDonSku sku);
+
+	void setBelowPriceShopSkuDown(Long skuId, BigDecimal newPrice);
 }

+ 21 - 0
netflix-service/src/main/java/com/cyksj/service/mange/goods/CmsGoodsDonSkuServiceImpl.java

@@ -8,8 +8,11 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.mapper.ChatgptUserMapper;
 import com.cyksj.mapper.GoodsDiscountPlusPurchaseRelationMapper;
 import com.cyksj.mapper.GoodsDonSkuMapper;
+import com.cyksj.mapper.shop.YhShopGoodsRateMapper;
+import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
 import com.cyksj.model.entity.GoodsDiscountPlusPurchaseRelation;
 import com.cyksj.model.entity.GoodsDonSku;
+import com.cyksj.model.entity.YhShopGoodsRate;
 import com.cyksj.service.mange.CmsGoodsDonSkuService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -36,6 +39,10 @@ public class CmsGoodsDonSkuServiceImpl extends ServiceImpl<GoodsDonSkuMapper,Goo
 
 	private final ChatgptUserMapper chatgptUserMapper;
 
+	private final YhShopGoodsRateMapper yhShopGoodsRateMapper;
+
+	private final YhShopGoodsSkuMapper yhShopGoodsSkuMapper;
+
 	@Override
 	public void handleDiscountPurchaseGoods(GoodsDonSku sku, List<GoodsDiscountPlusPurchaseRelation> discountPlusPurchaseGoods) {
 		Long skuId = sku.getId();
@@ -115,6 +122,20 @@ public class CmsGoodsDonSkuServiceImpl extends ServiceImpl<GoodsDonSkuMapper,Goo
 		}
 	}
 
+	@Override
+	public void setBelowPriceShopSkuDown(Long skuId, BigDecimal newPrice) {
+		YhShopGoodsRate yhShopGoodsRate = yhShopGoodsRateMapper.selectOne(Wrappers.lambdaQuery(YhShopGoodsRate.class)
+				.eq(YhShopGoodsRate::getSkuId, skuId)
+				.last("limit 1"));
+		if (yhShopGoodsRate != null) {
+			BigDecimal oriDiscount = BigDecimal.valueOf(100).subtract(BigDecimal.valueOf(yhShopGoodsRate.getRate()));
+			BigDecimal minPrice = newPrice.multiply(oriDiscount.divide(BigDecimal.valueOf(100)));
+			//记录那些店铺规格被下架
+			Integer update = yhShopGoodsSkuMapper.setBelowPriceShopSkuDown(skuId, minPrice);
+			log.info("变更skuId:{}规格价格,店铺数量:{}低于价格:{}下架", skuId, update, minPrice);
+		}
+	}
+
 	public void checkPurchaseParamsAndSaveOrUpdate(Long goodsId, Long skuId, GoodsDiscountPlusPurchaseRelation discountGoods) {
 		Long disSid = discountGoods.getDisSid();
 		if (disSid == null) {

+ 7 - 0
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -18,6 +18,7 @@ import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.RegisterOrderDonMapper;
+import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
 import com.cyksj.mapper.sys.SysConfigMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.request.ClickRecordReq;
@@ -67,6 +68,8 @@ public class GoodsDonController {
 
     private final GoodsDonSkuMapper goodsDonSkuMapper;
 
+    private final YhShopGoodsSkuMapper yhShopGoodsSkuMapper;
+
     private final RedisService redisService;
 
     private final SysConfigMapper sysConfigMapper;
@@ -1045,6 +1048,10 @@ public class GoodsDonController {
 						.eq(OrderDon::getGoodsId, data.getId()).notIn(OrderDon::getStatus, Constant.noOrderStatus));
 				data.setSold(sold + data.getSold());
 				data.setNotifyMsg(getPayMsgTime(data.getId(), now, 1, yhsId));
+				//重新设置最低价格规格
+				YhShopGoodsSku sku = yhShopGoodsSkuMapper.selectMinPriceSkuByYhsId(yhsId, data.getId());
+				data.setPrice(sku.getPrice());
+				data.setSkuId(sku.getSkuId());
 			});
 			redisService.setNx(categoryGoodsKey, list, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout() + 5 * 60);
 			value = redisService.get(categoryGoodsKey);

+ 11 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonSkuController.java

@@ -107,6 +107,9 @@ public class CmsGoodsDonSkuController {
     @PutMapping(value = "/update")
     @Log(module = "平台管理/编辑规格", businessType = BusinessType.PUT, isSaveRequestData = true)
     public Result<String> skuUpdate(@RequestBody GoodsDonSku sku) throws Exception {
+        Long skuId = sku.getId();
+        GoodsDonSku dbSku = goodsDonSkuService.getById(skuId);
+        Assert.notNull(dbSku, "规格不存在");
         Long goodsId = sku.getGoodsId();
         GoodsDon goods = goodsDonService.getById(goodsId);
         if (goods.getType() == 1) {
@@ -162,6 +165,14 @@ public class CmsGoodsDonSkuController {
         goodsDonSkuService.saveOrUpdate(sku);
         //给平台更新额外属性
         goodsDonService.updateGoodsSkuPrice(sku.getGoodsId(), null);
+        //前后两次价格不同 下架店铺低于这个折扣最低价格
+        BigDecimal oldPrice = dbSku.getPrice();
+        BigDecimal newPrice = sku.getPrice();
+        //规格新价 变高
+        if (newPrice.compareTo(oldPrice) > 0) {
+            //下架店铺低于这个规格价格的品
+            goodsDonSkuService.setBelowPriceShopSkuDown(skuId, newPrice);
+        }
         refreshCacheService.refreshYhHomePageCache();
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }