Explorar o código

消息推送,未登陆用户,登陆时推送消息

sunhh hai 1 ano
pai
achega
7d18b18b72

+ 5 - 0
business-service/src/main/java/com/ozs/service/entity/MsgWebPush.java

@@ -72,4 +72,9 @@ public class MsgWebPush extends BaseEntity {
      * 备注
      */
     private String remark;
+
+    /**
+     * 是否推送,1:推送,2:未推
+     */
+    private String online;
 }

+ 2 - 0
business-service/src/main/java/com/ozs/service/mapper/MsgWebPushMapper.java

@@ -27,4 +27,6 @@ public interface MsgWebPushMapper extends BaseMapper<MsgWebPush> {
     int updateByPushId(MsgWebPush msgWebPush);
 
     int readAll(@Param("userId") String userId);
+
+    List<MsgWebPush> getByUserId(@Param("userId") String userId);
 }

+ 2 - 0
business-service/src/main/java/com/ozs/service/service/MsgWebPushService.java

@@ -24,4 +24,6 @@ public interface MsgWebPushService extends IService<MsgWebPush> {
     Map<String, Integer> messageMoreNum(String userId);
 
     int readAll(String userId);
+
+    List<MsgWebPush> getByUserId(String userId);
 }

+ 5 - 0
business-service/src/main/java/com/ozs/service/service/impl/MsgWebPushServiceImpl.java

@@ -135,4 +135,9 @@ public class MsgWebPushServiceImpl extends ServiceImpl<MsgWebPushMapper, MsgWebP
     public int readAll(String userId) {
         return msgWebPushMapper.readAll(userId);
     }
+
+    @Override
+    public List<MsgWebPush> getByUserId(String userId) {
+        return msgWebPushMapper.getByUserId(userId);
+    }
 }

+ 4 - 0
business-service/src/main/resources/mapper/service/MsgWebPushMapper.xml

@@ -88,4 +88,8 @@
         </set>
         where receive_by = #{userId} and status = 1
     </update>
+
+    <select id="getByUserId" parameterType="java.lang.String" resultType="com.ozs.service.entity.MsgWebPush">
+        select * from msg_web_push wehre online = '2' and receive_by = #{userId}
+    </select>
 </mapper>

+ 35 - 3
hazard-admin/src/main/java/com/ozs/web/controller/websocket/WebSocketConteoller.java

@@ -22,6 +22,7 @@ import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.websocket.Session;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -51,6 +52,30 @@ public class WebSocketConteoller extends BaseController {
     @Autowired
     private MsgAppPushService msgAppPushService;
 
+    /**
+     * web 登陆时查询 未登陆时推送的消息 重新推送
+     * @return
+     */
+    @ResponseBody
+    @GetMapping("/getMessage")
+    public Map publish() {
+        String userId = getUserId();
+        List<MsgWebPush> msgWebPushList = msgWebPushService.getByUserId(userId);
+        for (MsgWebPush msgWebPush : msgWebPushList) {
+            webSocketServer.sendOneMessage(userId, msgWebPush.getRemark());
+            msgWebPush.setOnline("1");
+            msgWebPushService.updateById(msgWebPush);
+        }
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("code", 200);
+        return map;
+    }
+
+    /**
+     * 推送消息
+     * @param msgAlarm
+     * @return
+     */
     @ResponseBody
     @PostMapping("/publish")
     public Map publish(@RequestBody MsgAlarm msgAlarm) {
@@ -109,11 +134,18 @@ public class WebSocketConteoller extends BaseController {
                 String content = objStr(msgAlarmResp);
                 log.info("WEBcontent-----" + content);
                 log.info("WEBuserid-----" + userid);
-                // 推送消息reqMsgAlarmVo
-                webSocketServer.sendOneMessage(userid, content);
-
                 // 存入数据
                 MsgWebPush msgWebPush = new MsgWebPush();
+                // 推送消息reqMsgAlarmVo
+                boolean userOnline = webSocketServer.userOnline(userid);
+                if (userOnline) {
+                    webSocketServer.sendOneMessage(userid, content);
+                    msgWebPush.setOnline("1");
+                } else {
+                    // online 是否推送,1:推送,2:未推
+                    msgWebPush.setOnline("2");
+                }
+                msgWebPush.setRemark(content);
                 // 状态:1未读;2已读
                 msgWebPush.setStatus(1);
                 msgWebPush.setPushId(pushId);

+ 8 - 0
hazard-admin/src/main/java/com/ozs/web/controller/websocket/WebSocketServer.java

@@ -34,6 +34,14 @@ public class WebSocketServer {
      */
     private String userId;
 
+    /**
+     * 获取用户是否在线
+     */
+    public boolean userOnline(String userId) {
+        Session session = sessionPool.get(userId);
+        return session != null ? true : false;
+    }
+
     /**
      * 链接成功调用的方法
      */