ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -195,7 +195,8 @@ sysUser.setNickName("白金用户"); sysUser.setUserType("03"); sysUser.setPhonenumber(response.getOpenId()); sysUser.setAvatar("https://jyzx-obs.obs.cn-sccd1.ctyun.cn/d41508d822cb4b7896aaa1bb56e6167f.png"); sysUser.setAvatar( "https://jyzx-obs.obs.cn-sccd1.ctyun.cn/ca8552a34fb64d4d846afa1b5b173cf9.png"); String password = "123456"; sysUser.setPassword(SecurityUtils.encryptPassword(password)); sysUser = sysUserService.registerUser(sysUser).getData(); @@ -207,7 +208,8 @@ member.setDelFlag(0); member.setNickname("白酒用户"); member.setPhone(appMiniLoginDto.getPhone()); member.setAvatar("https://jyzx-obs.obs.cn-sccd1.ctyun.cn/d41508d822cb4b7896aaa1bb56e6167f.png"); member.setAvatar( "https://jyzx-obs.obs.cn-sccd1.ctyun.cn/ca8552a34fb64d4d846afa1b5b173cf9.png"); member.setZfbOpenid(response.getOpenId()); this.save(member); appMiniLoginVo.setZfbuserid(response.getUserId()); @@ -259,7 +261,7 @@ sysUser.setNickName("白金用户"); sysUser.setUserType("03"); sysUser.setAvatar( "https://jyzx-obs.obs.cn-sccd1.ctyun.cn/d41508d822cb4b7896aaa1bb56e6167f.png"); "https://jyzx-obs.obs.cn-sccd1.ctyun.cn/ca8552a34fb64d4d846afa1b5b173cf9.png"); String password = "123456"; sysUser.setPassword(SecurityUtils.encryptPassword(password)); sysUser = sysUserService.registerUser(sysUser).getData(); @@ -271,7 +273,7 @@ member.setDelFlag(0); member.setNickname("白酒用户"); member.setAvatar( "https://jyzx-obs.obs.cn-sccd1.ctyun.cn/d41508d822cb4b7896aaa1bb56e6167f.png"); "https://jyzx-obs.obs.cn-sccd1.ctyun.cn/ca8552a34fb64d4d846afa1b5b173cf9.png"); member.setWxUnionid(unionid); member.setPhone(appMiniLoginDto.getPhone()); member.setMiniOpenid(openid); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/WebSocketController.java
@@ -40,4 +40,17 @@ WebSocketUsers.sendMessageToUsersByText(message); return R.ok(); } /** * 通过用户id推送消息 * @param type * @param msg * @return */ @GetMapping("/push-by-user-id/{userId}/{msg}") public R<?> pushByUserId(@PathVariable("userId") Long userId, @PathVariable("msg") String msg) { WebSocketUsers.sendMessageToUserById(userId, msg); return R.ok(); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketServer.java
@@ -1,5 +1,6 @@ package com.ruoyi.system.websocket; import com.ruoyi.common.core.utils.JwtUtils; import java.util.concurrent.Semaphore; import javax.websocket.OnClose; import javax.websocket.OnError; @@ -18,7 +19,7 @@ * @作者 ruoyi */ @Component @ServerEndpoint("/websocket/message/{clientType}") @ServerEndpoint("/websocket/message/{clientType}/{accessToken}") public class WebSocketServer { private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketServer.class); @@ -26,7 +27,8 @@ private static Semaphore socketSemaphore = new Semaphore(socketMaxOnlineCount); @OnOpen public void onOpen(Session session, @PathParam("clientType") Integer clientType) public void onOpen(Session session, @PathParam("clientType") Integer clientType, @PathParam("accessToken") String accessToken) throws Exception { boolean semaphoreFlag = false; semaphoreFlag = SemaphoreUtils.tryAcquire(socketSemaphore); @@ -36,7 +38,8 @@ "当前在线人数超过限制数:" + socketMaxOnlineCount); session.close(); } else { WebSocketUsers.put(session.getId(), session, clientType); String userId = JwtUtils.getUserId(accessToken); WebSocketUsers.put(session.getId(), session, clientType, Long.parseLong(userId)); if (clientType == 1) { LOGGER.info("\n 用户端建立连接 - {}", session); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketUsers.java
@@ -20,11 +20,14 @@ private static Map<String, Session> USERS = new ConcurrentHashMap<>(); private static Map<String, Integer> USER_TYPES = new ConcurrentHashMap<>(); // 保存用户id与session映射 private static Map<String, Session> USER_ID_MAP = new ConcurrentHashMap<>(); public static void put(String key, Session session, Integer clientType) public static void put(String key, Session session, Integer clientType, Long userId) { USERS.put(key, session); USER_TYPES.put(key, clientType); USER_ID_MAP.put(userId.toString(), session); } public static boolean remove(Session session) @@ -120,4 +123,14 @@ } } } /** * 根据用户id进行点对点推送 * @param userId 用户id * @param message 消息内容 */ public static void sendMessageToUserById(Long userId, String message) { Session session = USER_ID_MAP.get(userId.toString()); sendMessageToUserByText(session, message); } }