lyhzzz 1 year ago
parent
commit
8ab467d5ae

+ 0 - 21
src/main/java/com/cdf/controller/SceneSourceDataController.java

@@ -1,21 +0,0 @@
-package com.cdf.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author 
- * @since 2023-03-07
- */
-@RestController
-@RequestMapping("/sceneSourceData")
-public class SceneSourceDataController {
-
-}
-

+ 67 - 0
src/main/java/com/cdf/entity/HotRecommend.java

@@ -0,0 +1,67 @@
+package com.cdf.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-13
+ */
+@Getter
+@Setter
+@TableName("t_hot_recommend")
+public class HotRecommend implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 场景
+     */
+    @TableField("scene_num")
+    private String sceneNum;
+
+    /**
+     * 热点id
+     */
+    @TableField("sid")
+    private String sid;
+
+    /**
+     * 是否精选推荐,0否,1是
+     */
+    @TableField("recommend_selection")
+    private Integer recommendSelection;
+
+    /**
+     * 是否品牌推荐,0否,1是
+     */
+    @TableField("recommend_brand")
+    private Integer recommendBrand;
+
+    @TableField("tb_status")
+    @TableLogic
+    private Integer tbStatus;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 1 - 1
src/main/java/com/cdf/generate/AutoGenerate.java

@@ -20,7 +20,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"", getTables(new String[]{
-                "t_brand","t_hot_outline"
+                "t_hot_recommend"
         }));
 
     }

+ 18 - 0
src/main/java/com/cdf/mapper/IHotRecommendMapper.java

@@ -0,0 +1,18 @@
+package com.cdf.mapper;
+
+import com.cdf.entity.HotRecommend;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-13
+ */
+@Mapper
+public interface IHotRecommendMapper extends BaseMapper<HotRecommend> {
+
+}

+ 24 - 0
src/main/java/com/cdf/service/IHotRecommendService.java

@@ -0,0 +1,24 @@
+package com.cdf.service;
+
+import com.cdf.entity.HotRecommend;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-13
+ */
+public interface IHotRecommendService extends IService<HotRecommend> {
+
+    HotRecommend getByNumAndSid(String sceneNum, String sid);
+
+    List<HotRecommend> getByNum(String num);
+
+    HashMap<String, HotRecommend> getMapBySids(List<String> sidsList);
+}

+ 2 - 0
src/main/java/com/cdf/service/IHotRelationService.java

@@ -16,4 +16,6 @@ import java.util.List;
 public interface IHotRelationService extends IService<HotRelation> {
 
     List<HotRelation> getByProductSourceId(Integer productSourceId);
+
+    List<HotRelation> getByNum(String sceneNum);
 }

+ 75 - 22
src/main/java/com/cdf/service/impl/ExcelService.java

@@ -9,10 +9,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.amazonaws.services.ecs.model.Tmpfs;
 import com.cdf.common.CacheUtil;
 import com.cdf.common.ResultCode;
-import com.cdf.entity.Brand;
-import com.cdf.entity.HotOutline;
-import com.cdf.entity.HotRelation;
-import com.cdf.entity.ProductSource;
+import com.cdf.entity.*;
 import com.cdf.httpClient.client.CdfClient;
 import com.cdf.httpClient.client.CdfHKClient;
 import com.cdf.httpClient.response.cdf.CdfProduct;
@@ -24,10 +21,7 @@ import com.cdf.exception.BusinessException;
 import com.cdf.response.HotUploadTemplate;
 import com.cdf.response.OutlineUploadTemplate;
 import com.cdf.response.ProductUploadTemplate;
