renderPartial('index'); } //绑定 ssh 2019.12.28 public function actionBindUser() { $post = Yii::$app->request->post(); $clientId = isset($post['clientId']) ? $post['clientId'] : ''; $userId = $this->userId; Gateway::bindUid($clientId, $userId); } //聊天双方的用户信息 ssh 2019.12.30 public function actionBegin() { //新增最近联系人 ChatService::addRecentlyUser($this->sjId, $this->userId); util::success(['merchant' => $this->sj->attributes, 'user' => $this->user]); } //关闭当前链接 public function actionClose() { $post = Yii::$app->request->post(); $clientId = isset($post['clientId']) ? $post['clientId'] : ''; Gateway::closeClient($clientId); } //最近聊天的内容 ssh 2019.12.29 public function actionRecentlyMessage() { $respond = ChatService::getMessageList($this->userId); util::success($respond); } // ---------------------------- 新聊天功能的接口 ---------------------------------- //最近聊天人 public function actionLatestUsers() { $respond = ChatService::getLatestUsers(intval($this->userId)); util::success($respond); } //聊天的内容 public function actionChatHistory() { $roomName = Yii::$app->request->post('roomName'); // 校验 $roomeName 的值,防止越权访问他人数据 $roomName = 'room_messages:' . $roomName; $respond = ChatService::getChatHistory($roomName); util::success($respond); } //客户的未读消息总数 public function actionUnReadMsgCount() { $c = 0; //未登录也会访问这个接口 if (!empty($this->userId)) { $c = ChatService::getUnReadMsgCount($this->userId, 'message'); } util::success(['msg_count' => $c]); } //用 redis key 获取商品报价 public function actionGetQuotedPrice() { $key = Yii::$app->request->post('key'); $keyArr = explode('-', $key); $userId = intval($keyArr[1]); if ($userId != $this->userId) { util::error(-1, '校验失败'); } $key = ChatClass::getQuotedPriceKey($keyArr[0], $keyArr[1], $keyArr[2]); $val = Yii::$app->redis->executeCommand('GET', [$key]); if (empty($val)) { util::success(['price' => -1]); } util::success(['price' => $val]); } // message_server 远程调用专用方法,可用于:1.有未读消息的通知(可以额外添加触发条件)2. public function actionMessageServerCall() { Yii::info('message_server 远程调用'); $callbackData = Yii::$app->request->post(); if (empty($callbackData)) { $postStr = file_get_contents('php://input'); // 处理转义字符,将JSON字符串正确解析为数组 //$postStr = stripslashes($postStr); $callbackData = json_decode($postStr, true); if (empty($callbackData)) { util::fail('回调请求的数据为空'); } } $shopId = $callbackData['shopId'] ?? 0; $userId = $callbackData['userId'] ?? ''; $key = 'has_remind_' . $shopId . '_' . $userId; if (!empty($shopId) && !empty($userId)) { //10秒不重复通知 $hasRemind = Yii::$app->redis->executeCommand('GET', [$key]); if (empty($hasRemind)) { $shop = ShopClass::getById($shopId, true); if (!empty($shop)) { WxMessageClass::newMessageInform($shop, "商城上客户有留言"); Yii::$app->redis->executeCommand('SETEX', [$key, 10, 'has']); //$time = time(); //noticeUtil::push("客户留言已通知花店,shopId:" . $shopId . ' userId:' . $userId . ' time:' . $time, '15280215347'); } } } Yii::info(json_encode($callbackData)); return $this->asJson(['return_code' => 0, 'return_msg' => 'OK']); // 成功状态的返回数据 } }