InquiryForwardController.php 8.0 KB
<?php

namespace App\Http\Controllers\Aside\Optimize;

use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Optimize\InquiryForwardLogic;

class InquiryForwardController extends BaseController
{
    /**
     * 获取询盘列表
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @author Akun
     * @date 2025/02/21 10:55
     */
    public function lists(InquiryForwardLogic $inquiryForwardLogic)
    {
        if (isset($this->param['url'])) {
            $this->map['url'] = ['like', '%' . $this->map['url'] . '%'];
        }
        if (isset($this->param['email'])) {
            $this->map['email'] = ['like', '%' . $this->map['email'] . '%'];
        }
        if (isset($this->param['url_title'])) {
            $this->map['url_title'] = ['like', '%' . $this->map['url_title'] . '%'];
        }
        if (isset($this->param['url_keyword'])) {
            $this->map['url_keyword'] = ['like', '%' . $this->map['url_keyword'] . '%'];
        }
        if (isset($this->param['message'])) {
            $this->map['message'] = ['like', '%' . $this->map['message'] . '%'];
        }
        if (isset($this->param['start_date']) && isset($this->param['end_date'])) {
            $this->map['inquiry_date'] = ['between', [$this->map['start_date'] . ' 00:00:00', $this->map['end_date'] . ' 00:00:00']];
            unset($this->map['start_date']);
            unset($this->map['end_date']);
        } elseif (isset($this->param['start_date'])) {
            $this->map['inquiry_date'] = ['>=', $this->map['start_date'] . ' 00:00:00'];
            unset($this->map['start_date']);
        } elseif (isset($this->param['end_date'])) {
            $this->map['inquiry_date'] = ['<=', $this->map['end_date'] . ' 23:59:59'];
            unset($this->map['end_date']);
        }
        $lists = $inquiryForwardLogic->getInquiryLists($this->map, $this->page, $this->row, $this->order);
        $this->response('success', Code::SUCCESS, $lists);
    }

    /**
     * 获取询盘详情
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @throws \App\Exceptions\AsideGlobalException
     * @throws \App\Exceptions\BsideGlobalException
     * @author Akun
     * @date 2025/03/01 11:21
     */
    public function getInquiryInfo(InquiryForwardLogic $inquiryForwardLogic)
    {
        $this->request->validate([
            'id' => 'required',
        ], [
            'id.required' => 'ID不能为空',
        ]);
        $info = $inquiryForwardLogic->infoInquiry();
        $this->response('success', Code::SUCCESS, $info);
    }

    /**
     * 获取询盘类型
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @author Akun
     * @date 2025/02/21 11:20
     */
    public function getInquiryType(InquiryForwardLogic $inquiryForwardLogic)
    {
        $lists = $inquiryForwardLogic->getType();
        $this->response('success', Code::SUCCESS, $lists);
    }

    /**
     * 手动转发询盘
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @throws \App\Exceptions\AsideGlobalException
     * @throws \App\Exceptions\BsideGlobalException
     * @author Akun
     * @date 2025/02/21 14:54
     */
    public function forwardInquiry(InquiryForwardLogic $inquiryForwardLogic)
    {
        $this->validationParam();
        $inquiryForwardLogic->inquiryForward();
        $this->response('success');
    }

    /**
     * 手动转发询盘:参数验证
     * @author Akun
     * @date 2025/02/21 14:19
     */
    public function validationParam()
    {
        $this->request->validate([
            'id' => 'required',//ID
            'name' => 'required',//名称
            'email' => 'required',//邮箱
            'ip' => 'required',//ip
            'forward_url' => 'required',//转发网址
            'message' => 'required',//发送内容
        ], [
            'id.required' => 'ID不能为空',
            'name.required' => '名称不能为空',
            'email.required' => '邮箱不能为空',
            'ip.required' => 'ip不能为空',
            'forward_url.required' => '转发网址不能为空',
            'message.required' => '内容不能为空',
        ]);
    }

    /**
     * 根据国家获取随机ip
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @throws \App\Exceptions\AsideGlobalException
     * @throws \App\Exceptions\BsideGlobalException
     * @author Akun
     * @date 2025/02/26 15:50
     */
    public function getInquiryIp(InquiryForwardLogic $inquiryForwardLogic)
    {
        $this->request->validate([
            'country' => 'required',
        ], [
            'country.required' => '国家不能为空',
        ]);

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

    /**
     * 关键词查询项目着陆页
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @author Akun
     * @date 2025/02/26 17:12
     */
    public function searchInquiryKeywords(InquiryForwardLogic $inquiryForwardLogic)
    {
        $this->request->validate([
            'keywords' => 'required',
            'type' => 'required',
        ], [
            'keywords.required' => '关键词不能为空',
            'type.required' => '搜索类型不能为空',
        ]);

        $lists = $inquiryForwardLogic->searchKeywords();
        $this->response('success', Code::SUCCESS, $lists);
    }

    /**
     * AI重写询盘文案
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @throws \App\Exceptions\AsideGlobalException
     * @throws \App\Exceptions\BsideGlobalException
     * @author Akun
     * @date 2025/02/27 10:40
     */
    public function aiRewriteInquiry(InquiryForwardLogic $inquiryForwardLogic)
    {
        $this->request->validate([
            'message' => 'required',
        ], [
            'message.required' => '需要重写的文案不能为空',
        ]);

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

    /**
     * 设置询盘无效
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @throws \App\Exceptions\AsideGlobalException
     * @throws \App\Exceptions\BsideGlobalException
     * @author Akun
     * @date 2025/02/27 15:36
     */
    public function setInquiryExpired(InquiryForwardLogic $inquiryForwardLogic)
    {
        $this->request->validate([
            'id' => 'required',
        ], [
            'id.required' => 'ID不能为空',
        ]);

        $inquiryForwardLogic->expiredInquiry();

        $this->response('success');
    }

    /**
     * 获取询盘详情列表
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @author Akun
     * @date 2025/03/01 9:22
     */
    public function getInquiryDetailList(InquiryForwardLogic $inquiryForwardLogic)
    {
        if (isset($this->param['country'])) {
            $this->map['country'] = ['like', '%' . $this->map['country'] . '%'];
        }
        if (isset($this->param['website'])) {
            $this->map['website'] = ['like', '%' . $this->map['website'] . '%'];
        }
        $lists = $inquiryForwardLogic->getInquiryDetailLists($this->map, $this->page, $this->row, $this->order);
        $this->response('success', Code::SUCCESS, $lists);
    }

    /**
     * 停止转发
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @throws \App\Exceptions\AsideGlobalException
     * @throws \App\Exceptions\BsideGlobalException
     * @author Akun
     * @date 2025/03/10 11:04
     */
    public function stopForwardInquiry(InquiryForwardLogic $inquiryForwardLogic)
    {
        $this->request->validate([
            'id' => 'required',
        ], [
            'id.required' => 'ID不能为空',
        ]);

        $inquiryForwardLogic->stopInquiry();

        $this->response('success');
    }

    /**
     * 获取询盘统计
     * @param InquiryForwardLogic $inquiryForwardLogic
     * @author Akun
     * @date 2025/04/14 11:41
     */
    public function getInquiryCount(InquiryForwardLogic $inquiryForwardLogic)
    {
        $data = $inquiryForwardLogic->inquiryCount();
        $this->response('success', Code::SUCCESS, $data);
    }
}