Explorar o código

Merge branch 'release-4.14.4' into test

dengsixing hai 2 semanas
pai
achega
acf210a769

+ 3 - 0
src/main/java/com/fdkankan/scene/bean/IconBean.java

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.bean;
 
+import com.alibaba.fastjson.JSONObject;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -29,4 +30,6 @@ public class IconBean {
      */
     private int count;
 
+    private JSONObject style;
+
 }

+ 30 - 7
src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoExtServiceImpl.java

@@ -20,6 +20,7 @@ import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
 import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.scene.bean.IconBean;
 import com.fdkankan.scene.bean.TagBean;
 import com.fdkankan.scene.entity.SceneEditInfo;
 import com.fdkankan.scene.entity.SceneEditInfoExt;
@@ -29,6 +30,7 @@ import com.fdkankan.scene.mapper.ISceneEditInfoExtMapper;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.*;
 import com.fdkankan.web.response.ResultData;
+import com.google.common.collect.Lists;
 import org.aspectj.apache.bcel.generic.RET;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -225,22 +227,43 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<ISceneEditInfoExtMa
         key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, param.getNum());
         List<String> sytlelist = redisUtil.hgetValues(key);
         if(CollUtil.isNotEmpty(sytlelist)){
-            List<TagBean> stileSortList = sytlelist.stream().map(str -> {
+            styles = sytlelist.stream().map(str -> {
                 JSONObject jsonObject = JSON.parseObject(str);
-                TagBean tagBean = new TagBean();
-                tagBean.setCreateTime(jsonObject.getLong("createTime"));
                 jsonObject.remove("createTime");
-                tagBean.setTag(jsonObject);
-                return tagBean;
+                return jsonObject;
             }).collect(Collectors.toList());
-            stileSortList.sort(Comparator.comparingLong(TagBean::getCreateTime).reversed());
-            styles = stileSortList.stream().map(item -> item.getTag()).collect(Collectors.toList());
+            this.sortIcons(tags, styles);
         }
         result.put("styles", styles);
 
         return result;
     }
 
+    private List<JSONObject> sortIcons(List<JSONObject> tags, List<JSONObject> styles){
+
+        //统计使用频次
+        List<IconBean> iconBeans = Lists.newArrayList();
+        for (JSONObject style : styles) {
+            int count = 0;
+            for (JSONObject tag : tags) {
+                String iconUrl = tag.getString("icon");
+                if(StrUtil.isEmpty(iconUrl) || !iconUrl.equals(tag.getString("url"))){
+                    continue;
+                }
+                ++count;
+            }
+            iconBeans.add(IconBean.builder().style(style).count(count).build());
+        }
+
+        //排序
+        List<JSONObject> iconList = iconBeans.stream().sorted(Comparator.comparing(IconBean::getCount).reversed())
+                .map(item -> {
+                    return item.getStyle();
+                }).collect(Collectors.toList());
+
+        return iconList;
+    }
+
     private void deleteBillboards(String num, List<String> deleteSidList, String bucket) throws Exception {
         if(CollUtil.isEmpty(deleteSidList)){
             return;