瀏覽代碼

新增封禁后,清退用户token

fangzhen 4 周之前
父節點
當前提交
c075d754ff

+ 19 - 5
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityReportController.java

@@ -3,8 +3,11 @@ package com.ruoyi.generator.controller;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.exception.user.ProjectException;
 import com.ruoyi.common.utils.DateUtils;
@@ -19,6 +22,7 @@ import com.ruoyi.generator.service.ICommunityReportUserService;
 import com.ruoyi.generator.vo.CommunityReportPunishVo;
 import com.ruoyi.generator.vo.CommunityReportUserVo;
 import com.ruoyi.generator.vo.CommunityUserReportVo;
+import com.ruoyi.system.domain.SysUserOnline;
 import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.ISysUserService;
 import io.swagger.annotations.Api;
@@ -27,9 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -64,6 +66,9 @@ public class CommunityReportController {
     @Autowired
     private SysUserMapper sysUserMapper;
 
+    @Autowired
+    private RedisCache redisCache;
+
     /**
      * 获取举报类型信息
      *
@@ -203,9 +208,7 @@ public class CommunityReportController {
                 }
             }
 
-
             //计算封禁的时间
-
             Date futureDate = null;
             if (disposalTime != null && disposalTime >= 0) {
                 long millisecondsToAdd = TimeUnit.MINUTES.toMillis(disposalTime); //转换时间
@@ -237,6 +240,17 @@ public class CommunityReportController {
                     //判断当前用户是否已经被封号
                     userService.updateUserProfile(user);
                     communityReportUserMapper.updateById(reportUser);
+                    //清退token
+                    Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
+                    List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
+                    for (String key : keys)
+                    {
+                        LoginUser loginUser = redisCache.getCacheObject(key);
+                        if (loginUser.getUserId().equals(user.getUserId())) {
+                            //移除用户已登录情况
+                            redisCache.deleteObject(CacheConstants.LOGIN_TOKEN_KEY + key);
+                        }
+                    }
                     break;
                 case "2": //禁言
                     userService.updateUserProfile(user);