Explorar o código

refactor(game-event): 调整队伍相关接口及权限注解配置

- 注释掉 AdviceMapper 中的分页和列表查询默认方法实现
- 修改 GameTeamMapper 中数据权限注解的字段引用方式
- 调整 AdviceServiceImpl 中调用 Mapper 方法的逻辑顺序
- 为 SaTokenExceptionHandler 添加异常处理优先级注解
- 增加对 Token 冻结情况的判断与返回信息提示
zhou hai 3 días
pai
achega
2ea1d80cee

+ 7 - 0
ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/handler/SaTokenExceptionHandler.java

@@ -8,6 +8,7 @@ import cn.hutool.http.HttpStatus;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.R;
+import org.springframework.core.annotation.Order;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
  * @author Lion Li
  */
 @Slf4j
+@Order(-1) // 设置更高优先级,确保在GlobalExceptionHandler之前执行
 @RestControllerAdvice
 public class SaTokenExceptionHandler {
 
@@ -46,6 +48,11 @@ public class SaTokenExceptionHandler {
     @ExceptionHandler(NotLoginException.class)
     public R<Void> handleNotLoginException(NotLoginException e, HttpServletRequest request) {
         String requestURI = request.getRequestURI();
+        // 检查是否是token被冻结的情况
+        if (e.getMessage() != null && e.getMessage().contains("已被冻结")) {
+            log.error("请求地址'{}',Token被冻结'{}',请重新登录", requestURI, e.getMessage());
+            return R.fail(HttpStatus.HTTP_UNAUTHORIZED, "账号已在其他地点登录或被管理员强制下线,请重新登录");
+        }
         log.error("请求地址'{}',认证失败'{}',无法访问系统资源", requestURI, e.getMessage());
         return R.fail(HttpStatus.HTTP_UNAUTHORIZED, "认证失败,无法访问系统资源");
     }

+ 14 - 14
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/mapper/AdviceMapper.java

@@ -24,22 +24,22 @@ public interface AdviceMapper extends BaseMapperPlus<Advice, AdviceVo> {
     /**
      * 分页查询队伍列表,并进行数据权限控制
      */
-    @DataPermission({
-        @DataColumn(key = "deptName", value = "create_dept"),
-        @DataColumn(key = "userName", value = "create_by")
-    })
-    default Page<AdviceVo> selectPageAdviceList(Page<Advice> page, Wrapper<Advice> queryWrapper) {
-        return this.selectVoPage(page, queryWrapper);
-    }
+//    @DataPermission({
+//        @DataColumn(key = "deptName", value = "create_dept"),
+//        @DataColumn(key = "userName", value = "create_by")
+//    })
+//    default Page<AdviceVo> selectPageAdviceList(Page<Advice> page, Wrapper<Advice> queryWrapper) {
+//        return this.selectVoPage(page, queryWrapper);
+//    }
 
     /**
      * 获取队伍列表,并进行数据权限控制
      */
-    @DataPermission({
-        @DataColumn(key = "deptName", value = "create_dept"),
-        @DataColumn(key = "userName", value = "create_by")
-    })
-    default List<AdviceVo> selectAdviceList(Wrapper<Advice> queryWrapper) {
-        return this.selectVoList(queryWrapper);
-    }
+//    @DataPermission({
+//        @DataColumn(key = "deptName", value = "create_dept"),
+//        @DataColumn(key = "userName", value = "create_by")
+//    })
+//    default List<AdviceVo> selectAdviceList(Wrapper<Advice> queryWrapper) {
+//        return this.selectVoList(queryWrapper);
+//    }
 }

+ 2 - 4
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/mapper/GameTeamMapper.java

@@ -6,10 +6,8 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 import org.dromara.common.mybatis.annotation.DataColumn;
 import org.dromara.common.mybatis.annotation.DataPermission;
-import org.dromara.system.domain.GameEventProject;
 import org.dromara.system.domain.GameTeam;
 import org.dromara.system.domain.bo.GameTeamBo;
-import org.dromara.system.domain.vo.GameEventProjectVo;
 import org.dromara.system.domain.vo.GameTeamVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
@@ -82,8 +80,8 @@ public interface GameTeamMapper extends BaseMapperPlus<GameTeam, GameTeamVo> {
      * @return 队伍列表
      */
     @DataPermission({
-        @DataColumn(key = "deptName", value = "create_dept"),
-        @DataColumn(key = "userName", value = "create_by")
+        @DataColumn(key = "deptName", value = "gt.create_dept"),
+        @DataColumn(key = "userName", value = "gt.create_by")
     })
     List<GameTeamVo> selectVoListWithGroupName(GameTeamBo bo);
 }

+ 4 - 4
ruoyi-modules/ruoyi-game-event/src/main/java/org/dromara/system/service/impl/AdviceServiceImpl.java

@@ -63,8 +63,8 @@ public class AdviceServiceImpl implements IAdviceService {
         Long defaultEventId = Long.valueOf(cacheObject.toString());
         bo.setEventId(defaultEventId);
         LambdaQueryWrapper<Advice> lqw = buildQueryWrapper(bo);
-//        Page<AdviceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
-        Page<AdviceVo> result = baseMapper.selectPageAdviceList(pageQuery.build(), lqw);
+        Page<AdviceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+//        Page<AdviceVo> result = baseMapper.selectPageAdviceList(pageQuery.build(), lqw);
         //提前查询出队伍id和name的映射并缓存
         Set<Long> ids = result.getRecords()
             .stream()
@@ -87,8 +87,8 @@ public class AdviceServiceImpl implements IAdviceService {
     @Override
     public List<AdviceVo> queryList(AdviceBo bo) {
         LambdaQueryWrapper<Advice> lqw = buildQueryWrapper(bo);
-//        return baseMapper.selectVoList(lqw);
-        return baseMapper.selectAdviceList(lqw);
+        return baseMapper.selectVoList(lqw);
+//        return baseMapper.selectAdviceList(lqw);
     }
 
     private LambdaQueryWrapper<Advice> buildQueryWrapper(AdviceBo bo) {