聊天室
This commit is contained in:
parent
80f9ed08a7
commit
e136f303a7
|
@ -17,6 +17,7 @@ import javax.websocket.server.ServerEndpoint;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
@ -33,6 +34,9 @@ public class AppChatSocket {//用户聊天
|
||||||
* 以用户的id为key,WebSocket为对象保存起来
|
* 以用户的id为key,WebSocket为对象保存起来
|
||||||
*/
|
*/
|
||||||
private static Map<String, AppChatSocket> clients = new ConcurrentHashMap<String, AppChatSocket>();
|
private static Map<String, AppChatSocket> clients = new ConcurrentHashMap<String, AppChatSocket>();
|
||||||
|
|
||||||
|
private static Map<String, Session> sessionMap = new ConcurrentHashMap<String, Session>();
|
||||||
|
|
||||||
private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
/**
|
/**
|
||||||
* 会话
|
* 会话
|
||||||
|
@ -76,6 +80,7 @@ public class AppChatSocket {//用户聊天
|
||||||
clients.remove(userId);
|
clients.remove(userId);
|
||||||
}
|
}
|
||||||
clients.put(userId, this);
|
clients.put(userId, this);
|
||||||
|
sessionMap.put(userId,session);
|
||||||
|
|
||||||
/*sendMessageTo("恭喜你连接成功!",wxUserId);*/
|
/*sendMessageTo("恭喜你连接成功!",wxUserId);*/
|
||||||
}
|
}
|
||||||
|
@ -129,13 +134,21 @@ public class AppChatSocket {//用户聊天
|
||||||
wxChatContent.setContent(textMessage);
|
wxChatContent.setContent(textMessage);
|
||||||
wxChatContent.setMessageType(messageType);
|
wxChatContent.setMessageType(messageType);
|
||||||
wxChatContent.setCreateTime(sdf.format(new Date()));
|
wxChatContent.setCreateTime(sdf.format(new Date()));
|
||||||
//判断对方是否在线
|
|
||||||
AppChatSocket chatSocket = clients.get(userId);
|
|
||||||
if (chatSocket!=null) {
|
|
||||||
chatSocket.session.getAsyncRemote().sendText(message);
|
|
||||||
}
|
|
||||||
wxChatContent.setStatus(0);
|
wxChatContent.setStatus(0);
|
||||||
chatContentService.save(wxChatContent);
|
chatContentService.save(wxChatContent);
|
||||||
|
//判断对方是否在线
|
||||||
|
// AppChatSocket chatSocket = clients.get(userId);
|
||||||
|
// if (chatSocket!=null) {
|
||||||
|
// chatSocket.session.getAsyncRemote().sendText(message);
|
||||||
|
// }
|
||||||
|
List<ChatContent> toUsers = chatContentService.selectUserByConversationId(Long.parseLong(chatConversationId));
|
||||||
|
for(ChatContent toUser :toUsers){
|
||||||
|
Session userSession = sessionMap.get(toUser.getUserId());
|
||||||
|
if (userSession!=null) {
|
||||||
|
userSession.getAsyncRemote().sendText(message);
|
||||||
|
System.err.println(this.userId+"发送成功:"+userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
UserEntity userEntity = userService.selectUserById(Long.parseLong(userId));
|
UserEntity userEntity = userService.selectUserById(Long.parseLong(userId));
|
||||||
if(userEntity!=null && StringUtils.isNotBlank(userEntity.getClientid())){
|
if(userEntity!=null && StringUtils.isNotBlank(userEntity.getClientid())){
|
||||||
UserEntity user = userService.selectUserById(Long.parseLong(this.userId));
|
UserEntity user = userService.selectUserById(Long.parseLong(this.userId));
|
||||||
|
@ -146,6 +159,9 @@ public class AppChatSocket {//用户聊天
|
||||||
}
|
}
|
||||||
userService.pushToSingle("新消息提醒",user.getUserName()+":"+textMessage,userEntity.getClientid());
|
userService.pushToSingle("新消息提醒",user.getUserName()+":"+textMessage,userEntity.getClientid());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*AppChatSocket chatSocket = clients.get(userId);
|
/*AppChatSocket chatSocket = clients.get(userId);
|
||||||
if (chatSocket!=null) {
|
if (chatSocket!=null) {
|
||||||
chatSocket.session.getAsyncRemote().sendText(message);
|
chatSocket.session.getAsyncRemote().sendText(message);
|
||||||
|
@ -154,7 +170,6 @@ public class AppChatSocket {//用户聊天
|
||||||
catch (Exception e){
|
catch (Exception e){
|
||||||
log.error("发生了错误了"+e.getMessage(),e);
|
log.error("发生了错误了"+e.getMessage(),e);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,4 +22,6 @@ public interface ChatContentDao extends BaseMapper<ChatContent> {
|
||||||
|
|
||||||
int selectChatCount(@Param("userId") Long userId);
|
int selectChatCount(@Param("userId") Long userId);
|
||||||
|
|
||||||
|
List<ChatContent> selectUserByConversationId(@Param("chatConversationId") Long chatConversationId);
|
||||||
|
|
||||||
}
|
}
|
|
@ -6,6 +6,8 @@ import com.sqx.common.utils.PageUtils;
|
||||||
import com.sqx.modules.chat.entity.ChatContent;
|
import com.sqx.modules.chat.entity.ChatContent;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface ChatContentService extends IService<ChatContent> {
|
public interface ChatContentService extends IService<ChatContent> {
|
||||||
|
|
||||||
PageUtils selectChatContentPage(Integer page, Integer limit, Long chatConversationId,String content);
|
PageUtils selectChatContentPage(Integer page, Integer limit, Long chatConversationId,String content);
|
||||||
|
@ -14,4 +16,6 @@ public interface ChatContentService extends IService<ChatContent> {
|
||||||
|
|
||||||
int selectChatCount(Long userId);
|
int selectChatCount(Long userId);
|
||||||
|
|
||||||
|
List<ChatContent> selectUserByConversationId(Long chatConversationId);
|
||||||
|
|
||||||
}
|
}
|
|
@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@ -36,4 +37,9 @@ public class ChatContentServiceImpl extends ServiceImpl<ChatContentDao, ChatCont
|
||||||
return baseMapper.selectChatCount(userId);
|
return baseMapper.selectChatCount(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ChatContent> selectUserByConversationId(Long chatConversationId) {
|
||||||
|
return baseMapper.selectUserByConversationId(chatConversationId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -47,7 +47,7 @@ public class SysUserTokenServiceImpl extends ServiceImpl<SysUserTokenDao, SysUse
|
||||||
this.updateById(tokenEntity);
|
this.updateById(tokenEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result r = Result.success().put("token", token).put("expire", EXPIRE);
|
Result r = Result.success().put("token", token).put("userId", userId).put("expire", EXPIRE);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,5 +25,10 @@
|
||||||
where status=0 and user_id!=#{userId} and chat_conversation_id in (select chat_conversation_id from chat_conversation where user_id=#{userId} or focused_user_id=#{userId})
|
where status=0 and user_id!=#{userId} and chat_conversation_id in (select chat_conversation_id from chat_conversation where user_id=#{userId} or focused_user_id=#{userId})
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectUserByConversationId" resultType="ChatContent">
|
||||||
|
select distinct user_id
|
||||||
|
from chat_content
|
||||||
|
where chat_conversation_id=#{chatConversationId}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
Loading…
Reference in New Issue