Ver Fonte

消息推送单独服务

黄远 há 5 anos atrás
pai
commit
c4a147e9fa

+ 4 - 2
lift-push-pc/src/main/resources/application.yml

@@ -1,13 +1,15 @@
 server:
   port: 20240
+#  tomcat:
+#    basedir: /Users/huangyuan/application/tomcat/data/tomcat_temp
   tomcat:
-    basedir: /Users/huangyuan/application/tomcat/data/tomcat_temp
+    basedir: /home/ying/server/application/tomcat/data/zuul_tomcat_temp
 
 spring:
   application:
     name: lift-push-service
   profiles:
-    active: test
+    active: prod
   datasource:
     hikari:
       max-lifetime: 1200000 # default: 1800000

+ 0 - 9
lift-push/src/main/java/cn/com/ty/lift/push/app/PushConsumer.java

@@ -1,12 +1,10 @@
 package cn.com.ty.lift.push.app;
 
-import cn.com.ty.lift.common.constants.WebSocketConstants;
 import cn.com.ty.lift.common.model.PushMessage;
 import cn.com.ty.lift.common.model.TimeMessage;
 import cn.com.ty.lift.common.utils.ValuePool;
 import cn.com.ty.lift.push.message.service.TimeMessageService;
 import cn.com.ty.lift.push.message.service.UserAccountService;
-import cn.com.ty.lift.push.websocket.handler.TimeyMessageHandler;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -123,13 +121,6 @@ public class PushConsumer {
         process(ValuePool.PUSH_QUEUE_IOS_ALL, pushMessage);
     }
 
-    @JmsListener(destination = WebSocketConstants.PUSH_MESSAGE_TO_PC)
-    public void listenPCAllQueue(List<TimeMessage> timeMessageList) {
-        log.info("listen {} receive message: {}", WebSocketConstants.PUSH_MESSAGE_TO_PC, timeMessageList);
-        TimeyMessageHandler timeMessageHandler = new TimeyMessageHandler(TimeMessageService, redisTemplate);
-        timeMessageHandler.saveAndPushMessageToUsers(timeMessageList);
-    }
-
     /**
      * 将推送消息存储到数据库
      *

+ 0 - 44
lift-push/src/main/java/cn/com/ty/lift/push/websocket/config/WebSocketConfig.java

@@ -1,44 +0,0 @@
-package cn.com.ty.lift.push.websocket.config;
-
-import cn.com.ty.lift.push.message.service.TimeMessageService;
-import cn.com.ty.lift.push.websocket.handler.TimeyMessageHandler;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.scheduling.TaskScheduler;
-import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler;
-import org.springframework.web.socket.config.annotation.EnableWebSocket;
-import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
-import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
-
-import javax.annotation.Resource;
-import java.util.concurrent.Executors;
-
-/**
- * @ClassName WebSocketConfig
- * @Description 消息推动配置
- * @Author huangyuan
- * @Date 2019-04-19 22:53
- **/
-@Configuration
-@EnableWebSocket
-public class WebSocketConfig implements WebSocketConfigurer {
-
-    @Resource
-    private TimeMessageService  timeMessageService;
-
-    @Resource
-    private RedisTemplate redisTemplate;
-
-    @Bean
-    public TaskScheduler taskScheduler() {
-        return new ConcurrentTaskScheduler(Executors.newSingleThreadScheduledExecutor());
-    }
-
-    @Override
-    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
-        registry.addHandler(new TimeyMessageHandler(timeMessageService, redisTemplate), "/myMessageHandler")
-                .setAllowedOrigins("*")
-                .addInterceptors(new WebSocketInterceptor());
-    }
-}

+ 0 - 38
lift-push/src/main/java/cn/com/ty/lift/push/websocket/config/WebSocketInterceptor.java

@@ -1,38 +0,0 @@
-package cn.com.ty.lift.push.websocket.config;
-
-import cn.com.ty.lift.common.constants.ApiConstants;
-import org.springframework.http.server.ServerHttpRequest;
-import org.springframework.http.server.ServerHttpResponse;
-import org.springframework.http.server.ServletServerHttpRequest;
-import org.springframework.web.socket.WebSocketHandler;
-import org.springframework.web.socket.server.HandshakeInterceptor;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Map;
-
-public class WebSocketInterceptor implements HandshakeInterceptor {
-
-    /**
-     * 进入handler之前的拦截
-     */
-    @Override
-    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
-                                   WebSocketHandler wsHandler, Map<String, Object> map) {
-
-        if (request instanceof ServletServerHttpRequest) {
-            ServletServerHttpRequest serverHttpRequest = (ServletServerHttpRequest) request;
-            HttpServletRequest httpServletRequest = serverHttpRequest.getServletRequest();
-            //获取token
-            String authorizationToken = httpServletRequest.getParameter(ApiConstants.AUTHORIZATION_TOKEN);
-            map.put(ApiConstants.AUTHORIZATION_TOKEN, authorizationToken);
-        }
-        return true;
-    }
-
-    @Override
-    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
-                               Exception exception) {
-        System.out.println("进入成功");
-    }
-
-}

