ioioio 4 лет назад
Родитель
Сommit
2c4e8aff3e

+ 20 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/dto/UnReadDTO.java

@@ -0,0 +1,20 @@
+package org.springblade.client.dto;
+
+import lombok.Data;
+
+@Data
+public class UnReadDTO
+{
+	private Boolean unRead;
+
+	private Integer unReadNum;
+
+	@Override
+	public String toString()
+	{
+		return "{" +
+			"\"unRead\":" + unRead +
+			",\"unReadNum\":" + unReadNum +
+			'}';
+	}
+}

+ 8 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -193,6 +193,14 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 				}
 				proecess.setAuditStatus("S");
 				baseMapper.updateById(proecess);
+				//消息通知下一级
+				message.setToUserId(proecess.getSendUserId());
+				message.setToUserName(proecess.getSendName());
+				R save = messageClient.save(message);
+				if(!save.isSuccess())
+				{
+					throw new SecurityException("发送消息失败");
+				}
 			}
             //不通过
 			else if(operate==2)

+ 8 - 1
blade-service/blade-client/src/main/java/org/springblade/client/message/controller/MessageController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.client.message.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -29,7 +30,9 @@ import org.springblade.client.message.service.IMessageService;
 import org.springblade.client.vo.MessageVO;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.AesUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.web.bind.annotation.*;
 import org.springblade.core.boot.ctrl.BladeController;
@@ -66,7 +69,11 @@ public class MessageController extends BladeController {
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "分页", notes = "传入message")
 	public R<IPage<Message>> list(Message message, Query query) {
-		IPage<Message> pages = messageService.page(Condition.getPage(query), Condition.getQueryWrapper(message));
+		LambdaQueryWrapper<Message> messageLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		messageLambdaQueryWrapper
+			.like(Message::getToUserId, AuthUtil.getUserId())
+			.eq(Message::getTenantId,AuthUtil.getTenantId());
+		IPage<Message> pages = messageService.page(Condition.getPage(query), messageLambdaQueryWrapper);
 		return R.data(pages);
 	}
 

+ 16 - 7
blade-service/blade-client/src/main/java/org/springblade/client/message/handler/WebSocketHandler.java

@@ -2,6 +2,7 @@ package org.springblade.client.message.handler;
 
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.reflect.FieldUtils;
+import org.springblade.client.dto.UnReadDTO;
 import org.springblade.client.message.service.impl.MessageServiceImpl;
 import org.springblade.core.tool.utils.SpringUtil;
 import org.springblade.system.feign.IApiScopeClient;
@@ -49,11 +50,19 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
 	@Override
 	public void afterConnectionEstablished(WebSocketSession session)
 	{
+
 		// 获取参数
 		String userId = String.valueOf(session.getAttributes().get("user"));
+
+		//当前用户已开启socket的话, 就不需要再次开启了
+		if(userMap.containsKey(userId))
+		{
+			log.info("【当前用户userId】:==>"+userId+",已经开启socket通道,不再开辟新通道");
+			return;
+		}
 		String sessionId = getSessionId(session);
 		userMap.put(userId, getSessionId(session));
-		sessionMap.put(sessionId, session);
+		sessionMap.put(userId, session);
 		log.info("【当前socket在线人数】:==>"+userMap.size());
 		log.info("【当前socket连接数】:==>"+sessionMap.size());
 		send(userId);
@@ -99,12 +108,12 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
 	/**
 	 * 后端发送消息
 	 */
-	public void sendMessage(String user, String message) {
+	public void sendMessage(String user, UnReadDTO unReadDTO) {
 		String sessionId = userMap.get(user);
-		WebSocketSession session = sessionMap.get(sessionId);
+		WebSocketSession session = sessionMap.get(user);
 		try {
-			log.info("【websocket消息】 单点消息:"+message);
-			session.sendMessage(new TextMessage(message));
+			log.info("【websocket消息】 单点消息:"+unReadDTO.toString());
+			session.sendMessage(new TextMessage(unReadDTO.toString()));
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
@@ -117,8 +126,8 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
 			while(true)
 			{
 				MessageServiceImpl messageService = SpringUtil.getBean(MessageServiceImpl.class);
-				Map<String, Object> userMessage = messageService.getUserMessage(Long.valueOf(userId));
-				sendMessage(userId,userMessage.toString());
+				UnReadDTO unReadDTO = messageService.getUserMessage(Long.valueOf(userId));
+				sendMessage(userId,unReadDTO);
 				Thread.sleep(60000);
 			}
 		}

+ 2 - 1
blade-service/blade-client/src/main/java/org/springblade/client/message/service/IMessageService.java

@@ -20,6 +20,7 @@ package org.springblade.client.message.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
+import org.springblade.client.dto.UnReadDTO;
 import org.springblade.client.entity.Message;
 import org.springblade.client.vo.MessageVO;
 import org.springframework.stereotype.Service;
@@ -48,6 +49,6 @@ public interface IMessageService extends IService<Message> {
 	//通过用户角色推送
 	void pushByUserRole(String role,String Message,Integer MessageType);
 
-	Map<String,Object> getUserMessage(Long userId);
+	UnReadDTO getUserMessage(Long userId);
 
 }

+ 10 - 4
blade-service/blade-client/src/main/java/org/springblade/client/message/service/impl/MessageServiceImpl.java

@@ -19,6 +19,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.springblade.client.dto.UnReadDTO;
 import org.springblade.client.entity.Message;
 import org.springblade.client.message.mapper.MessageMapper;
 import org.springblade.client.message.service.IMessageService;
@@ -120,7 +122,7 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
 	}
 
 	@Override
-	public Map<String, Object> getUserMessage(Long userId)
+	public UnReadDTO getUserMessage(Long userId)
 	{
 		//消息列表
 	/*	LambdaQueryWrapper<Message> messageLambdaQueryWrapper=new LambdaQueryWrapper<>();
@@ -139,12 +141,16 @@ public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> impl
 			.eq(Message::getIsRead,0);
 		Integer count = baseMapper.selectCount(readMessageLambdaQueryWrapper);
 		Map map=new HashMap();
-		map.put("unRead",count!=null&&count>0?true:false);
-		map.put("unReadNum",count!=null&&count>0?count:0);
+		UnReadDTO dto=new UnReadDTO();
+		dto.setUnRead(count!=null&&count>0?true:false);
+		dto.setUnReadNum(count!=null&&count>0?count:0);
+
 		/*map.put("list",records);*/
-     return map;
+     return dto;
 	}
 
 
 
+
+
 }