Sfoglia il codice sorgente

平台详情增加视频、推荐平台

zoujiajian 3 anni fa
parent
commit
00b3602e8a

+ 7 - 4
netflix-common/src/main/java/com/cyksj/common/util/Jsons.java

@@ -4,10 +4,7 @@ package com.cyksj.common.util;
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.databind.type.TypeFactory;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @author valor
@@ -163,6 +160,12 @@ public class Jsons {
         return parser().convertValue(o, javaType);
     }
 
+
+    public static <T> Set<T> parseSet(String json, Class<T> clazz) throws Exception {
+        JavaType type = parser().getTypeFactory().constructCollectionType(Set.class, clazz);
+        return parser().readValue(json, type);
+    }
+
     /**
      * parse json to ArrayList.
      *

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/GoodsDon.java

@@ -143,6 +143,24 @@ public class GoodsDon extends BaseEntity {
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private GoodsDon.SpecialType specialType;
 
+    /**
+     * 视频
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String video;
+
+    /**
+     * 推荐标题
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String recommendTitle;
+
+    /**
+     * 推荐平台
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String recommendGoods;
+
     @TableField(exist = false)
     @DbIgnore
     private BigDecimal price;

+ 16 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSpuInsert.java

@@ -105,4 +105,20 @@ public class ReqGoodsSpuInsert {
     private String payDesc;
 
     private GoodsDon.SpecialType specialType;
+
+
+    /**
+     * 视频
+     */
+    private String video;
+
+    /**
+     * 推荐标题
+     */
+    private String recommendTitle;
+
+    /**
+     * 推荐平台
+     */
+    private String recommendGoods;
 }

+ 3 - 1
netflix-dao/src/main/java/com/cyksj/model/views/GoodsDonViews.java

@@ -4,7 +4,6 @@ import com.cyksj.model.entity.GoodsDon;
 import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.entity.GoodsDonSpec;
 import com.ejlchina.searcher.bean.DbIgnore;
-import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -24,4 +23,7 @@ public class GoodsDonViews extends GoodsDon {
 
     @DbIgnore
     private GoodsDonSpec specs;
+
+    @DbIgnore
+    private List<GoodsDon> recommendGoodsList;
 }

+ 47 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GoodsRecommendViews.java

@@ -0,0 +1,47 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/*
+ *项目名: netflix
+ *文件名: GoodsRecommendViews
+ *创建者: JavaZou
+ *创建时间:2023/7/26 13:37
+ */
+@Getter
+@Setter
+@SearchBean(tables = "goods_don g",
+		where = "g.deleted is true and g.status is true")
+public class GoodsRecommendViews {
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("g.logo")
+	private String logo;
+
+	@DbField("g.img")
+	private String img;
+
+	@DbField("g.tags")
+	private String tags;
+
+	@DbField("g.type")
+	private Integer type;
+
+	@DbField("g.min_months")
+	private Integer months;
+
+	@DbField("g.min_days")
+	private Integer days;
+
+	@DbField("g.min_price")
+	private BigDecimal price;
+}

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

@@ -19,7 +19,6 @@ import com.cyksj.model.manage.request.ReqGoodsSkuSpec;
 import com.cyksj.model.manage.request.ReqGoodsSpecSingle;
 import com.cyksj.model.request.CombinationSkuReq;
 import com.cyksj.service.mange.CmsGoodsDonSpecService;
-import com.cyksj.service.sys.SysConfigService;
 import com.fasterxml.jackson.databind.JavaType;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -44,8 +43,6 @@ public class CmsGoodsDonSpecServiceImpl extends ServiceImpl<GoodsDonSpecMapper,
 
 	private final GoodsDonSkuMapper goodsDonSkuMapper;
 
