Commit db6f3b81 by 吴博

bug [none] fix100273

parent 28f4e672
......@@ -20,6 +20,7 @@ import com.pcloud.common.utils.NumberUtil;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.json.JSONUtils;
import com.pcloud.readercenter.common.enums.YesOrNoNumEnum;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.collections4.SetUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -29,8 +30,10 @@ import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
......@@ -128,7 +131,7 @@ public class ReadBookRecordBizImpl implements ReadBookRecordBiz {
readBookRecord.setLeaveType(YesOrNoNumEnum.NO.getValue());
readBookRecordDao.insert(readBookRecord);
id = readBookRecord.getId();
JedisClusterUtils.sadd(redisKey4Reader, JSONUtils.toJsonString(readBookRecord));
JedisClusterUtils.hset(redisKey4Reader, id.toString(), JSONUtils.toJsonString(readBookRecord));
JedisClusterUtils.expire(redisKey4Reader, BookConstant.BOOK_CACHE_SECOUND);
} else if (Objects.equals(YesOrNoNumEnum.NO.getValue(), readBookRecordDTO.getRecordType())) {
ReadBookRecord readBookRecord = readBookRecordDao.getById(id);
......@@ -137,8 +140,7 @@ public class ReadBookRecordBizImpl implements ReadBookRecordBiz {
readBookRecord.setUpdateTime(null);
JedisClusterUtils.srem(redisKey4Set, readBookRecordDTO.getWechatUserId().toString());
JedisClusterUtils.expire(redisKey4Set, BookConstant.BOOK_CACHE_SECOUND);
String s = JSONUtils.toJsonString(readBookRecord);
JedisClusterUtils.srem(redisKey4Reader, JSONUtils.toJsonString(readBookRecord));
JedisClusterUtils.hdel(redisKey4Reader, id.toString());
JedisClusterUtils.expire(redisKey4Reader, BookConstant.BOOK_CACHE_SECOUND);
//id不为空 更新数据库时间 并从redis中删除
Date endTime = new Date();
......@@ -151,11 +153,12 @@ public class ReadBookRecordBizImpl implements ReadBookRecordBiz {
@Override
public void autoDeleteReadBook() {
Set<String> smembers = JedisClusterUtils.smembers(redisKey4Reader);
if (null == smembers || smembers.size() == 0) {
Map<String, String> userMap = JedisClusterUtils.hgetAll(redisKey4Reader);
if (MapUtils.isEmpty(userMap)) {
LOGGER.info("autoDeleteReadBook, 缓存为空,返回");
return;
}
Collection<String> smembers = userMap.values();
List<ReadBookRecord> readBookRecords = new ArrayList<>();
List<ReadBookRecord> readBookRecords4Expire = new ArrayList<>();
smembers.stream().forEach(e ->{
......@@ -169,8 +172,8 @@ public class ReadBookRecordBizImpl implements ReadBookRecordBiz {
Date startTime = e.getStartTime();
long between = DateUtil.between(startTime, new Date(), SECOND);
//查找开始时间与现在时间超过1分钟的数据
if (between > BOOK_CACHE_MINUTE) {
JedisClusterUtils.srem(redisKey4Reader, JSONUtils.toJsonString(e));
if (between > BOOK_CACHE_MINUTE && null != e.getId()) {
JedisClusterUtils.hdel(redisKey4Reader, e.getId().toString());
e.setEndTime(DateUtil.offsetMinute(e.getStartTime(), 1));
e.setRecordTime(Long.valueOf(BOOK_CACHE_MINUTE));
e.setLeaveType(YesOrNoNumEnum.YES.getValue());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment