Selaa lähdekoodia

优化保存热点接口

dengsixing 3 vuotta sitten
vanhempi
commit
34d25d5aa5

+ 1 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/SceneJsonBean.java

@@ -115,6 +115,6 @@ public class SceneJsonBean {
     /**
      * 是否有热点
      */
-    private Byte hots;
+    private Byte tags;
 
 }

+ 2 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/SceneEditController.java

@@ -220,8 +220,8 @@ public class SceneEditController extends BaseController {
      * @param param
      * @return com.fdkankan.common.response.ResultData
      **/
-    @PostMapping(value = "/saveHot")
-    public ResultData saveHot(@RequestBody @Validated SaveHotParamVO param) throws Exception {
+    @PostMapping(value = "/tagSave")
+    public ResultData tagSave(@RequestBody @Validated SaveHotParamVO param) throws Exception {
         return sceneProService.saveHot(param);
     }
 

+ 6 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/entity/SceneEditInfo.java

@@ -92,6 +92,12 @@ public class SceneEditInfo implements Serializable {
     private Byte thumbStatus;
 
     /**
+     * 是否有热点数据(0-否,1-是)
+     */
+    @TableField("tags")
+    private Byte tags;
+
+    /**
      * 版本
      */
     @TableField("version")

+ 0 - 2
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoServiceImpl.java

@@ -160,7 +160,6 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
     }
 
     private void publicHotData(String sceneNum, SceneJsonBean sceneJson) throws IOException {
-        sceneJson.setHots(CommonStatus.NO.code());
         String hotDataKey = String.format(RedisKey.SCENE_HOT_DATA, sceneNum);
         Map<String, String> hotMap = redisUtil.hmget(hotDataKey);
         List<String> hotList = Lists.newArrayList();
@@ -170,7 +169,6 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<ISceneEditInfoMapper,
             }
         });
         if(CollUtil.isNotEmpty(hotList)){
-            sceneJson.setHots(CommonStatus.YES.code());
             JSONArray jsonhots = new JSONArray();
             hotList.stream().forEach(hot->{
                 jsonhots.add(JSONObject.parseObject(hot));

+ 30 - 5
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java

@@ -34,6 +34,7 @@ import com.fdkankan.scene.mapper.ISceneProMapper;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.*;
 import com.google.common.collect.Lists;
+import java.util.Map.Entry;
 import lombok.extern.slf4j.Slf4j;
 import net.coobird.thumbnailator.Thumbnails;
 import org.apache.commons.lang3.StringUtils;
@@ -2205,15 +2206,39 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         //处理新增和修改数据
         this.addOrUpdateHotData(param.getNum(), addOrUpdateMap);
 
+        //保存数据库
+        this.saveTagsToSceneEditInfo(param.getNum(), scenePro.getId());
 
-        //更改场景编辑版本
-        sceneEditInfoService.update(
+        return ResultData.ok();
+    }
+
+    private void saveTagsToSceneEditInfo(String num, Long sceneProId){
+        //查询缓存是否包含热点数据
+        String key = String.format(RedisKey.SCENE_HOT_DATA, num);
+        Map<String, String> allTagsMap = redisUtil.hmget(key);
+        boolean hashTags = false;
+        for (Entry<String, String> tagMap : allTagsMap.entrySet()) {
+            if(StrUtil.isEmpty(tagMap.getValue())){
+                continue;
+            }
+            hashTags = true;
+            break;
+        }
+
+        LambdaUpdateWrapper<SceneEditInfo> updateWrapper =
             new LambdaUpdateWrapper<SceneEditInfo>()
-                .setSql("version=version+"+1)
-                .eq(SceneEditInfo::getSceneProId, scenePro.getId()));
+                .setSql("version=version+" + 1)
+                .eq(SceneEditInfo::getSceneProId, sceneProId);
 
+        //如果有热点数据,更新数据库tags标识为1,否则为0
+        if(hashTags){
+            updateWrapper.set(SceneEditInfo::getTags, CommonStatus.YES.code());
+        }else{
+            updateWrapper.set(SceneEditInfo::getTags, CommonStatus.NO.code());
+        }
 
-        return ResultData.ok();
+        //更改场景编辑版本
+        sceneEditInfoService.update(updateWrapper);
     }
 
     private void addOrUpdateHotData(String num, Map<String, String> addOrUpdateMap){