From 19533a17aa55fafc70d0a385928e785cb50e1ebc Mon Sep 17 00:00:00 2001
From: admin <2780501319@qq.com>
Date: 星期五, 30 七月 2021 02:05:14 +0800
Subject: [PATCH] 爱奇艺视频更新

---
 src/main/java/com/yeshi/buwan/service/imp/ad/DeviceAdStrategyServiceImpl.java |  117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 114 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/service/imp/ad/DeviceAdStrategyServiceImpl.java b/src/main/java/com/yeshi/buwan/service/imp/ad/DeviceAdStrategyServiceImpl.java
index e0bbcc9..02fb9d1 100644
--- a/src/main/java/com/yeshi/buwan/service/imp/ad/DeviceAdStrategyServiceImpl.java
+++ b/src/main/java/com/yeshi/buwan/service/imp/ad/DeviceAdStrategyServiceImpl.java
@@ -1,10 +1,15 @@
 package com.yeshi.buwan.service.imp.ad;
 
 import com.yeshi.buwan.dao.ad.DeviceAdStrategyDao;
+import com.yeshi.buwan.domain.VideoInfo;
 import com.yeshi.buwan.domain.ad.DeviceAdStrategy;
+import com.yeshi.buwan.service.imp.VideoInfoService;
 import com.yeshi.buwan.service.inter.ad.DeviceAdStrategyService;
 import com.yeshi.buwan.service.inter.vip.VIPService;
+import com.yeshi.buwan.util.RedisManager;
 import com.yeshi.buwan.util.StringUtil;
+import com.yeshi.buwan.util.TimeUtil;
+import com.yeshi.buwan.util.video.VideoConstant;
 import com.yeshi.buwan.vo.video.VideoDetailVO;
 import org.springframework.stereotype.Service;
 
@@ -20,6 +25,12 @@
     @Resource
     private VIPService vipService;
 
+    @Resource
+    private VideoInfoService videoInfoService;
+
+    @Resource
+    private RedisManager redisManager;
+
     private DeviceAdStrategy init(String id, String deviceId, String detailSystemId) {
         DeviceAdStrategy strategy = new DeviceAdStrategy();
         strategy.setId(id);
@@ -28,6 +39,9 @@
         strategy.setCreateTime(new Date());
         strategy.setDetailFSAExpireTime(DeviceAdStrategy.ALWAYS_DISPLAY);
         strategy.setDetailPVAExpireTime(DeviceAdStrategy.ALWAYS_DISPLAY);
+
+        strategy.setDetailShortVideoFSAExpireTime(DeviceAdStrategy.ALWAYS_DISPLAY);
+        strategy.setDetailShortVideoPVAExpireTime(DeviceAdStrategy.ALWAYS_DISPLAY);
         deviceAdStrategyDao.save(strategy);
         return strategy;
     }
@@ -55,8 +69,56 @@
         return new VideoDetailVO.VideoAdInfo(strategy.getDetailPVAExpireTime() < now, strategy.getDetailFSAExpireTime() < now);
     }
 
+
+    /**
+     * 鑾峰彇灏忚棰戝箍鍛婂睍绀虹瓥鐣�
+     *
+     * @param deviceId
+     * @param detailSystemId
+     * @return
+     */
+    public VideoDetailVO.VideoAdInfo getVideoDetailShortVideoAdStrategy(String deviceId, String detailSystemId) {
+
+        if (StringUtil.isNullOrEmpty(deviceId) || StringUtil.isNullOrEmpty(detailSystemId)) {
+            return new VideoDetailVO.VideoAdInfo(true, true);
+        }
+        String id = DeviceAdStrategy.createId(deviceId, detailSystemId);
+        DeviceAdStrategy strategy = deviceAdStrategyDao.get(id);
+        if (strategy == null) {
+            strategy = init(id, deviceId, detailSystemId);
+        }
+
+        if (strategy.getDetailShortVideoPVAExpireTime() == null) {
+            strategy.setDetailShortVideoPVAExpireTime(DeviceAdStrategy.ALWAYS_DISPLAY);
+        }
+
+        if (strategy.getDetailShortVideoFSAExpireTime() == null) {
+            strategy.setDetailShortVideoFSAExpireTime(DeviceAdStrategy.ALWAYS_DISPLAY);
+        }
+
+        long now = System.currentTimeMillis();
+        return new VideoDetailVO.VideoAdInfo(strategy.getDetailShortVideoPVAExpireTime() < now, strategy.getDetailShortVideoFSAExpireTime() < now);
+    }
+
     @Override
