diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/consumer/UserInfoUpdateConsumer.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/consumer/UserInfoUpdateConsumer.java new file mode 100644 index 0000000..fff51c1 --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/consumer/UserInfoUpdateConsumer.java @@ -0,0 +1,30 @@ +package com.fanxb.bookmark.business.user.consumer; + +import com.alibaba.fastjson.JSON; +import com.fanxb.bookmark.business.user.dao.UserDao; +import com.fanxb.bookmark.common.annotation.MqConsumer; +import com.fanxb.bookmark.common.constant.RedisConstant; +import com.fanxb.bookmark.common.entity.redis.RedisConsumer; +import com.fanxb.bookmark.common.entity.redis.UserBookmarkUpdate; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @author fanxb + * @date 2020/1/26 上午11:54 + */ +@MqConsumer(RedisConstant.BOOKMARK_UPDATE_TIME) +public class UserInfoUpdateConsumer implements RedisConsumer { + + @Autowired + private UserDao userDao; + + @Override + public void deal(String message) { + UserBookmarkUpdate item = JSON.parseObject(message, UserBookmarkUpdate.class); + if (item.getUserId() == -1) { + userDao.updateAllBookmarkUpdateTime(item.getUpdateTime()); + } else { + userDao.updateLastBookmarkUpdateTime(item); + } + } +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java index c8d4a16..1ae4d16 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java @@ -125,4 +125,14 @@ public interface UserDao { */ @Update("update user set bookmarkChangeTime=#{updateTime} where userId=#{userId}") void updateLastBookmarkUpdateTime(UserBookmarkUpdate item); + + /** + * 功能描述: 更新所有用户的更新时间 + * + * @param time time + * @author 123 + * @date 2020/3/29 18:18 + */ + @Update("update user set bookmarkChangeTime=#{time}") + void updateAllBookmarkUpdateTime(long time); } diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/schedule/UserInfoUpdate.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/schedule/UserInfoUpdate.java deleted file mode 100644 index 54b13ae..0000000 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/schedule/UserInfoUpdate.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.fanxb.bookmark.business.user.schedule; - -import com.alibaba.fastjson.JSON; -import com.fanxb.bookmark.business.user.dao.UserDao; -import com.fanxb.bookmark.common.constant.RedisConstant; -import com.fanxb.bookmark.common.entity.redis.UserBookmarkUpdate; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.util.concurrent.TimeUnit; - -/** - * @author fanxb - * @date 2020/1/26 上午11:54 - */ -@Component -public class UserInfoUpdate { - /** - * 阻塞时间 - */ - private static final int BLOCK_TIME = 15; - - @Autowired - private StringRedisTemplate redisTemplate; - @Autowired - private UserDao userDao; - - @Scheduled(fixedDelay = 100000) - public void userBookmarkUpdateTime() { - String value; - while ((value = redisTemplate.opsForList().rightPop(RedisConstant.BOOKMARK_UPDATE_TIME, BLOCK_TIME, TimeUnit.SECONDS)) != null) { - UserBookmarkUpdate item = JSON.parseObject(value, UserBookmarkUpdate.class); - userDao.updateLastBookmarkUpdateTime(item); - } - } -}