AiBlogController.php 6.3 KB
<?php

namespace App\Http\Controllers\Bside\Ai;

use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Ai\AiBlogLogic;
use App\Http\Requests\Bside\Ai\AiBlogRequest;
use App\Models\Ai\AiBlog;
use App\Models\Ai\AiBlogAuthor;
use App\Models\Ai\AiBlogList;

class AiBlogController extends BaseController
{

    /**
     * @remark :获取ai博客列表
     * @name   :getAiBlog
     * @author :lyh
     * @method :post
     * @time   :2025/2/14 13:59
     */
    public function getAiBlog(AiBlog $aiBlog){
        $lists = $aiBlog->lists($this->map,$this->page,$this->row,'id',['id','keyword','new_title','route','image','task_id','status','created_at','updated_at']);
        if(!empty($lists) && !empty($lists['list'])){
            foreach ($lists['list'] as $k => $v){
                $v['image'] = getImageUrl($v['image']);
                if(!empty($v['route'])){
                    $v['route'] = $this->user['domain'] . 'blog/' . $v['route'];
                }
                $lists['list'][$k] = $v;
            }
        }
        $this->response('success',Code::SUCCESS,$lists);
    }

    /**
     * @remark :获取详情
     * @name   :getInfo
     * @author :lyh
     * @method :post
     * @time   :2025/2/20 18:17
     */
    public function getInfo(AiBlog $aiBlog){
        $this->request->validate([
            'id'=>['required'],
        ],[
            'id.required' => '主键不能为空',
        ]);
        $info = $aiBlog->read(['id'=>$this->param['id']]);
        $info['anchor'] = json_decode($info['anchor'] ?? [],true);
        $info['image'] = getImageUrl($info['image']);
        $this->response('success',Code::SUCCESS,$info);
    }

    /**
     * @remark :发布任务
     * @name   :sendTask
     * @author :lyh
     * @method :post
     * @time   :2025/2/14 10:25
     */
    public function sendTask(AiBlogLogic $aiBlogLogic){
        $this->request->validate([
            'keyword'=>['required'],
            'type'=>['required'],
        ],[
            'keyword.required' => '关键字不能为空',
            'type.required' => '场景不能为空',
        ]);
        //获取当前项目的ai_blog设置
        $result = $aiBlogLogic->sendTask();
        $this->response('success',Code::SUCCESS,$result);
    }

    /**
     * @remark :编辑Ai博客发布
     * @name   :save
     * @author :lyh
     * @method :post
     * @time   :2023/7/5 14:33
     */
    public function save(AiBlogRequest $aiBlogRequest,AiBlogLogic $aiBlogLogic){
        $aiBlogRequest->validated();
        $aiBlogLogic->blogSave();
        $this->response('success');
    }

    /**
     * @remark :
     * @name   :saveText
     * @author :lyh
     * @method :post
     * @time   :2025/4/30 18:05
     */
    public function saveText(AiBlogLogic $aiBlogLogic){
        $this->request->validate([
            'id'=>['required'],
            'text'=>['required'],
        ],[
            'id.required' => '关键字不能为空',
            'text.required' => '场景不能为空',
        ]);
        $aiBlogLogic->blogSaveText();
        $this->response('success');
    }

    /**
     * @remark :获取作者列表
     * @name   :getAiBlogAuthor
     * @author :lyh
     * @method :post
     * @time   :2025/2/21 11:44
     */
    public function getAiBlogAuthor(AiBlogAuthor $aiBlogAuthor){
        $field = ['id','route','author_id','title','image','created_at','updated_at'];
        $lists = $aiBlogAuthor->lists($this->map,$this->page,$this->row,'id',$field);
        if(!empty($lists) && !empty($lists['list'])){
            foreach ($lists['list'] as $k => $v){
                $v['image'] = getImageUrl($v['image']);
                $v['route'] = $this->user['domain'] . 'user/' . $v['route'];
                $lists['list'][$k] = $v;
            }
        }
        $this->response('success',Code::SUCCESS,$lists);
    }

    /**
     * @remark :编辑作者详情数据
     * @name   :saveBlogAuthor
     * @author :lyh
     * @method :post
     * @time   :2025/2/21 13:54
     */
    public function saveBlogAuthor(AiBlogLogic $aiBlogLogic){
        $this->request->validate([
            'id'=>['required'],
        ],[
            'id.required' => '主键不能为空',
        ]);
        $info = $aiBlogLogic->saveBlogAuthor();
        $this->response('success',Code::SUCCESS,$info);
    }

    /**
     * @remark :删除
     * @name   :delete
     * @author :lyh
     * @method :post
     * @time   :2025/2/20 18:19
     */
    public function delete(AiBlogLogic $aiBlogLogic)
    {
        $this->request->validate([
            'ids'=>['required'],
        ],[
            'ids.required' => 'ID不能为空'
        ]);
        $aiBlogLogic->blogDelete();
        $this->response('success');
    }

    /**
     * @remark :获取列表页数据
     * @name   :getAiBlogList
     * @author :lyh
     * @method :post
     * @time   :2025/2/21 16:22
     */
    public function getAiBlogList(AiBlogList $aiBlogList){
        $lists = $aiBlogList->lists($this->map,$this->page,$this->row,'id',['id','route','created_at','updated_at']);
        if(!empty($lists) && !empty($lists['list'])){
            foreach ($lists['list'] as $k => $v){
                $v['route'] = $this->user['domain'] . 'top-blog/' . (($v['route'] > 1) ? $v['route'] : '');
                $lists['list'][$k] = $v;
            }
        }
        $this->response('success',Code::SUCCESS,$lists);
    }

    /**
     * @remark :获取列表页数据详情
     * @name   :getAiBlogListInfo
     * @author :lyh
     * @method :post
     * @time   :2025/2/21 16:26
     */
    public function getAiBlogListInfo(AiBlogList $aiBlogList){
        $this->request->validate([
            'id'=>['required'],
        ],[
            'id.required' => '主键不能为空',
        ]);
        $info = $aiBlogList->read($this->map);
        $this->response('success',Code::SUCCESS,$info);
    }

    /**
     * @remark :获取详情数据
     * @name   :getAuthorInfo
     * @author :lyh
     * @method :post
     * @time   :2025/2/21 13:54
     */
    public function getAuthorInfo(AiBlogAuthor $aiBlogAuthor){
        $this->request->validate([
            'id'=>['required'],
        ],[
            'id.required' => '主键不能为空',
        ]);
        $info = $aiBlogAuthor->read($this->map);
        $info['image'] = getImageUrl($info['image']);
        $this->response('success',Code::SUCCESS,$info);
    }
}