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