Parcourir la source

自动解除误封客户

xw il y a 1 semaine
Parent
commit
aebb9fe933

+ 13 - 0
fs-admin/src/main/java/com/fs/qw/qwTask/qwTask.java

@@ -1,6 +1,7 @@
 package com.fs.qw.qwTask;
 
 import com.fs.course.service.IFsUserCourseService;
+import com.fs.his.service.IFsUserService;
 import com.fs.qw.domain.QwIpadServerLog;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.mapper.QwUserMapper;
@@ -72,6 +73,9 @@ public class qwTask {
     @Autowired
     private WxWorkService wxWorkService;
 
+    @Autowired
+    private IFsUserService fsUserService;
+
 
     //正在使用
     public void qwExternalContact()
@@ -286,4 +290,13 @@ public class qwTask {
         qwUserMapper.updateQwUser(u);
     }
 
+    /**
+     * 自动解除误封禁的用户
+     * 定时任务:将 fs_user 表中 status=0 且 remark 为 null 的用户
+     * 自动恢复为 status=1,并设置 remark="自动解除封禁"
+     */
+    public void autoUnbanMistakenlyDisabledUsers() {
+        fsUserService.autoUnbanMistakenlyDisabledUsers();
+    }
+
 }

+ 13 - 0
fs-service/src/main/java/com/fs/his/mapper/FsUserMapper.java

@@ -469,4 +469,17 @@ public interface FsUserMapper
     void updateUserOrderCountAndAmount(@Param("userId") Long userId, @Param("amount") BigDecimal amount);
 
     List<FsUser> selectFsUserListByPhone(String phone);
+
+    /**
+     * 查询被误封禁的用户(status=0且remark为null)
+     * @return 用户列表
+     */
+    List<FsUser> selectMistakenlyDisabledUsers();
+
+    /**
+     * 自动解除被误封禁的用户(status=0且remark为null)
+     * 将status改为1,remark设置为"自动解除封禁"
+     * @return 更新的记录数
+     */
+    int autoUnbanMistakenlyDisabledUsers();
 }

+ 6 - 0
fs-service/src/main/java/com/fs/his/service/IFsUserService.java

@@ -200,6 +200,12 @@ public interface IFsUserService
 
     List<FsUser> selectUserByIds(String userIds);
 
+    /**
+     * 自动解除被误封禁的用户(status=0且remark为null)
+     * @return 解除封禁的用户数量
+     */
+    int autoUnbanMistakenlyDisabledUsers();
+
 
     /**
      * 根据组合key(用户昵称+id)查询用户信息

+ 32 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsUserServiceImpl.java

@@ -1576,4 +1576,36 @@ public class FsUserServiceImpl implements IFsUserService {
         return fsUserMapper.selectFsUserListByPhone(phone);
     }
 
+    /**
+     * 自动解除被误封禁的用户(status=0且remark为null)
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int autoUnbanMistakenlyDisabledUsers() {
+        try {
+            // 查询所有status=0且remark为null的用户
+            List<FsUser> disabledUsers = fsUserMapper.selectMistakenlyDisabledUsers();
+            
+            if (disabledUsers == null || disabledUsers.isEmpty()) {
+                logger.info("自动解除封禁定时任务:未发现需要解除的用户");
+                return 0;
+            }
+
+            String[] userIds = disabledUsers.stream()
+                    .map(user -> String.valueOf(user.getUserId()))
+                    .toArray(String[]::new);
+            
+            // 批量更新:设置status=1,remark="自动解除封禁"
+            int count = fsUserMapper.autoUnbanMistakenlyDisabledUsers();
+            
+            logger.info("自动解除封禁定时任务:成功解除 {} 个用户的封禁状态,用户ID: {}", 
+                    count, String.join(", ", userIds));
+            
+            return count;
+        } catch (Exception e) {
+            logger.error("自动解除封禁定时任务执行失败:{}", e.getMessage(), e);
+            throw e;
+        }
+    }
+
 }

+ 21 - 0
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -2433,5 +2433,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select * from fs_user where phone=#{phone}
     </select>
 
+    <!-- 查询被误封禁的用户(status=0且remark为null) -->
+    <select id="selectMistakenlyDisabledUsers" resultMap="FsUserResult">
+        SELECT *
+        FROM fs_user
+        WHERE status = 0
+          AND (remark IS NULL OR remark = '')
+          AND is_del = 0
+        ORDER BY user_id
+    </select>
+
+    <!-- 自动解除被误封禁的用户(status=0且remark为null) -->
+    <update id="autoUnbanMistakenlyDisabledUsers">
+        UPDATE fs_user
+        SET status = 1,
+            remark = '自动解除封禁',
+            update_time = NOW()
+        WHERE status = 0
+          AND (remark IS NULL OR remark = '')
+          AND is_del = 0
+    </update>
+
 
 </mapper>