| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- namespace mall\controllers;
- use bizMall\goods\services\GoodsService;
- use bizMall\merchant\services\MerchantService;
- use bizMall\message\services\ChatService;
- use common\components\business;
- use common\components\util;
- use Yii;
- use GatewayClient\Gateway;
- class ChatController extends BaseController
- {
-
- //聊天首页,前端使用
- public function actionIndex()
- {
- return $this->renderPartial('index');
- }
-
- //绑定 shish 2019.12.28
- public function actionBindUser()
- {
- $post = Yii::$app->request->post();
- $clientId = isset($post['clientId']) ? $post['clientId'] : '';
- $userId = $this->userId;
- Gateway::bindUid($clientId, $userId);
- }
- //聊天双方的用户信息 shish 2019.12.30
- public function actionBegin()
- {
- //新增最近联系人
- ChatService::addRecentlyUser($this->sjId, $this->userId);
- util::success(['merchant' => $this->sj, 'user' => $this->user]);
- }
- //发消息给老板 shish 2019.12.28
- public function actionSend()
- {
- $post = Yii::$app->request->post();
- $type = isset($post['type']) ? $post['type'] : 'text';
- $arr = [];
- $arr['type'] = $type;
- $arr['source'] = 'user';
- $arr['time'] = '12:51';
- switch ($type) {
- case 'text':
- //文字
- $content = $post['content'];
- $arr['content'] = $content;
- break;
- case 'img':
- //图片
- $shortUrl = $post['shortUrl'];
- $return = business::formatUploadImg($shortUrl);
- $arr['url'] = $return['url'];
- $arr['smallUrl'] = $return['smallUrl'];
- break;
- case 'link':
- //常用链接
- $id = $post['linkId'];
- $respond = MerchantService::getCommonUrl($id);
- $arr['name'] = $respond['name'];
- $arr['img'] = $respond['img'];
- $arr['url'] = $respond['url'];
- break;
- case 'goods':
- //商品
- $id = $post['goodsId'];
- $info = GoodsService::getGoodsInfo($id);
- GoodsService::valid($info, $this->sjId);
- $arr['goodsName'] = $info['goodsName'];
- $arr['img'] = isset($info['smallImgList'][0]) ? $info['smallImgList'][0] : '';
- $arr['price'] = isset($info['price']) ? $info['price'] : 300;
- break;
- }
- $data[] = $arr;
-
- $id = 'merchantChat_' . $this->sjId;
- $sjId = $this->sjId;
- $userId = $this->userId;
- $chatOnline = Gateway::getClientIdByUid($id);
- if ($chatOnline) {
- //直接发送
- Gateway::sendToUid($id, json_encode($data));
- util::success($data);
- }
- //有打开后台但没打开聊天框,通知有新消息
- $consoleId = 'merchantConsole_' . $this->sjId;
- $consoleOnline = Gateway::getClientIdByUid($consoleId);
- if ($consoleOnline) {
- $data = ['type' => 'newMessage', 'status' => 1];
- Gateway::sendToUid($consoleId, json_encode($data));
- }
- util::success($data);
- }
-
- //关闭当前链接
- public function actionClose()
- {
- $post = Yii::$app->request->post();
- $clientId = isset($post['clientId']) ? $post['clientId'] : '';
- Gateway::closeClient($clientId);
- }
-
- //最近聊天的内容 shish 2019.12.29
- public function actionRecentlyMessage()
- {
- $respond = ChatService::getMessageList($this->userId);
- util::success($respond);
- }
-
- }
|