-	private final SysConfigService sysConfigService;
-
 	@Override
 	public void insertOrUpdateSkuSpec(ReqGoodsSkuInsert insert) throws Exception {
 		GoodsDon goods = goodsDonMapper.selectById(insert.getGoodsId());

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

@@ -294,6 +294,33 @@ public class GoodsDonController {
         return GatewayResponse.SUCCESS.newBuilder().toResult(views);
     }
 
+    /**
+     * 获取商品推荐平台
+     */
+    @GetMapping("/get/{id}")
+    public Result<List<GoodsRecommendViews>> getRecommendGoodsByGid(@PathVariable Long id) throws Exception {
+        String key = RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "recommend:" + id;
+        Object value = redisService.get(key);
+        if (value != null) {
+            List<GoodsRecommendViews> goodsRecommendViews = Jsons.parseList(value, GoodsRecommendViews.class);
+            return GatewayResponse.SUCCESS.newBuilder().toResult(goodsRecommendViews);
+        }
+        if (value == null) {
+            GoodsDon goodsDon = beanSearcher.searchFirst(GoodsDon.class, MapUtils.builder()
+                    .field(GoodsDon::getId)
+                    .field(GoodsDon::getStatus, true)
+                    .field(GoodsDon::getDeleted, true)
+                    .build());
+            if (goodsDon != null && StrUtil.isNotEmpty(goodsDon.getRecommendGoods())) {
+                List<Long> recommend_gidList = Jsons.parseList(goodsDon.getRecommendGoods(), Long.class);
+                List<GoodsRecommendViews> goodsRecommendViews = beanSearcher.searchAll(GoodsRecommendViews.class, MapUtils.builder().field(GoodsDon::getId, recommend_gidList).op(Operator.InList).build());
+                redisService.setNx(key, Jsons.toJson(goodsRecommendViews), 60 * 15l);
+                return GatewayResponse.SUCCESS.newBuilder().toResult(goodsRecommendViews);
+            }
+        }
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
     /**
      * 获取商品多规格列表
      */

+ 27 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/goods/CmsGoodsDonController.java

@@ -2,8 +2,10 @@ package com.cyksj.web.controller.manage.goods;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
 import com.cyksj.common.annotation.Log;
 import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.BusinessType;
 import com.cyksj.enums.GatewayResponse;
@@ -82,7 +84,14 @@ public class CmsGoodsDonController {
         // 新增商品
         GoodsDon goods = new GoodsDon();
         BeanUtil.copyProperties(spu, goods);
-
+        if (StrUtil.isNotEmpty(goods.getRecommendTitle())) {
+            if (StrUtil.isEmpty(spu.getRecommendGoods())) {
+                throw BusinessRuntimeException.getInstance("请选择推荐的对应平台");
+            }
+            String recommendGoods = spu.getRecommendGoods();
+            Set<Long> goodsIds = Jsons.parseSet(recommendGoods, Long.class);
+            goods.setRecommendGoods(Jsons.toJson(goodsIds));
+        }
         goodsDonService.save(goods);
         Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
         redisService.del(keys.toArray(String[]::new));
@@ -101,6 +110,23 @@ public class CmsGoodsDonController {
         if (spu.getSpecialType() == null) {
             goods.setSpecialType(null);
         }
+        if (StrUtil.isNotEmpty(goods.getRecommendTitle())) {
+            if (StrUtil.isEmpty(spu.getRecommendGoods())) {
+                throw BusinessRuntimeException.getInstance("请选择推荐的对应平台");
+            }
+            String recommendGoods = spu.getRecommendGoods();
+            Set<Long> goodsIds = Jsons.parseSet(recommendGoods, Long.class);
+            //去除自己
+            goodsIds.remove(spu.getId());
+            goods.setRecommendGoods(Jsons.toJson(goodsIds));
+        }
+        if (StrUtil.isEmpty(goods.getRecommendTitle())) {
+            goods.setRecommendTitle(null);
+            goods.setRecommendGoods(null);
+        }
+        if (StrUtil.isEmpty(goods.getVideo())) {
+            goods.setVideo(null);
+        }
         goodsDonService.updateById(goods);
         Set<String> keys = redisService.keys(RedisService.key.YH_HOME_PAGHE_CACHE.getName() + "*");
         redisService.del(keys.toArray(String[]::new));