作者 赵彬吉

update

... ... @@ -791,3 +791,14 @@ function check_remote_url_down($url,$project_id,$domain,$is_complete=0){
return false;
}
}
/**
* 文本框转内容数组
* @author zbj
* @date 2024/3/29
*/
function textareaToArr($content, $separator = ','){
return array_values(array_filter(array_unique(array_map(function ($v){
return trim($v);
},explode($separator, $content)))));
}
... ...
... ... @@ -952,4 +952,21 @@ class ProjectController extends BaseController
$logic->saveInquiryFilterConfig($this->param);
$this->response('success');
}
/**
* 保存引流设置
* @author zbj
* @date 2024/3/29
*/
public function saveWebTrafficConfig(ProjectLogic $logic){
$this->request->validate([
'project_id'=>'required',
],[
'project_id.required' => '项目id不能为空',
]);
$logic->saveWebTrafficConfig($this->param);
$this->response('success');
}
}
... ...
... ... @@ -11,9 +11,11 @@ use App\Jobs\CopyProjectJob;
use App\Models\Com\NoticeLog;
use App\Models\Com\UpdateLog;
use App\Models\Devops\ServerConfig;
use App\Models\Inquiry\InquiryIP;
use App\Models\Project\InquiryFilterConfig;
use App\Models\Project\MinorLanguages;
use App\Models\Project\ProjectRenew;
use App\Models\Project\WebTrafficConfig;
use App\Models\Template\Setting;
use App\Models\User\ProjectMenu;
use App\Models\User\ProjectRole;
... ... @@ -69,7 +71,7 @@ class ProjectLogic extends BaseLogic
* @time :2023/7/28 17:11
*/
public function getProjectInfo($id){
$info = $this->model->with(['payment', 'deploy_build', 'deploy_optimize', 'online_check', 'project_after','inquiry_filter_config'])->where(['id'=>$id])->first()->toArray();
$info = $this->model->with(['payment', 'deploy_build', 'deploy_optimize', 'online_check', 'project_after','inquiry_filter_config','web_traffic_config'])->where(['id'=>$id])->first()->toArray();
$info['online_check']['name'] = (new Manage())->getName($info['online_check']['created_manage_id'] ?? 0);
$info['deploy_optimize']['minor_keywords'] = !empty($info['deploy_optimize']['minor_keywords']) ? json_decode($info['deploy_optimize']['minor_keywords']) : [];
$info['init_domain'] = $this->getInitDomain($info['serve_id'])['domain'];
... ... @@ -785,4 +787,46 @@ class ProjectLogic extends BaseLogic
return true;
}
/**
* 保存引流配置
* @param $config
* @return array
* @author zbj
* @date 2024/3/29
*/
public function saveWebTrafficConfig($config){
$config['main_countries'] = textareaToArr($config['main_countries']);
$config['filter_countries'] = textareaToArr($config['filter_countries']);
$ip_area = InquiryIP::getIpAreas();
foreach ($config['main_countries'] as $v) {
if (!in_array($v, $ip_area)) {
throw new AsideGlobalException(Code::SYSTEM_ERROR, '[' . $v . ']不存在,请检查后再次提交');
}
}
foreach ($config['filter_countries'] as $v) {
if (!in_array($v, $ip_area)) {
throw new AsideGlobalException(Code::SYSTEM_ERROR, '[' . $v . ']不存在,请检查后再次提交');
}
}
$config['main_countries'] = json_encode($config['main_countries']);
$config['filter_countries'] = json_encode($config['filter_countries']);
$model = WebTrafficConfig::where('project_id', $config['project_id'])->first();
if (!$model) {
$model = new WebTrafficConfig();
$model->add($config);
} else {
$model->edit($config, ['project_id' => $config['project_id']]);
}
Cache::forget(WebTrafficConfig::cacheKey($config['project_id']));
return $this->success();
}
}
... ...
... ... @@ -13,4 +13,14 @@ use App\Models\Base;
class InquiryIP extends Base
{
protected $table = 'gl_xunpan_ipdata';
/**
* @return mixed
* @author zbj
* @date 2024/3/29
*/
public static function getIpAreas(){
return self::groupBy('ip_area')->pluck('ip_area')->toArray();
}
}
... ...
... ... @@ -239,6 +239,17 @@ class Project extends Base
}
/**
* 引流配置
* @return \Illuminate\Database\Eloquent\Relations\HasOne
* @author zbj
* @date 2024/3/29
*/
public function web_traffic_config()
{
return self::hasOne(WebTrafficConfig::class, 'project_id', 'id');
}
/**
* 域名
* @return \Illuminate\Database\Eloquent\Relations\HasOne
* @author zbj
... ...
<?php
namespace App\Models\Project;
use App\Models\Base;
use Illuminate\Support\Facades\Cache;
/**
* 引流配置
* Class InquiryFilterConfig
* @package App\Models\Project
* @author zbj
* @date 2024/3/29
*/
class WebTrafficConfig extends Base
{
//设置关联表名
protected $table = 'gl_project_web_traffic_config';
/**
* @param $project_id
* @return string
* @author zbj
* @date 2024/1/20
*/
public static function cacheKey($project_id): string
{
return 'project_web_traffic_config_info' . $project_id;
}
/**
* @param $project_id
* @return mixed
* @author zbj
* @date 2024/1/20
*/
public static function getCacheInfoByProjectId($project_id){
$info = Cache::get(self::cacheKey($project_id));
if (!$info) {
$info = self::where('project_id', $project_id)->first();
Cache::put(self::cacheKey($project_id), $info, 2 * 3600);
}
return $info;
}
public function getMainCountriesAttribute($value)
{
return $value ? implode(',', json_decode($value, true)) : '';
}
public function getFilterCountriesAttribute($value)
{
return $value ? implode(',', json_decode($value, true)) : '';
}
}
... ...
... ... @@ -186,6 +186,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/languageLists', [Aside\Project\ProjectController::class, 'languageLists'])->name('admin.project_languageLists');//其他项目设置
Route::any('/countryLists', [Aside\Project\ProjectController::class, 'countryLists'])->name('admin.project_countryLists');//国家地区列表
Route::any('/saveInquiryFilterConfig', [Aside\Project\ProjectController::class, 'saveInquiryFilterConfig'])->name('admin.project_inquiry_filter_config_save');//保存询盘过滤配置
Route::any('/saveWebTrafficConfig', [Aside\Project\ProjectController::class, 'saveWebTrafficConfig'])->name('admin.project_web_traffic_config_save');//保存引流配置
//获取关键词前缀和后缀
Route::prefix('keyword')->group(function () {
Route::any('/getKeywordPrefix', [Aside\Project\KeywordPrefixController::class, 'getKeywordPrefix'])->name('admin.keyword_getKeywordPrefix');
... ...