6 Commits 2aa55bec67 ... 0eec43dca9

Autor SHA1 Mensagem Data
  supeng 0eec43dca9 optimize risk video filter 1 mês atrás
  supeng 260fdfe5b7 Merge branch 'feature_20250919_supeng_optimize_recommend_risk_filter_v2' of algorithm/recommend-server into master 1 mês atrás
  supeng 79e93e0567 update 1 mês atrás
  supeng ea84678a29 Merge branch 'feature_20250919_supeng_optimize_recommend_risk_filter_v2' of algorithm/recommend-server into master 1 mês atrás
  supeng 8c4639fec7 update risk filter large startOfDay 1 mês atrás
  supeng 7d3aedb6ab Merge branch 'feature_20250919_supeng_optimize_recommend_risk_filter' of algorithm/recommend-server into master 1 mês atrás

+ 9 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java

@@ -45,6 +45,9 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
 import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
@@ -435,6 +438,7 @@ public class RecommendService {
     private boolean isNoneUserRisk(RecommendRequest request, RecommendParam param) {
         boolean isNoneUserRisk = false;
         try {
+            long startOfDay = LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli();
             if ((Objects.isNull(noneUserRiskExcludeAppTypes) || !noneUserRiskExcludeAppTypes.contains(param.getAppType()))
                     && Objects.equals(1089L, request.getHotSceneType())) {
                 if ((Objects.isNull(param.getUid()) || Objects.equals("0", param.getUid().trim()) || Objects.equals("null", param.getUid().trim()))
@@ -445,15 +449,16 @@ public class RecommendService {
                     if (Objects.nonNull(param.getUid()) && !Objects.equals("0", param.getUid().trim()) && !Objects.equals("null", param.getUid().trim())) {
                         //有uid
                         WxUserInfo wxUserInfo = getWxUserInfo(param.getUid());
-                        if (Objects.isNull(wxUserInfo)) {
-                            //有uid,但是未入库,新用户
+                        if (Objects.isNull(wxUserInfo) || (Objects.nonNull(wxUserInfo.getGmtCreateTimestamp()) && wxUserInfo.getGmtCreateTimestamp() > startOfDay)) {
+                            //有uid,当天为入库则为新用户
                             isNoneUserRisk = true;
                         }
                     } else if (Objects.nonNull(param.getMid()) && !Objects.equals("", param.getMid().trim())) {
                         //有mid
                         String key = String.format(MID_GENERATE_CACHE_KEY, param.getMid());
-                        if (!Boolean.TRUE.equals(midRedisTemplate.hasKey(key))) {
-                            //不存在则为新用户
+                        String value = midRedisTemplate.opsForValue().get(key);
+                        if (Objects.isNull(value) || Objects.equals("", value) || Long.parseLong(value) > startOfDay) {
+                            //创建时间大于当天,则为新用户
                             isNoneUserRisk = true;
                         }
                     }

+ 8 - 6
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/strategy/RiskVideoStrategy.java

@@ -47,13 +47,15 @@ public class RiskVideoStrategy implements FilterStrategy {
             .build(new CacheLoader<String, Set<Long>>() {
                 @Override
                 public Set<Long> load(String key) {
-                    List<WxVideoTagRel> rels = repository.findAllByTagIdIn(riskVideoTagIds);
-//                    return CommonCollectionUtils.toSet(rels, WxVideoTagRel::getVideoId)
-                    //原标签内容保留 用于实时处理
                     Set<Long> riskVideoIdSet = new HashSet<>();
-                    Set<Long> tagVideoIds = CommonCollectionUtils.toSet(rels, WxVideoTagRel::getVideoId);
-                    if (Objects.nonNull(tagVideoIds) && !tagVideoIds.isEmpty()) {
-                        riskVideoIdSet.addAll(tagVideoIds);
+                    if (Objects.nonNull(riskVideoTagIds) && !riskVideoTagIds.isEmpty()) {
+                        List<WxVideoTagRel> rels = repository.findAllByTagIdIn(riskVideoTagIds);
+//                    return CommonCollectionUtils.toSet(rels, WxVideoTagRel::getVideoId)
+                        //原标签内容保留 用于实时处理
+                        Set<Long> tagVideoIds = CommonCollectionUtils.toSet(rels, WxVideoTagRel::getVideoId);
+                        if (Objects.nonNull(tagVideoIds) && !tagVideoIds.isEmpty()) {
+                            riskVideoIdSet.addAll(tagVideoIds);
+                        }
                     }
                     //改为视频list 不超过10w条
                     Set<String> videoIdSet = redisTemplate.opsForSet().members(RedisKeyConstants.Recommend.WECHAT_RISK_VIDEO_CACHE_KEY);