From 3b0ec518a0f89b8864e4bbdf7073d3d84861b0f7 Mon Sep 17 00:00:00 2001 From: xuan <3142316616@qq.com> Date: Tue, 17 Dec 2024 00:00:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=8C=E7=99=BB=E5=BD=95=E6=88=90=E5=8A=9F=E5=90=8E?= =?UTF-8?q?=E4=BC=9A=E5=B0=86ID=E5=AD=98=E5=82=A8=E5=88=B0=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=EF=BC=8C=E7=9B=B8=E5=85=B3=E5=87=BD=E6=95=B0=E5=9C=A8?= =?UTF-8?q?token=E6=96=87=E4=BB=B6=E5=A4=B9=E3=80=82=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=BF=98=E6=9C=89=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/token/auth.js | 19 +++- src/utils/axiosConfig.js | 2 +- src/views/chat/chat.vue | 222 +++++++++++++++++++++++++++----------- src/views/login/login.vue | 9 +- vue.config.js | 16 +++ 5 files changed, 202 insertions(+), 66 deletions(-) diff --git a/src/token/auth.js b/src/token/auth.js index 56c35e6f..bfe36193 100644 --- a/src/token/auth.js +++ b/src/token/auth.js @@ -13,6 +13,23 @@ export function getToken() { export function removeToken() { localStorage.removeItem('authToken'); } - + + +// 存储、获取、删除用户登录后的个人ID +// 定义 setUserId 函数,用于将 UserId 存储到 localStorage +export function setUserId(id) { + localStorage.setItem('UserId', id); +} + +// 定义 getUserId 函数,用于从 localStorage 获取 UserId +export function getUserId() { + return localStorage.getItem('UserId'); +} + +// 定义 removeUserId 函数,用于从 localStorage 删除 UserId +export function removeUserId() { + localStorage.removeItem('UserId'); +} + \ No newline at end of file diff --git a/src/utils/axiosConfig.js b/src/utils/axiosConfig.js index c0dfc6da..a6561ad7 100644 --- a/src/utils/axiosConfig.js +++ b/src/utils/axiosConfig.js @@ -4,7 +4,7 @@ import {getToken} from '@/token/auth' // 注意这里使用了解构赋值来导 // 创建axios实例 const service = axios.create({ - // baseURL: 'http://47.122.59.26:8080/api', // 配置基础URL 如果服务器域名发生变化统一可以去.env文件修改 + // baseURL: 'http://47.122.59.26:8080/api', // baseURL: 'http://10.205.10.22:8081/loveforest/api/', timeout: 5000, // 请求超时时间 }); diff --git a/src/views/chat/chat.vue b/src/views/chat/chat.vue index ce8e6e13..6254a114 100644 --- a/src/views/chat/chat.vue +++ b/src/views/chat/chat.vue @@ -17,7 +17,8 @@
{{ item.name }}
{{ getLatestNew(item) }}
-{{ item.chatHistory[item.chatHistory.length - 1].time.split(' ')[1] }}
+{{ item.chatHistory[item.chatHistory.length - 1].time.split(' ')[1] }}
+00:00
@@ -84,6 +85,9 @@ import HonneyBtn from './HonneyBtn.vue'; import ChatCard from './ChatCard.vue'; import ChatList from './ChatList.vue'; +import {getToken,getUserId} from '@/token/auth' +import axios from 'axios'; + export default { name: 'chatIndex', // 添加组件名称 data(){ @@ -92,6 +96,7 @@ export default { new_msg_nums: 1, chatWith:'', userInfo:{ + id: Number(), name:'我', icon:'/icon/abc.jpg' }, @@ -101,62 +106,62 @@ export default { // 由于编译后文件夹名称会发生改变,所以把icon图片单独放到服务器的文件夹下面以此来跳过编译(public文件夹) // 这里文件路径命名是相对于public的绝对路径 friendsInfoList: [ - {name:'潇潇',icon:'/icon/icon.png',position:'london',birth:'2004-1-1',concern_status:false,black_status:true,beeing_friends_time: 302, - chatHistory:[ - {name:'我',content:'早重中之重做做做做做做做做做做做做做做做做做做做战争之子战争之子做做做做',time:'2024-11-24 1:24'}, - {name:'潇潇',content:'中',time:'2024-11-24 2:11'}, - {name:'我',content:'晚',time:'2024-11-24 3:24'}, - ]}, - {name:'小刚','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 2, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'小刚',content:'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh',time:'2024-11-25 22:11'}, - ]}, - {name:'吴伟',icon:'/icon/icon.png',position:'endland',birth:'2004-5-2',concern_status:false,black_status:false,beeing_friends_time: 32, - chatHistory:[ - {name:'我',content:'早上好',time:'2024-11-24 22:25'}, - {name:'吴伟',content:'iii',time:'2024-11-24 23:11'}, - ]}, - {name:'小闽','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'小闽',content:'h',time:'2024-11-25 22:11'}, - ]}, - {name:'小','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'小',content:'h',time:'2024-11-25 22:11'}, - ]}, - {name:'闽','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'闽',content:'h',time:'2024-11-25 22:11'}, - ]}, - {name:'哈哈','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'哈哈',content:'h',time:'2024-11-25 22:11'}, - ]}, - {name:'kk','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'kk',content:'h',time:'2024-11-25 22:11'}, - ]}, - {name:'44','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'44',content:'h',time:'2024-11-25 22:11'}, - ]}, - {name:'77','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'77',content:'h',time:'2024-11-25 22:11'}, - ]}, - {name:'88','icon':'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, - chatHistory:[ - {name:'我',content:'you are',time:'2024-11-24 22:24'}, - {name:'88',content:'h',time:'2024-11-25 22:11'}, - ]}, + // {name:'潇潇',icon:'/icon/icon.png',position:'london',birth:'2004-1-1',concern_status:false,black_status:true,beeing_friends_time: 302, + // chatHistory:[ + // {name:'我',content:'早重中之重做做做做做做做做做做做做做做做做做做做战争之子战争之子做做做做',time:'2024-11-24 1:24'}, + // {name:'潇潇',content:'中',time:'2024-11-24 2:11'}, + // {name:'我',content:'晚',time:'2024-11-24 3:24'}, + // ]}, + // {name:'小刚',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 2, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'小刚',content:'hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh',time:'2024-11-25 22:11'}, + // ]}, + // {name:'吴伟',icon:'/icon/icon.png',position:'endland',birth:'2004-5-2',concern_status:false,black_status:false,beeing_friends_time: 32, + // chatHistory:[ + // {name:'我',content:'早上好',time:'2024-11-24 22:25'}, + // {name:'吴伟',content:'iii',time:'2024-11-24 23:11'}, + // ]}, + // {name:'小闽',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'小闽',content:'h',time:'2024-11-25 22:11'}, + // ]}, + // {name:'小',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'小',content:'h',time:'2024-11-25 22:11'}, + // ]}, + // {name:'闽',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'闽',content:'h',time:'2024-11-25 22:11'}, + // ]}, + // {name:'哈哈',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'哈哈',content:'h',time:'2024-11-25 22:11'}, + // ]}, + // {name:'kk',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'kk',content:'h',time:'2024-11-25 22:11'}, + // ]}, + // {name:'44',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'44',content:'h',time:'2024-11-25 22:11'}, + // ]}, + // {name:'77',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'77',content:'h',time:'2024-11-25 22:11'}, + // ]}, + // {name:'88',icon:'/icon/UserIcon.png',position:'china',birth:'2003-3-4',concern_status:false,black_status:false,beeing_friends_time: 1, + // chatHistory:[ + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + // {name:'88',content:'h',time:'2024-11-25 22:11'}, + // ]}, ], showSearchList: [], recomendList: [ @@ -169,6 +174,8 @@ export default { mounted(){ if(this.searchName == '') this.showSearchList = this.friendsInfoList + + this.get_friendsInfoList() }, components:{ HonneyBtn, @@ -177,6 +184,94 @@ export default { ChatList }, methods:{ + async save_chat_message(senderId,receiverId,content){ + try{ + const response = await axios.post('/messages/send',{ + senderId: senderId, + receiverId: receiverId, + content: content + },{ + headers:{Authorization : 'Bearer '+getToken()} + }) + console.log(response.data) + }catch(error){ + alert('消息保存失败',error) + } + }, + async get_friendsInfoList(){ + try{ + // const tempt_chat = {name:'',content:'',time:''} + const UserId = getUserId() + const token = 'Bearer '+getToken() + console.log(UserId,token) + const response1 =await axios.get(`/relationships/${UserId}`,{ + headers:{Authorization : token} + }) + const data = response1.data + console.log(data) + + for(let i = 0;i< data.length;i++) + { + let tempt_data = {id:Number(),name:'',icon:'/icon/UserIcon.png',position:'DEFAULT',birth:'',concern_status:false,black_status:false,beeing_friends_time: 0, + chatHistory:[]} + + // {name:'我',content:'you are',time:'2024-11-24 22:24'}, + let response2 + if(data[i].userId1 == UserId){ + tempt_data.id = data[i].userId2 + response2 = await axios.get(`/messages/chat?userId1=${UserId}&userId2=${data[i].userId2}`,{ + headers:{Authorization : token} + }) + }else if(data[i].userId2 == UserId){ + tempt_data.id = data[i].userId1 + response2 = await axios.get(`/messages/chat?userId1=${UserId}&userId2=${data[i].userId1}`,{ + headers:{Authorization : token} + }) + } + + let chat_history = response2.data + console.log(chat_history) + + if(chat_history.length != 0){ + for(let j = 0;j < chat_history.length ; j++){ + let tempt_chat = {name:'',content:'',time:''} + + if(chat_history[j].senderId == UserId){ + tempt_chat.name = data[i].myNickname + }else{ + tempt_chat.name = data[i].otherUserNickname + } + + tempt_chat.content = chat_history[j].content + tempt_chat.time = chat_history[j].timestamp.replace('T',' ') + // console.log(tempt_chat) + tempt_data.chatHistory.push(tempt_chat) + } + } + + tempt_data.name = data[i].otherUserNickname + tempt_data.birth = data[i].otherUserBirthday + tempt_data.beeing_friends_time = data[i].daysSinceCreated + if(data[i].status == 'friend'){ + tempt_data.concern_status = true + tempt_data.black_status = false + }else if(data[i].status == 'black'){ + tempt_data.concern_status = false + tempt_data.black_status = true + }else if(data[i].status == 'normal'){ + tempt_data.concern_status = false + tempt_data.black_status = false + } + this.friendsInfoList.push(tempt_data) + this.userInfo.name = data[i].myNickname + } + + this.userInfo.id = UserId + console.log(this.friendsInfoList,this.userInfo) + }catch(error){ + alert('获取好友信息失败',error) + } + }, clickFriendList(item){ let who = item.name if(this.chatWith != who){ @@ -190,13 +285,15 @@ export default { const dayjs = require('dayjs') const formattedTime = dayjs().format('YYYY-MM-DD HH:mm'); console.log(formattedTime) - for(let i=0;i