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 403404d..c8d4a16 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 @@ -1,6 +1,7 @@ package com.fanxb.bookmark.business.user.dao; import com.fanxb.bookmark.common.entity.User; +import com.fanxb.bookmark.common.entity.redis.UserBookmarkUpdate; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; import org.springframework.stereotype.Component; @@ -100,7 +101,8 @@ public interface UserDao { /** * 更新用户新邮箱 - * @param userId userId + * + * @param userId userId * @param newPassword userId */ @Update("update user set newEmail=#{newPassword} where userId= #{userId}") @@ -108,8 +110,19 @@ public interface UserDao { /** * 新邮箱校验成功,更新邮箱 + * * @param userId userId */ @Update("update user set email=newEmail,newEmail='' where userId=#{userId}") void updateEmailByUserId(int userId); + + /** + * 功能描述: 更新用户上次更新书签时间 + * + * @param item item + * @author fanxb + * @date 2020/1/26 下午3:47 + */ + @Update("update user set bookmarkChangeTime=#{updateTime} where userId=#{userId}") + void updateLastBookmarkUpdateTime(UserBookmarkUpdate item); } 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 new file mode 100644 index 0000000..873a8e3 --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/schedule/UserInfoUpdate.java @@ -0,0 +1,35 @@ +package com.fanxb.bookmark.business.user.schedule; + +import com.alibaba.fastjson.JSON; +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; + + @Scheduled(fixedDelay = 5000) + 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); + + } + } +} 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 1d426e1..9f08a48 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 @@ -100,9 +100,4 @@ public class BaseInfoService { } userDao.updateEmailByUserId(userId); } - - @PostConstruct - public void updateBookmarkUpdateTime(){ - - } } diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/configuration/ScheduleConfig.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/configuration/ScheduleConfig.java new file mode 100644 index 0000000..6c63eb0 --- /dev/null +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/configuration/ScheduleConfig.java @@ -0,0 +1,25 @@ +package com.fanxb.bookmark.common.configuration; + +import com.fanxb.bookmark.common.factory.CustomThreadFactory; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; + +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledThreadPoolExecutor; + +/** + * Created with IntelliJ IDEA + * + * @author fanxb + * @date 2020/1/26 + */ +public class ScheduleConfig implements SchedulingConfigurer { + + @Override + public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { + + ScheduledExecutorService service = new ScheduledThreadPoolExecutor(5, new CustomThreadFactory("schedule")); + scheduledTaskRegistrar.setScheduler(service); + } + +} diff --git a/bookMarkService/web/src/main/java/com/fanxb/bookmark/web/Application.java b/bookMarkService/web/src/main/java/com/fanxb/bookmark/web/Application.java index f90094c..7f413c3 100644 --- a/bookMarkService/web/src/main/java/com/fanxb/bookmark/web/Application.java +++ b/bookMarkService/web/src/main/java/com/fanxb/bookmark/web/Application.java @@ -4,6 +4,7 @@ package com.fanxb.bookmark.web; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; /** @@ -16,6 +17,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication(scanBasePackages = {"com.fanxb.bookmark"}) @MapperScan(basePackages = "com.fanxb.bookmark.**.dao") @EnableTransactionManagement +@EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); diff --git a/bookMarkService/web/src/main/resources/application.yml b/bookMarkService/web/src/main/resources/application.yml index 6dadcf7..7a72f28 100644 --- a/bookMarkService/web/src/main/resources/application.yml +++ b/bookMarkService/web/src/main/resources/application.yml @@ -25,7 +25,7 @@ spring: database: 0 host: localhost password: - timeout: 500ms + timeout: 20000ms lettuce: pool: max-active: 20 diff --git a/bookMarkService/web/src/main/resources/db/migration/V6__用户表记录上次修改书签时间.sql b/bookMarkService/web/src/main/resources/db/migration/V6__用户表记录上次修改书签时间.sql index b239b86..a9afab1 100644 --- a/bookMarkService/web/src/main/resources/db/migration/V6__用户表记录上次修改书签时间.sql +++ b/bookMarkService/web/src/main/resources/db/migration/V6__用户表记录上次修改书签时间.sql @@ -1,2 +1,2 @@ -ALTER TABLE `psn`.`user` +ALTER TABLE `user` ADD COLUMN `bookmarkChangeTime` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0 AFTER `lastLoginTime`;