refactor(websocket): 更新WebSocket消息处理并重构缓存键配置
This commit is contained in:
+3
-3
@@ -61,12 +61,12 @@ public class KitWsServer {
|
||||
* @param message 客户端发送过来的消息
|
||||
*/
|
||||
@OnMessage
|
||||
public void onMessage(String message, Session session) {
|
||||
public void onMessage(String message, Session session) throws IOException {
|
||||
KitWsMessage wsMessage = JSON.parseObject(message, KitWsMessage.class);
|
||||
String bizCode = wsMessage.getBizCode();
|
||||
Object data = wsMessage.getData();
|
||||
log.info("收到来 sid={} 的信息: message={}, bizCode={}, data={}", sid, message, bizCode,
|
||||
JSON.toJSONString(data));
|
||||
log.info("收到来 sid={} 的信息: message={}, bizCode={}, data={}", sid, message, bizCode, JSON.toJSONString(data));
|
||||
session.getBasicRemote().sendText(message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+35
-31
@@ -1,31 +1,35 @@
|
||||
/*
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package cn.odboy.system.dal.redis;
|
||||
|
||||
/**
|
||||
* 关于缓存的Key集合
|
||||
*/
|
||||
public interface SystemCacheKey {
|
||||
|
||||
/**
|
||||
* 在线用户
|
||||
*/
|
||||
String ONLINE_USER = "user::token:";
|
||||
/**
|
||||
* 登录验证码
|
||||
*/
|
||||
String CAPTCHA_LOGIN = "captcha::login:";
|
||||
}
|
||||
/*
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package cn.odboy.system.constant;
|
||||
|
||||
/**
|
||||
* 关于缓存的Key集合
|
||||
*/
|
||||
public interface SystemCacheKey {
|
||||
|
||||
/**
|
||||
* 在线用户
|
||||
*/
|
||||
String ONLINE_USER = "user::token:";
|
||||
/**
|
||||
* 登录验证码
|
||||
*/
|
||||
String CAPTCHA_LOGIN = "captcha::login:";
|
||||
/**
|
||||
* 用户信息
|
||||
*/
|
||||
String USER_INFO = "user::info:";
|
||||
}
|
||||
-69
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
* Copyright 2021-2026 Odboy
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package cn.odboy.system.dal.redis;
|
||||
|
||||
/**
|
||||
* 关于缓存的Key集合
|
||||
*/
|
||||
public interface SystemRedisKey {
|
||||
|
||||
/**
|
||||
* 用户
|
||||
*/
|
||||
String USER_ID = "user::id:";
|
||||
/**
|
||||
* 数据
|
||||
*/
|
||||
String DATA_USER = "data::user:";
|
||||
/**
|
||||
* 菜单
|
||||
*/
|
||||
String MENU_ID = "menu::id:";
|
||||
String MENU_USER = "menu::user:";
|
||||
/**
|
||||
* 角色授权
|
||||
*/
|
||||
String ROLE_AUTH = "role::auth:";
|
||||
String ROLE_USER = "role::user:";
|
||||
/**
|
||||
* 角色信息
|
||||
*/
|
||||
String ROLE_ID = "role::id:";
|
||||
/**
|
||||
* 部门
|
||||
*/
|
||||
String DEPT_ID = "dept::id:";
|
||||
/**
|
||||
* 岗位
|
||||
*/
|
||||
String JOB_ID = "job::id:";
|
||||
/**
|
||||
* 数据字典
|
||||
*/
|
||||
String DICT_NAME = "dict::name:";
|
||||
/**
|
||||
* 在线用户
|
||||
*/
|
||||
String ONLINE_USER = "online::token:";
|
||||
/**
|
||||
* 登录验证码
|
||||
*/
|
||||
String CAPTCHA_LOGIN = "captcha::login:";
|
||||
/**
|
||||
* 用户信息
|
||||
*/
|
||||
String USER_INFO = "user::info:";
|
||||
}
|
||||
+4
-3
@@ -18,6 +18,7 @@ package cn.odboy.system.dal.redis;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.odboy.framework.redis.KitRedisHelper;
|
||||
import cn.odboy.system.constant.SystemCacheKey;
|
||||
import cn.odboy.system.dal.model.response.SystemUserJwtVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
@@ -42,7 +43,7 @@ public class SystemUserInfoDAO {
|
||||
if (StrUtil.isNotEmpty(userName)) {
|
||||
// 添加数据, 避免数据同时过期(2小时左右)
|
||||
long time = 7200 + RandomUtil.randomInt(900, 1800);
|
||||
redisHelper.set(SystemRedisKey.USER_INFO + userName, user, time);
|
||||
redisHelper.set(SystemCacheKey.USER_INFO + userName, user, time);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +56,7 @@ public class SystemUserInfoDAO {
|
||||
public void deleteUserLoginInfoByUserName(String userName) {
|
||||
if (StrUtil.isNotEmpty(userName)) {
|
||||
// 清除数据
|
||||
redisHelper.del(SystemRedisKey.USER_INFO + userName);
|
||||
redisHelper.del(SystemCacheKey.USER_INFO + userName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +69,7 @@ public class SystemUserInfoDAO {
|
||||
public SystemUserJwtVo getUserLoginInfoByUserName(String username) {
|
||||
if (StrUtil.isNotEmpty(username)) {
|
||||
// 获取数据
|
||||
return redisHelper.get(SystemRedisKey.USER_INFO + username, SystemUserJwtVo.class);
|
||||
return redisHelper.get(SystemCacheKey.USER_INFO + username, SystemUserJwtVo.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
+6
-7
@@ -19,6 +19,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.odboy.base.KitPageResult;
|
||||
import cn.odboy.framework.properties.AppProperties;
|
||||
import cn.odboy.framework.redis.KitRedisHelper;
|
||||
import cn.odboy.system.constant.SystemCacheKey;
|
||||
import cn.odboy.system.dal.model.export.SystemUserOnlineExportRowVo;
|
||||
import cn.odboy.system.dal.model.response.SystemUserJwtVo;
|
||||
import cn.odboy.system.dal.model.response.SystemUserOnlineVo;
|
||||
@@ -122,7 +123,7 @@ public class SystemUserOnlineInfoDAO {
|
||||
* @param username /
|
||||
*/
|
||||
public void kickOutByUsername(String username) {
|
||||
String loginKey = SystemRedisKey.ONLINE_USER + username + "*";
|
||||
String loginKey = SystemCacheKey.ONLINE_USER + username + "*";
|
||||
redisHelper.scanDel(loginKey);
|
||||
}
|
||||
|
||||
@@ -133,15 +134,13 @@ public class SystemUserOnlineInfoDAO {
|
||||
* @param pageable /
|
||||
* @return /
|
||||
*/
|
||||
public KitPageResult<SystemUserOnlineVo> searchOnlineUser(SystemUserOnlineVo onlineVo,
|
||||
IPage<SystemUserOnlineVo> pageable) {
|
||||
public KitPageResult<SystemUserOnlineVo> searchOnlineUser(SystemUserOnlineVo onlineVo, IPage<SystemUserOnlineVo> pageable) {
|
||||
String username = null;
|
||||
if (onlineVo != null) {
|
||||
username = onlineVo.getUserName();
|
||||
}
|
||||
List<SystemUserOnlineVo> onlineUserList = queryUserOnlineModelListByUsername(username);
|
||||
List<SystemUserOnlineVo> paging =
|
||||
KitPageUtil.softPaging(pageable.getCurrent(), pageable.getSize(), onlineUserList);
|
||||
List<SystemUserOnlineVo> onlineUserList = this.queryUserOnlineModelListByUsername(username);
|
||||
List<SystemUserOnlineVo> paging = KitPageUtil.softPaging(pageable.getCurrent(), pageable.getSize(), onlineUserList);
|
||||
return KitPageUtil.toPage(paging, onlineUserList.size());
|
||||
}
|
||||
|
||||
@@ -152,7 +151,7 @@ public class SystemUserOnlineInfoDAO {
|
||||
* @return /
|
||||
*/
|
||||
public List<SystemUserOnlineVo> queryUserOnlineModelListByUsername(String username) {
|
||||
String loginKey = SystemRedisKey.ONLINE_USER + (StrUtil.isBlank(username) ? "" : "*" + username);
|
||||
String loginKey = SystemCacheKey.ONLINE_USER + (StrUtil.isBlank(username) ? "" : "*" + username);
|
||||
List<String> keys = redisHelper.scan(loginKey + "*");
|
||||
Collections.reverse(keys);
|
||||
List<SystemUserOnlineVo> onlineUserList = new ArrayList<>();
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ import cn.odboy.constant.SystemConst;
|
||||
import cn.odboy.framework.properties.AppProperties;
|
||||
import cn.odboy.framework.redis.KitRedisHelper;
|
||||
import cn.odboy.system.dal.model.response.SystemUserJwtVo;
|
||||
import cn.odboy.system.dal.redis.SystemCacheKey;
|
||||
import cn.odboy.system.constant.SystemCacheKey;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import io.jsonwebtoken.JwtParser;
|
||||
import io.jsonwebtoken.Jwts;
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ import cn.odboy.framework.exception.BadRequestException;
|
||||
import cn.odboy.framework.properties.AppProperties;
|
||||
import cn.odboy.framework.redis.KitRedisHelper;
|
||||
import cn.odboy.system.dal.model.response.SystemCaptchaVo;
|
||||
import cn.odboy.system.dal.redis.SystemCacheKey;
|
||||
import cn.odboy.system.constant.SystemCacheKey;
|
||||
import com.wf.captcha.base.Captcha;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
Reference in New Issue
Block a user