diff --git a/integrate-mq/src/main/java/com/pannk/config/DirectRabbitMQConfig.java b/integrate-mq/src/main/java/com/pannk/ws/config/DirectRabbitMQConfig.java similarity index 97% rename from integrate-mq/src/main/java/com/pannk/config/DirectRabbitMQConfig.java rename to integrate-mq/src/main/java/com/pannk/ws/config/DirectRabbitMQConfig.java index ef48e11de0c888f84d2c66efd7f4360f46fca5ec..4a68a8ca976bd231a6ef88a85030b750c32ddacc 100644 --- a/integrate-mq/src/main/java/com/pannk/config/DirectRabbitMQConfig.java +++ b/integrate-mq/src/main/java/com/pannk/ws/config/DirectRabbitMQConfig.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; diff --git a/integrate-mq/src/main/java/com/pannk/config/FanoutRabbitMQConfig.java b/integrate-mq/src/main/java/com/pannk/ws/config/FanoutRabbitMQConfig.java similarity index 97% rename from integrate-mq/src/main/java/com/pannk/config/FanoutRabbitMQConfig.java rename to integrate-mq/src/main/java/com/pannk/ws/config/FanoutRabbitMQConfig.java index 398bc84802dde0c36b3c3f252f823f6b048927b2..4b8091e97acbd4620753b1f675d293ec5c2a4a6e 100644 --- a/integrate-mq/src/main/java/com/pannk/config/FanoutRabbitMQConfig.java +++ b/integrate-mq/src/main/java/com/pannk/ws/config/FanoutRabbitMQConfig.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import com.pannk.cons.Constant; import org.springframework.amqp.core.Binding; diff --git a/integrate-mq/src/main/java/com/pannk/config/TopicRabbitMQConfig.java b/integrate-mq/src/main/java/com/pannk/ws/config/TopicRabbitMQConfig.java similarity index 97% rename from integrate-mq/src/main/java/com/pannk/config/TopicRabbitMQConfig.java rename to integrate-mq/src/main/java/com/pannk/ws/config/TopicRabbitMQConfig.java index 0996683fb1d9bafd96e6ecfc5c244a364446a2c6..1944339aff45d7d66be9a988666805f318245a73 100644 --- a/integrate-mq/src/main/java/com/pannk/config/TopicRabbitMQConfig.java +++ b/integrate-mq/src/main/java/com/pannk/ws/config/TopicRabbitMQConfig.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import com.pannk.cons.Constant; import org.springframework.amqp.core.Binding; diff --git a/integrate-shiro/src/main/java/com/pannk/config/BaseException.java b/integrate-shiro/src/main/java/com/pannk/ws/config/BaseException.java similarity index 95% rename from integrate-shiro/src/main/java/com/pannk/config/BaseException.java rename to integrate-shiro/src/main/java/com/pannk/ws/config/BaseException.java index e121378eb7ac719b2ccbe184e94f096d7f1ad73f..418ee4d124b9a8c85e6f7992f71de67a65f146e3 100644 --- a/integrate-shiro/src/main/java/com/pannk/config/BaseException.java +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/BaseException.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import lombok.Data; diff --git a/integrate-shiro/src/main/java/com/pannk/config/BaseExceptionHandler.java b/integrate-shiro/src/main/java/com/pannk/ws/config/BaseExceptionHandler.java similarity index 98% rename from integrate-shiro/src/main/java/com/pannk/config/BaseExceptionHandler.java rename to integrate-shiro/src/main/java/com/pannk/ws/config/BaseExceptionHandler.java index 214df65b44a5231509451707fe9018bada026af7..0b9de30b8b34377ef9056d3aa17c17ff07afb53f 100644 --- a/integrate-shiro/src/main/java/com/pannk/config/BaseExceptionHandler.java +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/BaseExceptionHandler.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.authz.AuthorizationException; diff --git a/integrate-shiro/src/main/java/com/pannk/config/Constant.java b/integrate-shiro/src/main/java/com/pannk/ws/config/Constant.java similarity index 98% rename from integrate-shiro/src/main/java/com/pannk/config/Constant.java rename to integrate-shiro/src/main/java/com/pannk/ws/config/Constant.java index 68c225bbb93b409ce4e425df1918a11d4a8313c7..f306e1e98f6859a178561d96d3b299c4bfd4764a 100644 --- a/integrate-shiro/src/main/java/com/pannk/config/Constant.java +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/Constant.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; /** * Created by wolf on 20-11-2. diff --git a/integrate-shiro/src/main/java/com/pannk/config/OAuth2Filter.java b/integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Filter.java similarity index 99% rename from integrate-shiro/src/main/java/com/pannk/config/OAuth2Filter.java rename to integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Filter.java index d256d80f6c4b6cfcb0d2828c8f4db46ca210113e..7aa6bd1db26f3358c5a78435b4f201bf118ee33d 100644 --- a/integrate-shiro/src/main/java/com/pannk/config/OAuth2Filter.java +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Filter.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.StringUtils; diff --git a/integrate-shiro/src/main/java/com/pannk/config/OAuth2Realm.java b/integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Realm.java similarity index 98% rename from integrate-shiro/src/main/java/com/pannk/config/OAuth2Realm.java rename to integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Realm.java index 710fdfe0689d6a583e5ef65375ce88e4cc5ad9da..c6d3879b11af69a922fda465b68d3f609f677e0a 100644 --- a/integrate-shiro/src/main/java/com/pannk/config/OAuth2Realm.java +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Realm.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import com.pannk.user.entity.UserEntity; import org.apache.shiro.authc.*; diff --git a/integrate-shiro/src/main/java/com/pannk/config/OAuth2Token.java b/integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Token.java similarity index 93% rename from integrate-shiro/src/main/java/com/pannk/config/OAuth2Token.java rename to integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Token.java index 2ec6529775d5c79151957da3c20186c4330160a4..8d7aa2a0eb9491e435d3605c1418e21e97356f5a 100644 --- a/integrate-shiro/src/main/java/com/pannk/config/OAuth2Token.java +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/OAuth2Token.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import org.apache.shiro.authc.AuthenticationToken; diff --git a/integrate-shiro/src/main/java/com/pannk/ws/config/RedisUtil.java b/integrate-shiro/src/main/java/com/pannk/ws/config/RedisUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..4af7912235b1c1a19b13fc13d4393683b6a0a3f8 --- /dev/null +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/RedisUtil.java @@ -0,0 +1,184 @@ +package com.pannk.ws.config; + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * Created by wolf on 20-11-3. + */ +@Slf4j +@Component +public class RedisUtil { + + @Autowired + private RedisTemplate redisTemplate; + + /** + * 设置过期时间 + * @param key 键 + * @param time 时间,单位:秒 + * @return + */ + public boolean expire(String key, long time) { + try { + if (time > 0) { + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + log.error("设置失效时间出错,{}", e); + return false; + } + } + + /** + * 设置过期时间 + * @param key 键 + * @param day 时间,单位:天 + * @return + */ + public boolean expire(String key,int day){ + try{ + if (day<0){ + redisTemplate.expire(key,day,TimeUnit.DAYS); + } + return true; + }catch (Exception e){ + log.error("设置失效时间出错,{}",e); + return false; + } + } + + /** + * 删除键 + * @param key 键 + */ + public void del(String... key){ + if (key!=null && key.length>0){ + if (key.length==1){ + redisTemplate.delete(key[0]); + }else{ + redisTemplate.delete(CollectionUtils.arrayToList(key)); + } + } + } + + /** + * 缓存获取 + * @param key 键 + * @return + */ + public Object get(String key){ + return key == null ? null :redisTemplate.opsForValue().get(key); + } + + /** + * 获取对象 + * @param key 键 + * @param cls 类 + * @param 类型 + * @return + */ + public T getEntity(String key,Class cls){ + Object obj = this.get(key); + if (obj!=null){ + return JSON.parseObject(obj.toString(),cls); + } + return null; + } + + /** + * 获取列表 + * @param key 键 + * @param cls 类 + * @param 类型 + * @return + */ + public List getListEntity(String key, Class cls){ + Object obj = this.get(key); + if (obj!=null){ + return JSON.parseArray(obj.toString(),cls); + } + return null; + } + + /** + * 设置键值 + * @param key 键 + * @param value 值 + * @return + */ + public boolean set(String key,Object value){ + try{ + redisTemplate.opsForValue().set(key,value); + return true; + }catch (Exception e){ + log.error("设置键值出错,{}",e); + return false; + } + } + + /** + * 设置键值和失效时间 + * @param key 键 + * @param value 值 + * @param time 失效时间 + * @return + */ + public boolean set(String key,Object value,long time){ + try{ + if(time>0){ + redisTemplate.opsForValue().set(key,value,time, TimeUnit.SECONDS); + }else{ + set(key,value); + } + return true; + }catch (Exception e){ + log.error("设置键值和失效时间出错,{}",e); + return false; + } + } + + /** + * 获取hash值 + * @param key 键 + * @param item 项 + * @return + */ + public Object hget(String key,String item){ + return redisTemplate.opsForHash().get(key,item); + } + + /** + * 获取hashKey对应的所有键值 + * @param key 键 + * @return + */ + public Map hmget(String key){ + return redisTemplate.opsForHash().entries(key); + } + + /** + * 设置hash值 + * @param key 键 + * @param map 值 + * @return + */ + public boolean hmset(String key,Map map){ + try{ + redisTemplate.opsForHash().putAll(key,map); + return true; + }catch (Exception e){ + log.error("设置哈希键值出错,{}",e); + return false; + } + } +} diff --git a/integrate-shiro/src/main/java/com/pannk/config/Result.java b/integrate-shiro/src/main/java/com/pannk/ws/config/Result.java similarity index 96% rename from integrate-shiro/src/main/java/com/pannk/config/Result.java rename to integrate-shiro/src/main/java/com/pannk/ws/config/Result.java index 9781e2ab3b5afb9de64ed5f94c9bbd4274bf5c2f..cfcff2903b5f97ae7e465bb33421501f6211d95c 100644 --- a/integrate-shiro/src/main/java/com/pannk/config/Result.java +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/Result.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import lombok.Data; import lombok.extern.slf4j.Slf4j; diff --git a/integrate-shiro/src/main/java/com/pannk/config/ShiroConfig.java b/integrate-shiro/src/main/java/com/pannk/ws/config/ShiroConfig.java similarity index 98% rename from integrate-shiro/src/main/java/com/pannk/config/ShiroConfig.java rename to integrate-shiro/src/main/java/com/pannk/ws/config/ShiroConfig.java index dbd575b50c3b9f56328ee7c0bff854e570badff3..756890bbbaa1065a5b505220f0b2e608872aad14 100644 --- a/integrate-shiro/src/main/java/com/pannk/config/ShiroConfig.java +++ b/integrate-shiro/src/main/java/com/pannk/ws/config/ShiroConfig.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.spring.LifecycleBeanPostProcessor; diff --git a/integrate-swagger/src/main/java/com/pannk/config/Swagger2Config.java b/integrate-swagger/src/main/java/com/pannk/ws/config/Swagger2Config.java similarity index 98% rename from integrate-swagger/src/main/java/com/pannk/config/Swagger2Config.java rename to integrate-swagger/src/main/java/com/pannk/ws/config/Swagger2Config.java index c00478a7289f99a2bf6bbceb2ae0806e45c1f3c7..f08fe70135660ae5f989a31f6c2cd4664d758bb7 100644 --- a/integrate-swagger/src/main/java/com/pannk/config/Swagger2Config.java +++ b/integrate-swagger/src/main/java/com/pannk/ws/config/Swagger2Config.java @@ -1,4 +1,4 @@ -package com.pannk.config; +package com.pannk.ws.config; import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; import org.springframework.context.annotation.Bean; diff --git a/integrate-websocket/pom.xml b/integrate-websocket/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..77afbb427028e7e2eb06fd9ed1eb010e45012f69 --- /dev/null +++ b/integrate-websocket/pom.xml @@ -0,0 +1,40 @@ + + + + springboot-demo + com.pannk + 1.0 + + 4.0.0 + + integrate-websocket + + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + org.projectlombok + lombok + 1.18.4 + + + + org.springframework.boot + spring-boot-starter-websocket + + + + \ No newline at end of file diff --git a/integrate-websocket/src/main/java/com/pannk/config/RedisConfig.java b/integrate-websocket/src/main/java/com/pannk/config/RedisConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..da798d4284c2560ed8cb8c4200a7d0d5eaf675f6 --- /dev/null +++ b/integrate-websocket/src/main/java/com/pannk/config/RedisConfig.java @@ -0,0 +1,29 @@ +package com.pannk.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * Redis配置 + * + * @author wolf + * @date 20-11-13 + */ +@Configuration +public class RedisConfig { + + @Bean + public RedisTemplate getRedisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate(); + //设置连接工厂 + redisTemplate.setConnectionFactory(redisConnectionFactory); + //设置键序列化 + redisTemplate.setKeySerializer(new StringRedisSerializer()); + //设置值序列化 + redisTemplate.setValueSerializer(new StringRedisSerializer()); + return redisTemplate; + } +} diff --git a/integrate-shiro/src/main/java/com/pannk/config/RedisUtil.java b/integrate-websocket/src/main/java/com/pannk/config/RedisUtil.java similarity index 100% rename from integrate-shiro/src/main/java/com/pannk/config/RedisUtil.java rename to integrate-websocket/src/main/java/com/pannk/config/RedisUtil.java diff --git a/integrate-websocket/src/main/java/com/pannk/ws/config/WebSocketConfig.java b/integrate-websocket/src/main/java/com/pannk/ws/config/WebSocketConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..6768cb46c6de3852fb75bd507fa720440ff7822f --- /dev/null +++ b/integrate-websocket/src/main/java/com/pannk/ws/config/WebSocketConfig.java @@ -0,0 +1,21 @@ +package com.pannk.ws.config; + +import com.pannk.ws.interceptor.WebSocketInterceptor; +import com.pannk.ws.wshandlers.MyWebSocketHandler; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.config.annotation.EnableWebSocket; +import org.springframework.web.socket.config.annotation.WebSocketConfigurer; +import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; + +/** + * Created by wolf on 20-12-16. + */ +@Configuration +@EnableWebSocket +public class WebSocketConfig implements WebSocketConfigurer { + @Override + public void registerWebSocketHandlers(WebSocketHandlerRegistry webSocketHandlerRegistry) { + webSocketHandlerRegistry.addHandler(new MyWebSocketHandler(), "/websocket/{clientId}").setAllowedOrigins("*").addInterceptors + (new WebSocketInterceptor()); + } +} diff --git a/integrate-websocket/src/main/java/com/pannk/ws/interceptor/WebSocketInterceptor.java b/integrate-websocket/src/main/java/com/pannk/ws/interceptor/WebSocketInterceptor.java new file mode 100644 index 0000000000000000000000000000000000000000..4f9e04a201ea4a49cd0807b8b38a55cc2d1a893b --- /dev/null +++ b/integrate-websocket/src/main/java/com/pannk/ws/interceptor/WebSocketInterceptor.java @@ -0,0 +1,28 @@ +package com.pannk.ws.interceptor; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.server.ServerHttpRequest; +import org.springframework.http.server.ServerHttpResponse; +import org.springframework.web.socket.WebSocketHandler; +import org.springframework.web.socket.server.HandshakeInterceptor; + +import java.util.Map; + +/** + * Created by wolf on 20-12-16. + */ +@Slf4j +public class WebSocketInterceptor implements HandshakeInterceptor { + + @Override + public boolean beforeHandshake(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse, + WebSocketHandler webSocketHandler, Map map) throws Exception { + return false; + } + + @Override + public void afterHandshake(ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse, + WebSocketHandler webSocketHandler, Exception e) { + + } +} diff --git a/integrate-websocket/src/main/java/com/pannk/ws/wshandlers/MyWebSocketHandler.java b/integrate-websocket/src/main/java/com/pannk/ws/wshandlers/MyWebSocketHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..d490b425c7a6b189a736c714a9cdfae6c2f983c0 --- /dev/null +++ b/integrate-websocket/src/main/java/com/pannk/ws/wshandlers/MyWebSocketHandler.java @@ -0,0 +1,40 @@ +package com.pannk.ws.wshandlers; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.socket.CloseStatus; +import org.springframework.web.socket.WebSocketHandler; +import org.springframework.web.socket.WebSocketMessage; +import org.springframework.web.socket.WebSocketSession; + +/** + * Created by wolf on 20-12-16. + */ +@Component +@Slf4j +public class MyWebSocketHandler implements WebSocketHandler { + @Override + public void afterConnectionEstablished(WebSocketSession webSocketSession) throws Exception { + + } + + @Override + public void handleMessage(WebSocketSession webSocketSession, WebSocketMessage webSocketMessage) throws Exception { + + } + + @Override + public void handleTransportError(WebSocketSession webSocketSession, Throwable throwable) throws Exception { + + } + + @Override + public void afterConnectionClosed(WebSocketSession webSocketSession, CloseStatus closeStatus) throws Exception { + + } + + @Override + public boolean supportsPartialMessages() { + return false; + } +} diff --git a/pom.xml b/pom.xml index 5897d5e5b2955ac24cb3f61b95caa88a04e078bd..9e4f08ba933401935d370f42b395adb863988bdb 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,7 @@ integrate-swagger integrate-shiro integrate-activiti + integrate-websocket org.springframework.boot