作者 刘锟

手动询盘接口

... ... @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Aside\Optimize;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Optimize\InquiryForwardLogic;
use Illuminate\Support\Facades\DB;
class InquiryForwardController extends BaseController
{
... ... @@ -40,8 +41,8 @@ class InquiryForwardController extends BaseController
*/
public function getInquiryType(InquiryForwardLogic $inquiryForwardLogic)
{
$list = $inquiryForwardLogic->getType();
$this->response('success', Code::SUCCESS, $list);
$lists = $inquiryForwardLogic->getType();
$this->response('success', Code::SUCCESS, $lists);
}
/**
... ... @@ -88,4 +89,44 @@ class InquiryForwardController extends BaseController
'inquiry_date.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);
}
}
... ...
... ... @@ -5,6 +5,7 @@ namespace App\Http\Logic\Aside\Optimize;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Inquiry\InquiryInfo;
use App\Models\Inquiry\InquiryProject;
use App\Models\Inquiry\InquiryProjectRoute;
use App\Models\Inquiry\InquiryRelayDetail;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
... ... @@ -113,4 +114,84 @@ class InquiryForwardLogic extends BaseLogic
return $this->success();
}
/**
* 获取随机ip
* @return array
* @throws \App\Exceptions\AsideGlobalException
* @throws \App\Exceptions\BsideGlobalException
* @author Akun
* @date 2025/02/26 15:50
*/
public function getIp()
{
$ip = DB::table('gl_xunpan_ipdata')->where('ip_area', $this->param['country'])->inRandomOrder()->value('ip');
if (!$ip) {
$this->fail('当前国家无法获取随机ip');
}
return $this->success(['ip' => $ip]);
}
/**
* 关键词查询项目着陆页
* @return int|mixed
* @author Akun
* @date 2025/02/26 17:13
*/
public function searchKeywords()
{
$num = $this->param['num'] ?? 3;
$model = new InquiryProjectRoute();
if ($this->param['type'] == 1) {
//使用全文索引搜索
$routeQuery = $model->select(['project_id', 'route'])->whereRaw("MATCH(title) AGAINST(? IN BOOLEAN MODE)", [$this->param['keywords']]);
} else {
//使用like查询
$routeQuery = $model->select(['project_id', 'route'])->where('title', 'like', '%' . $this->param['keywords'] . '%');
}
$re_route = $routeQuery->inRandomOrder()->take(100)->get()->toArray();
$lists = [];
if (count($re_route) > 0) {
$project_ids = array_column($re_route, 'project_id');
$re_project = InquiryProject::select(['id', 'project', 'channel', 'domain'])->whereIn('id', $project_ids)->orderBy('recent_inquiry', 'asc')->get();
if ($re_project->count() > 0) {
//根据代理商去重
$channel = [];
foreach ($re_project as $vp) {
$vp_channel = explode(',', $vp->channel);
$has_channel = 0;
foreach ($vp_channel as $vpc) {
if (in_array($vpc, $channel)) {
$has_channel = 1;
}
}
if ($has_channel == 0) {
$channel = array_merge($channel, $vp_channel);
$route = '';
foreach ($re_route as $vr) {
if ($vr['project_id'] == $vp->id) {
$route = $vr['route'];
break;
}
}
$lists[] = [
'id' => $vp->id,
'project' => $vp->project,
'domain' => $vp->domain,
'route' => $route
];
}
}
}
}
return array_slice($lists, 0, $num, true);
}
}
... ...
... ... @@ -343,8 +343,10 @@ Route::middleware(['aloginauth'])->group(function () {
//手动转发询盘
Route::prefix('inquiry_forward')->group(function () {
Route::any('/', [Aside\Optimize\InquiryForwardController::class, 'lists'])->name('admin.inquiry_lists');
Route::any('/getInquiryType', [Aside\Optimize\InquiryForwardController::class, 'getInquiryType'])->name('admin.inquiry_getInquiryType');
Route::any('/forwardInquiry', [Aside\Optimize\InquiryForwardController::class, 'forwardInquiry'])->name('admin.inquiry_forwardInquiry');
Route::any('/getInquiryType', [Aside\Optimize\InquiryForwardController::class, 'getInquiryType'])->name('admin.inquiry_forward_getInquiryType');
Route::any('/forwardInquiry', [Aside\Optimize\InquiryForwardController::class, 'forwardInquiry'])->name('admin.inquiry_forward_forwardInquiry');
Route::any('/getInquiryIp', [Aside\Optimize\InquiryForwardController::class, 'getInquiryIp'])->name('admin.inquiry_forward_getInquiryIp');
Route::any('/searchInquiryKeywords', [Aside\Optimize\InquiryForwardController::class, 'searchInquiryKeywords'])->name('admin.inquiry_forward_searchInquiryKeywords');
});
Route::prefix('custom_module')->group(function () {
... ...