[bug]成工院虚仿平台对接的统计数据同步服务bug

This commit is contained in:
thesai 2024-05-11 09:09:33 +08:00
parent bef6dda6b2
commit 6187e6d667
1 changed files with 13 additions and 19 deletions

View File

@ -10,7 +10,6 @@ import club.joylink.rtss.services.user.UserSimulationRecordService;
import club.joylink.rtss.simulation.cbtc.SimulationService; import club.joylink.rtss.simulation.cbtc.SimulationService;
import club.joylink.rtss.simulation.vo.SimulationInfoVO; import club.joylink.rtss.simulation.vo.SimulationInfoVO;
import club.joylink.rtss.util.EncryptUtil; import club.joylink.rtss.util.EncryptUtil;
import club.joylink.rtss.util.JsonUtils;
import club.joylink.rtss.vo.client.simulationUsage.SimulationUsageRecordQueryVO; import club.joylink.rtss.vo.client.simulationUsage.SimulationUsageRecordQueryVO;
import club.joylink.rtss.vo.client.simulationv1.SimulationInfoQueryVO; import club.joylink.rtss.vo.client.simulationv1.SimulationInfoQueryVO;
import java.util.HashMap; import java.util.HashMap;
@ -18,6 +17,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -66,6 +66,7 @@ public class CgyStatsService {
cgyViews.forEach(cgyView -> { cgyViews.forEach(cgyView -> {
CgyStatsBO bo = new CgyStatsBO(cgyView.getAppId(), cgyView.getAppSecret(), CgyStatsBO bo = new CgyStatsBO(cgyView.getAppId(), cgyView.getAppSecret(),
cgyView.getFunctionId()); cgyView.getFunctionId());
bo.setChange(new AtomicBoolean(true));
bo.setView(new AtomicLong(cgyView.getViewCount())); bo.setView(new AtomicLong(cgyView.getViewCount()));
makeCache(bo); makeCache(bo);
appStatsMap.put(cgyView.getAppId(), bo); appStatsMap.put(cgyView.getAppId(), bo);
@ -84,11 +85,18 @@ public class CgyStatsService {
} }
//同步汇总数据 //同步汇总数据
Map<String, Object> body = new HashMap<>(); Map<String, Object> body = new HashMap<>();
body.put("appId", appId); body.put("app_id", appId);
body.put("timestamp", System.currentTimeMillis()); body.put("timestamp", System.currentTimeMillis());
body.put("view", statsBO.getView().get()); body.put("view", statsBO.getView().get());
body.put("visitor", statsBO.getVisitor().get()); body.put("visitor", statsBO.getVisitor().get());
body.put("user", statsBO.getUserSet().size()); body.put("user", statsBO.getUserSet().size());
String sb = "app_id=" + body.get("app_id") + "&"
+ "timestamp=" + body.get("timestamp") + "&"
+ "user=" + body.get("user") + "&"
+ "view=" + body.get("view") + "&"
+ "visitor=" + body.get("visitor") + "&"
+ "app_secret=" + statsBO.getAppSecret();
body.put("sign", EncryptUtil.md5(sb).toLowerCase());
//扩展字段 //扩展字段
body.put("duration", statsBO.getDuration().get()); body.put("duration", statsBO.getDuration().get());
SimulationInfoQueryVO queryVO = new SimulationInfoQueryVO(); SimulationInfoQueryVO queryVO = new SimulationInfoQueryVO();
@ -96,26 +104,12 @@ public class CgyStatsService {
List<SimulationInfoVO> sims = simulationService.listAllSimulation(queryVO); List<SimulationInfoVO> sims = simulationService.listAllSimulation(queryVO);
body.put("onlineUser", sims.size()); body.put("onlineUser", sims.size());
String sb = "appId="
+ body.get("appId") + "&"
+ "timestamp="
+ body.get("timestamp") + "&"
+ "user="
+ body.get("user") + "&"
+ "view="
+ body.get("view") + "&"
+ "visitor="
+ body.get("visitor") + "&"
+ "app_secret="
+ statsBO.getAppSecret();
body.put("sign", EncryptUtil.md5(sb).toLowerCase());
HttpHeaders httpHeaders = new HttpHeaders(); HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON); httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> httpEntity = new HttpEntity<>(JsonUtils.writeValueAsString(body), HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(body, httpHeaders);
httpHeaders);
Map<String, String> resBody = restTemplate.postForObject( Map<String, String> resBody = restTemplate.postForObject(
"/api/applicationCenter/openapi/summary", httpEntity, Map.class); "https://common-dev.educloudxr.com/api/applicationCenter/openapi/summary", httpEntity,
Map.class);
if (resBody != null && Objects.equals(resBody.get("code"), "100001")) { if (resBody != null && Objects.equals(resBody.get("code"), "100001")) {
log.error(String.format("成工院虚仿平台同步数据失败:[%s][%s]", resBody.get("msg"), log.error(String.format("成工院虚仿平台同步数据失败:[%s][%s]", resBody.get("msg"),
resBody.get("data"))); resBody.get("data")));