Просмотр исходного кода

店铺下架商品规格提示信息

zoujiajian 2 лет назад
Родитель
Сommit
fc41d37e3d

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

@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * @author zwhui
@@ -24,4 +25,7 @@ public interface YhShopGoodsSkuMapper extends BaseMapper<YhShopGoodsSku> {
 
 	@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);
+
+	@Select("select * from yh_shop_goods_sku where yhs_id = #{yhsId} and goods_id = #{goodsId} order by price limit 1")
+	List<YhShopGoodsSku> getBelowPriceShopSku(Long skuId, BigDecimal minPrice);
 }

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopMapper.java

@@ -28,4 +28,6 @@ public interface YhShopMapper extends BaseMapper<YhShop> {
 	Map<String, Object> selectYhShopApplyMoney(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
 
 	YhShopDistributeMoneyApply selectRelationBusiness(Long userId);
+
+	String getYhShopSkuSysStatusDownInfo(long userId);
 }

+ 19 - 0
netflix-dao/src/main/java/com/cyksj/mapper/shop/YhShopSkuSysTakeDownRecordMapper.java

@@ -0,0 +1,19 @@
+package com.cyksj.mapper.shop;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.YhShopGoodsSku;
+import com.cyksj.model.entity.YhShopSkuSysTakeDownRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: YhShopSkuSysTakeDownRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/4/26 14:29
+ */
+public interface YhShopSkuSysTakeDownRecordMapper extends BaseMapper<YhShopSkuSysTakeDownRecord> {
+	void batchInsert(@Param("list") List<YhShopGoodsSku> yhShopGoodsSkus, @Param("sysPrice") BigDecimal sysPrice);
+}

+ 36 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/YhShopSkuSysTakeDownRecord.java

@@ -0,0 +1,36 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: YhShopSkuSysTakeDownRecord
+ * 创建者: JavaZou
+ * 创建时间:2024/4/26 14:26
+ */
+@Getter
+@Setter
+public class YhShopSkuSysTakeDownRecord extends BaseEntity{
+	private Long yhsId;
+
+	private Long userId;
+
+	private Long goodsId;
+
+	private Long skuId;
+
+	/**
+	 * 店铺规格价格
+	 */
+	private BigDecimal shopPrice;
+
+	/**
+	 * 系统后台设置规格最低价格
+	 */
+	private BigDecimal sysPrice;
+
+	private Boolean deleted;
+}

+ 9 - 0
netflix-dao/src/main/resources/mapper/YhShopMapper.xml

@@ -61,4 +61,13 @@
         from (select * from yh_shop where user_id = #{userId} limit 1) ys
                  left join cms_user cu on cu.id = ys.business_id
     </select>
+
+    <select id="getYhShopSkuSysStatusDownInfo" resultType="java.lang.String">
+        select group_CONCAT(g.title, " ", sku.spec_val)
+        from (select goods_id, sku_id
+              from yh_shop_sku_sys_take_down_record
+              where user_id = #{userId} and deleted is true) s
+                 inner join goods_don_sku sku on sku.id = s.sku_id
+                 inner join goods_don g on g.id = s.goods_id
+    </select>
 </mapper>

+ 14 - 0
netflix-dao/src/main/resources/mapper/YhShopSkuSysTakeDownRecordMapper.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cyksj.mapper.shop.YhShopSkuSysTakeDownRecordMapper">
+
+
+    <insert id="batchInsert">
+        insert into
+        yh_shop_sku_sys_take_down_record(`yhs_id`,`user_id`,`goods_id`,`sku_id`,`shop_price`,`sys_price`,`created_time`,`update_time`)
+        values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.yhsId},#{item.userId},#{item.goodsId},#{item.skuId},#{item.price},#{sysPrice},now(),now())
+        </foreach>
+    </insert>
+</mapper>

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/mange/RefreshCacheService.java

@@ -22,4 +22,6 @@ public interface RefreshCacheService {
 	 * 清除补贴商品缓存
 	 */
 	void refreshGoodsSkuSubsidyPageCache();
+
+	void refreshShopUserIdCacheByYshId(Long yhsId);
 }

+ 10 - 2
netflix-service/src/main/java/com/cyksj/service/mange/goods/CmsGoodsDonSkuServiceImpl.java

@@ -10,9 +10,11 @@ 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.mapper.shop.YhShopSkuSysTakeDownRecordMapper;
 import com.cyksj.model.entity.GoodsDiscountPlusPurchaseRelation;
 import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.entity.YhShopGoodsRate;
+import com.cyksj.model.entity.YhShopGoodsSku;
 import com.cyksj.service.mange.CmsGoodsDonSkuService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -43,6 +45,8 @@ public class CmsGoodsDonSkuServiceImpl extends ServiceImpl<GoodsDonSkuMapper,Goo
 
 	private final YhShopGoodsSkuMapper yhShopGoodsSkuMapper;
 
+	private final YhShopSkuSysTakeDownRecordMapper yhShopSkuSysTakeDownRecordMapper;
+
 	@Override
 	public void handleDiscountPurchaseGoods(GoodsDonSku sku, List<GoodsDiscountPlusPurchaseRelation> discountPlusPurchaseGoods) {
 		Long skuId = sku.getId();
@@ -131,8 +135,12 @@ public class CmsGoodsDonSkuServiceImpl extends ServiceImpl<GoodsDonSkuMapper,Goo
 			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);
+			List<YhShopGoodsSku> yhShopGoodsSkus = yhShopGoodsSkuMapper.getBelowPriceShopSku(skuId, minPrice);
+			if (CollUtil.isNotEmpty(yhShopGoodsSkus)) {
+				yhShopSkuSysTakeDownRecordMapper.batchInsert(yhShopGoodsSkus, minPrice);
+				Integer update = yhShopGoodsSkuMapper.setBelowPriceShopSkuDown(skuId, minPrice);
+				log.info("变更skuId:{}规格价格,店铺数量:{}低于价格:{}下架", skuId, update, minPrice);
+			}
 		}
 	}
 

