// package com.zbf.framework.websocket;

// import org.apache.commons.lang3.StringUtils;
// import org.springframework.messaging.Message;
// import org.springframework.messaging.MessageChannel;
// import org.springframework.messaging.simp.stomp.StompCommand;
// import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
// import org.springframework.messaging.support.ChannelInterceptor;
// import org.springframework.messaging.support.MessageHeaderAccessor;
// import org.springframework.stereotype.Component;

// // import com.finesys.finance.admin.entity.SysLoginUserEntity;
// // import com.finesys.finance.admin.service.ISysLoginUserService;
// // import com.finesys.finance.admin.service.ISysUserService;
// // import com.finesys.finance.base.constants.BusinessResult;
// // import com.finesys.finance.base.constants.Constants;
// // import com.finesys.finance.base.entity.Authentication;
// // import com.finesys.finance.base.entity.LoginInfoVo;
// // import com.finesys.finance.base.service.RedisService;
// import lombok.extern.slf4j.Slf4j;

// @Slf4j
// @Component
// public class WsAuthHandlerInterceptor implements ChannelInterceptor {

//     // @Autowired
//     // private ISysUserService sysUserService;

//     // @Autowired
//     // private ISysLoginUserService iSysLoginUserService;
//     @Override
//     public Message<?> preSend(Message<?> message, MessageChannel channel) {
//         StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);

//         // websocket初次建立连接时
//         if (StompCommand.CONNECT.equals(accessor.getCommand())) {

//             String accessToken = accessor.getFirstNativeHeader( "login");
//             if (StringUtils.isEmpty(accessToken)) {
//                 log.error("ws没有携带有效的认证信息，ws认证失败");
//                 return message;
//             }

//             // BusinessResult<LoginInfoVo> loginUserInfo = sysUserService.getLoginUserInfo(accessToken);
//             // if (loginUserInfo == null) {
//             //     log.error("ws携带的token是一个无效的token, 没有查询到用户信息, ws认证失败.");
//             //     return message;
//             // }

//             // log.info("ws认证成功, 建立连接完成, 用户:" + loginUserInfo.getData().getLoginName());
//             // accessor.setUser(new Authentication(loginUserInfo.getData().getUserId(), accessToken));

//         } else if (StompCommand.DISCONNECT.equals(accessor.getCommand())) {

//             log.info("接收到ws断开事件...");
//             if(accessor.getUser() == null) {
//                 return message;
//             }

// //             Authentication userInfo = (Authentication) accessor.getUser();
// //             if (StringUtils.isEmpty(userInfo.getName())) {
// //                 return message;
// //             }

// //             log.info("接收到ws断开事件. userName=" + userInfo.getName());
// //             log.info("接收到ws断开事件. userName=" + userInfo.getName() + ", 删除用户登录信息");
// //             // 用户登出
// // //            sysUserService.logout(userInfo.getToken());
// //             SysLoginUserEntity sysLoginUserEntity = new SysLoginUserEntity();
// //             sysLoginUserEntity.setUserId(userInfo.getName());
// //             iSysLoginUserService.deleteByUser(sysLoginUserEntity);
//             // log.info("=============接收到ws断开事件,userName={}，当前ws连接状态{}", userInfo.getName(), accessor.getCommand().getMessageType());
//         }
//         return message;
//     }
// }
