From 007055d472637dec702b60f025480e266e1a746d Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 20 四月 2023 16:01:46 +0800
Subject: [PATCH] IOS头像上传优化
---
src/main/java/com/yeshi/buwan/service/imp/ad/DeviceAdStrategyServiceImpl.java | 194 ++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 187 insertions(+), 7 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 0b40f75..37dd429 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,11 +1,20 @@
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.domain.system.DetailSystem;
+import com.yeshi.buwan.service.imp.DetailSystemConfigService;
+import com.yeshi.buwan.service.imp.VideoInfoService;
import com.yeshi.buwan.service.inter.ad.DeviceAdStrategyService;
+import com.yeshi.buwan.service.inter.user.UserDPContentWatchStatisticService;
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.vo.AcceptData;
import com.yeshi.buwan.vo.video.VideoDetailVO;
+import net.sf.json.JSONObject;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -20,6 +29,18 @@
@Resource
private VIPService vipService;
+ @Resource
+ private VideoInfoService videoInfoService;
+
+ @Resource
+ private RedisManager redisManager;
+
+ @Resource
+ private DetailSystemConfigService detailSystemConfigService;
+
+ @Resource
+ private UserDPContentWatchStatisticService userDPContentWatchStatisticService;
+
private DeviceAdStrategy init(String id, String deviceId, String detailSystemId) {
DeviceAdStrategy strategy = new DeviceAdStrategy();
strategy.setId(id);
@@ -28,18 +49,51 @@
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;
}
- @Override
- public VideoDetailVO.VideoAdInfo getVideoDetailAdStrategy(String deviceId, String detailSystemId, String loginUid) {
+ /**
+ * 鍔犺浇骞垮憡鏉冮噸
+ *
+ * @param videoAdInfo
+ * @param detailSystemId
+ * @param version
+ * @param channel
+ */
+ private VideoDetailVO.VideoAdInfo loadAdWeight(VideoDetailVO.VideoAdInfo videoAdInfo, String detailSystemId, int version, String channel) {
+ String value = detailSystemConfigService.getConfigValueByKey("video_detail_full_video_version_channel_type", detailSystemId, version);
+ if (StringUtil.isNullOrEmpty(value)) {
+ return videoAdInfo;
+ }
+ JSONObject json = JSONObject.fromObject(value);
+ if (json.optJSONObject(channel) == null) {
+ json = json.optJSONObject("qq");
+ } else {
+ json = json.optJSONObject(channel);
+ }
+ if (json != null) {
+ videoAdInfo.setFullVideoWeight(json.optInt("fullvideo"));
+ videoAdInfo.setInterstitialWeight(json.optInt("interstitial"));
+ }
+ return videoAdInfo;
+ }
+
+ @Override
+ public VideoDetailVO.VideoAdInfo getVideoDetailAdStrategy(String deviceId, String detailSystemId, int version, String channel, String loginUid) {
+
+ if (StringUtil.isNullOrEmpty(deviceId) || StringUtil.isNullOrEmpty(detailSystemId)) {
+ return loadAdWeight(new VideoDetailVO.VideoAdInfo(true, true), detailSystemId, version, channel);
+ }
//璧癡IP鍒ゅ畾閫昏緫
if (!StringUtil.isNullOrEmpty(loginUid)) {
if (vipService.isVIP(loginUid)) {
//VIP涓嶅睍绀鸿棰戝墠璐村拰鍏ㄥ睆
- return new VideoDetailVO.VideoAdInfo(false, false);
+ return loadAdWeight(new VideoDetailVO.VideoAdInfo(false, false), detailSystemId, version, channel);
}
}
@@ -49,11 +103,82 @@
strategy = init(id, deviceId, detailSystemId);
}
long now = System.currentTimeMillis();
- return new VideoDetailVO.VideoAdInfo(strategy.getDetailPVAExpireTime() < now, strategy.getDetailFSAExpireTime() < now);
+ return filterData(loadAdWeight(new VideoDetailVO.VideoAdInfo(strategy.getDetailPVAExpireTime() < now, strategy.getDetailFSAExpireTime() < now), detailSystemId, version, channel), detailSystemId, deviceId);
+ }
+
+
+ /**
+ * 鑾峰彇灏忚棰戝箍鍛婂睍绀虹瓥鐣�
+ *
+ * @param deviceId
+ * @param detailSystemId
+ * @return
+ */
+ public VideoDetailVO.VideoAdInfo getVideoDetailShortVideoAdStrategy(String deviceId, String detailSystemId, int version, String channel) {
+
+ if (StringUtil.isNullOrEmpty(deviceId) || StringUtil.isNullOrEmpty(detailSystemId)) {
+ return loadAdWeight(new VideoDetailVO.VideoAdInfo(true, true), detailSystemId, version, channel);
+ }
+ 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 filterData(loadAdWeight(new VideoDetailVO.VideoAdInfo(strategy.getDetailShortVideoPVAExpireTime() < now, strategy.getDetailShortVideoFSAExpireTime() < now), detailSystemId, version, channel), detailSystemId, deviceId);
}
@Override
- public void setVideoDetailAdStrategy(String deviceId, String detailSystemId, long fsaExpireTime, long pvaExpireTime) {
+ public VideoDetailVO.VideoAdInfo getVideoDetailAdStrategy(String deviceId, String detailSystemId, int version, String channel, String loginUid, String videoId, String from) {
+
+ VideoDetailVO.VideoAdInfo videoAdInfo = getVideoDetailAdStrategy(deviceId, detailSystemId, version, channel, 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, version, channel);
+ videoAdInfo.setFullVideo(videoAdInfo.isFullVideo() && shortVideo.isFullVideo());
+ }
+ }
+
+
+ return filterData(videoAdInfo, detailSystemId, deviceId);
+ }
+
+
+ private VideoDetailVO.VideoAdInfo filterData(VideoDetailVO.VideoAdInfo videoAdInfo, String detailSystemId, String deviceId) {
+ DetailSystem ds = new DetailSystem();
+ ds.setId(detailSystemId);
+ if (videoAdInfo != null) {
+ AcceptData acceptData = new AcceptData();
+ acceptData.setUtdId(deviceId);
+ acceptData.setDetailSystem(ds);
+ boolean isDPUser = userDPContentWatchStatisticService.isDPUser(acceptData);
+ if (isDPUser) {
+ videoAdInfo.setFullVideo(false);
+ videoAdInfo.setPlayVideo(false);
+ }
+ }
+ return videoAdInfo;
+ }
+
+
+ @Override
+ public void setVideoDetailAdStrategy(String deviceId, String detailSystemId, Long fsaExpireTime, Long pvaExpireTime) {
+ if (StringUtil.isNullOrEmpty(deviceId) || StringUtil.isNullOrEmpty(detailSystemId)) {
+ return;
+ }
String id = DeviceAdStrategy.createId(deviceId, detailSystemId);
DeviceAdStrategy strategy = deviceAdStrategyDao.get(id);
if (strategy == null) {
@@ -61,8 +186,63 @@
}
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);
+ }
+
+ }
+
+ @Override
+ public void setFSAShowTomorrow(String deviceId, String detailSystemId) {
+ 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