Explorar o código

fix 平台分类下特定价格

zoujiajian %!s(int64=2) %!d(string=hai) anos
pai
achega
5df4053944

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

@@ -683,6 +683,55 @@ public class GoodsDonController {
 	    }
     }
 
+	/**
+	 * 设置平台 特定价格
+	 */
+	public void setGcSpecificPrice(GoodsFrontListCategoryView data, Long fUid) {
+		if (fUid != null) {
+			if (data.getIsSp()) {
+				//查找所有特定规格最小价格 满足条件
+				String specificGoodsKey = RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "specific:" + data.getId();
+				Object speciObj = redisService.get(specificGoodsKey);
+				List<GoodsDonSku> specificSkus = null;
+				if (speciObj != null) {
+					specificSkus = Jsons.parseList(speciObj, GoodsDonSku.class);
+				} else {
+					specificSkus = goodsDonSkuMapper.selectList(
+							Wrappers.lambdaQuery(GoodsDonSku.class)
+									.eq(GoodsDonSku::getGoodsId, data.getId())
+									.eq(GoodsDonSku::getStatus, true)
+									.gt(GoodsDonSku::getSpecificPrice, 0));
+					redisService.setNx(specificGoodsKey, specificSkus, RedisService.key.YH_HOME_PAGHE_CACHE.getTimeout());
+				}
+				specificSkus.forEach(specificSku -> {
+					String specificGoodsIdsStr = specificSku.getSpecificGoodsIds();
+					if (isPaySpecificGoodsIds(specificGoodsIdsStr, fUid)) {
+						BigDecimal specificPrice = data.getSpecificPrice();
+						BigDecimal skuSpecificPrice = specificSku.getSpecificPrice();
+						Long specificSkuId = specificSku.getId();
+						if (specificPrice == null) {
+							data.setSpecificPrice(skuSpecificPrice);
+							data.setSpecificSkuId(specificSkuId);
+						} else if (specificPrice.compareTo(skuSpecificPrice) > 0) {
+							data.setSpecificPrice(skuSpecificPrice);
+							data.setSpecificSkuId(specificSkuId);
+						}
+					}
+				});
+				List<GoodsDonSkuFrontView> skuList = data.getSkuList();
+				if (CollUtil.isNotEmpty(skuList)) {
+					skuList.forEach(sku -> {
+						//设置特定价格
+						if (!isPaySpecificGoodsIds(sku.getSpecificGoodsIds(), fUid)) {
+							sku.setSpecificGoodsIds(null);
+							sku.setSpecificPrice(null);
+						}
+					});
+				}
+			}
+		}
+	}
+
 	/**
 	 * 获取特定规格
 	 */
@@ -799,6 +848,7 @@ public class GoodsDonController {
 			Result<List<YhShopGoodsFrontCategoryView>> shopGoods = getShopCategoryGoods(yhShopFrontService.getYhsIdByCustomId(customId), cgy);
 			return shopGoods;
 		}
+		Long fUid = StpUserUtil.getUserIdAfterLogin();
 		String categoryGoodsKey = RedisService.key.YH_HOME_PAGHE_CACHE.getEnvName() + "category:goods";
 		if (cgy != null) {
 			categoryGoodsKey += ":" + cgy;
@@ -821,6 +871,8 @@ 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, null));
+			//设置特定价格
+			setGcSpecificPrice(data, fUid);
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsFrontListViews);
 	}