Files
wvp-GB28181-pro/src/main/java/com/genersoft/iot/vmp/conf/StatisticsInfoTask.java
2025-04-28 13:07:04 +08:00

99 lines
3.6 KiB
Java

package com.genersoft.iot.vmp.conf;
import com.alibaba.fastjson2.JSON;
import com.genersoft.iot.vmp.common.StatisticsInfo;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.utils.GitUtil;
import com.genersoft.iot.vmp.utils.SystemInfoUtils;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.io.File;
import java.sql.DatabaseMetaData;
import java.util.Objects;
@Component
@Order(value=100)
@Slf4j
public class StatisticsInfoTask implements CommandLineRunner {
@Autowired
private GitUtil gitUtil;
@Autowired
private RedisTemplate<Object, Object> redisTemplate;
@Autowired
private DataSource dataSource;
@Override
public void run(String... args) throws Exception {
try {
StatisticsInfo statisticsInfo = new StatisticsInfo();
statisticsInfo.setDeviceId(SystemInfoUtils.getHardwareId());
statisticsInfo.setBranch(gitUtil.getBranch());
statisticsInfo.setGitCommitId(gitUtil.getGitCommitId());
statisticsInfo.setGitUrl(gitUtil.getGitUrl());
statisticsInfo.setVersion(gitUtil.getBuildVersion());
statisticsInfo.setOsName(System.getProperty("os.name"));
statisticsInfo.setArch(System.getProperty("os.arch"));
statisticsInfo.setJdkVersion(System.getProperty("java.version"));
statisticsInfo.setDocker(new File("/.dockerenv").exists());
try {
statisticsInfo.setRedisVersion(getRedisVersion());
}catch (Exception ignored) {}
try {
DatabaseMetaData metaData = dataSource.getConnection().getMetaData();
statisticsInfo.setSqlVersion(metaData.getDatabaseProductVersion());
statisticsInfo.setSqlType(metaData.getDriverName());
}catch (Exception ignored) {}
statisticsInfo.setTime(DateUtil.getNow());
sendPost(statisticsInfo);
}catch (Exception e) {
log.error("[获取信息失败] ", e);
}
}
public String getRedisVersion() {
if (redisTemplate.getConnectionFactory() == null) {
return null;
}
RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
if (connection.info() == null) {
return null;
}
return connection.info().getProperty("redis_version");
}
public void sendPost(StatisticsInfo statisticsInfo) {
OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
OkHttpClient client = httpClientBuilder.build();
RequestBody requestBodyJson = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), JSON.toJSONString(statisticsInfo));
Request request = new Request.Builder()
.post(requestBodyJson)
.url("http://api.wvp-pro.cn:136/api/statistics/ping")
// .url("http://127.0.0.1:11236/api/statistics/ping")
.addHeader("Content-Type", "application/json")
.build();
try {
Response response = client.newCall(request).execute();
response.close();
Objects.requireNonNull(response.body()).close();
}catch (Exception ignored){}
}
}