GeoWritingTaskController.php 3.5 KB
<?php
/**
 * @remark :
 * @name   :GeoWritingTaskController.php
 * @author :lyh
 * @method :post
 * @time   :2025/10/25 10:40
 */

namespace App\Http\Controllers\Aside\Geo;

use App\Enums\Common\Code;
use App\Helper\Gpt;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Geo\GeoWritingsTaskLogic;
use App\Http\Requests\Aside\Geo\GeoWritingsTaskRequest;
use Illuminate\Http\Request;

/**
 * @remark :文章任务(收集数据)
 * @name   :GeoWritingTaskController
 * @author :lyh
 * @method :post
 * @time   :2025/10/25 10:40
 */
class GeoWritingTaskController extends BaseController
{
    public function __construct(Request $request)
    {
        parent::__construct($request);
        $this->logic = new GeoWritingsTaskLogic();
    }

    /**
     * @remark :ai文章列表页
     * @name   :lists
     * @author :lyh
     * @method :post
     * @time   :2025/10/25 15:12
     */
    public function lists(){
        $this->request->validate([
            'project_id'=>'required',
        ],[
            'project_id.required' => 'project_id不能为空',
        ]);
        $data = $this->logic->listWritingTask($this->map,$this->page,$this->row,$this->order);
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :保存geoAi文章生成数据
     * @name   :lists
     * @author :lyh
     * @method :post
     * @time   :2025/10/25 10:41
     */
    public function saveWritingTask(GeoWritingsTaskRequest $request){
        $request->validated();
        $data = $this->logic->saveWritingTask();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :批量删除文章任务
     * @name   :delWritingTask
     * @author :lyh
     * @method :post
     * @time   :2025/10/25 15:03
     */
    public function delWritingTask(){
        $this->request->validate([
            'id'=>'required|array',
        ],[
            'id.required' => 'ID不能为空',
            'id.array' => 'ID为数组',
        ]);
        $data = $this->logic->delWritingTask();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :Ai请求标题
     * @name   :sendAiTitle
     * @author :lyh
     * @method :post
     * @time   :2025/10/27 11:10
     */
    public function sendAiTitle(){
        $this->request->validate([
            'company'=>'required',
            'number'=>'required',
            'prefix'=>'required',
            'keyword'=>'required',
            'suffix'=>'required',
            'event_title'=>'required',
        ],[
            'company.required' => '公司简称不能为空',
            'number.required' => '生成数量不能为空',
            'prefix.required' => '关键词前缀为数组',
            'keyword.required' => '关键词不能为空',
            'suffix.requiredrequired' => '关键词后缀不能为空',
            'event_title.required' => '事件标题不能为空',
        ]);
        $aiCommand = "请根据公司简称{$this->param['company']}和这个公司产品的关键词:{$this->param['prefix']}{$this->param['keyword']}{$this->param['suffix']},以及{$this->param['event_title']},帮我写{$this->param['number']}个有吸引力的英文新闻标题;确保这个标题在Google上面唯一存在的,只需要回复我标题,不需要别的内容(比如序号、你的提示、寒暄、解释、注释之类的) 标题不能超过 100 字符数!,一行一个";
        $gptHelper = new Gpt();
        $data = $gptHelper->openai_chat_qqs($aiCommand);
        $this->response('success',Code::SUCCESS,$data);
    }
}