diff --git a/stwzhj-auth/src/main/resources/logback-plus.xml b/stwzhj-auth/src/main/resources/logback-plus.xml index a2e187f8..a38b0c4b 100644 --- a/stwzhj-auth/src/main/resources/logback-plus.xml +++ b/stwzhj-auth/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - + + + + - - - - + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + + diff --git a/stwzhj-common/stwzhj-common-core/src/main/java/org/dromara/common/core/utils/RedisConstants.java b/stwzhj-common/stwzhj-common-core/src/main/java/org/dromara/common/core/utils/RedisConstants.java index 828ca4c5..fc752ede 100644 --- a/stwzhj-common/stwzhj-common-core/src/main/java/org/dromara/common/core/utils/RedisConstants.java +++ b/stwzhj-common/stwzhj-common-core/src/main/java/org/dromara/common/core/utils/RedisConstants.java @@ -17,11 +17,14 @@ public class RedisConstants { public static final String ONLINE_USERS_GEO = "geo_hash"; - public static final long REDIS_ONLINE_USER_EXPIRE_TIME = 60 * 60 * 24; + public static final long REDIS_NEVER_EXPIRE = 0L; + + public static final long FIVE_MINUTES_REDIS_ONLINE_USER_EXPIRE_TIME = 60 * 5; + + public static final String ONLINE_USERS_TEN = "ten:online_users:"; public static final long REDIS_ONLINE_USER_NEVER_EXPIRE = -1; - public static final long FIVE_MINUTES_REDIS_ONLINE_USER_EXPIRE_TIME = 60 * 5; public static String getUserTokenKey(String token) { diff --git a/stwzhj-gateway/src/main/resources/logback-plus.xml b/stwzhj-gateway/src/main/resources/logback-plus.xml index 4d66014c..2625e84c 100644 --- a/stwzhj-gateway/src/main/resources/logback-plus.xml +++ b/stwzhj-gateway/src/main/resources/logback-plus.xml @@ -1,114 +1,49 @@ - + + + + - - - - - + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - ${log.path}/console.log - - - ${log.path}/console.%d{yyyy-MM-dd}.log - - 1 - - - ${log.pattern} - utf-8 - + + + ${log.path}/error.${log.file}.log - - INFO - - - - - - ${log.path}/info.log - - - - ${log.path}/info.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - - INFO - - ACCEPT - - DENY - - - - - ${log.path}/error.log - - - - ${log.path}/error.%d{yyyy-MM-dd}.log - - 60 - - - ${log.pattern} - - - ERROR - - ACCEPT - - DENY + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + - - - - 0 - - 512 - - - - - - - - 0 - - 512 - - - - - - - - - - - - - - - + + + + + diff --git a/stwzhj-modules/stwzhj-baseToSt/src/main/resources/logback-plus.xml b/stwzhj-modules/stwzhj-baseToSt/src/main/resources/logback-plus.xml index caaa3455..6e30f455 100644 --- a/stwzhj-modules/stwzhj-baseToSt/src/main/resources/logback-plus.xml +++ b/stwzhj-modules/stwzhj-baseToSt/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - - - - - - + + + + + + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + + diff --git a/stwzhj-modules/stwzhj-consumer/src/main/resources/logback-plus.xml b/stwzhj-modules/stwzhj-consumer/src/main/resources/logback-plus.xml index caaa3455..c2ec3dad 100644 --- a/stwzhj-modules/stwzhj-consumer/src/main/resources/logback-plus.xml +++ b/stwzhj-modules/stwzhj-consumer/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - - - - - - + + + + + + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + + diff --git a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/handler/RedisExpireListener.java b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/handler/RedisExpireListener.java index ea228278..4430f4ff 100644 --- a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/handler/RedisExpireListener.java +++ b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/handler/RedisExpireListener.java @@ -2,11 +2,14 @@ package org.dromara.data2es.handler; import cn.hutool.core.bean.BeanUtil; import cn.hutool.json.JSONObject; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.dromara.common.core.utils.RedisConstants; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.data2es.controller.DataToEsController; import org.dromara.data2es.domain.EsGpsInfoVO2; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -19,6 +22,7 @@ import org.springframework.stereotype.Component; import java.util.Date; import java.util.Objects; +import java.util.concurrent.TimeUnit; /** *

description:

@@ -27,6 +31,7 @@ import java.util.Objects; * @date 2021-11-08 16:40 */ @Component +@Slf4j public class RedisExpireListener extends KeyExpirationEventMessageListener { @Autowired @@ -48,23 +53,37 @@ public class RedisExpireListener extends KeyExpirationEventMessageListener { public void onMessage(Message message, byte[] pattern) { String expireKey = message.toString(); if(StringUtils.isNotEmpty(expireKey) && - expireKey.startsWith(RedisConstants.ORG_CODE_PRE)){ - String[] split = expireKey.split(":"); - EsGpsInfoVO2 esGpsInfoVO2 = new EsGpsInfoVO2(); - esGpsInfoVO2.setDeviceType(split[2]); - esGpsInfoVO2.setDeviceCode(split[3]); - String zzjgdm = split[1]; - String deviceType = split[2]; - String deviceCode = split[3]; - if(StringUtils.isNotEmpty(zzjgdm)) { - JSONObject object = RedisUtils.getBucket(RedisConstants.ONLINE_USERS + zzjgdm + ":" - + deviceType+":"+deviceCode); + expireKey.startsWith(RedisConstants.ORG_CODE_PRE)){ + handleExpiredEvent(expireKey); + } + } + + private void handleExpiredEvent(String expiredKey) { + RedissonClient redisson = RedisUtils.getClient(); + RLock lock = redisson.getLock("LOCK:" + expiredKey); + try { + if (lock.tryLock(0, 30, TimeUnit.SECONDS)) { + // 实际业务逻辑 + String[] split = expiredKey.split(":"); + String zzjgdm = split[1]; + String deviceType = split[2]; + String deviceCode = split[3]; + log.error("redis key expired:key={}",expiredKey); + JSONObject object = RedisUtils.getBucket(RedisConstants.ONLINE_USERS+ zzjgdm +":" + deviceType+":"+deviceCode); + if (Objects.isNull(object)) { + log.info("redis key={},Object=null,deviceType={},deviceCode={}", expiredKey,deviceType,deviceCode); + return; + } EsGpsInfoVO2 gpsInfo = BeanUtil.toBean(object, EsGpsInfoVO2.class); - gpsInfo.setGpsTime(new Date()); gpsInfo.setOnline(0); dataToEsController.saveGpsInfo(gpsInfo); + log.info("redis key expired:key={}", expiredKey); } + } catch (InterruptedException e) { + e.printStackTrace(); + } finally { + lock.unlock(); } - logger.info("redis key expired:key={}", expireKey); } + } diff --git a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/service/impl/GpsServiceImpl.java b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/service/impl/GpsServiceImpl.java index 9def2bf2..d2860b42 100644 --- a/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/service/impl/GpsServiceImpl.java +++ b/stwzhj-modules/stwzhj-data2es/src/main/java/org/dromara/data2es/service/impl/GpsServiceImpl.java @@ -4,12 +4,14 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import lombok.RequiredArgsConstructor; import org.apache.commons.lang.StringUtils; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.domain.R; import org.dromara.common.core.utils.RedisConstants; +import org.dromara.common.redis.utils.RedisUtils; import org.dromara.data2es.domain.EsGpsInfo; import org.dromara.data2es.domain.EsGpsInfoVO2; import org.dromara.data2es.domain.entity.GpsInfoEntity; @@ -139,7 +141,9 @@ public class GpsServiceImpl implements IGpsService { EsGpsInfoVO2 esGpsInfoVO2 = new EsGpsInfoVO2(); BeanUtil.copyProperties(esGpsInfo,esGpsInfoVO2); if(null == esGpsInfoVO2.getZzjgdm() || "".equals(esGpsInfoVO2.getZzjgdm())){ - RemoteDeviceVo vo = deviceService.getDeviceInfo(esGpsInfoVO2.getDeviceCode(),esGpsInfoVO2.getDeviceType()); + //查询Redis的设备信息 + JSONObject obj = RedisUtils.getBucket("deviceInfo:"+esGpsInfo.getInfoSource()+":"+esGpsInfo.getDeviceCode()); + RemoteDeviceVo vo = BeanUtil.toBean(obj,RemoteDeviceVo.class); if (null != vo){ esGpsInfoVO2.setZzjgdm(vo.getZzjgdm()); esGpsInfoVO2.setZzjgmc(vo.getZzjgmc()); diff --git a/stwzhj-modules/stwzhj-data2es/src/main/resources/logback-plus.xml b/stwzhj-modules/stwzhj-data2es/src/main/resources/logback-plus.xml index caaa3455..ee82394e 100644 --- a/stwzhj-modules/stwzhj-data2es/src/main/resources/logback-plus.xml +++ b/stwzhj-modules/stwzhj-data2es/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - - - - - - + + + + + + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + + diff --git a/stwzhj-modules/stwzhj-dataToGas/src/main/resources/logback-plus.xml b/stwzhj-modules/stwzhj-dataToGas/src/main/resources/logback-plus.xml index caaa3455..98fd0b04 100644 --- a/stwzhj-modules/stwzhj-dataToGas/src/main/resources/logback-plus.xml +++ b/stwzhj-modules/stwzhj-dataToGas/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - - - - - - + + + + + + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + + diff --git a/stwzhj-modules/stwzhj-location/src/main/resources/logback-plus.xml b/stwzhj-modules/stwzhj-location/src/main/resources/logback-plus.xml index caaa3455..7cccf666 100644 --- a/stwzhj-modules/stwzhj-location/src/main/resources/logback-plus.xml +++ b/stwzhj-modules/stwzhj-location/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - - - - - - + + + + + + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + + diff --git a/stwzhj-modules/stwzhj-resource/src/main/resources/logback-plus.xml b/stwzhj-modules/stwzhj-resource/src/main/resources/logback-plus.xml index a2e187f8..2ca3b6da 100644 --- a/stwzhj-modules/stwzhj-resource/src/main/resources/logback-plus.xml +++ b/stwzhj-modules/stwzhj-resource/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - + + + + - - - - + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + + diff --git a/stwzhj-modules/stwzhj-system/src/main/java/org/dromara/system/schedule/DeviceRedisSchedule.java b/stwzhj-modules/stwzhj-system/src/main/java/org/dromara/system/schedule/DeviceRedisSchedule.java index 07f90884..222f08aa 100644 --- a/stwzhj-modules/stwzhj-system/src/main/java/org/dromara/system/schedule/DeviceRedisSchedule.java +++ b/stwzhj-modules/stwzhj-system/src/main/java/org/dromara/system/schedule/DeviceRedisSchedule.java @@ -1,29 +1,72 @@ package org.dromara.system.schedule; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.utils.RedisConstants; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.system.domain.DeviceRedis; +import org.dromara.system.domain.bo.TDeviceBo; +import org.dromara.system.domain.vo.TDeviceVo; import org.dromara.system.service.IDeviceRedisService; +import org.dromara.system.service.ITDeviceService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Scheduled; +import javax.annotation.PostConstruct; +import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Configuration +@Slf4j public class DeviceRedisSchedule { @Autowired IDeviceRedisService redisService; + @Autowired + ITDeviceService deviceService; + + @Value("${deviceInfo.lastUpdateTime}") + private String lastUpdateTime; + /* - * 把Redis中 online_user数据存入t_device_redis表中 - * */ - @Scheduled(cron = "0/30 * * * * ?") + * 把Redis中 online_user数据存入t_device_redis表中 + * */ +// @Scheduled(cron = "0/30 * * * * ?") public void handleDeviceRedis(){ List jlist = RedisUtils.searchAndGetKeysValues("online_users:*"); redisService.insertBatch(BeanUtil.copyToList(jlist, DeviceRedis.class)); } + @PostConstruct + @Scheduled(cron = "0 0 0/2 * * ?") + public void handleDeviceInfoToRedis(){ + if (null == lastUpdateTime || "".equals(lastUpdateTime)){ + log.error("lastUpdateTime=null"); + } + TDeviceBo bo = new TDeviceBo(); + bo.setBeginTime(lastUpdateTime); + bo.setEndTime(DateUtil.formatDateTime(new Date())); + List list = deviceService.queryList(bo); + if (list.size() >0){ + lastUpdateTime = list.get(0).getUpdateTime(); + } + Map deviceInfoDataMap = new HashMap<>(); + for (TDeviceVo vo : list) { + String jsonValue = JSONUtil.toJsonStr(vo); + + String infoKey = "deviceInfo:"+vo.getInfoSource()+":"+vo.getDeviceCode(); + deviceInfoDataMap.put(infoKey, jsonValue); + + } + RedisUtils.batchInsert(deviceInfoDataMap,-1); + } + } diff --git a/stwzhj-modules/stwzhj-system/src/main/resources/logback-plus.xml b/stwzhj-modules/stwzhj-system/src/main/resources/logback-plus.xml index caaa3455..3e2996c5 100644 --- a/stwzhj-modules/stwzhj-system/src/main/resources/logback-plus.xml +++ b/stwzhj-modules/stwzhj-system/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - - - - - - + + + + + + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + + diff --git a/stwzhj-visual/stwzhj-monitor/src/main/resources/logback-plus.xml b/stwzhj-visual/stwzhj-monitor/src/main/resources/logback-plus.xml index caaa3455..1272aa5b 100644 --- a/stwzhj-visual/stwzhj-monitor/src/main/resources/logback-plus.xml +++ b/stwzhj-visual/stwzhj-monitor/src/main/resources/logback-plus.xml @@ -1,28 +1,49 @@ - - - - - - + + + + + + + + ${log.path}/info.${log.file}.log + + INFO + ACCEPT + DENY + + + ${log.path}/info/info.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + - ${console.log.pattern} - utf-8 + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - + + + ${log.path}/error.${log.file}.log + + ERROR + + + ${log.path}/error/error.${log.file}.%d{yyyy-MM-dd}.%i.log.gz + ${MAX_FILE_SIZE} + ${MAX_HISTORY} + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + - - - - - - - - + + + + +