KeywordPrefix.php 2.3 KB
<?php
/**
 * @remark :
 * @name   :KeywordPrefix.php
 * @author :lyh
 * @method :post
 * @time   :2023/8/16 11:50
 */

namespace App\Models\Project;

use App\Models\Base;
use Illuminate\Support\Facades\Cache;

/**
 * @remark :关键字前缀/后缀
 * @name   :KeywordPrefix
 * @author :lyh
 * @method :post
 * @time   :2023/8/16 11:51
 */
class KeywordPrefix extends Base
{
    protected $table = 'gl_project_keyword_prefix';

    /**
     * 前后缀类型
     */
    const TYPE_OPTIMIZE_PREFIX = 1;
    const TYPE_OPTIMIZE_SUFFIX = 2;
    const TYPE_GEO_PREFIX = 3;
    const TYPE_GEO_SUFFIX = 4;

    /**
     * 前后缀类型映射
     * @return array
     */
    public static function typeMapping()
    {
        return [
            self::TYPE_OPTIMIZE_PREFIX => '优化关键词前缀',
            self::TYPE_OPTIMIZE_SUFFIX => '优化关键词后缀',
            self::TYPE_GEO_PREFIX => 'GEO前缀',
            self::TYPE_GEO_SUFFIX => 'GEO后缀',
        ];
    }

    /**
     * 保存关键词前后缀
     * @param $project_id
     * @param $type
     * @param $keyword
     * @param $remark
     * @return KeywordPrefix
     */
    public static function saveKeyword($project_id, $type, $keyword, $remark)
    {
        $data = self::where(['project_id' => $project_id, 'keyword' => $keyword])->first();
        if (empty($data)) {
            $data = new self();
            $data->project_id = $project_id;
            $data->type = $type;
            $data->keyword = $keyword;
        }
        $data->remark = $remark;
        $data->save();
        Cache::forget('project_keyword_ps_' . $project_id . '_' . $type);
        return $data;
    }

    /**
     * 获取关键词前后缀
     * @param $project_id
     * @param $type
     * @return array|mixed
     */
    public static function getKeyword($project_id, $type)
    {
        $key = 'project_keyword_ps_' . $project_id . '_' . $type;
        $list = Cache::get($key);
        if (empty($list)) {
            $list = self::select(['id', 'type', 'keyword', 'remark'])->where(['type' => $type])->whereIn('project_id', [0, $project_id])->orderBy('project_id', 'asc')->get();
            $list = $list->isEmpty() ? [] : $list->toArray();
            if ($list)
                Cache::put($key, $list, 1800);
        }
        return $list;
    }
}