GeoWritingTaskController.php 3.2 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([
            'brand' => 'required',
            'keyword' => 'required',
        ], [
            'brand.required' => '品牌词不能为空',
            'keyword.required' => '关键词不能为空',
        ]);

        $data = $this->logic->sendAiTitle();
        $this->response('success', Code::SUCCESS, $data);
    }

    /**
     * 组装AI生成文章语句
     * @author Akun
     * @date 2025/11/24 15:58
     */
    public function getAiCommand()
    {
        $this->request->validate([
            'keyword' => 'required',
            'title' => 'required|max:120'
        ], [
            'keyword.required' => '关键词不能为空',
            'title.required' => 'GEO文标题不能为空',
            'title.max' => 'GEO文标题最多120个字符'
        ]);
        $data = $this->logic->getAiCommand();
        $this->response('success', Code::SUCCESS, $data);
    }
}