ChatLogic.php 3.0 KB
<?php
/**
 * @remark :
 * @name   :ChatLogic.php
 * @author :lyh
 * @method :post
 * @time   :2025/4/1 14:37
 */

namespace App\Http\Logic\Bside\Gpt;

use App\Http\Logic\Bside\BaseLogic;
use App\Models\Gpt\Chat;
use App\Models\Gpt\ChatItem;
use App\Services\GptService;

class ChatLogic extends BaseLogic
{
    public function __construct()
    {
        parent::__construct();
        $this->param = $this->requestAll;
        $this->model = new Chat();
        $this->itemModel = new ChatItem();
    }

    /**
     * @remark :发送消息
     * @name   :sendMessage
     * @author :lyh
     * @method :post
     * @time   :2025/4/2 10:01
     */
    public function sendMessage(){
        $gptService = new GptService();
        if(isset($this->param['chat_id'])){
            $chatInfo = $this->model->read(['id'=>$this->param['chat_id']]);
            if($chatInfo !== false){
                $list = $this->itemModel->list(['chat_id'=>$chatInfo['id'],'id',['*'],'desc',2]);
                $message[] = ['role' => 'system', 'content' => "You are now the marketing customer service of 深圳创贸集团"];
                foreach ($list as $val){
                    if($val['is_reply'] == 2){
                        $message[] = ['role' => 'user', 'content' => $val['content']];
                    }else{
                        $message[] = ['role' => 'assistant', 'content' => $val['content']];
                    }
                }
                $message[] = ['role' => 'user', 'content' => $this->param['message']];
                $data = [
                    'message'=>$message,
                ];
                $result = $gptService->get_ai_chat($data);
            }
        }
//        $id = $this->saveChat($this->param['message']);
//        $this->saveChatItem($id,$this->param['message']);

        $data = [
            'message'=>[
                ['role' => 'system', 'content' => "You are now the marketing customer service of 深圳创贸集团"],
                ['role' => 'user', 'content' => $this->param['message']]
            ],
        ];
        $result = $gptService->get_ai_chat($data);
        $this->success($result);
    }

    /**
     * @remark :创建一条新会话
     * @name   :saveChat
     * @author :lyh
     * @method :post
     * @time   :2025/4/2 10:06
     */
    public function saveChat($message){
        //创建一个会话
        $saveData = [
            'user_id'=>$this->user['id'],
            'input_content'=>$message,
        ];
        return $this->model->addReturnId($saveData);
    }

    /**
     * @remark :消息详情表保存一条记录
     * @name   :saveChatItem
     * @author :lyh
     * @method :post
     * @time   :2025/4/2 13:45
     */
    public function saveChatItem($id,$message){
        //创建一个会话
        $saveData = [
            'user_id'=>$this->user['id'],
            'is_reply'=>2,
            'chat_id'=>$id,
            'content'=>$message,
        ];
        return $this->itemModel->addReturnId($saveData);
    }
}