package com.yeshi.buwan.job;
|
|
import com.xxl.job.core.biz.model.ReturnT;
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
import com.yeshi.buwan.domain.system.DetailSystemConfig;
|
import com.yeshi.buwan.domain.system.DetailSystem;
|
import com.yeshi.buwan.service.imp.DetailSystemConfigService;
|
import com.yeshi.buwan.service.imp.SystemService;
|
import com.yeshi.buwan.util.EHCacheManager;
|
import net.sf.json.JSONObject;
|
import org.springframework.stereotype.Component;
|
import org.yeshi.utils.AppMarketUtil;
|
import org.yeshi.utils.StringUtil;
|
|
import javax.annotation.Resource;
|
import java.util.Map;
|
|
//10409568
|
@Component
|
public class AdJob {
|
@Resource
|
private DetailSystemConfigService configService;
|
@Resource
|
private SystemService systemService;
|
@Resource
|
private EHCacheManager ehCacheManager;
|
|
|
//打开华为应用市场的广告
|
@XxlJob("ad-hw-check")
|
public ReturnT<String> openHWAd(String params) throws Exception {
|
JSONObject paramsJson = JSONObject.fromObject(params);
|
String appId = paramsJson.optString("appId");
|
String systemId = paramsJson.optString("detailSystemId");
|
//应用市场的版本
|
String onLineVersion = AppMarketUtil.getHWLatestVersion(appId);
|
if (StringUtil.isNullOrEmpty(onLineVersion)) {
|
throw new Exception("应用市场版本获取失败:" + appId);
|
}
|
|
//获取正在上线的版本
|
DetailSystem detailSystem = systemService.getDetailSystemById(systemId);
|
Map<String, String> map = configService.getConfigAsMap(detailSystem, 1);
|
//正在上线的版本
|
String onLiningVersionInfo = map.get("ad_hw_online_version_info");
|
JSONObject onLiningVersionInfoJson = JSONObject.fromObject(onLiningVersionInfo);
|
String onLiningVersionName = onLiningVersionInfoJson.optString("versionName");
|
int onLiningVersionCode = onLiningVersionInfoJson.optInt("versionCode");
|
//是否已经上线完成
|
if (Integer.parseInt(onLineVersion.replace(".", "")) >= Integer.parseInt(onLiningVersionName.replace(".", ""))) {
|
//已经上线,设置
|
showAd("huawei", detailSystem, onLiningVersionCode + 1);
|
}
|
return ReturnT.SUCCESS;
|
}
|
|
//打开vivo应用市场广告
|
|
//打开华为应用市场的广告
|
@XxlJob("ad-vivo-check")
|
public ReturnT<String> openVIVOAd(String params) throws Exception {
|
JSONObject paramsJson = JSONObject.fromObject(params);
|
String appId = paramsJson.optString("appId");
|
String systemId = paramsJson.optString("detailSystemId");
|
//应用市场的版本
|
Integer onLineVersion = AppMarketUtil.getVIVOLatestVersionCode(appId);
|
if (onLineVersion == null) {
|
throw new Exception("应用市场版本获取失败:" + appId);
|
}
|
|
//获取正在上线的版本
|
DetailSystem detailSystem = systemService.getDetailSystemById(systemId);
|
Map<String, String> map = configService.getConfigAsMap(detailSystem, 1);
|
//正在上线的版本
|
String onLiningVersionCode = map.get("ad_click_download_version");
|
//是否已经上线完成
|
if (onLineVersion >= Integer.parseInt(onLiningVersionCode)) {
|
//已经上线,设置
|
showAd("vivo", detailSystem, onLineVersion + 1);
|
}
|
return ReturnT.SUCCESS;
|
}
|
|
|
/**
|
* 打开广告
|
*
|
* @param detailSystem
|
* @param version
|
*/
|
public void showAd(String channel, DetailSystem detailSystem, int version) {
|
DetailSystemConfig config = configService.getConfigByKey("video_detail_full_video_version_channel", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
config = configService.getConfigByKey("ad_splash_config", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
if (!channel.equalsIgnoreCase("vivo")) {//VIVO屏蔽其他广告位
|
config = configService.getConfigByKey("ad_other_open_settings", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
}
|
config = configService.getConfigByKey("ad_play_video_pre", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
|
config = configService.getConfigByKey("ad_exit_app", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
|
config = configService.getConfigByKey("ad_video_detail_full_video", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
|
config = configService.getConfigByKey("ad_video_search", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
|
//热启动开屏
|
config = configService.getConfigByKey("ad_splash_hot_start", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
|
//PPTV视频免广告权益
|
config = configService.getConfigByKey("pptv_no_ad_reward", detailSystem, version);
|
updateVersionConfig(channel, config, version);
|
|
//删除缓存
|
ehCacheManager.clearCacheByCacheName("configCache");
|
}
|
|
/**
|
* 获取正在上线的版本
|
*
|
* @return
|
*/
|
public int getOnliningVersionCode(DetailSystem detailSystem) {
|
DetailSystemConfig config = configService.getConfigByKey("ad_click_download_version", detailSystem, 1);
|
return Integer.parseInt(config.getValue());
|
}
|
|
public void setOnliningVersionCode(int versionCode, DetailSystem detailSystem) {
|
DetailSystemConfig config = configService.getConfigByKey("ad_click_download_version", detailSystem, 1);
|
config.setValue(versionCode + "");
|
configService.updateConfig(config);
|
}
|
|
/**
|
* 更新version
|
*
|
* @param config
|
* @param version
|
*/
|
private void updateVersionConfig(String channel, DetailSystemConfig config, int version) {
|
channel = channel.toLowerCase();
|
if (config == null)
|
return;
|
if (StringUtil.isNullOrEmpty(config.getValue()))
|
return;
|
JSONObject json = JSONObject.fromObject(config.getValue());
|
if (json.opt(channel) == null)
|
return;
|
|
if (json.opt(channel) instanceof Integer) {
|
if (json.optInt(channel) < version)
|
json.put(channel, version);
|
} else {
|
JSONObject item = json.optJSONObject(channel);
|
if (item != null && !StringUtil.isNullOrEmpty(item.optString("version"))) {
|
if (Integer.parseInt(item.optString("version")) < version)
|
item.put("version", version);
|
}
|
json.put(channel, item);
|
}
|
config.setValue(json.toString());
|
configService.updateConfig(config);
|
}
|
|
|
}
|