-    public void setVideoDetailAdStrategy(String deviceId, String detailSystemId, long fsaExpireTime, long pvaExpireTime) {
+    public VideoDetailVO.VideoAdInfo getVideoDetailAdStrategy(String deviceId, String detailSystemId, String loginUid, String videoId, String from) {
+
+        VideoDetailVO.VideoAdInfo videoAdInfo = getVideoDetailAdStrategy(deviceId, detailSystemId, loginUid);
+        //浠嶢PP棣栭〉鎺ㄨ崘鑰屾潵,骞朵笖鏈夊叏灞忚闋诲唬鍛�
+        if (videoAdInfo.isFullVideo() && "recommend".equalsIgnoreCase(from)) {
+            //鏄惁涓�4澶у垎绫�
+            VideoInfo videoInfo = videoInfoService.getVideoInfoCache(videoId);
+            //闄ゆ鐗囧涓嶅睍绀哄叏灞忚棰戝箍鍛�
+            if (videoInfo != null && videoInfo.getContentType() != null && videoInfo.getContentType() != 1) {
+                VideoDetailVO.VideoAdInfo shortVideo = getVideoDetailShortVideoAdStrategy(deviceId, detailSystemId);
+                videoAdInfo.setFullVideo(videoAdInfo.isFullVideo() && shortVideo.isFullVideo());
+            }
+        }
+        return videoAdInfo;
+    }
+
+    @Override
+    public void setVideoDetailAdStrategy(String deviceId, String detailSystemId, Long fsaExpireTime, Long pvaExpireTime) {
         if (StringUtil.isNullOrEmpty(deviceId) || StringUtil.isNullOrEmpty(detailSystemId)) {
             return;
         }
@@ -67,8 +129,57 @@
         }
         DeviceAdStrategy update = new DeviceAdStrategy();
         update.setId(id);
-        update.setDetailFSAExpireTime(fsaExpireTime);
-        update.setDetailPVAExpireTime(pvaExpireTime);
+        if (fsaExpireTime != null)
+            update.setDetailFSAExpireTime(fsaExpireTime);
+        if (pvaExpireTime != null)
+            update.setDetailPVAExpireTime(pvaExpireTime);
         deviceAdStrategyDao.updateSelective(update);
     }
+
+    @Override
+    public void setShortVideoAdStrategy(String deviceId, String detailSystemId, String videoId, String from, Long fsaExpireTime, Long pvaExpireTime) {
+        //鍙湁棣栭〉鎺ㄨ崘灏忚棰戞墠璁剧疆
+        if (!"recommend".equalsIgnoreCase(from))
+            return;
+
+        if (StringUtil.isNullOrEmpty(deviceId) || StringUtil.isNullOrEmpty(detailSystemId)) {
+            return;
+        }
+
+
+        VideoInfo videoInfo = videoInfoService.getVideoInfoCache(videoId);
+        //闄ゆ鐗囧涓嶅睍绀哄叏灞忚棰戝箍鍛�
+        if (videoInfo != null && videoInfo.getContentType() != null && videoInfo.getContentType() != 1) {
+
+            String id = DeviceAdStrategy.createId(deviceId, detailSystemId);
+            DeviceAdStrategy strategy = deviceAdStrategyDao.get(id);
+            if (strategy == null) {
+                init(id, deviceId, detailSystemId);
+            }
+            DeviceAdStrategy update = new DeviceAdStrategy();
+            update.setId(id);
+            if (fsaExpireTime != null)
+                update.setDetailShortVideoFSAExpireTime(fsaExpireTime);
+            if (pvaExpireTime != null)
+                update.setDetailShortVideoPVAExpireTime(pvaExpireTime);
+            deviceAdStrategyDao.updateSelective(update);
+        }
+    }
+
+    @Override
+    public void watchPPTVVideo(String deviceId, String detailSystemId) {
+        //璁板綍褰撳墠鐪婸P鐨勬鏁�
+        String id = DeviceAdStrategy.createId(deviceId, detailSystemId);
+        String ppDayCount = "pptv-watch-count-" + id;
+        int timeS = (int) ((TimeUtil.convertGernalTime(TimeUtil.getGernalTime(System.currentTimeMillis() + 1000 * 60 * 60 * 24L, "yyyyMMdd"), "yyyyMMdd")-System.currentTimeMillis()) / 1000);
+        redisManager.increase(ppDayCount, 1);
+        redisManager.expire(ppDayCount, timeS);
+        String countStr = redisManager.getCommonString(ppDayCount);
+
+        if (!StringUtil.isNullOrEmpty(countStr) && Integer.parseInt(countStr) >= 2) {
+            long showTime = TimeUtil.convertGernalTime(TimeUtil.getGernalTime(System.currentTimeMillis() + 1000 * 60 * 60 * 24L, "yyyy-MM-dd"), "yyyy-MM-dd");
+            setVideoDetailAdStrategy(deviceId, detailSystemId, showTime, null);
+        }
+
+    }
 }

--
Gitblit v1.8.0