Explorar o código

更新 content-service 的 SearchRecord 字段

reghao hai 7 meses
pai
achega
769902db6b

+ 11 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/model/po/SearchRecord.java

@@ -1,11 +1,14 @@
 package cn.reghao.tnb.content.app.vod.model.po;
 
 import cn.reghao.jutil.jdk.db.BaseObject;
+import cn.reghao.tnb.common.auth.UserContext;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.time.LocalDateTime;
+
 /**
  * @author reghao
  * @date 2022-03-21 13:19:49
@@ -15,6 +18,13 @@ import lombok.NoArgsConstructor;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class SearchRecord extends BaseObject<Integer> {
-    private Long userId;
     private String keyword;
+    private Long searchBy;
+    private LocalDateTime searchAt;
+
+    public SearchRecord(String keyword) {
+        this.keyword = keyword;
+        this.searchBy = UserContext.getUser();
+        this.searchAt = LocalDateTime.now();
+    }
 }

+ 15 - 13
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/service/impl/SearchServiceImpl.java

@@ -43,6 +43,7 @@ public class SearchServiceImpl implements SearchService {
     private final ContentPermission contentPermission;
     private final RedisString redisString;
     private final VideoPostQuery videoPostQuery;
+    private boolean mysqlSearch = false;
 
     public SearchServiceImpl(VideoPostMapper videoPostMapper, SearchRecordMapper searchRecordMapper,
                              ContentPermission contentPermission, RedisString redisString,
@@ -62,23 +63,23 @@ public class SearchServiceImpl implements SearchService {
      * @date 2021-12-08 下午7:06
      */
     public List<SuggestKeyword> suggestKeyword(String keyword) {
-        return searchRecordMapper.findSuggestKeyword(keyword);
+        List<SuggestKeyword> list = searchRecordMapper.findSuggestKeyword(keyword);
+        return list;
     }
 
     public PageList<VideoCard> searchByKeyword(String keyword, String nextIdStr, int pageNumber) {
-        int type = 2;
+        processKeywordAsync(keyword);
         PageList<VideoCard> pageList;
-        if (type == 1) {
-            pageList = searchByKeyword1(keyword, nextIdStr, pageNumber);
+        if (mysqlSearch) {
+            pageList = searchKeywordInMySql(keyword, pageNumber);
         } else {
-            pageList = searchByKeyword2(keyword, pageNumber);
+            pageList = searchKeywordInLucene(keyword, pageNumber);
         }
 
         return pageList;
     }
 
-    public PageList<VideoCard> searchByKeyword1(String keyword, String nextIdStr, int pageNumber) {
-        //processKeywordAsync(keyword);
+    public PageList<VideoCard> searchKeywordInMySql(String keyword, int pageNumber) {
         List<Integer> scopes = contentPermission.getUserScopes();
         SearchCriteria searchCriteria = new SearchCriteria.Builder().scope(scopes).title(keyword).build();
         int total = videoPostMapper.countBySearchCriteria(searchCriteria);
@@ -96,7 +97,7 @@ public class SearchServiceImpl implements SearchService {
         return PageList.pageList(pageNumber, pageSize, total, list1);
     }
 
-    public PageList<VideoCard> searchByKeyword2(String keyword, int pageNumber) {
+    public PageList<VideoCard> searchKeywordInLucene(String keyword, int pageNumber) {
         long loginUser = UserContext.getUser();
         List<Integer> userScopes = contentPermission.getUserScopes(loginUser);
         PageList<VideoSummary> pageList = dataSearchService.searchVideo(keyword, userScopes, pageNumber);
@@ -121,11 +122,12 @@ public class SearchServiceImpl implements SearchService {
     }
 
     private void processKeywordAsync(String keyword) {
-        int total = getTotal(keyword);
+        saveKeyword(keyword);
+        /*int total = getTotal(keyword);
         if (total == 0) {
             saveKeyword(keyword);
             setTotal(keyword, total);
-        }
+        }*/
     }
 
     private int getTotal(String keyword) {
@@ -140,11 +142,11 @@ public class SearchServiceImpl implements SearchService {
     }
 
     private void saveKeyword(String keyword) {
-        long userId = UserContext.getUser();
-        searchRecordMapper.save(new SearchRecord(userId, keyword));
+        searchRecordMapper.save(new SearchRecord(keyword));
     }
 
     public List<HotSearch> getHotSearch() {
-        return searchRecordMapper.findHotSearch();
+        List<HotSearch> list = searchRecordMapper.findHotSearch();
+        return list;
     }
 }

+ 4 - 4
content/content-service/src/main/resources/mapper/vod/SearchRecordMapper.xml

@@ -4,20 +4,20 @@
 <mapper namespace="cn.reghao.tnb.content.app.vod.db.mapper.SearchRecordMapper">
     <insert id="save" useGeneratedKeys="true" keyProperty="id">
         insert into vod_search_record
-        (`id`,`deleted`,`create_time`,`update_time`,`user_id`,`keyword`)
+        (`keyword`,`search_by`,`search_at`)
         values 
-        (#{id},#{deleted},#{createTime},#{updateTime},#{userId},#{keyword})
+        (#{keyword},#{searchBy},#{searchAt})
     </insert>
 
     <select id="findHotSearch" resultType="cn.reghao.tnb.content.app.vod.model.vo.HotSearch">
-        select keyword,count(*) as rank
+        select keyword,count(*) as `rank`
         from vod_search_record
         group by keyword
         order by rank desc
         limit 10
     </select>
     <select id="findSuggestKeyword" resultType="cn.reghao.tnb.content.app.vod.model.vo.SuggestKeyword">
-        select id as rank,keyword
+        select id as `rank`,keyword
         from vod_search_record
         where keyword like concat('%',#{keyword},'%')
         limit 5