+ 0 - 26
lift-push/src/main/java/cn/com/ty/lift/push/websocket/dao/model/RealTimeMessage.java

@@ -1,26 +0,0 @@
-package cn.com.ty.lift.push.websocket.dao.model;
-
-import cn.com.ty.lift.common.model.TimeMessage;
-import lombok.Data;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 用于实时消息的推送
- * @author huangy
- * @date 2018年9月19日
- */
-@Data
-public class RealTimeMessage {
-	
-	private Long size;//消息数量
-	private List<TimeMessage> msgList = new ArrayList<>();//及时消息列表
-	
-	public RealTimeMessage() {}
-	
-	public RealTimeMessage(List<TimeMessage> msgList) {
-		this.msgList = msgList;
-	}
-	
-}

+ 0 - 185
lift-push/src/main/java/cn/com/ty/lift/push/websocket/handler/TimeyMessageHandler.java

@@ -1,185 +0,0 @@
-package cn.com.ty.lift.push.websocket.handler;
-
-import cn.com.ty.lift.common.constants.ApiConstants;
-import cn.com.ty.lift.common.constants.WebSocketConstants;
-import cn.com.ty.lift.common.model.TimeMessage;
-import cn.com.ty.lift.push.message.service.TimeMessageService;
-import cn.com.ty.lift.push.websocket.dao.model.RealTimeMessage;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.web.socket.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class TimeyMessageHandler implements WebSocketHandler {
-
-    private TimeMessageService timeMessageService;
-
-    private RedisTemplate redisTemplate;
-
-    public TimeyMessageHandler() {
-    }
-
-    public TimeyMessageHandler(TimeMessageService TimeMessageService, RedisTemplate redisTemplate) {
-        this.timeMessageService = TimeMessageService;
-        this.redisTemplate = redisTemplate;
-    }
-
-    //在线用户列表
-    private static final Map<Long, WebSocketSession> users;
-
-    static {
-        users = new HashMap<>();
-    }
-
-    //新增socket
-    @Override
-    public void afterConnectionEstablished(WebSocketSession session) {
-        //用户登录连接后,将用户id放入到在线用户列表中
-        Long userId = getCurrentUser(session);
-        if (userId == null) {
-            users.put(userId, session);
-            //获取用户实时消息
-            List<TimeMessage> TimeMessageList = timeMessageService.list(new QueryWrapper<TimeMessage>()
-                    .eq("view_flag", WebSocketConstants.IS_NOT_VIEW)
-                    .eq("user_id", userId)
-                    .eq("device_model", ApiConstants.DeviceModel.PC)
-            );
-            //将消息推送给用户
-            pushMessageToUser(userId, TimeMessageList);
-        }
-    }
-
-    //接收socket信息
-    @Override
-    public void handleMessage(WebSocketSession webSocketSession, WebSocketMessage<?> webSocketMessage) {
-
-    }
-
-    /**
-     * @param TimeMessages 推送的消息
-     * @return 是否推送成功
-     * @description 保存用户信息,并将消息推送给多个用户
-     * @date 2020/5/2 4:28 下午
-     */
-    public boolean saveAndPushMessageToUsers(List<TimeMessage> TimeMessages) {
-        if (TimeMessages != null && TimeMessages.size() > 0) {
-            //先将即使消息保存到数据库
-            if (timeMessageService.saveBatch(TimeMessages)) {
-                List<Long> userIds = new ArrayList<>();
-                TimeMessages.forEach(TimeMessage -> {
-                    userIds.add(TimeMessage.getUserId());
-                });
-                return pushMessageToUsers(userIds, TimeMessages);
-            }
-        }
-        return false;
-    }
-
-    /**
-     * @return boolean
-     * @Author huangyuan
-     * @Description 给多个用户推送消息
-     * @Date 21:36 2019-04-19
-     * @Param [userIds, TimeMessages, count]
-     **/
-    public static boolean pushMessageToUsers(List<Long> userIds, List<TimeMessage> TimeMessages) {
-        try {
-            if (userIds != null && userIds.size() > 0) {
-                for (Long userId : userIds) {
-                    WebSocketSession session = users.get(userId);
-                    if (session != null) {
-                        //新建消息体
-                        RealTimeMessage realTimeMessage;
-                        if (TimeMessages != null && TimeMessages.size() > 0) {
-                            realTimeMessage = new RealTimeMessage(TimeMessages);
-                            realTimeMessage.setSize((long) TimeMessages.size());
-                        } else {
-                            realTimeMessage = new RealTimeMessage();
-                            realTimeMessage.setSize(0L);
-                        }
-                        session.sendMessage(new TextMessage(JSONUtil.parseObj(realTimeMessage).toString()));
-                    }
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return false;
-        }
-        return true;
-    }
-
-
-    /**
-     * @return boolean
-     * @Author huangyuan
-     * @Description 把消息推给单个用户
-     * @Date 21:35 2019-04-19
-     * @Param [userId, TimeMessages]
-     **/
-    public static boolean pushMessageToUser(Long userId, List<TimeMessage> TimeMessages) {
-        List<Long> userIds = new ArrayList<>();
-        userIds.add(userId);
-        return pushMessageToUsers(userIds, TimeMessages);
-    }
-
-    /**
-     * @return boolean
-     * @Author huangyuan
-     * @Description 给单独用户推送信息
-     * @Date 00:35 2019-04-20
-     * @Param [userId, TimeMessage]
-     **/
-    public static boolean pushMessageToUser(Long userId, TimeMessage TimeMessage) {
-        List<TimeMessage> TimeMessageList = new ArrayList<>();
-        TimeMessageList.add(TimeMessage);
-        return pushMessageToUser(userId, TimeMessageList);
-    }
-
-    @Override
-    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
-        if (session.isOpen()) {
-            session.close();
-        }
-        System.out.println("连接出错");
-        users.remove(getCurrentUser(session));
-    }
-
-    @Override
-    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
-        System.out.println("连接已关闭:" + status);
-        users.remove(getCurrentUser(session));
-    }
-
-    @Override
-    public boolean supportsPartialMessages() {
-        return false;
-    }
-
-    /**
-     * 获取用户id,作为标识
-     *
-     * @param session
-     * @return Long
-     * @throws
-     * @author huangy
-     * @date 2018年9月18日
-     */
-    private Long getCurrentUser(WebSocketSession session) {
-        String authToken = (String) session.getAttributes().get(ApiConstants.AUTHORIZATION_TOKEN);
-        Object mobileUserInfo = redisTemplate.opsForValue().get(authToken);
-        if (mobileUserInfo != null) {
-            Object userInfo = redisTemplate.opsForValue().get(mobileUserInfo);
-            if (userInfo != null) {
-                Map<String, Object> currentUserInfoMap = JSONUtil.parseObj(userInfo);
-                return (Long) currentUserInfoMap.get(ApiConstants.CURRENT_USER_ID);
-            }
-        }
-        return null;
-    }
-
-}

