From a4b3ee325c7354579d495bc74a777e494e5ec38c Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Fri, 06 Feb 2026 18:18:44 +0800
Subject: [PATCH] 商品可以价格面议 选择走访时显示输入走访企业名 分会添加活动时要总会审核 分类添加人数限制,添加活动选择了填写人数限制的分类时活动名额下显示该分类人数限制为15 同一个企业30天内只能走访一次,在30天内走访同一个企业时提示该企业已被走访xx天后才可以从新走访
---
admin/app/api/controller/plus/business/chat/Chat.php | 70 ++++++++++++++++++++++------------
1 files changed, 45 insertions(+), 25 deletions(-)
diff --git a/admin/app/api/controller/plus/business/chat/Chat.php b/admin/app/api/controller/plus/business/chat/Chat.php
index 5ddb294..915af34 100644
--- a/admin/app/api/controller/plus/business/chat/Chat.php
+++ b/admin/app/api/controller/plus/business/chat/Chat.php
@@ -6,6 +6,7 @@
use app\api\model\plus\business\chat\Chat as ChatModel;
use app\api\model\plus\business\chat\Conversation as ConversationModel;
use app\api\model\plus\business\chat\Participant;
+use app\api\model\settings\Setting as SettingModel;
use app\api\model\user\User as UserModel;
use app\common\model\plus\business\Business as BusinessModel;
@@ -61,11 +62,32 @@
// 更新会话时间
$conversationModel = new ConversationModel();
$conversationModel->updateConversationTime($conversationId);
-
- // 获取刚发送的消息
- $message = $chatModel->with(['sender'])->find($chatModel->chat_id);
-
- return $this->renderSuccess('发送成功', $message ? $message->toArray() : []);
+ // 准备WebSocket消息数据
+ $wsMessage = [
+ 'type' => 'message',
+ 'user_id' => $userId,
+ 'to_user_id' => 0, // 需要确定接收者ID
+ 'content' => $content,
+ 'conversation_id' => $conversationId,
+ 'business_card_id' => $businessCardId,
+ 'chat_id' => $chatModel->chat_id,
+ 'time' => date('Y-m-d H:i:s')
+ ];
+
+ // 确定接收者ID
+ $participantModel = new Participant();
+ $participants = $participantModel->where('conversation_id', $conversationId)
+ ->where('user_id', '<>', $userId)
+ ->select();
+
+ if (!empty($participants)) {
+ $wsMessage['to_user_id'] = $participants[0]['user_id'];
+ }
+
+ return $this->renderSuccess('发送成功', [
+ 'message' => $chatModel->toArray(),
+ 'ws_message' => $wsMessage
+ ]);
} else {
return $this->renderError('发送失败');
}
@@ -114,15 +136,14 @@
$conversationModel = new ConversationModel();
$conversations = $conversationModel->getUserConversations($param);
-
// 为每个会话添加未读消息数量
$chatModel = new ChatModel();
foreach ($conversations as &$conversation) {
$conversation['unread_count'] = $chatModel->getUnreadCount($conversation['conversation_id'], $param['user_id']);
-
+ $chatData=$chatModel->where('conversation_id',$conversation['conversation_id'])->order('create_time','desc')->find();
// 获取最后一条消息
- if (!empty($conversation['messages'])) {
- $conversation['last_message'] = end($conversation['messages']);
+ if (!empty($chatData)) {
+ $conversation['last_message'] = $chatData;
}
}
@@ -137,30 +158,29 @@
$user = $this->getUser();
$userId = $user['user_id'];
- $chatId = $this->request->post('chat_id/d', 0);
- $conversationId = $this->request->post('conversation_id/d', 0);
+ $param=request()->param();
- if (empty($chatId) && empty($conversationId)) {
+ if (empty($param['chat_id']) && empty($param['conversation_id'])) {
return $this->renderError('参数错误');
}
$chatModel = new ChatModel();
- if (!empty($chatId)) {
+ if (!empty($param['chat_id'])) {
// 标记单条消息为已读
- $result = $chatModel->markAsRead($chatId, $userId);
+ $result = $chatModel->markAsRead($param['chat_id'], $userId);
$error=$chatModel->getError();
} else {
- $chatDate=$chatModel->where('conversation_id',$conversationId)->where('sender_id','<>',$userId)->find();
+ $chatDate=$chatModel->where('conversation_id',$param['conversation_id'])->where('sender_id','<>',$userId)->find();
if (empty($chatDate)){
return $this->renderSuccess('标记成功');
}
// 标记整个会话为已读
$participantModel = new Participant();
- $result = $participantModel->markConversationAsRead($conversationId, $chatDate['sender_id']);
+ $result = $participantModel->markConversationAsRead($param['conversation_id'], $chatDate['sender_id']);
// 更新会话中所有消息的已读状态
if ($result) {
- $chatModel->where('conversation_id', $conversationId)
+ $chatModel->where('conversation_id', $param['conversation_id'])
->where('sender_id', '<>', $userId)
->where('is_read', 0)
->update([
@@ -200,17 +220,16 @@
if (!$businessCard) {
return $this->renderError('名片不存在');
}
- if ($businessCard['user_id'] == $userId) {
- return $this->renderError('不能与自己建立会话');
- }
$conversationModel = new ConversationModel();
// 检查是否已存在会话
- $conversation = $conversationModel->getConversationByBusinessCard($businessCardId);
-
- if (!$conversation) {
+ $conversation = $conversationModel->getConversationByBusinessCardUser($businessCardId,$userId);
+ if ($businessCard['user_id'] == $userId&&!$conversation) {
+ return $this->renderError('不能与自己建立会话');
+ }
+ if (!$conversation) {
// 创建新会话
$participants = [$userId, $businessCard['user_id']];
$conversationId = $conversationModel->createConversation($businessCardId, $participants);
@@ -223,8 +242,9 @@
// 添加未读消息数量
$chatModel = new ChatModel();
$conversation['unread_count'] = $chatModel->getUnreadCount($conversation['conversation_id'], $userId);
-
- return $this->renderSuccess('获取成功', compact('conversation'));
+
+ $wsUrl = SettingModel::getSysConfig()['url'];
+ return $this->renderSuccess('获取成功', compact('conversation','wsUrl'));
} else {
return $this->renderError('创建会话失败');
}
--
Gitblit v1.9.2