GeoLinkController.php 3.4 KB
<?php
/**
 * @remark :
 * @name   :GeoLinkController.php
 * @author :lyh
 * @method :post
 * @time   :2025/7/14 16:17
 */

namespace App\Http\Controllers\Aside\Geo;

use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Geo\GeoLinkLogic;
use App\Models\Geo\GeoLink;
use App\Models\Geo\GeoQuestionResult;
use Illuminate\Http\Request;
/**
 * @remark :geo权威新闻(链接数据)
 * @name   :GeoLinkController
 * @author :lyh
 * @method :post
 * @time   :2025/7/14 16:18
 */
class GeoLinkController extends BaseController
{
    public function __construct(Request $request)
    {
        parent::__construct($request);
        $this->logic = new GeoLinkLogic();
    }

    /**
     * @remark :获取链接数据列表
     * @name   :lists
     * @author :lyh
     * @method :post
     * @time   :2025/7/15 9:14
     */
    public function lists(){
        $this->request->validate([
            'project_id'=>'required',
        ],[
            'project_id.required' => '项目ID不能为空',
        ]);
        $lists = $this->logic->getLinkList($this->map,$this->page,$this->row,$this->order);
        $this->response('success',Code::SUCCESS,$lists);
    }

    /**
     * @remark :获取数据详情
     * @name   :info
     * @author :lyh
     * @method :post
     * @time   :2025/7/15 9:15
     */
    public function info(){
        $this->request->validate([
            'id'=>'required',
        ],[
            'id.required' => 'ID不能为空',
        ]);
        $data = $this->logic->getLinkInfo();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :保存数据
     * @name   :save
     * @author :lyh
     * @method :post
     * @time   :2025/7/15 9:17
     */
    public function save(){
        $this->request->validate([
            'project_id'=>'required',
            'data'=>'required|array'
        ],[
            'project_id.required' => '项目ID不能为空',
            'data.required' => '数据详情不能为空',
            'data.array' => '数据详情为数组',
        ]);
        $data = $this->logic->saveLink();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :删除数据
     * @name   :del
     * @author :lyh
     * @method :post
     * @time   :2025/7/15 9:17
     */
    public function del(){
        $this->request->validate([
            'ids'=>'required|array',
        ],[
            'ids.required' => 'IDs不能为空',
            'ids.array' => '数据详情为数组',
        ]);
        $data = $this->logic->delLink();
        $this->response('success',Code::SUCCESS,$data);
    }

    /**
     * @remark :下载geo链接
     * @name   :downloadGeoLink
     * @author :lyh
     * @method :post
     * @time   :2025/9/18 11:50
     */
    public function downloadGeoLink()
    {
        $data = [];
        $geoResultModel = new GeoQuestionResult();
        $lists = $geoResultModel->list(['project_id'=>$this->param['project_id']]);
        foreach ($lists as $item) {
            if(!empty($item['url_num'])){
                foreach ($item['url_num'] as $key=>$val) {
                    if(!isset( $data[$key][$item['platform']])){
                        $data[$key][$item['platform']] = $val;
                    }else{
                        $data[$key][$item['platform']] += $val;
                    }
                }
            }
        }
        $this->response('success',Code::SUCCESS,$data);
    }
}