房间停留可获得礼物-简易跨天房间停留时间计算
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package com.accompany.scheduler.task;
|
||||
|
||||
import com.accompany.business.service.room.UserInOutRoomService;
|
||||
import com.accompany.common.redis.RedisKey;
|
||||
import com.accompany.common.utils.DateTimeUtil;
|
||||
import com.accompany.common.utils.StringUtils;
|
||||
import com.accompany.core.service.common.JedisService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class UserInOutRoomTask {
|
||||
|
||||
@Autowired
|
||||
private JedisService jedisService;
|
||||
|
||||
@Autowired
|
||||
private UserInOutRoomService userInOutRoomService;
|
||||
|
||||
@Scheduled(cron = "0 0 0 * * ?")
|
||||
public void calculate(){
|
||||
log.info("zero userInOutRoom begin");
|
||||
Date zeroTime = DateTimeUtil.getZeroTimeByDate(new Date());
|
||||
long zeroTimestamp = zeroTime.getTime();
|
||||
userInOutRoomService.zero(zeroTime);
|
||||
Map<String, String> map = jedisService.hgetAll(RedisKey.user_in_room_current.getKey());
|
||||
for (Map.Entry<String, String> entry: map.entrySet()){
|
||||
String cacheKey = RedisKey.user_in_out_room.getKey(entry.getKey(), entry.getValue());
|
||||
String entreRoomTimestampStr = jedisService.lpop(cacheKey);
|
||||
if (StringUtils.isBlank(entreRoomTimestampStr)){
|
||||
continue;
|
||||
}
|
||||
jedisService.lpush(cacheKey, String.valueOf(zeroTime.getTime()));
|
||||
long entreRoomTimestamp = Long.parseLong(entreRoomTimestampStr);
|
||||
long remainTimestamp = zeroTimestamp - entreRoomTimestamp;
|
||||
//todo db
|
||||
log.info("[零点计算进房跨天时间] {} {} {} {} {}", entry.getKey(), entry.getValue(), entreRoomTimestamp, zeroTimestamp, remainTimestamp);
|
||||
}
|
||||
log.info("zero userInOutRoom end");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user