zoujiajian 3 年 前
コミット
5b44c248a0

+ 10 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsFrontListView.java

@@ -107,6 +107,16 @@ public class GoodsFrontListView {
 	@DbField("g.specific_goods_ids")
 	private String specificGoodsIds;
 
+	@DbField("g.pay_desc")
+	private String payDesc;
+
+	/**
+	 * 是否是特定价格平台
+	 */
+	@DbField("g.is_sp")
+	@JsonIgnore
+	private Boolean isSp;
+
 	/**
 	 * 购买通知信息
 	 */

+ 0 - 107
netflix-dao/src/main/java/com/cyksj/model/views/GoodsHomePageView.java

@@ -1,107 +0,0 @@
-package com.cyksj.model.views;
-
-import com.cyksj.model.entity.GoodsDon;
-import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.DbIgnore;
-import com.ejlchina.searcher.bean.SearchBean;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-
-/*
- *项目名: netflix
- *文件名: GoodsHomePageView
- *创建者: JavaZou
- *创建时间:2023/4/14 11:12
- */
-@Getter
-@Setter
-@SearchBean(tables = "goods_don g",
-		where = "g.deleted is true and g.status is true and g.type = 1",
-		orderBy = "g.sort_by desc, g.id")
-public class GoodsHomePageView {
-	@DbField("g.id")
-	private Long id;
-
-	/**
-	 * 商品名称
-	 */
-	@DbField("g.title")
-	private String title;
-
-	/**
-	 * 标签
-	 */
-	@DbField("g.tags")
-	private String tags;
-
-	/**
-	 * 缩略图
-	 */
-	@DbField("g.logo")
-	private String logo;
-
-	@DbField("g.img")
-	private String img;
-
-	/**
-	 * 类型
-	 */
-	@DbField("g.type")
-	private Integer type;
-
-	/**
-	 * 分类
-	 * 1、AI  2、流媒体
-	 */
-	@DbField("g.category")
-	private Integer category;
-
-	/**
-	 * 最低规格价格
-	 */
-	@DbField("g.min_price")
-	private BigDecimal price;
-
-	/**
-	 * 最低规格月份
-	 */
-	@DbField("g.min_months")
-	private Integer months;
-
-	/**
-	 * 最低规格天数
-	 */
-	@DbField("g.min_days")
-	private Integer days;
-
-	/**
-	 * 已售
-	 */
-	@DbIgnore
-	private Integer sold;
-
-	/**
-	 * 虚拟销量
-	 */
-	@DbField("g.virtual_sold")
-	@JsonIgnore
-	private Integer virtualSold;
-
-	@DbField("g.special_type")
-	private GoodsDon.SpecialType specialType;
-
-	@DbField("g.pay_desc")
-	private String payDesc;
-
-	@DbIgnore
-	private BigDecimal specificPrice;
-
-	/**
-	 * 购买通知信息
-	 */
-	@DbIgnore
-	private String notifyMsg;
-}

+ 1 - 1
netflix-service/src/main/java/com/cyksj/redis/RedisService.java

@@ -611,7 +611,7 @@ public class RedisService {
         BUSINESS_FIRST_ORDER_USER_KEY("business_first_order_user_key:%s:", "商务分销首单提成key", 60l),
         PC_WEB_CACHE("pc_web_cache", "首页平台缓存", 10 * 60),
         H5_WEB_CACHE("h5_web_cache", "h5首页平台缓存", 10 * 60),
-        YH_HOME_PAGHE_CACHE("yh_home_paghe_cache:", "银河首页缓存", 10 * 60),
+        YH_HOME_PAGHE_CACHE("yh_home_paghe_cache:", "银河首页缓存", 30 * 60),
         REGISTER_HOME_PAGE_CACHE("register_home_page_cache:", "注册首页缓存", 10 * 60),
         CPS_BACK_LOGIN_KEY("cps_back_login:", "cps商务后台登录key", 3 * 60),
         CPS_AUTH_SUCCESS_KEY("cps_auth_success_key:%s", "cps后台微信授权", 60 * 10),

+ 33 - 3
netflix-web/src/main/java/com/cyksj/web/controller/goods/GoodsDonController.java

@@ -243,7 +243,7 @@ public class GoodsDonController {
      * h5 银河首页平台展示
      */
     @GetMapping("/get/homePage")
-    public Result<List<GoodsHomePageView>> getGoodsHomePage(Boolean isLogin) {
+    public Result<List<GoodsFrontListView>> getGoodsHomePage(Boolean isLogin) {
         List<Long> filter_goodsIds = getFilterGoodsIds();
         String h5CacheKey = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "H5";
         if (CollUtil.isNotEmpty(filter_goodsIds)) {
@@ -257,10 +257,40 @@ public class GoodsDonController {
         Object value = redisService.get(h5CacheKey);
         if (value != null) {
             try {
-                List<GoodsHomePageView> list = Jsons.parseObject(value, List.class);
+                List<GoodsFrontListView> list = Jsons.parseObject(value, List.class);
                 if (CollUtil.isNotEmpty(list)) {
                     if (fUid != null) {
                         list.forEach(data -> {
+                            if (data.getIsSp()) {
+                                //查找所有特定规格最小价格 满足条件
+                                String specificGoodsKey = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "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();
+                                        if (specificPrice == null) {
+                                            data.setSpecificPrice(skuSpecificPrice);
+                                            data.setMonths(specificSku.getMonths());
+                                        } else if (specificPrice.compareTo(skuSpecificPrice) > 0) {
+                                            data.setSpecificPrice(skuSpecificPrice);
+                                            data.setMonths(specificSku.getMonths());
+                                        }
+                                    }
+                                });
+                            }
                             String specificGoodsIdsStr = data.getSpecificGoodsIds();
                             if (isPaySpecificGoodsIds(specificGoodsIdsStr, fUid)) {
                                 data.setSpecificGoodsIds(null);
@@ -277,7 +307,7 @@ public class GoodsDonController {
         if (CollUtil.isNotEmpty(filter_goodsIds)) {
             builder.field(GoodsFrontListView::getId, filter_goodsIds).op(Operator.NotIn);
         }
-        List<GoodsHomePageView> dataList = beanSearcher.searchAll(GoodsHomePageView.class, builder.build());
+        List<GoodsFrontListView> dataList = beanSearcher.searchAll(GoodsFrontListView.class, builder.build());
         DateTime now = DateTime.now();
         dataList.forEach(data -> {
             Integer sold = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)