From 4fd337a8357e855b70bd5591b216320445ab650b Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 10 七月 2024 11:13:39 +0800
Subject: [PATCH] 密码过期处理定时任务

---
 src/main/java/com/ycl/jxkg/mapper/UserMapper.java     |    9 ++++
 src/main/java/com/ycl/jxkg/job/PasswordExpireJob.java |   53 ++++++++++++++++++++++++++
 src/main/resources/mapper/UserMapper.xml              |   11 +++++
 3 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/job/PasswordExpireJob.java b/src/main/java/com/ycl/jxkg/job/PasswordExpireJob.java
new file mode 100644
index 0000000..ad36b55
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/job/PasswordExpireJob.java
@@ -0,0 +1,53 @@
+package com.ycl.jxkg.job;
+
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.ycl.jxkg.domain.entity.SysConfig;
+import com.ycl.jxkg.mapper.SysConfigMapper;
+import com.ycl.jxkg.mapper.UserMapper;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 瀵嗙爜杩囨湡澶勭悊
+ *
+ * @author锛歺p
+ * @date锛�2024/7/10 9:52
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class PasswordExpireJob {
+
+    private final UserMapper userMapper;
+    private final SysConfigMapper configMapper;
+
+    /**
+     * 姣忓ぉ鍑屾櫒鎵ц
+     *
+     */
+    @Scheduled(cron = "0 0 0 * * ?")
+    public void passwordExpire() {
+        List<SysConfig> list = new LambdaQueryChainWrapper<>(configMapper)
+                .list();
+        if (list.size() > 1) {
+            log.error("绯荤粺閰嶇疆澶т簬1鏉★紝鏃犳硶姝g‘鎵ц銆愬瘑鐮佽繃鏈熴�戜换鍔�");
+            return;
+        }
+        if (list.size() == 0) {
+            log.error("涓嶅瓨鍦ㄧ郴缁熼厤缃紝鏃犳硶姝g‘鎵ц銆愬瘑鐮佽繃鏈熴�戜换鍔�");
+            return;
+        }
+        SysConfig config = list.get(0);
+        if (Objects.isNull(config.getPasswordExpireTime())) {
+            // 濡傛灉鏈厤缃瘑鐮佽繃鏈熸椂闂达紝鍒欓粯璁�30澶╁瘑鐮佽繃鏈�
+            config.setPasswordExpireTime(30);
+        }
+        userMapper.updatePasswordExpire(config.getPasswordExpireTime(), new Date());
+    }
+}
diff --git a/src/main/java/com/ycl/jxkg/mapper/UserMapper.java b/src/main/java/com/ycl/jxkg/mapper/UserMapper.java
index 2b93691..114925c 100644
--- a/src/main/java/com/ycl/jxkg/mapper/UserMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/UserMapper.java
@@ -8,6 +8,7 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -138,4 +139,12 @@
      * @return
      */
     List<StudentVO> classesStudent(@Param("classesId") Integer classesId);
+
+    /**
+     * 淇敼鐢ㄦ埛瀵嗙爜杩囨湡
+     *
+     * @param passwordExpireDay 瀵嗙爜杩囨湡鏃堕棿(澶�)
+     * @param now 褰撳墠鏃堕棿
+     */
+    void updatePasswordExpire(@Param("expireDay") Integer passwordExpireDay, @Param("now") Date now);
 }
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index d3ee58e..aafbe1f 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -208,4 +208,15 @@
         ORDER BY tcu.create_time
     </select>
 
+    <update id="updatePasswordExpire">
+        UPDATE
+            t_user
+        SET
+            need_update_password = 1,last_update_password_time = #{now}
+        WHERE
+            last_update_password_time IS NOT NULL
+          AND
+            DATEDIFF(#{now}, last_update_password_time) > #{expireDay}
+    </update>
+
 </mapper>

--
Gitblit v1.8.0