diff --git a/src/main/java/com/subsidy/jobs/Scheduler.java b/src/main/java/com/subsidy/jobs/Scheduler.java
index 856370a..80f78f0 100644
--- a/src/main/java/com/subsidy/jobs/Scheduler.java
+++ b/src/main/java/com/subsidy/jobs/Scheduler.java
@@ -1,15 +1,25 @@
package com.subsidy.jobs;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.subsidy.common.RedisPrefixConstant;
import com.subsidy.mapper.OprAdmDictMapper;
import com.subsidy.mapper.OprMemDictMapper;
+import com.subsidy.mapper.SignInRecordMapper;
import com.subsidy.mapper.VodPlayHistoryMapper;
import com.subsidy.model.OprAdmDictDO;
+import com.subsidy.model.SignInRecordDO;
+import com.subsidy.util.DateFormatUtil;
import com.subsidy.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
+import java.util.Set;
/**
*
@@ -33,6 +43,9 @@ public class Scheduler {
private VodPlayHistoryMapper vodPlayHistoryMapper;
@Autowired
+ private SignInRecordMapper signInRecordMapper;
+
+ @Autowired
private RedisUtil redisUtil;
@Autowired
@@ -103,4 +116,35 @@ public class Scheduler {
// }
// }
+ /**
+ * 定时同步Redis签到数据
+ * 1天前的
+ * 增量版
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void synchronizeSignInRecord() {
+ List list = signInRecordMapper.getSignInRecord();
+ if(list != null && list.size() > 0) {
+ for (SignInRecordDO signInRecordDO : list) {
+ redisUtil.set(RedisPrefixConstant.SUBSIDY_SIGN_INFO_PREFIX + signInRecordDO.getMemberId() + ":classId:" + signInRecordDO.getClassId() + ":" + DateFormatUtil.format(signInRecordDO.getSignInDate(), "yyyy-MM-dd") + ":" + DateFormatUtil.LocalDateTimeToSecond(signInRecordDO.getSignInDate()), null);
+ }
+ }
+ }
+
+ /**
+ * 全部同步Redis签到数据
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void synchronizeSignInRecordAll() {
+ Set set = redisUtil.scan(RedisPrefixConstant.SUBSIDY_SIGN_INFO_PREFIX+"*");
+ if(set != null && set.size() > 0) {
+ redisUtil.del(set);
+ }
+
+ List list = signInRecordMapper.selectList(new QueryWrapper<>());
+ for (SignInRecordDO signInRecordDO : list) {
+ redisUtil.set(RedisPrefixConstant.SUBSIDY_SIGN_INFO_PREFIX + signInRecordDO.getMemberId() + ":classId:" + signInRecordDO.getClassId() + ":" + DateFormatUtil.format(signInRecordDO.getSignInDate(), "yyyy-MM-dd") + ":" + DateFormatUtil.LocalDateTimeToSecond(signInRecordDO.getSignInDate()), null);
+ }
+
+ }
}
diff --git a/src/main/java/com/subsidy/mapper/SignInRecordMapper.java b/src/main/java/com/subsidy/mapper/SignInRecordMapper.java
index 11b1261..76960b1 100644
--- a/src/main/java/com/subsidy/mapper/SignInRecordMapper.java
+++ b/src/main/java/com/subsidy/mapper/SignInRecordMapper.java
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.subsidy.vo.sign.ClassSignInfoVO;
import org.springframework.stereotype.Repository;
+import java.util.List;
+
@Repository
public interface SignInRecordMapper extends BaseMapper {
@@ -16,4 +18,5 @@ public interface SignInRecordMapper extends BaseMapper {
IPage classSignInfo(IPage iPage, String className, String courseName, Integer id);
+ List getSignInRecord();
}
diff --git a/src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java b/src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java
index 8026b68..141e014 100644
--- a/src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java
+++ b/src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java
@@ -85,6 +85,21 @@ public class SignInRecordServiceImpl extends ServiceImpl()
+ .lambda()
+ .eq(SignInRecordDO::getMemberId, signInRecordDO.getMemberId())
+ .eq(SignInRecordDO::getClassId, classDictDO.getId())
+ .like(SignInRecordDO::getSignInDate, DateFormatUtil.format(new Date(), "yyyy-MM-dd")));
+ if(sign != null) {
+ this.baseMapper.deleteById(sign.getId());
+ }
+
+ signInRecordDO.setClassId(classDictDO.getId());
+ signInRecordDO.setSignInDate(LocalDateTime.now());
+ signInRecordDO.setCreateDate(LocalDateTime.now());
+ this.baseMapper.insert(signInRecordDO);
}
return ConstantUtils.ADD_SUCCESS;
diff --git a/src/main/java/com/subsidy/util/DateFormatUtil.java b/src/main/java/com/subsidy/util/DateFormatUtil.java
index 65b9687..f39120e 100644
--- a/src/main/java/com/subsidy/util/DateFormatUtil.java
+++ b/src/main/java/com/subsidy/util/DateFormatUtil.java
@@ -1,5 +1,6 @@
package com.subsidy.util;
+import java.awt.SystemTray;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -41,6 +42,22 @@ public class DateFormatUtil {
}
/**
+ * LocalDateTime转String,自定义格式
+ * @param localDateTime
+ * @param pattern
+ * @return
+ */
+ public static String format(LocalDateTime localDateTime, String pattern) {
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat(pattern);
+ return sdf.format(localDateTime);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
* String转Date,自定义格式
* @param date
* @param pattern
@@ -93,4 +110,11 @@ public class DateFormatUtil {
}
return LocalDateTime.now();
}
+
+ public static Long LocalDateTimeToSecond(LocalDateTime localDateTime) {
+ if(localDateTime != null) {
+ return localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant().toEpochMilli();
+ }
+ return System.currentTimeMillis();
+ }
}
diff --git a/src/main/resources/mapper/SignInRecordMapper.xml b/src/main/resources/mapper/SignInRecordMapper.xml
index 2dc5322..17f66be 100644
--- a/src/main/resources/mapper/SignInRecordMapper.xml
+++ b/src/main/resources/mapper/SignInRecordMapper.xml
@@ -47,4 +47,16 @@
+
+