Просмотр исходного кода

Weenier 168otc项目部署 0630

wesmiler 3 лет назад
Родитель
Сommit
eae642bbab

+ 35 - 2
app/Console/Commands/Socket.php

@@ -2,7 +2,9 @@
 
 namespace App\Console\Commands;
 
-use App\Services\Common\ChatMessageService;
+use App\Services\ChatMessageService;
+use App\Services\Common\MemberService;
+use App\Services\RedisService;
 use Illuminate\Console\Command;
 
 class Socket extends Command
@@ -109,9 +111,40 @@ class Socket extends Command
                     }
                     break;
                 default:  // 默认聊天
-                    if(!ChatMessageService::make()->saveData($frame->fd, $data)){
+                    $toUid = isset($data['to_uid'])? intval($data['to_uid']) : 0;
+                    $fromUid = isset($data['from_uid'])? intval($data['from_uid']) : 0;
+                    $messageType = isset($data['message_type'])? $data['message_type'] : 1;
+                    if($toUid<=0 || $fromUid<=0){
+                        return false;
+                    }
+                    if(!ChatMessageService::make()->saveData($data)){
+                        $this->ws->push($frame->fd, lang(ChatMessageService::make()->getError()));
+                        return false;
+                    }
 
+                    $toBindData = RedisService::get("chats:bind:{$toUid}");
+                    $toFd = isset($toBindData['fd'])? $toBindData['fd'] : 0;
+                    if($toBindData && $toFd){
+                        $toInfo = MemberService::make()->getInfo($toUid);
+                        $fromInfo = MemberService::make()->getInfo($fromUid);
+                        $message = isset($data['message'])? $data['message'] : '';
+                        $data = [
+                            'type'=> isset($data['type'])? $data['type'] : 1,
+                            'message_type'=> $messageType,
+                            'from_uid'=> $fromUid,
+                            'from_userName'=> isset($fromInfo['username'])? $fromInfo['username'] : '',
+                            'to_uid'=> isset($data['to_uid'])? $data['to_uid'] : 0,
+                            'to_userName'=> isset($toInfo['username'])? $toInfo['username'] : '',
+                            'chat_key'=> getChatKey($fromUid, $toUid),
+                            'message'=> $messageType==2&&$message? get_image_url($message) : $message,
+                            'create_time'=> time(),
+                            'time_text'=> date('m-d H:i'),
+                            'is_read'=> 1,
+                            'status'=> 1,
+                        ];
+                        $this->ws->push($toFd, json_encode($data, 256));
                     }
+
                     break;
 
             }

+ 16 - 0
app/Helpers/function.php

@@ -221,3 +221,19 @@ if(!function_exists('getCode')){
     }
 
 }
+
+
+if(!function_exists('getChatKey')){
+    /**
+     * 获取聊天窗口KEY
+     * @param $fromUid
+     * @param $toUid
+     * @return string
+     */
+    function getChatKey($fromUid, $toUid){
+        $arr = [$fromUid,$toUid];
+        arsort($arr);
+
+        return implode('', $arr);
+    }
+}

+ 38 - 8
app/Services/ChatMessageService.php

@@ -45,16 +45,46 @@ class ChatMessageService extends BaseService
     }
 
     /**
-     * 聊天对话窗口唯一KEY
-     * @param $fromUid
-     * @param $toUid
-     * @return string
+     * 绑定用户
+     * @param $fd
+     * @param $data
+     * @return bool
      */