+ 7 - 0
netflix-service/src/main/java/com/cyksj/service/mange/impl/RefreshCacheServiceImpl.java

@@ -35,4 +35,11 @@ public class RefreshCacheServiceImpl implements RefreshCacheService {
 		Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "subsidy" + "*");
 		redisService.del(keys.toArray(String[]::new));
 	}
+
+	@Override
+	public void refreshShopUserIdCacheByYshId(Long yhsId) {
+		String yhShopCacheKey = RedisService.key.YH_HOME_PAGHE_CACHE_SHOP.getEnvName() + yhsId + "*";
+		Set<String> keys = redisService.keys(yhShopCacheKey);
+		redisService.del(keys.toArray(String[]::new));
+	}
 }

+ 3 - 0
netflix-service/src/main/java/com/cyksj/service/shop/YhShopGoodsSkuService.java

@@ -13,4 +13,7 @@ public interface YhShopGoodsSkuService extends IService<YhShopGoodsSku> {
     void saveGoods(List<Long> goodsIds, Long userId);
 
 
+	String yhShopSkuSysStatusDownInfo(long userId);
+
+	void deleteSkuDownInfo(long userId);
 }

+ 23 - 0
netflix-service/src/main/java/com/cyksj/service/shop/impl/YhShopGoodsSkuServiceImpl.java

@@ -6,8 +6,10 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
 import com.cyksj.mapper.shop.YhShopMapper;
+import com.cyksj.mapper.shop.YhShopSkuSysTakeDownRecordMapper;
 import com.cyksj.model.entity.YhShop;
 import com.cyksj.model.entity.YhShopGoodsSku;
+import com.cyksj.model.entity.YhShopSkuSysTakeDownRecord;
 import com.cyksj.service.shop.YhShopGoodsSkuService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -25,6 +27,8 @@ public class YhShopGoodsSkuServiceImpl extends ServiceImpl<YhShopGoodsSkuMapper,
     private final GoodsDonSkuMapper goodsDonSkuMapper;
 
     private final YhShopMapper yhShopMapper;
+
+    private final YhShopSkuSysTakeDownRecordMapper yhShopSkuSysTakeDownRecordMapper;
     @Override
     public void saveGoods(List<Long> goodsIds, Long userId) {
         YhShop yhShop = yhShopMapper.selectOne(Wrappers.lambdaQuery(YhShop.class)
@@ -39,4 +43,23 @@ public class YhShopGoodsSkuServiceImpl extends ServiceImpl<YhShopGoodsSkuMapper,
         });
         this.saveOrUpdateBatch(skuShops);
     }
+
+    @Override
+    public String yhShopSkuSysStatusDownInfo(long userId) {
+        String info = yhShopMapper.getYhShopSkuSysStatusDownInfo(userId);
+        return info;
+    }
+
+    @Override
+    public void deleteSkuDownInfo(long userId) {
+        Integer selectCount = yhShopSkuSysTakeDownRecordMapper.selectCount(Wrappers.lambdaQuery(YhShopSkuSysTakeDownRecord.class)
+                .eq(YhShopSkuSysTakeDownRecord::getUserId, userId)
+                .eq(YhShopSkuSysTakeDownRecord::getDeleted, 1));
+        if (selectCount > 0) {
+            yhShopSkuSysTakeDownRecordMapper.update(null, Wrappers.lambdaUpdate(YhShopSkuSysTakeDownRecord.class)
+                    .set(YhShopSkuSysTakeDownRecord::getDeleted, 0)
+                    .eq(YhShopSkuSysTakeDownRecord::getUserId, userId)
+                    .eq(YhShopSkuSysTakeDownRecord::getDeleted, 1));
+        }
+    }
 }

