Browse Source

jpa adplatform

wangyunpeng 11 months ago
parent
commit
b24d9d1d72

+ 0 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/config/db/CrawlerDBConfig.java

@@ -28,7 +28,6 @@ import java.util.Map;
 )
 public class CrawlerDBConfig {
 
-
     @Value("${spring.jpa.crawler.hibernate.ddl-auto}")
     private String ddlAuto;
     @Value("${spring.jpa.crawler.database}")

+ 10 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/adplatform/ChangwenArticleDatastatRepository.java

@@ -0,0 +1,10 @@
+package com.tzld.longarticle.recommend.server.repository.adplatform;
+
+import com.tzld.longarticle.recommend.server.repository.entity.adplatform.ChangwenArticleDatastat;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ChangwenArticleDatastatRepository  extends JpaRepository<ChangwenArticleDatastat, String> {
+
+}

+ 11 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/adplatform/ChangwenArticleRepository.java

@@ -0,0 +1,11 @@
+package com.tzld.longarticle.recommend.server.repository.adplatform;
+
+import com.tzld.longarticle.recommend.server.repository.entity.adplatform.ChangwenArticle;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ChangwenArticleRepository extends JpaRepository<ChangwenArticle, String> {
+
+
+}

+ 38 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/entity/adplatform/ChangwenArticle.java

@@ -0,0 +1,38 @@
+package com.tzld.longarticle.recommend.server.repository.entity.adplatform;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Data
+@Entity
+@Table(name = "changwen_article")
+public class ChangwenArticle implements Serializable {
+
+    @Id
+    private String id;
+
+    @Column(name = "account_id")
+    private String accountId;
+
+    @Column(name = "publish_timestamp")
+    private Long publishTimestamp;
+
+    @Column(name = "item_index")
+    private Integer itemIndex;
+
+    @Column(name = "title")
+    private String title;
+
+    @Column(name = "link")
+    private String link;
+
+    @Column(name = "root_source_ids")
+    private String rootSourceIds;
+
+    @Column(name = "create_timestamp")
+    private Long createTimestamp;
+    
+
+}

+ 39 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/entity/adplatform/ChangwenArticleDatastat.java

@@ -0,0 +1,39 @@
+package com.tzld.longarticle.recommend.server.repository.entity.adplatform;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@Entity
+@Table(name = "changwen_article_datastat")
+public class ChangwenArticleDatastat implements Serializable {
+
+    @Id
+    @Column(name = "article_id")
+    private String articleId;
+
+    @Column(name = "increase_read_count")
+    private Integer increaseReadCount;
+
+    @Column(name = "read_count")
+    private Integer readCount;
+
+    @Column(name = "increase_income")
+    private BigDecimal increaseIncome;
+
+    @Column(name = "income")
+    private BigDecimal income;
+
+    @Column(name = "increase_share_count")
+    private Integer increaseShareCount;
+
+    @Column(name = "share_count")
+    private Integer shareCount;
+
+    @Column(name = "update_timestamp")
+    private Long updateTimestamp;
+
+}

+ 0 - 9
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/mapper/adplatform/AdplatformBaseMapper.java

@@ -1,14 +1,5 @@
 package com.tzld.longarticle.recommend.server.repository.mapper.adplatform;
 
-import com.tzld.longarticle.recommend.server.service.score.ChangwenArticleDTO;
-import com.tzld.longarticle.recommend.server.service.score.ChangwenArticleDatastatDTO;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
 public interface AdplatformBaseMapper {
 
-    List<ChangwenArticleDTO> getChangwenArticles(@Param("channelContentIds") List<String> channelContentIds);
-
-    List<ChangwenArticleDatastatDTO> getChangwenArticleDatastats(@Param("channelContentIds") List<String> channelContentIds);
 }

+ 0 - 19
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ChangwenArticleDTO.java

@@ -1,19 +0,0 @@
-package com.tzld.longarticle.recommend.server.service.score;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.Accessors;
-
-@Getter
-@Setter
-@Accessors(chain = true)
-public class ChangwenArticleDTO {
-    private String id;
-    private String accountId;
-    private Long publishTimestamp;
-    private Integer itemIndex;
-    private String title;
-    private String link;
-    private String rootSourceIds;
-    private Long createTimestamp;
-}

+ 0 - 63
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ChangwenArticleDatastatDTO.java

@@ -1,63 +0,0 @@
-package com.tzld.longarticle.recommend.server.service.score;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-
-@Getter
-@Setter
-@Accessors(chain = true)
-public class ChangwenArticleDatastatDTO {
-    private String articleId;
-    private Integer increaseReadCount;
-    private Integer readCount;
-    private BigDecimal increaseIncome;
-    private BigDecimal income;
-    private Integer increaseShareCount;
-    private Integer shareCount;
-    private Long updateTimestamp;
-
-    public Integer getIncreaseReadCount() {
-        if (increaseReadCount == null) {
-            return 0;
-        }
-        return increaseReadCount;
-    }
-
-    public Integer getReadCount() {
-        if (readCount == null) {
-            return 0;
-        }
-        return readCount;
-    }
-
-    public BigDecimal getIncreaseIncome() {
-        if (increaseIncome == null) {
-            return new BigDecimal(0);
-        }
-        return increaseIncome;
-    }
-
-    public BigDecimal getIncome() {
-        if (income == null) {
-            return new BigDecimal(0);
-        }
-        return income;
-    }
-
-    public Integer getIncreaseShareCount() {
-        if (increaseShareCount == null) {
-            return 0;
-        }
-        return increaseShareCount;
-    }
-
-    public Integer getShareCount() {
-        if (shareCount == null) {
-            return 0;
-        }
-        return shareCount;
-    }
-}

+ 20 - 15
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/strategy/ViewMultiplierStrategy.java

@@ -3,7 +3,10 @@ package com.tzld.longarticle.recommend.server.service.score.strategy;
 import cn.hutool.core.io.resource.ResourceUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.tzld.longarticle.recommend.server.model.Content;
-import com.tzld.longarticle.recommend.server.repository.mapper.adplatform.AdplatformBaseMapper;
+import com.tzld.longarticle.recommend.server.repository.adplatform.ChangwenArticleDatastatRepository;
+import com.tzld.longarticle.recommend.server.repository.adplatform.ChangwenArticleRepository;
+import com.tzld.longarticle.recommend.server.repository.entity.adplatform.ChangwenArticle;
+import com.tzld.longarticle.recommend.server.repository.entity.adplatform.ChangwenArticleDatastat;
 import com.tzld.longarticle.recommend.server.service.score.*;
 import com.tzld.longarticle.recommend.server.util.CommonCollectionUtils;
 import com.tzld.longarticle.recommend.server.util.NormalizationUtils;
@@ -22,7 +25,9 @@ import java.util.stream.Collectors;
 public class ViewMultiplierStrategy implements ScoreStrategy {
 
     @Autowired
-    AdplatformBaseMapper adplatformBaseMapper;
+    ChangwenArticleRepository changwenArticleRepository;
+    @Autowired
+    ChangwenArticleDatastatRepository changwenArticleDatastatRepository;
 
     private JSONObject jsonObject;
 
@@ -39,18 +44,18 @@ public class ViewMultiplierStrategy implements ScoreStrategy {
             return Collections.emptyList();
         }
         List<String> channelContentIds = param.getContents().stream().map(Content::getCrawlerChannelContentId).collect(Collectors.toList());
-        Map<String, ChangwenArticleDTO> changwenArticleDTOMap = getContentIndex(channelContentIds);
-        Map<String, ChangwenArticleDatastatDTO> changwenArticleDatastatDTOMap = getContentViewCount(channelContentIds);
+        Map<String, ChangwenArticle> changwenArticleDTOMap = getContentIndex(channelContentIds);
+        Map<String, ChangwenArticleDatastat> changwenArticleDatastatDTOMap = getContentViewCount(channelContentIds);
 
         List<Score> scores = CommonCollectionUtils.toList(param.getContents(), c -> {
             Score score = new Score();
             score.setContentId(c.getId());
-            ChangwenArticleDTO articleDTO = changwenArticleDTOMap.get(c.getCrawlerChannelContentId());
-            ChangwenArticleDatastatDTO datastatDTO = changwenArticleDatastatDTOMap.get(c.getCrawlerChannelContentId());
+            ChangwenArticle article = changwenArticleDTOMap.get(c.getCrawlerChannelContentId());
+            ChangwenArticleDatastat datastat = changwenArticleDatastatDTOMap.get(c.getCrawlerChannelContentId());
 
-            if (Objects.nonNull(articleDTO) && Objects.nonNull(datastatDTO)) {
-                double avgReadCount = getAvgReadCount(articleDTO.getAccountId(), articleDTO.getItemIndex());
-                Integer readCount = datastatDTO.getReadCount();
+            if (Objects.nonNull(article) && Objects.nonNull(datastat)) {
+                double avgReadCount = getAvgReadCount(article.getAccountId(), article.getItemIndex());
+                Integer readCount = datastat.getReadCount();
                 score.setScore(NormalizationUtils.min(Math.max(readCount, 0) / avgReadCount - 1));
             } else {
                 score.setScore(-1.0);
@@ -61,26 +66,26 @@ public class ViewMultiplierStrategy implements ScoreStrategy {
         return scores;
     }
 
-    private Map<String, ChangwenArticleDTO> getContentIndex(List<String> channelContentIds) {
+    private Map<String, ChangwenArticle> getContentIndex(List<String> channelContentIds) {
         if (CollectionUtils.isEmpty(channelContentIds)) {
             return new HashMap<>();
         }
-        List<ChangwenArticleDTO> result = adplatformBaseMapper.getChangwenArticles(channelContentIds);
+        List<ChangwenArticle> result = changwenArticleRepository.findAllById(channelContentIds);
         if (CollectionUtils.isEmpty(result)) {
             return new HashMap<>();
         }
-        return result.stream().collect(Collectors.toMap(ChangwenArticleDTO::getId, o -> o));
+        return result.stream().collect(Collectors.toMap(ChangwenArticle::getId, o -> o));
     }
 
-    private Map<String, ChangwenArticleDatastatDTO> getContentViewCount(List<String> channelContentIds) {
+    private Map<String, ChangwenArticleDatastat> getContentViewCount(List<String> channelContentIds) {
         if (CollectionUtils.isEmpty(channelContentIds)) {
             return new HashMap<>();
         }
-        List<ChangwenArticleDatastatDTO> result = adplatformBaseMapper.getChangwenArticleDatastats(channelContentIds);
+        List<ChangwenArticleDatastat> result = changwenArticleDatastatRepository.findAllById(channelContentIds);
         if (CollectionUtils.isEmpty(result)) {
             return new HashMap<>();
         }
-        return result.stream().collect(Collectors.toMap(ChangwenArticleDatastatDTO::getArticleId, o -> o));
+        return result.stream().collect(Collectors.toMap(ChangwenArticleDatastat::getArticleId, o -> o));
     }
 
     private double getAvgReadCount(String ghId, Integer index) {

+ 0 - 16
long-article-recommend-service/src/main/resources/mapper/adplatform/AdplatformBaseMapper.xml

@@ -2,21 +2,5 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.tzld.longarticle.recommend.server.repository.mapper.adplatform.AdplatformBaseMapper">
 
-    <select id="getChangwenArticles"
-            resultType="com.tzld.longarticle.recommend.server.service.score.ChangwenArticleDTO">
-        select id, account_id, item_index from changwen_article where id in
-        <foreach collection="channelContentIds" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-    </select>
-
-    <select id="getChangwenArticleDatastats"
-            resultType="com.tzld.longarticle.recommend.server.service.score.ChangwenArticleDatastatDTO">
-        select article_id, read_count from changwen_article_datastat where article_id in
-        <foreach collection="channelContentIds" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-    </select>
-
 
 </mapper>