diff --git a/base-system-common/src/main/java/com/health/system/common/domain/Sign.java b/base-system-common/src/main/java/com/health/system/common/domain/Sign.java index 76205f4..6e4eabb 100644 --- a/base-system-common/src/main/java/com/health/system/common/domain/Sign.java +++ b/base-system-common/src/main/java/com/health/system/common/domain/Sign.java @@ -32,4 +32,9 @@ public class Sign { 签到次数 */ private Integer signAmount; + + /* + 用户标识当前有无签到过 默认是0 + */ + private Integer status=0; } diff --git a/base-system-server/src/main/java/com/health/system/server/controller/SysSignController.java b/base-system-server/src/main/java/com/health/system/server/controller/SysSignController.java index c880006..085ae68 100644 --- a/base-system-server/src/main/java/com/health/system/server/controller/SysSignController.java +++ b/base-system-server/src/main/java/com/health/system/server/controller/SysSignController.java @@ -31,6 +31,8 @@ public class SysSignController { Long userId = SecurityUtils.getUserId(); System.out.println("当前登录人时"+userId); Sign sign= sysSignService.searchSignByUserId(userId); + //可以根据查询出来的signAmount来显示进度条 + //其次可以根据查询出来的最近一条签到的记录来查看自己当天有无签到,当天签到过签到按钮则变灰色禁用显示已完成 return Result.success(sign); } diff --git a/base-system-server/src/main/java/com/health/system/server/service/impl/SysSignServiceImpl.java b/base-system-server/src/main/java/com/health/system/server/service/impl/SysSignServiceImpl.java index c357418..8076663 100644 --- a/base-system-server/src/main/java/com/health/system/server/service/impl/SysSignServiceImpl.java +++ b/base-system-server/src/main/java/com/health/system/server/service/impl/SysSignServiceImpl.java @@ -29,50 +29,58 @@ public class SysSignServiceImpl implements SysSignService { @Override public Sign searchSignByUserId(Long userId) { + //获取当天的日期 是第几日 + int today = new Date().getDate(); + System.out.println("当天是:"+today); //先从redis中获取连续签到次数 if (redisService.hasKey("sign:"+userId)){ Sign redisSign = redisService.getCacheObject("sign:" + userId); + redisSign.setStatus(1); return redisSign; } //redis没有从数据库中获取 //查询出当前登录人的最近一条的签到记录 Sign sign = sysSignMapper.searchSignByUserId(userId); - //获取当天的日期 是第几日 - int today = new Date().getDate(); - System.out.println("当天是:"+today); + //获取最近一次签到的日期 是第几日 int recentDay = sign.getSignTime().getDate(); System.out.println("最近签到是"+recentDay); //判断是否已经断签了 - if (today-recentDay>1){ + if (today-recentDay!=1){ System.out.println("断签了!!!!"); sign.setSignAmount(0); //其次将签到次数signAmount改为0 sysSignMapper.updateSingAmountByUserId(sign); - redisService.deleteObject("sign:"+userId); - redisService.setCacheObject("sign:"+userId,sign); System.out.println(sign); return sign; } + Calendar calendar = Calendar.getInstance(); + // 将时间设置为第二天凌晨0点 + long expireTime = getExpireTime(calendar); + redisService.setCacheObject("sign:"+userId,sign,expireTime,TimeUnit.SECONDS); System.out.println("没有断签!!!"); System.out.println(sign); //没有断签 直接返回当前查询出来的签到记录 return sign; } + private long getExpireTime(Calendar calendar) { + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.add(Calendar.DAY_OF_MONTH, 1); + long expireTime = (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000; + return expireTime; + } + @Override public void signByUserId(Long userId) { Sign sign = this.searchSignByUserId(userId); sign.setSignAmount(sign.getSignAmount()+1); sysSignMapper.signByUserId(sign); Calendar calendar = Calendar.getInstance(); - -// 将时间设置为第二天凌晨0点 - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.add(Calendar.DAY_OF_MONTH, 1); - long expireTime = (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000; + // 将时间设置为第二天凌晨0点 + long expireTime = getExpireTime(calendar); redisService.setCacheObject("sign:"+userId,sign,expireTime, TimeUnit.SECONDS); } }