+ 27 - 10
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/shop/YhShopGoodsController.java

@@ -11,6 +11,7 @@ import com.cyksj.model.views.YhShopAvailableGoodsView;
 import com.cyksj.model.views.YhShopGoodsRateView;
 import com.cyksj.model.views.YhShopGoodsView;
 import com.cyksj.redis.RedisService;
+import com.cyksj.service.mange.RefreshCacheService;
 import com.cyksj.service.shop.YhShopGoodsSkuService;
 import com.cyksj.web.util.StpYhShopManageUser;
 import com.ejlchina.searcher.BeanSearcher;
@@ -22,7 +23,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
-import java.util.Set;
 
 /*
  *项目名: yhlxj
@@ -45,6 +45,8 @@ public class YhShopGoodsController {
 
 	private final HttpServletRequest request;
 
+	private final RefreshCacheService refreshCacheService;
+
 	/**
 	 * 新增平台
 	 */
@@ -72,9 +74,7 @@ public class YhShopGoodsController {
 			sku.setYhsId(yhShop.getId());
 		});
 		yhShopGoodsSkuService.saveOrUpdateBatch(goodsSkus);
-		String yhShopCacheKey = RedisService.key.YH_HOME_PAGHE_CACHE_SHOP.getEnvName() + yhShop.getId() + "*";
-		Set<String> keys = redisService.keys(yhShopCacheKey);
-		redisService.del(keys.toArray(String[]::new));
+		refreshCacheService.refreshShopUserIdCacheByYshId(yhShop.getId());
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 
@@ -87,9 +87,7 @@ public class YhShopGoodsController {
 		YhShop yhShop = yhShopMapper.selectOne(Wrappers.lambdaQuery(YhShop.class)
 				.eq(YhShop::getUserId, userId).last("limit 1"));
 		yhShopGoodsSkuService.update(Wrappers.lambdaUpdate(YhShopGoodsSku.class).eq(YhShopGoodsSku::getGoodsId, goodsId).eq(YhShopGoodsSku::getDeleted, true).eq(YhShopGoodsSku::getUserId, userId).set(YhShopGoodsSku::getStatus, status));
-		String yhShopCacheKey = RedisService.key.YH_HOME_PAGHE_CACHE_SHOP.getEnvName() + yhShop.getId() + "*";
-		Set<String> keys = redisService.keys(yhShopCacheKey);
-		redisService.del(keys.toArray(String[]::new));
+		refreshCacheService.refreshShopUserIdCacheByYshId(yhShop.getId());
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 
@@ -103,9 +101,7 @@ public class YhShopGoodsController {
 		YhShop yhShop = yhShopMapper.selectOne(Wrappers.lambdaQuery(YhShop.class)
 				.eq(YhShop::getUserId, userId).last("limit 1"));
 		yhShopGoodsSkuService.update(Wrappers.lambdaUpdate(YhShopGoodsSku.class).eq(YhShopGoodsSku::getGoodsId, goodsId).eq(YhShopGoodsSku::getUserId, userId).set(YhShopGoodsSku::getDeleted, false));
-		String yhShopCacheKey = RedisService.key.YH_HOME_PAGHE_CACHE_SHOP.getEnvName() + yhShop.getId() + "*";
-		Set<String> keys = redisService.keys(yhShopCacheKey);
-		redisService.del(keys.toArray(String[]::new));
+		refreshCacheService.refreshShopUserIdCacheByYshId(yhShop.getId());
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 
@@ -142,4 +138,25 @@ public class YhShopGoodsController {
 				.field(YhShopGoodsView.YhShopGoodsSkuView::getGoodsId, goodsId).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(views);
 	}
+
+	/**
+	 * 小店规格被下架提示
+	 * @return
+	 */
+	@GetMapping("/get/sku/down/info")
+	public Result<String> yhShopSkuSysStatusDownInfo() {
+		long userId = StpYhShopManageUser.getLoginIdAsLong();
+		String info = yhShopGoodsSkuService.yhShopSkuSysStatusDownInfo(userId);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(info);
+	}
+
+	/**
+	 * 删除提示
+	 */
+	@DeleteMapping("/delete/sku/down/info")
+	public Result<String> deleteSkuDownInfo() {
+		long userId = StpYhShopManageUser.getLoginIdAsLong();
+		yhShopGoodsSkuService.deleteSkuDownInfo(userId);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }