Browse Source

更换场景主表

dengsixing 3 years ago
parent
commit
40029bb090

+ 33 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/bean/IconBean.java

@@ -0,0 +1,33 @@
+package com.fdkankan.scene.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/3/21
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IconBean {
+
+    /**
+     * icon文件名
+     */
+    private String icon;
+
+    /**
+     * icon使用频次
+     */
+    private int count;
+
+}

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

@@ -23,6 +23,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.entity.*;
 import com.fdkankan.scene.mapper.ISceneProMapper;
 import com.fdkankan.scene.service.*;
@@ -2338,11 +2339,37 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
         if(icons == null){
             icons = Sets.newHashSet();
         }
-        result.put("icons", icons);
+        List<String> iconList = this.sortIcons(tags, icons);
+        result.put("icons", iconList);
 
         return ResultData.ok(result);
     }
 
+    private List<String> sortIcons(List<JSONObject> tags, Set<String> icons){
+
+        //统计使用频次
+        List<IconBean> iconBeans = Lists.newArrayList();
+        for (String icon : icons) {
+            int count = 0;
+            for (JSONObject tag : tags) {
+                String sid = tag.getString("icon");
+                if(StrUtil.isEmpty(sid) || !icon.equals(sid)){
+                    continue;
+                }
+                ++count;
+            }
+            iconBeans.add(IconBean.builder().icon(icon).count(count).build());
+        }
+
+        //排序
+        List<String> iconList = iconBeans.stream().sorted(Comparator.comparing(IconBean::getCount).reversed())
+            .map(item -> {
+                return item.getIcon();
+            }).collect(Collectors.toList());
+
+        return iconList;
+    }
+
     /**
      * <p>
             保证热点数据安全性,当redis宕机导致热点数据丢失时,可以从文件中读取,恢复到redis