Parcourir la source

消息推送问题修改

sakuya il y a 3 ans
Parent
commit
6ee03a20aa

+ 6 - 3
eladmin-system/src/main/java/me/zhengjie/application/user/app/mq/WebSocketReceiver.java

@@ -9,11 +9,13 @@ import me.zhengjie.application.admin.service.dto.JwtUserDto;
 import me.zhengjie.application.admin.service.dto.RoleSmallDto;
 import me.zhengjie.application.admin.service.dto.UserDto;
 import me.zhengjie.application.bank.service.SysUserService;
+import me.zhengjie.base.util.ApplicationContextUtil;
 import me.zhengjie.base.util.WebSocketMap;
 import me.zhengjie.base.websocket.AppSocketServer;
 import me.zhengjie.dao.mybatis.entity.NotaryOrderEntity;
 import me.zhengjie.dao.mybatis.entity.SysUserEntity;
 import me.zhengjie.security.service.OnlineUserService;
+import me.zhengjie.security.service.dto.OnlineUserDto;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.connection.Message;
 import org.springframework.data.redis.connection.MessageListener;
@@ -33,6 +35,7 @@ public class WebSocketReceiver implements MessageListener {
 	final OnlineUserService onlineUserService;
 	final NotaryOrderService notaryOrderService;
 	final SysUserService sysUserService;
+	final ApplicationContextUtil contextUtil;
 
 	/**
 	 * 推送公证员接单消息
@@ -47,7 +50,7 @@ public class WebSocketReceiver implements MessageListener {
 		String orderId = jsonObj.getString("orderId");
 		String roomId = jsonObj.getString("roomId");
 		String businessNo = jsonObj.getString("businessNo");
-		List<Object> users = onlineUserService.getAllLoginUser();
+		List<OnlineUserDto> users = onlineUserService.getAllLoginUser();
 		// share_userId
 		QueryWrapper<NotaryOrderEntity> queryWrapper = new QueryWrapper<>();
 		queryWrapper.eq("business_no", businessNo);
@@ -59,8 +62,8 @@ public class WebSocketReceiver implements MessageListener {
 		String notaryId = "notary_" + notaryOrder.getNotaryOfficeId();
 		log.info("判断登录的公证处和查询的公证处比较:" + notaryId);
 		WebSocketMap.set(socketId, list);
-		for (Object user : users) {
-			JwtUserDto userDto = (JwtUserDto) user;
+		for (OnlineUserDto user : users) {
+			JwtUserDto userDto = contextUtil.getUserByKey(user.getOnlineToken());
 			String orgId = userDto.getUser().getOrgId();
 			if (StringUtils.isNotBlank(orgId) && orgId.equalsIgnoreCase(notaryId) && isNotrayUser(userDto.getUser())) {
 				CopyOnWriteArraySet<AppSocketServer> socketServers = AppSocketServer.getWebSocketSet();

+ 9 - 0
eladmin-system/src/main/java/me/zhengjie/base/util/ApplicationContextUtil.java

@@ -17,6 +17,15 @@ public class ApplicationContextUtil {
     private final RedisUtils redisUtils;
 
     /**
+     * 获取指定缓存Key的用户信息
+     * @param key
+     * @return
+     */
+    public JwtUserDto getUserByKey(String key) {
+        return JSON.parseObject((String) redisUtils.get(key), JwtUserDto.class);
+    }
+
+    /**
      * 获取当前登录的用户
      * @return UserDetails
      */