-    public function getChatKey($fromUid, $toUid)
+    public function bind($fd, $data)
     {
-        $chatKeys = [$fromUid, $toUid];
-        asort($chatKeys);
-        return implode('', $chatKeys);
+        $userId = isset($data['from_uid'])? intval($data['from_uid']) : 0;
+        if($userId<=0){
+            $this->error = '1013';
+            return false;
+        }
+
+        RedisService::set("chats:bind:{$userId}", ['fd'=> $fd, 'user_id'=> $userId], 86400);
+        return true;
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     */
+    public function saveData($data)
+    {
+
+        $data = [
+            'type'=> isset($data['type'])? $data['type'] : 1,
+            'message_type'=> isset($data['message_type'])? $data['message_type'] : 1,
+            'from_uid'=> isset($data['from_uid'])? $data['from_uid'] : 1,
+            'to_uid'=> isset($data['to_uid'])? $data['to_uid'] : 1,
+            'order_no'=> isset($data['order_no'])? $data['order_no'] : '',
+            'chat_key'=> getChatKey($data['from_uid'],$data['to_uid']),
+            'message'=> isset($data['message'])? $data['message'] : '',
+            'create_time'=> time(),
+            'update_time'=> time(),
+            'is_read'=> 2,
+            'status'=> 1,
+            'mark'=> 1,
+        ];
+
+        return parent::edit($data); // TODO: Change the autogenerated stub
     }
 
     /**

+ 0 - 80
app/Services/Common/ChatMessageService.php

@@ -1,80 +0,0 @@
-<?php
-// +----------------------------------------------------------------------
-// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
-// +----------------------------------------------------------------------
-// | 版权所有 2017~2021 LARAVEL研发中心
-// +----------------------------------------------------------------------
-// | 官方网站: http://www.laravel.cn
-// +----------------------------------------------------------------------
-// | Author: laravel开发员 <laravel.qq.com>
-// +----------------------------------------------------------------------
-
-namespace App\Services\Common;
-
-use App\Models\AdModel;
-use App\Models\ApiModel;
-use App\Models\ChatMessageModel;
-use App\Services\BaseService;
-use App\Services\RedisService;
-
-/**
- * 聊天管理-服务类
- * Class ChatMessageService
- * @package App\Services\Common
- */
-class ChatMessageService extends BaseService
-{
-    // 静态对象
-    protected static $instance = null;
-
-    /**
-     * 构造函数
-     * ChatMessageService constructor.
-     */
-    public function __construct()
-    {
-        $this->model = new ChatMessageModel();
-    }
-
-    /**
-     * 静态入口
-     * @return static|null
-     */
-    public static function make()
-    {
-        if (!self::$instance) {
-            self::$instance = (new static());
-        }
-        return self::$instance;
-    }
-
-    /**
-     * 绑定用户
-     * @param $fd
-     * @param $data
-     * @return bool
-     */
-    public function bind($fd, $data)
-    {
-        $userId = isset($data['from_uid'])? intval($data['from_uid']) : 0;
-        if($userId<=0){
-            $this->error = '1013';
-            return false;
-        }
-
-        RedisService::set("caches:chats:bind:{$userId}", ['fd'=> $fd, 'user_id'=> $userId], 86400);
-        return true;
-    }
-
-    /**
-     * 添加或编辑
-     * @return array
-     */
-    public function saveData($fd, $data)
-    {
-
-
-        return parent::edit($data); // TODO: Change the autogenerated stub
-    }
-
-}

+ 2 - 2
app/Services/Common/TradeOrderService.php

@@ -545,7 +545,7 @@ class TradeOrderService extends BaseService
             'to_uid' => $businessInfo['id'],
             'type' => 2,
             'order_no' => $orderNo,
-            'chat_key' => ChatMessageService::make()->getChatKey($userId, $businessInfo['id']),
+            'chat_key' => getChatKey($userId, $businessInfo['id']),
             'message' => "来自用户{$username}的购买订单,金额{$total},单号{$orderNo},时间" . date('Y-m-d H:i:s'),
             'message_type' => 1,
             'create_time' => time(),
@@ -721,7 +721,7 @@ class TradeOrderService extends BaseService
             'to_uid' => $businessInfo['id'],
             'type' => 2,
             'order_no' => $orderNo,
-            'chat_key' => ChatMessageService::make()->getChatKey($userId, $businessInfo['id']),
+            'chat_key' => getChatKey($userId, $businessInfo['id']),
             'message' => "来自用户{$username}的出售订单,金额{$total},单号{$orderNo},时间" . date('Y-m-d H:i:s'),
             'message_type' => 1,
             'create_time' => time(),