+ 0 - 12
lift-push/src/main/java/cn/com/ty/lift/push/websocket/service/UserService.java

@@ -1,12 +0,0 @@
-package cn.com.ty.lift.push.websocket.service;
-
-import org.springframework.stereotype.Service;
-
-/**
- * @author huangyuan
- * @date 2019-12-22
- * @description 用户
- */
-@Service
-public class UserService {
-}

+ 8 - 6
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/UserApplicationService.java

@@ -185,7 +185,7 @@ public class UserApplicationService extends ServiceImpl<UserApplicationMapper, U
                 //设置申请人角色信息
                 if (userIdToRole != null) {
                     Role role = userIdToRole.get(userApplication.getUserId());
-                    if(role != null) {
+                    if (role != null) {
                         userApplyResponse.setRoleName(role.getName());
                     }
                 }
@@ -379,11 +379,13 @@ public class UserApplicationService extends ServiceImpl<UserApplicationMapper, U
                 CommonEnum.DefaultRole.CLERK.getCode());
         //获取项目所在的区域主管的信息
         ProjectInfo projectInfo = projectService.getProjectById(userApplyRequest.getProjectId());
-        if (projectInfo.getRegionDirectorId() != null) {
-            PushUserInfo regionDirector = pushUserService.getCompanyUserInfoByUserId(companyId,
-                    projectInfo.getRegionDirectorId());
-            if (regionDirector != null) {
-                pushUserInfoList.add(regionDirector);
+        if (projectInfo != null) {
+            if (projectInfo.getRegionDirectorId() != null) {
+                PushUserInfo regionDirector = pushUserService.getCompanyUserInfoByUserId(companyId,
+                        projectInfo.getRegionDirectorId());
+                if (regionDirector != null) {
+                    pushUserInfoList.add(regionDirector);
+                }
             }
         }
         if (pushUserInfoList != null && pushUserInfoList.size() > 0) {