作者 赵彬吉
... ... @@ -71,14 +71,20 @@ class AfterDayCount extends Command
->where('gl_project.created_at','<=',$todayMidnight)
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
->whereIn('gl_project.type',[2,4])
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')->count();
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
->count();
$qualified_count = $projectModel->where('gl_project.extend_type',0)
->where('gl_project.delete_status',0)
->where('gl_project.created_at','<=',$todayMidnight)
->where('gl_project.is_remain_today',1)
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
->whereIn('gl_project.type',[2,4])
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')->count();
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
->count();
$rate = number_format($qualified_count / $project_count, 2);
$threeMonthsAgo = date('Y-m-d 00:00:00', strtotime('-3 months'));
$three_project_count = $projectModel->where('gl_project.extend_type',0)
... ... @@ -86,14 +92,20 @@ class AfterDayCount extends Command
->where('gl_project.created_at','<=',$threeMonthsAgo)
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
->whereIn('gl_project.type',[2,4])
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')->count();
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
->count();
$three_qualified_count = $projectModel->where('gl_project.extend_type',0)
->whereIn('gl_project.id',$projectIdArr)
->where('gl_project.delete_status',0)
->where('gl_project.created_at','<=',$threeMonthsAgo)
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
->whereIn('gl_project.type',[2,4])
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')->count();
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
->count();
$three_rate = number_format($three_qualified_count / $three_project_count, 2);
$data = $projectModel->where('gl_project.extend_type',0)
->where('gl_project.delete_status',0)
... ... @@ -102,6 +114,8 @@ class AfterDayCount extends Command
->whereIn('gl_project_deploy_optimize.optimist_mid',$idArr)
->whereIn('gl_project.type',[2,4])
->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
->whereRaw("FIND_IN_SET('2', gl_project.level) = 0 AND FIND_IN_SET('3', gl_project.level) = 0")
->whereRaw("FIND_IN_SET('7', gl_project_deploy_optimize.special) = 0 AND FIND_IN_SET('8', gl_project_deploy_optimize.special) = 0")
->pluck('gl_project.title')->toArray();
$saveData[] = [
'date'=>date('Y-m-d', strtotime('yesterday')),
... ...
... ... @@ -113,6 +113,7 @@ class SyncInquiryProject extends Command
$result = http_get($route_domain . 'k_u_api.php');
if (empty($result)) {
$this->log('syncGloV5Route 未获取到路由信息:' . $project->id . ', 路由获取地址:' . $route_domain . 'k_u_api.php');
$this->deleteExpire([$project->id]);
continue;
}
file_put_contents(storage_path('logs/sync_inquiry_project_route/' . $project->id . '.json'), json_encode($result));
... ... @@ -120,6 +121,7 @@ class SyncInquiryProject extends Command
} catch (\Exception $e) {
$this->log('syncGloV5Route 未获取到路由信息:' . $project->id . ', 路由获取地址:' . $route_domain . 'k_u_api.php' . ', 错误信息:' . $e->getMessage());
$this->output('syncGloV5Route 未获取到路由信息:' . $project->id . ', 路由获取地址:' . $route_domain . 'k_u_api.php' . ', 错误信息:' . $e->getMessage());
$this->deleteExpire([$project->id]);
continue;
}
}
... ...
... ... @@ -67,7 +67,7 @@ class UpdateRoute extends Command
*/
public function handle()
{
return $this->keyword_actions();
return $this->settingSeo();
}
public function keyword_actions(){
... ... @@ -592,270 +592,23 @@ class UpdateRoute extends Command
}
/**
* @remark :更新产品分类前后缀
* @name :updateSeo
* @remark :设置seo_前后缀
* @name :settingSeo
* @author :lyh
* @method :post
* @time :2025/3/14 14:39
* @time :2025/4/15 15:14
*/
public function insertData(){
$countries = [
'AFG' => 'Afghanistan',
'ALB' => 'Albania',
'DZA' => 'Algeria',
'AND' => 'Andorra',
'AGO' => 'Angola',
'ATG' => 'Antigua and Barbuda',
'ARG' => 'Argentina',
'ARM' => 'Armenia',
'AUS' => 'Australia',
'AUT' => 'Austria',
'AZE' => 'Azerbaijan',
'BHS' => 'Bahamas',
'BHR' => 'Bahrain',
'BGD' => 'Bangladesh',
'BRB' => 'Barbados',
'BLR' => 'Belarus',
'BEL' => 'Belgium',
'BLZ' => 'Belize',
'BEN' => 'Benin',
'BTN' => 'Bhutan',
'BOL' => 'Bolivia',
'BES' => 'Bonaire, Sint Eustatius and Saba',
'BIH' => 'Bosnia and Herzegovina',
'BWA' => 'Botswana',
'BVT' => 'Bouvet Island',
'BRA' => 'Brazil',
'IOT' => 'British Indian Ocean Territory',
'BRN' => 'Brunei Darussalam',
'BGR' => 'Bulgaria',
'BFA' => 'Burkina Faso',
'BDI' => 'Burundi',
'CPV' => 'Cabo Verde',
'KHM' => 'Cambodia',
'CMR' => 'Cameroon',
'CAN' => 'Canada',
'CYM' => 'Cayman Islands',
'CAF' => 'Central African Republic',
'TCD' => 'Chad',
'CHL' => 'Chile',
'CHN' => 'China',
'CXR' => 'Christmas Island',
'CCK' => 'Cocos (Keeling) Islands',
'COL' => 'Colombia',
'COM' => 'Comoros',
'COD' => 'Congo (Democratic Republic of the)',
'COG' => 'Congo',
'COK' => 'Cook Islands',
'CRI' => 'Costa Rica',
'CIV' => 'Côte d\'Ivoire',
'HRV' => 'Croatia',
'CUB' => 'Cuba',
'CUW' => 'Curaçao',
'CYP' => 'Cyprus',
'CZE' => 'Czech Republic',
'DNK' => 'Denmark',
'DJI' => 'Djibouti',
'DMA' => 'Dominica',
'DOM' => 'Dominican Republic',
'ECU' => 'Ecuador',
'EGY' => 'Egypt',
'SLV' => 'El Salvador',
'GNQ' => 'Equatorial Guinea',
'ERI' => 'Eritrea',
'EST' => 'Estonia',
'SWZ' => 'Eswatini',
'ETH' => 'Ethiopia',
'FLK' => 'Falkland Islands (Malvinas)',
'FRO' => 'Faroe Islands',
'FJI' => 'Fiji',
'FIN' => 'Finland',
'FRA' => 'France',
'GUF' => 'French Guiana',
'PYF' => 'French Polynesia',
'ATF' => 'French Southern Territories',
'GAB' => 'Gabon',
'GMB' => 'Gambia',
'GEO' => 'Georgia',
'DEU' => 'Germany',
'GHA' => 'Ghana',
'GIB' => 'Gibraltar',
'GRC' => 'Greece',
'GRL' => 'Greenland',
'GRD' => 'Grenada',
'GLP' => 'Guadeloupe',
'GUM' => 'Guam',
'GTM' => 'Guatemala',
'GGY' => 'Guernsey',
'GIN' => 'Guinea',
'GNB' => 'Guinea-Bissau',
'GUY' => 'Guyana',
'HTI' => 'Haiti',
'HMD' => 'Heard Island and McDonald Islands',
'VAT' => 'Holy See',
'HND' => 'Honduras',
'HKG' => 'Hong Kong',
'HUN' => 'Hungary',
'ISL' => 'Iceland',
'IND' => 'India',
'IDN' => 'Indonesia',
'IRN' => 'Iran (Islamic Republic of)',
'IRQ' => 'Iraq',
'IRL' => 'Ireland',
'IMN' => 'Isle of Man',
'ISR' => 'Israel',
'ITA' => 'Italy',
'JAM' => 'Jamaica',
'JPN' => 'Japan',
'JEY' => 'Jersey',
'JOR' => 'Jordan',
'KAZ' => 'Kazakhstan',
'KEN' => 'Kenya',
'KIR' => 'Kiribati',
'KOR' => 'Korea (Republic of)',
'KWT' => 'Kuwait',
'KGZ' => 'Kyrgyzstan',
'LAO' => 'Lao People\'s Democratic Republic',
'LVA' => 'Latvia',
'LBN' => 'Lebanon',
'LSO' => 'Lesotho',
'LBR' => 'Liberia',
'LBY' => 'Libya',
'LIE' => 'Liechtenstein',
'LTU' => 'Lithuania',
'LUX' => 'Luxembourg',
'MAC' => 'Macao',
'MDG' => 'Madagascar',
'MWI' => 'Malawi',
'MYS' => 'Malaysia',
'MDV' => 'Maldives',
'MLI' => 'Mali',
'MLT' => 'Malta',
'MHL' => 'Marshall Islands',
'MTQ' => 'Martinique',
'MRT' => 'Mauritania',
'MUS' => 'Mauritius',
'MYT' => 'Mayotte',
'MEX' => 'Mexico',
'FSM' => 'Micronesia (Federated States of)',
'MDA' => 'Moldova (Republic of)',
'MCO' => 'Monaco',
'MNG' => 'Mongolia',
'MNE' => 'Montenegro',
'MSR' => 'Montserrat',
'MAR' => 'Morocco',
'MOZ' => 'Mozambique',
'MMR' => 'Myanmar',
'NAM' => 'Namibia',
'NRU' => 'Nauru',
'NPL' => 'Nepal',
'NLD' => 'Netherlands',
'NCL' => 'New Caledonia',
'NZL' => 'New Zealand',
'NIC' => 'Nicaragua',
'NER' => 'Niger',
'NGA' => 'Nigeria',
'NIU' => 'Niue',
'NFK' => 'Norfolk Island',
'MNP' => 'Northern Mariana Islands',
'NOR' => 'Norway',
'OMN' => 'Oman',
'PAK' => 'Pakistan',
'PLW' => 'Palau',
'PSE' => 'Palestine, State of',
'PAN' => 'Panama',
'PNG' => 'Papua New Guinea',
'PRY' => 'Paraguay',
'PER' => 'Peru',
'PHL' => 'Philippines',
'PCN' => 'Pitcairn',
'POL' => 'Poland',
'PRT' => 'Portugal',
'PRI' => 'Puerto Rico',
'QAT' => 'Qatar',
'REU' => 'Réunion',
'ROU' => 'Romania',
'RUS' => 'Russian Federation',
'RWA' => 'Rwanda',
'BLM' => 'Saint Barthélemy',
'SHN' => 'Saint Helena, Ascension and Tristan da Cunha',
'KNA' => 'Saint Kitts and Nevis',
'LCA' => 'Saint Lucia',
'MAF' => 'Saint Martin (French part)',
'SPM' => 'Saint Pierre and Miquelon',
'VCT' => 'Saint Vincent and the Grenadines',
'WSM' => 'Samoa',
'SMR' => 'San Marino',
'STP' => 'Sao Tome and Principe',
'SAU' => 'Saudi Arabia',
'SEN' => 'Senegal',
'SRB' => 'Serbia',
'SYC' => 'Seychelles',
'SLE' => 'Sierra Leone',
'SGP' => 'Singapore',
'SXM' => 'Sint Maarten (Dutch part)',
'SVK' => 'Slovakia',
'SVN' => 'Slovenia',
'SLB' => 'Solomon Islands',
'SOM' => 'Somalia',
'ZAF' => 'South Africa',
'SGS' => 'South Georgia and the South Sandwich Islands',
'SSD' => 'South Sudan',
'ESP' => 'Spain',
'LKA' => 'Sri Lanka',
'SDN' => 'Sudan',
'SUR' => 'Suriname',
'SJM' => 'Svalbard and Jan Mayen',
'SWE' => 'Sweden',
'CHE' => 'Switzerland',
'SYR' => 'Syrian Arab Republic',
'TWN' => 'Taiwan, Province of China',
'TJK' => 'Tajikistan',
'TZA' => 'Tanzania, United Republic of',
'THA' => 'Thailand',
'TLS' => 'Timor-Leste',
'TGO' => 'Togo',
'TKL' => 'Tokelau',
'TON' => 'Tonga',
'TTO' => 'Trinidad and Tobago',
'TUN' => 'Tunisia',
'TUR' => 'Turkey',
'TKM' => 'Turkmenistan',
'TCA' => 'Turks and Caicos Islands',
'TUV' => 'Tuvalu',
'UGA' => 'Uganda',
'UKR' => 'Ukraine',
'ARE' => 'United Arab Emirates',
'GBR' => 'United Kingdom',
'USA' => 'United States',
'URY' => 'Uruguay',
'UZB' => 'Uzbekistan',
'VUT' => 'Vanuatu',
'VEN' => 'Venezuela (Bolivarian Republic of)',
'VNM' => 'Viet Nam',
'WLF' => 'Wallis and Futuna',
'ESH' => 'Western Sahara',
'YEM' => 'Yemen',
'ZMB' => 'Zambia',
'ZWE' => 'Zimbabwe',
];
$codeCountryModel = new GoogleCodeCountry();
$data = [];
foreach ($countries as $key =>$val){
$wordModel = new WordCountry();
$info = $wordModel->read(['iso3'=>$key]);
if($info === false){
$zh = Translate::tran($val,'zh');
}else{
$zh = $info['chinese_name'];
public function settingSeo(){
$list = (new Project())->formatQuery(['delete_status'=>0,'type'=>[2,4]])->pluck('id')->unique()->values()->toArray();
foreach ($list as $val){
ProjectServer::useProject($val);
$seoModel = new WebSettingSeo();
$results = $seoModel->whereRaw('product_category_prefix = product_category_suffix')->get();
if(!empty($results)){
echo '项目id:'.$val.PHP_EOL;
}
$data[] = [
'code'=>$key,
'en_country'=>$val,
'zh_country'=>$zh,
];
DB::disconnect('custom_mysql');
}
$codeCountryModel->insertAll($data);
return true;
}
}
... ...
... ... @@ -7,7 +7,7 @@
* @time :2025/2/21 9:55
*/
namespace App\Console\Commands\RequestUrlLog;
namespace App\Console\Commands\Monitor;
use App\Helper\FormGlobalsoApi;
use App\Models\Com\RequestUrl;
... ... @@ -42,15 +42,15 @@ class RequestUrlLog extends Command
//获取需要请求的接口
$requestUrlModel = new RequestUrl();
$urlList = $requestUrlModel->list(['status'=>0]);
foreach ($urlList as $v){
//需要单独验证的方法
if($v['url'] == 'getMonthInquiry'){
//随机获取一个项目,需要验证的其他方法
$projectModel = new Project();
$projectInfo = $projectModel->formatQuery(['type'=>2,'delete_status'=>0])->inRandomOrder()->first();
//获取对应项目的域名
$domainModel = new DomainInfo();
$domainInfo = $domainModel->read(['project_id'=>$projectInfo['id']]);
foreach ($urlList as $v){
//需要单独验证的方法
if($v['url'] == 'getMonthInquiry'){
$result = $this->getMonthInquiry($domainInfo['domain'],date('Y-m'), 0);
$requestUrlModel->edit(['text'=>json_encode($result,true),'time'=>$result['$requestTime'],'http_code'=>$result['http_code']],['id'=>$v['id']]);
continue;
... ... @@ -60,8 +60,16 @@ class RequestUrlLog extends Command
$result = $this->postRequest($v['url'],$v['param']);
echo '执行的url:' . $v['url'] . PHP_EOL . '返回的结果:'.json_encode($result,true) . date('Y-m-d H:i:s').PHP_EOL;
//更新请求结果
$requestUrlModel->edit(['text'=>json_encode($result,true),'time'=>$result['$requestTime'],'http_code'=>$result['http_code']],['id'=>$v['id']]);
$requestUrlModel->edit(['text'=>json_encode($result,true),'time'=>$result['requestTime'],'http_code'=>$result['http_code']],['id'=>$v['id']]);
continue;
}else if($v['method'] == 'get'){
$result = $this->getRequest($v['url']);
echo '执行的url:' . $v['url'] . PHP_EOL . '返回的结果:'.json_encode($result,true) . date('Y-m-d H:i:s').PHP_EOL;
//更新请求结果
$requestUrlModel->edit(['text'=>json_encode($result,true),'time'=>$result['requestTime'],'http_code'=>$result['http_code']],['id'=>$v['id']]);
continue;
}else{
//todo::其他方式的验证
}
}
return true;
... ...
... ... @@ -44,6 +44,7 @@ class CopyProject extends Command
public function handle()
{
while (true) {
$projectModel = new Project();
$list = NoticeLog::where('type', NoticeLog::TYPE_COPY_PROJECT)->where('status', NoticeLog::STATUS_PENDING)->get();
if(empty($list)){
sleep(30);
... ... @@ -71,10 +72,12 @@ class CopyProject extends Command
sleep(60);
try {
$this->copyMysql($old_project_id,$project_id);
$this->output('CopyProjectJob end, old project_id: ' . $old_project_id . ', new project_id: ' . $project_id);
}catch (\Exception $e){
echo '复制数据库失败:'.$old_project_id . '<->'.$project_id;
}
$this->output('CopyProjectJob end, old project_id: ' . $old_project_id . ', new project_id: ' . $project_id);
//修改项目状态
$projectModel->edit(['delete_status'=>0],['id'=>$project_id]);
}
}
return true;
... ... @@ -206,13 +209,62 @@ class CopyProject extends Command
}
//复制数据库
public function copyMysql($project_id,$new_project_id){
Artisan::call("php artisan copy_project_s $project_id $new_project_id");
//切换数据库配置
$project = ProjectServer::useProject($new_project_id);
//创建数据库
ProjectServer::createDatabase($project);
//创建表
$this->initTable($project_id,$new_project_id);
//修改项目状态
$projectModel = new Project();
$projectModel->edit(['delete_status'=>0],['id'=>$new_project_id]);
}
/**
* @remark :创建数据库
* @name :initTable
* @author :lyh
* @method :post
* @time :2023/12/11 10:09
*/
public function initTable($project_id, $news_project_id)
{
// 设置源数据库
config(['database.connections.custom_tmp_mysql_copy.database' => 'gl_data_' . $project_id]);
$database_name = DB::connection('custom_tmp_mysql_copy')->getDatabaseName();
// 获取源数据库的所有表
$tables = Schema::connection('custom_tmp_mysql_copy')->getAllTables();
$tables = array_column($tables, 'Tables_in_' . $database_name);
foreach ($tables as $table) {
// 1. 删除目标数据库中的表
DB::connection('custom_mysql')->statement("DROP TABLE IF EXISTS {$table}");
// 2. 重新创建表
$sql = DB::connection('custom_tmp_mysql_copy')->select("SHOW CREATE TABLE {$table}");
DB::connection('custom_mysql')->statement(get_object_vars($sql[0])['Create Table']);
// 3. 跳过指定的表
if (in_array($table, ['gl_customer_visit', 'gl_customer_visit_item', 'gl_inquiry_other', 'gl_inquiry_form_data', 'gl_inquiry_form'])) {
continue;
}
try {
// 4. 重新插入数据
DB::connection('custom_mysql')->table($table)->insertUsing(
[], // 插入所有列
function ($query) use ($table, $project_id) {
$name = 'gl_data_' . $project_id . '.' . $table;
$query->select('*')->from("{$name}");
}
);
}catch (\Exception $e){
continue;
}
// 5. 更新 project_id(如果存在)
if (Schema::connection('custom_mysql')->hasColumn($table, 'project_id')) {
DB::connection('custom_mysql')->table($table)->update(['project_id' => $news_project_id]);
}
}
return true;
}
/**
* @param $message
* @return bool
*/
... ...
... ... @@ -207,7 +207,7 @@ class SyncProject extends Command
$data = [
'project'=>[
'title' => $title,
'company' => $param['company_name'],
'company' => preg_replace('/【.*?】/', '', $param['company_name']),
'lead_name' => $param['principal_name'],
'mobile' => $param['principal_mobile'],
'mysql_id'=>Project::MYSQL_ID,
... ...
... ... @@ -185,6 +185,9 @@ class KeywordController extends BaseController
*/
public function batchKeywordFiled(){
$param = [];
if(isset($this->param['seo_title'])){
$param['seo_title'] = null;
}
if(isset($this->param['keyword'])){
$param['seo_keywords'] = null;
}
... ...
... ... @@ -444,7 +444,7 @@ class InquiryForwardLogic extends BaseLogic
}
//统计数据赋值
$result = $this->model->list(['inquiry_date' => ['between', [$start_date, $end_date]]], 'id', ['status', 'inquiry_date'], 'asc');
$result = $this->model->list(['inquiry_date' => ['between', [$start_date . ' 00:00:00', $end_date . ' 23:59:59']]], 'id', ['status', 'inquiry_date'], 'asc');
foreach ($result as $value) {
$inquiry_date = substr($value['inquiry_date'], 0, 10);
$data[$inquiry_date]['total'] += 1;
... ...
... ... @@ -159,13 +159,17 @@ class ProjectLogic extends BaseLogic
* @param :1->建站中 2->优化中 3->建站完成 6-》错误单
*/
public function projectSave(){
if($this->param['type'] == Project::TYPE_SEVEN){
$this->setTypeSevenEdit($this->param);
}else{
//优化设置默认关闭
$this->param['is_ai_blog'] = 0;
$this->param['deploy_optimize']['is_ai_blog_send'] = 0;
$this->param['deploy_optimize']['is_auto_keywords'] = 0;
$this->saveSeoPlan($this->param['id'],$this->param['type'],$this->param['deploy_build']['plan'],$this->param['deploy_build']['seo_plan'],$this->param['deploy_optimize']['optimist_mid'] ?? 0,$this->param['deploy_optimize']['quality_mid'] ?? 0);
$this->checkAiBlog($this->param['main_lang_id'],$this->param['is_ai_blog'],$this->param['company'],$this->param['deploy_optimize']['company_en_name'] ?? '',$this->param['deploy_optimize']['company_en_description'] ?? '');
DB::beginTransaction();
try {
if($this->param['type'] == Project::TYPE_SEVEN){
$this->setTypeSevenEdit($this->param);
}else{
//初始化项目
$this->param = $this->createProjectData($this->param);
//双向绑定服务器,需放到保存项目的上方
... ... @@ -191,12 +195,12 @@ class ProjectLogic extends BaseLogic
$this->syncImageFile($this->param['project_location'],$this->param['id']);
//同步信息表
(new SyncService())->projectAcceptAddress($this->param['id']);
}
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('保存失败,请联系管理员');
}
}
return $this->success();
}
... ...
... ... @@ -30,12 +30,12 @@ class InquiryProjectRoute extends Base
*/
public static function saveProjectRoute($project_id, $title, $route, $date)
{
$log = self::where(compact('project_id', 'title'))->first();
if ($log) {
$log->date = $date;
$log->save();
return $log;
}
// $log = self::where(compact('project_id', 'title'))->first();
// if ($log) {
// $log->date = $date;
// $log->save();
// return $log;
// }
$self = new self();
$self->project_id = $project_id;
... ...
<?php
/**
* @remark :
* @name :RequestUrlLog.php
* @author :lyh
* @method :post
* @time :2025/2/21 9:38
*/
namespace App\Models\RequestUrlLog;
use App\Models\Base;
/**
* @remark :url请求日志
* @name :RequestUrlLog
* @author :lyh
* @method :post
* @time :2025/2/21 9:48
*/
class RequestUrlLog extends Base
{
protected $table = 'gl_request_url_log';
}
... ... @@ -84,7 +84,7 @@ class RouteMap extends Base
}
$i=1;//路由重复时拼接
$route = $sign.$suffix;
while(self::isExist($route, $source_id, $project_id)){
while(self::isExist($route, $source_id, $project_id,$source)){
$route = $sign .'-'.$i.$suffix;
$i++;
}
... ... @@ -99,7 +99,7 @@ class RouteMap extends Base
* @time :2025/3/12 9:51
* @param :route:路由 source:模块类型 source_id:对应数据id
*/
protected static function isExist($route, $source_id, $project_id){
protected static function isExist($route, $source_id, $project_id,$source){
$fixed = ['api']; //固定的路由
if(in_array($route, $fixed)){
return true;
... ... @@ -109,8 +109,13 @@ class RouteMap extends Base
];
$route = self::where($where)->first();
if($route){
if($route->source_id != $source_id){
if(($route->source_id != $source_id)){
return true;
}else{
if($source != $route->source){
//source_id想同,source不相同,继续循环
return true;
}
}
}
return false;
... ...