Просмотр исходного кода

[系统][修改]:定时拉取PVUV任务时间和逻辑更改

release_toaliyun_real
hupeng 7 лет назад
Родитель
Сommit
be16ab0240
1 измененных файлов: 30 добавлений и 25 удалений
  1. +30
    -25
      mallinkSchedule/src/main/java/com/iformall/schedule/WxAppVisitSchedule.java

+ 30
- 25
mallinkSchedule/src/main/java/com/iformall/schedule/WxAppVisitSchedule.java Просмотреть файл

@@ -42,17 +42,13 @@ public class WxAppVisitSchedule {
@Autowired @Autowired
private WxAppinfoService WxAppinfoService; private WxAppinfoService WxAppinfoService;
// @Scheduled(cron = "0 */1 * * * *?")
@Scheduled(cron = "0 0 9 * * ? ")
//@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次
@Scheduled(cron = "0 0 2,3,4 * * ? ") //2点,3点,4点各做一次
public void start() { public void start() {
try { try {
Calendar c =Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR, -1);
Date time = c.getTime();
String yesterday = new SimpleDateFormat("yyyyMMdd").format(time);
// "wx8eb8275b78db4ede", "76c43df01296998d8ce12383f213ac10";

WxAppinfo appInfo = new WxAppinfo(); WxAppinfo appInfo = new WxAppinfo();
appInfo.setType(EnumAppType.C.getCode()); appInfo.setType(EnumAppType.C.getCode());
PageInfo<WxAppinfo> page = WxAppinfoService.listAsPage(appInfo, 1, 10000); PageInfo<WxAppinfo> page = WxAppinfoService.listAsPage(appInfo, 1, 10000);
@@ -60,25 +56,38 @@ public class WxAppVisitSchedule {
if(StringUtils.isBlank(w.getAppId())||StringUtils.isBlank(w.getSecret())) { if(StringUtils.isBlank(w.getAppId())||StringUtils.isBlank(w.getSecret())) {
continue; continue;
} }
getData(yesterday,w.getAppId(),w.getSecret(),w.getTenantId());
Calendar c = Calendar.getInstance();
String date;
for(int i = 0; i < 7; i++) { //查找最近7天有没有漏掉的数据
c.add(Calendar.DAY_OF_YEAR, -1);
date = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
if (!checkData(date ,w.getAppId(), w.getTenantId()))
getData(date,w.getAppId(),w.getSecret(),w.getTenantId());
}
} }
// TODO hardcode appId
// String appId = "wx8eb8275b78db4ede";
// String key ="76c43df01296998d8ce12383f213ac10";
// String talentId ="456";
// getData(yesterday,appId,key,talentId);
}catch(Exception e) { }catch(Exception e) {
logger.error("获取微信访问数据失败",e); logger.error("获取微信访问数据失败",e);
} }
} }

private boolean checkData(String date,String appId, String tenantId) {
WxUserVisit wxUserVisit = new WxUserVisit();
wxUserVisit.setAppId(appId);
wxUserVisit.setTenantId(tenantId);
wxUserVisit.setRefDate(date);
PageInfo<WxUserVisit> page = wxUserVisitService.listAsPage(wxUserVisit, 1, 10000);
if (page.getList().size() > 0)
return true;
return false;
}
private void getData(String yesterday,String appId,String key,String talentId) throws Exception {
private void getData(String date,String appId,String key,String talentId) throws Exception {
String accessToken = getAccessToken(appId, key); String accessToken = getAccessToken(appId, key);
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); headers.setContentType(MediaType.APPLICATION_JSON);
Map<String, String> map = new HashMap<String, String>(); Map<String, String> map = new HashMap<String, String>();
map.put("begin_date", yesterday);
map.put("end_date",yesterday);
map.put("begin_date", date);
map.put("end_date",date);
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
HttpEntity<Map<String,String>> entity = new HttpEntity<Map<String,String>>(map, headers); HttpEntity<Map<String,String>> entity = new HttpEntity<Map<String,String>>(map, headers);
String reqUrl =visit+accessToken; String reqUrl =visit+accessToken;
@@ -89,21 +98,18 @@ public class WxAppVisitSchedule {
Map<String,Object> maps = (Map<String,Object>)JSON.parse(body); Map<String,Object> maps = (Map<String,Object>)JSON.parse(body);
JSONArray jSONArray = (JSONArray)maps.get("list"); JSONArray jSONArray = (JSONArray)maps.get("list");
if(jSONArray==null || jSONArray.isEmpty()) { if(jSONArray==null || jSONArray.isEmpty()) {
logger.info("获取失败");
logger.error("获取数据失败:"+body);
return; return;
} }
JSONObject jsonObject = jSONArray.getJSONObject(0); JSONObject jsonObject = jSONArray.getJSONObject(0);
Map<String, Object> itemMap = JSONObject.toJavaObject(jsonObject, Map.class); Map<String, Object> itemMap = JSONObject.toJavaObject(jsonObject, Map.class);
//{"visit_uv":6,"stay_time_uv":1178.3333,"stay_time_session":115.9016,"ref_date":"20180828",
// "visit_depth":3.1311,"session_cnt":61,"visit_pv":645,"visit_uv_new":3}
logger.info(JSON.toJSONString(itemMap)); logger.info(JSON.toJSONString(itemMap));
WxUserVisit v = new WxUserVisit(); WxUserVisit v = new WxUserVisit();
// TODO hardcode appId // TODO hardcode appId
// v.setAppId("wx8eb8275b78db4ede");
v.setAppId(appId); v.setAppId(appId);
String time = itemMap.get("ref_date")+""; String time = itemMap.get("ref_date")+"";
Date date = new SimpleDateFormat("yyyyMMdd").parse(time);
v.setDayDate(date);
Date dayDate = new SimpleDateFormat("yyyyMMdd").parse(time);
v.setDayDate(dayDate);
v.setRefDate(time); v.setRefDate(time);
v.setSessionCnt(Integer.valueOf(itemMap.get("session_cnt")+"")); v.setSessionCnt(Integer.valueOf(itemMap.get("session_cnt")+""));
v.setVisitPv(Integer.valueOf(itemMap.get("visit_pv")+"")); v.setVisitPv(Integer.valueOf(itemMap.get("visit_pv")+""));
@@ -119,7 +125,6 @@ public class WxAppVisitSchedule {
} }
private String getAccessToken(String appId,String appSecret) { private String getAccessToken(String appId,String appSecret) {
// return "13_rBo3ajS3jjd8OXZ2MLd4HfLrmt78gvaCeRtu-Xme0iC0fhs_lNS47aLPEwI8kfZQIMKnWYshY5wpaf2IoSI7tgVBm7WwVrm_Bg96J31VPKi8pEp8yB6JiTpDcWkpwv5GngiH2vDkwz7VHOsPLBYcAGAZPM";
String token="https://api.weixin.qq.com/cgi-bin/token?"+ String token="https://api.weixin.qq.com/cgi-bin/token?"+
"grant_type=client_credential&appid=APPID&secret=APPSECRET"; "grant_type=client_credential&appid=APPID&secret=APPSECRET";
String url = token.replace("APPID", appId). String url = token.replace("APPID", appId).


Загрузка…
Отмена
Сохранить