-import com.cdf.service.IBrandService;
-import com.cdf.service.IHotOutlineService;
-import com.cdf.service.IHotRelationService;
-import com.cdf.service.IProductSourceService;
+import com.cdf.service.*;
 import com.cdf.util.ExcelUtil;
 import com.cdf.util.UploadToCdfOssUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -42,10 +36,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.InputStream;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -71,6 +62,12 @@ public class ExcelService {
     private IBrandService brandService;
     @Autowired
     private IHotRelationService hotRelationService;
+    @Autowired
+    private IHotRecommendService hotRecommendService;
+    @Autowired
+    IFdkkUserService fdkkUserService;
+    @Autowired
+    INumRegionService numRegionService;
 
 
     // 0 外框设置 ,1 瀑布流, 2,精选推荐设置 ,3 品牌推荐设置
@@ -219,11 +216,11 @@ public class ExcelService {
 
     private void checkUploadProduct(File file, List<String> errorList){
         List<HashMap<Integer, String>> excelRowList = ExcelUtil.getExcelRowList(file);
-        List<HotUploadTemplate> list = null;
         Integer colum = 0;
         HashMap<String,ProductSource> productSourceHashMap = new HashMap<>();
         HashMap<String, List<String>> productSourceProductMap = new HashMap<>();
         HashMap<String, List<String>> resultPMap = new HashMap<>();
+        HashMap<String, List<String>> numMap = new HashMap<>();
 
         for (HashMap<Integer, String> map : excelRowList) {
             String sourceId = map.get(3);
@@ -261,15 +258,12 @@ public class ExcelService {
                 errorList.add(colum.toString());
                 continue;
             }
-            if(list == null){
-                list  = getHotsList(sceneNum);
+            if(numMap.get(sceneNum) == null){
+                List<HotRelation> hotRelations = hotRelationService.getByNum(sceneNum);
+                List<String> sidList = hotRelations.stream().map(HotRelation::getHotId).collect(Collectors.toList());
+                numMap.put(sceneNum,sidList);
             }
-            if(list .isEmpty()){
-                errorList.add(colum.toString());
-                continue;
-            }
-            List<String> collect = list.stream().map(HotUploadTemplate::getSid).collect(Collectors.toList());
-            if(!collect.contains(sid)){
+            if(!numMap.get(sceneNum).contains(sid)){
                 errorList.add(colum.toString());
                 continue;
             }
@@ -373,20 +367,79 @@ public class ExcelService {
 
     private void uploadProduct(File file) {
         List<HashMap<Integer, String>> excelRowList = ExcelUtil.getExcelRowList(file);
+        HashMap<String,HashMap<String,HashSet<String>>> numMap = new HashMap<>();
         for (HashMap<Integer, String> map : excelRowList) {
             String sceneNum = map.get(0);
             String sid = map.get(1);
             String title = map.get(2);
             String mchId = map.get(3);
             String pid = map.get(4);
+            numMap.computeIfAbsent(sceneNum, k -> new HashMap<>());
+            numMap.get(sceneNum).computeIfAbsent(sid,k -> new HashSet<>());
+            numMap.get(sceneNum).get(sid).add(pid);
+        }
+        List<HotRelation> updateList = new ArrayList<>();
+        for (String num : numMap.keySet()) {
+            HashMap<String, HashSet<String>> sidMap = numMap.get(num);
+            for (String sid : sidMap.keySet()) {
+                HotRelation hotRelation = hotRelationService.getById(sid);
+                if(hotRelation == null){
+                    continue;
+                }
+                HashSet<String> pidSet = sidMap.get(sid);
+                hotRelation.setRelationIds(JSONArray.toJSONString(pidSet));
+                updateList.add(hotRelation);
+            }
+        }
+        if(!updateList.isEmpty()){
+            hotRelationService.updateBatchById(updateList);
+        }
+
+        for (String num : numMap.keySet()) {
+            NumRegion numRegion = fdkkUserService.getRegionByNum(num);
+            fdkkSceneEditService.writeHotJson(num,numRegion.getRegion());
         }
     }
 
     private void uploadHot(File file,Integer type) {
 
         List<HashMap<Integer, String>> excelRowList = ExcelUtil.getExcelRowList(file);
+        HashMap<String,HashSet<String>> numMap = new HashMap<>();
         for (HashMap<Integer, String> map : excelRowList) {
-
+            String sceneNum = map.get(0);
+            String sid = map.get(1);
+            String title = map.get(2);
+            numMap.computeIfAbsent(sceneNum, k -> new HashSet<>());
+            numMap.get(sceneNum).add(sid);
+            HotRecommend recommend = hotRecommendService.getByNumAndSid(sceneNum,sid);
+            if(recommend == null){
+                recommend = new HotRecommend();
+                recommend.setSceneNum(sceneNum);
+                recommend.setSid(sid);
+            }
+            if(type == 2){
+                recommend.setRecommendSelection(1);
+            }
+            if(type == 3){
+                recommend.setRecommendBrand(1);
+            }
+        }
+        List<Integer> delIds = new ArrayList<>();
+        for (String num : numMap.keySet()) {
+            List<HotRecommend> list = hotRecommendService.getByNum(num);
+            HashSet<String> strings = numMap.get(num);
+            for (HotRecommend recommend : list) {
+               if(!strings.contains(recommend.getSid())){
+                   delIds.add(recommend.getId());
+               }
+            }
+        }
+        if(!delIds.isEmpty()){
+            hotRecommendService.removeByIds(delIds);
+        }
+        for (String num : numMap.keySet()) {
+            NumRegion numRegion = fdkkUserService.getRegionByNum(num);
+            fdkkSceneEditService.writeHotJson(num,numRegion.getRegion());
         }
     }
 }

+ 10 - 0
src/main/java/com/cdf/service/impl/FdkkSceneEditService.java

@@ -72,6 +72,8 @@ public class FdkkSceneEditService {
     IProductSourceService productSourceService;
     @Autowired
     IBrandService brandService;
+    @Autowired
+    IHotRecommendService hotRecommendService;
 
 
     public JSONObject getAuth(String num, String token) {
@@ -284,6 +286,7 @@ public class FdkkSceneEditService {
 
         List<String> sidsList = new ArrayList<>();
         HashMap<String,HotRelation> hotRelationMap = new HashMap<>();
+        HashMap<String,HotRecommend> hotRecommendHashMap = new HashMap<>();
         HashMap<Integer,ProductSource> productSourceMap = new HashMap<>();
         HashMap<Integer, BrandApiVo> brandMap = new HashMap<>();
         for (Object obj : tags) {
@@ -298,6 +301,7 @@ public class FdkkSceneEditService {
                 hotRelationMap.put(hotRelation.getHotId(),hotRelation);
             }
 
+            hotRecommendHashMap = hotRecommendService.getMapBySids(sidsList);
             Set<Integer> productSourceIds = hotRelations.stream().map(HotRelation::getProductSourceId).collect(Collectors.toSet());
             if(productSourceIds.size() >0){
                 productSources = productSourceService.listByIds(productSourceIds);
@@ -312,6 +316,12 @@ public class FdkkSceneEditService {
         for (Object obj : tags) {
             JSONObject tag = (JSONObject) obj;
             String sid = tag.getString("sid");
+            HotRecommend recommend = hotRecommendHashMap.get(sid);
+            if(recommend != null){
+                tag.put("recommendSelection",recommend.getRecommendSelection());
+                tag.put("recommendBrand",recommend.getRecommendBrand());
+            }
+
             HotRelation hotRelation = hotRelationMap.get(sid);
             if(hotRelation == null){
                 continue;

+ 51 - 0
src/main/java/com/cdf/service/impl/HotRecommendServiceImpl.java

@@ -0,0 +1,51 @@
+package com.cdf.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.cdf.entity.HotRecommend;
+import com.cdf.mapper.IHotRecommendMapper;
+import com.cdf.service.IHotRecommendService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-12-13
+ */
+@Service
+public class HotRecommendServiceImpl extends ServiceImpl<IHotRecommendMapper, HotRecommend> implements IHotRecommendService {
+
+    @Override
+    public HotRecommend getByNumAndSid(String sceneNum, String sid) {
+        LambdaQueryWrapper<HotRecommend> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(HotRecommend::getSceneNum,sceneNum);
+        wrapper.eq(HotRecommend::getSid,sid);
+        return this.getOne(wrapper);
+    }
+
+    @Override
+    public List<HotRecommend> getByNum(String num) {
+        LambdaQueryWrapper<HotRecommend> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(HotRecommend::getSceneNum,num);
+        return this.list(wrapper);
+    }
+
+    @Override
+    public HashMap<String, HotRecommend> getMapBySids(List<String> sidsList) {
+        HashMap<String, HotRecommend> map = new HashMap<>();
+        if(!sidsList.isEmpty()){
+            LambdaQueryWrapper<HotRecommend> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(HotRecommend::getSid,sidsList);
+            List<HotRecommend> list = this.list(wrapper);
+            list.forEach(e -> map.put(e.getSid(),e));
+
+        }
+        return map;
+    }
+}

+ 7 - 0
src/main/java/com/cdf/service/impl/HotRelationServiceImpl.java

@@ -26,4 +26,11 @@ public class HotRelationServiceImpl extends ServiceImpl<IHotRelationMapper, HotR
         wrapper.eq(HotRelation::getProductSourceId,productSourceId);
         return this.list(wrapper);
     }
+
+    @Override
+    public List<HotRelation> getByNum(String sceneNum) {
+        LambdaQueryWrapper<HotRelation> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(HotRelation::getNum,sceneNum);
+        return this.list(wrapper);
+    }
 }

+ 5 - 0
src/main/resources/mapper/HotRecommendMapper.xml

@@ -0,0 +1,5 @@
+<?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.cdf.mapper.IHotRecommendMapper">
+
+</mapper>