hookehuyr

feat(商品详情页): 实现联系卖家功能的消息发送和聊天室创建

添加聊天相关API调用,在联系卖家时创建聊天室并存储会话ID
发送消息时使用会话ID进行消息发送,优化用户交互流程
1 <!-- 1 <!--
2 * @Date: 2022-09-19 14:11:06 2 * @Date: 2022-09-19 14:11:06
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-07-18 14:42:02 4 + * @LastEditTime: 2025-07-22 16:05:59
5 * @FilePath: /jgdl/src/pages/productDetail/index.vue 5 * @FilePath: /jgdl/src/pages/productDetail/index.vue
6 * @Description: 商品详情页 6 * @Description: 商品详情页
7 --> 7 -->
...@@ -256,6 +256,8 @@ import { checkPermission, PERMISSION_TYPES } from '@/utils/permission' ...@@ -256,6 +256,8 @@ import { checkPermission, PERMISSION_TYPES } from '@/utils/permission'
256 // 导入接口 256 // 导入接口
257 import { getVehicleDetailAPI } from '@/api/car' 257 import { getVehicleDetailAPI } from '@/api/car'
258 import { createOrderAPI } from '@/api/orders' 258 import { createOrderAPI } from '@/api/orders'
259 +import { getChatConversationAPI, sendChatAPI } from '@/api/chat'
260 +
259 import { DEFAULT_COVER_IMG } from '@/utils/config' 261 import { DEFAULT_COVER_IMG } from '@/utils/config'
260 // 导入用户 store 262 // 导入用户 store
261 import { useUserStore } from '@/stores/user' 263 import { useUserStore } from '@/stores/user'
...@@ -350,10 +352,20 @@ const copyWechat = () => { ...@@ -350,10 +352,20 @@ const copyWechat = () => {
350 /** 352 /**
351 * 联系卖家 353 * 联系卖家
352 */ 354 */
355 +const conversation_id = ref('')
353 const handleContactSeller = async () => { 356 const handleContactSeller = async () => {
354 const hasPermission = await checkPermission(PERMISSION_TYPES.CONTACT_SELLER) 357 const hasPermission = await checkPermission(PERMISSION_TYPES.CONTACT_SELLER)
355 if (hasPermission) { 358 if (hasPermission) {
359 + // 获取聊天室ID
360 + const { code, data } = await getChatConversationAPI({
361 + buyer_id: userStore.userInfo.id,
362 + seller_id: product.value.seller.id,
363 + vehicle_id: product.value.id
364 + })
365 + if (code) {
356 showContactModal.value = true 366 showContactModal.value = true
367 + conversation_id.value = data.conversation_id
368 + }
357 } 369 }
358 } 370 }
359 371
...@@ -372,7 +384,7 @@ const addQuickTag = (tag) => { ...@@ -372,7 +384,7 @@ const addQuickTag = (tag) => {
372 /** 384 /**
373 * 发送消息给卖家 385 * 发送消息给卖家
374 */ 386 */
375 -const sendMessageToSeller = () => { 387 +const sendMessageToSeller = async () => {
376 if (!messageText.value.trim()) { 388 if (!messageText.value.trim()) {
377 Taro.showToast({ 389 Taro.showToast({
378 title: '请输入留言内容', 390 title: '请输入留言内容',
...@@ -381,21 +393,21 @@ const sendMessageToSeller = () => { ...@@ -381,21 +393,21 @@ const sendMessageToSeller = () => {
381 return 393 return
382 } 394 }
383 395
396 + // 发送消息
397 + const { code } = await sendChatAPI({
398 + conversation_id: conversation_id.value,
399 + note: messageText.value,
400 + })
401 + if (code) {
384 Taro.showToast({ 402 Taro.showToast({
385 title: '消息发送成功', 403 title: '消息发送成功',
386 icon: 'success' 404 icon: 'success'
387 }) 405 })
406 + }
388 407
389 // 清空输入框并关闭弹框 408 // 清空输入框并关闭弹框
390 messageText.value = '' 409 messageText.value = ''
391 showContactModal.value = false 410 showContactModal.value = false
392 -
393 - // 这里可以调用API发送消息
394 - // sendMessageAPI({
395 - // sellerId: product.value.seller.id,
396 - // message: messageText.value,
397 - // productId: product.value.id
398 - // })
399 } 411 }
400 412
401 /** 413 /**
......