From bab224f386f28fc05ea0ad22ef2f5b824ac49c1a Mon Sep 17 00:00:00 2001 From: fanxb Date: Sat, 25 Jan 2020 18:09:39 +0800 Subject: [PATCH] temp --- bookMarkDocker/docker-compose.yml | 2 +- .../bookmark/service/BookmarkService.java | 11 ++++++++ .../user/service/BaseInfoService.java | 7 +++++ .../common/constant/RedisConstant.java | 5 ++++ .../entity/redis/UserBookmarkUpdate.java | 27 +++++++++++++++++++ .../fanxb/bookmark/common/util/RedisUtil.java | 3 +-- .../V6__用户表记录上次修改书签时间.sql | 2 ++ 7 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/redis/UserBookmarkUpdate.java create mode 100644 bookMarkService/web/src/main/resources/db/migration/V6__用户表记录上次修改书签时间.sql diff --git a/bookMarkDocker/docker-compose.yml b/bookMarkDocker/docker-compose.yml index ef06272..99948a5 100644 --- a/bookMarkDocker/docker-compose.yml +++ b/bookMarkDocker/docker-compose.yml @@ -28,7 +28,7 @@ services: ports: - 6380:6379 bookmark-es: - image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0 + image: elasticsearch:7.2.0 container_name: bookmark-es volumes: - /etc/localtime:/etc/localtime diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkService.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkService.java index d6a9c22..5809608 100644 --- a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkService.java +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkService.java @@ -4,10 +4,13 @@ import com.fanxb.bookmark.business.bookmark.dao.BookmarkDao; import com.fanxb.bookmark.business.bookmark.entity.BookmarkEs; import com.fanxb.bookmark.business.bookmark.entity.MoveNodeBody; import com.fanxb.bookmark.common.constant.EsConstant; +import com.fanxb.bookmark.common.constant.RedisConstant; import com.fanxb.bookmark.common.entity.Bookmark; import com.fanxb.bookmark.common.entity.EsEntity; +import com.fanxb.bookmark.common.entity.redis.UserBookmarkUpdate; import com.fanxb.bookmark.common.exception.FormDataException; import com.fanxb.bookmark.common.util.EsUtil; +import com.fanxb.bookmark.common.util.RedisUtil; import com.fanxb.bookmark.common.util.UserContextHolder; import lombok.extern.slf4j.Slf4j; import org.elasticsearch.index.query.BoolQueryBuilder; @@ -20,6 +23,7 @@ import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DuplicateKeyException; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,6 +49,8 @@ public class BookmarkService { @Autowired private BookmarkDao bookmarkDao; + private StringRedisTemplate redisTemplate; + @Autowired private EsUtil esUtil; @@ -79,6 +85,7 @@ public class BookmarkService { dealBookmark(userId, elements.get(i), path, sortBase + count + i - 1, insertEsList); } } + redisTemplate.opsForList().leftPush(RedisConstant.BOOKMARK_UPDATE_TIME, new UserBookmarkUpdate(userId, System.currentTimeMillis()).toString()); esUtil.insertBatch(EsConstant.BOOKMARK_INDEX, insertEsList); } @@ -195,6 +202,7 @@ public class BookmarkService { bookmarkDao.deleteUserBookmark(userId, bookmarkIdList); } set.addAll(bookmarkIdList); + redisTemplate.opsForList().leftPush(RedisConstant.BOOKMARK_UPDATE_TIME, new UserBookmarkUpdate(userId, System.currentTimeMillis()).toString()); //es 中批量删除 esUtil.deleteBatch(EsConstant.BOOKMARK_INDEX, set); } @@ -225,6 +233,7 @@ public class BookmarkService { esUtil.insertOrUpdateOne(EsConstant.BOOKMARK_INDEX, new EsEntity<>(bookmark.getBookmarkId().toString(), new BookmarkEs(bookmark))); } + redisTemplate.opsForList().leftPush(RedisConstant.BOOKMARK_UPDATE_TIME, new UserBookmarkUpdate(userId, System.currentTimeMillis()).toString()); return bookmark; } @@ -244,6 +253,7 @@ public class BookmarkService { esUtil.insertOrUpdateOne(EsConstant.BOOKMARK_INDEX, new EsEntity<>(bookmark.getBookmarkId().toString(), new BookmarkEs(bookmark))); } + redisTemplate.opsForList().leftPush(RedisConstant.BOOKMARK_UPDATE_TIME, new UserBookmarkUpdate(userId, System.currentTimeMillis()).toString()); } @@ -263,6 +273,7 @@ public class BookmarkService { } //更新被移动节点的path和sort bookmarkDao.updatePathAndSort(userId, body.getBookmarkId(), body.getTargetPath(), body.getSort()); + redisTemplate.opsForList().leftPush(RedisConstant.BOOKMARK_UPDATE_TIME, new UserBookmarkUpdate(userId, System.currentTimeMillis()).toString()); log.info("{},从{}移动到{},sort:{}", userId, body.getSourcePath(), body.getTargetPath(), body.getSort()); } diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java index 00dbec6..1d426e1 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java @@ -11,9 +11,11 @@ import com.fanxb.bookmark.common.exception.FormDataException; import com.fanxb.bookmark.common.util.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.PostConstruct; import java.util.UUID; /** @@ -98,4 +100,9 @@ public class BaseInfoService { } userDao.updateEmailByUserId(userId); } + + @PostConstruct + public void updateBookmarkUpdateTime(){ + + } } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/RedisConstant.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/RedisConstant.java index 612fcc4..939f2c0 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/RedisConstant.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/RedisConstant.java @@ -10,4 +10,9 @@ public class RedisConstant { public static String getPasswordCheckKey(int userId, String actionId) { return "password_check_key_" + userId + "_" + actionId; } + + /** + * 某用户书签数据更新时间,该队列左进右出 + */ + public static final String BOOKMARK_UPDATE_TIME = "bookmark_update_time"; } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/redis/UserBookmarkUpdate.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/redis/UserBookmarkUpdate.java new file mode 100644 index 0000000..188f30f --- /dev/null +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/redis/UserBookmarkUpdate.java @@ -0,0 +1,27 @@ +package com.fanxb.bookmark.common.entity.redis; + +import com.alibaba.fastjson.JSON; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class UserBookmarkUpdate { + /** + * 用户id + */ + private int userId; + /** + * 更新时间 + */ + private long updateTime; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/RedisUtil.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/RedisUtil.java index 36ee7bd..e769c2d 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/RedisUtil.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/RedisUtil.java @@ -45,8 +45,7 @@ public class RedisUtil { * @param expireTime 过期时间,ms */ public static void set(String key, String value, long expireTime) { - redisTemplate.opsForValue().set(key, value); - redisTemplate.expire(key, expireTime, TimeUnit.MILLISECONDS); + redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.MILLISECONDS); } /** diff --git a/bookMarkService/web/src/main/resources/db/migration/V6__用户表记录上次修改书签时间.sql b/bookMarkService/web/src/main/resources/db/migration/V6__用户表记录上次修改书签时间.sql new file mode 100644 index 0000000..b239b86 --- /dev/null +++ b/bookMarkService/web/src/main/resources/db/migration/V6__用户表记录上次修改书签时间.sql @@ -0,0 +1,2 @@ +ALTER TABLE `psn`.`user` +ADD COLUMN `bookmarkChangeTime` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0 AFTER `lastLoginTime`;