作者 赵彬吉
正在显示 31 个修改的文件 包含 543 行增加340 行删除
... ... @@ -68,12 +68,29 @@ class UpdateRoute extends Command
*/
public function handle()
{
ProjectServer::useProject(1181);
return $this->setProductKeyword();
ProjectServer::useProject(4132);
return $this->product_action(4132);
DB::disconnect('custom_mysql');
}
/**
* @remark :执行所有产品的路由
* @name :product_action
* @author :lyh
* @method :post
* @time :2025/6/21 17:29
*/
public function product_action($project_id){
$productModel = new Product();
$lists = $productModel->list([],'id',['id','title','route']);
foreach ($lists as $item){
$route = RouteMap::setRoute($item['title'],RouteMap::SOURCE_PRODUCT,$item['id'],$project_id);
$productModel->edit(['route'=>$route],['id'=>$item['id']]);
}
return true;
}
/**
* @remark :查询 路由为空的关键词项目id
* @name :getNullRoute
* @author :lyh
... ... @@ -170,32 +187,6 @@ class UpdateRoute extends Command
return true;
}
// $this->updateProjectOp();
// $projectModel = new Project();
// $lists = $projectModel->list(['delete_status'=>0],'id',['id']);
// foreach ($lists as $v){
// echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
// ProjectServer::useProject($v['id']);
// $webSettingModel = new WebSetting();
// $settingInfo = $webSettingModel->read(['project_id'=>$v['id']]);
// if($settingInfo === false){
// echo date('Y-m-d H:i:s') . '当前项目的设置数据不存在:'.$v['id'] . PHP_EOL;
// //新增一条数据
// $data = [
// 'anchor_setting'=>'["3","4","5"]',
// 'anchor_is_enable'=>1,
// 'anchor_page_num'=>1,
// 'anchor_num'=>2,
// 'anchor_keyword_is_enable'=>1,
// 'project_id'=>$v['id']
// ];
// $webSettingModel->add($data);
// }
// DB::disconnect('custom_mysql');
// }
// echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
// }
/**
* @remark :更新产品
* @name :updateProduct
... ...
... ... @@ -9,37 +9,19 @@
namespace App\Console\Commands\LyhTest;
use App\Console\Commands\Domain\DomainInfo;
use App\Helper\OaGlobalsoApi;
use App\Http\Logic\Aside\Project\ProjectLogic;
use App\Models\Ai\AiBlog;
use App\Models\Ai\AiBlogAuthor;
use App\Models\Ai\AiCommand;
use App\Models\Com\NoticeLog;
use App\Models\Com\V6WeeklyReport;
use App\Models\Product\Category;
use App\Models\Project\AggregateKeywordAffix;
use App\Models\Project\AiBlogTask;
use App\Models\Project\DeployBuild;
use App\Models\Project\DeployOptimize;
use App\Models\Project\OnlineCheck;
use App\Models\Project\KeywordPrefix;
use App\Models\Project\Project;
use App\Models\Project\ProjectAiSetting;
use App\Models\ProjectAssociation\ProjectAssociation;
use App\Models\RouteMap\RouteMap;
use App\Models\Project\ProjectWhiteHatAffix;
use App\Models\Template\BTemplateMain;
use App\Models\Template\TemplateTypeMain;
use App\Models\Visit\Visit;
use App\Models\WebSetting\TranslateBigProject;
use App\Models\WebSetting\WebLanguage;
use App\Models\WebSetting\WebSetting;
use App\Models\Workchat\MessagePush;
use App\Services\AiBlogService;
use App\Services\AiCommandService;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB;
class lyhDemo extends Command
... ... @@ -59,20 +41,18 @@ class lyhDemo extends Command
protected $description = '更新路由';
public function handle(){
$aggregateKeywordAffixModel = new AggregateKeywordAffix();
$info = $aggregateKeywordAffixModel->read(['project_id'=>3298]);
$projectModel = new Project();
$lists = $projectModel->list(['delete_status' => 0,'project_type'=>0,'extend_type'=>0,'type'=>2], 'id', ['id']);
foreach ($lists as $item){
if(in_array($item['id'],[467,110,3298])){
continue;
}
//获取
$keywordPrefixModel = new KeywordPrefix();
$lists = $keywordPrefixModel->list(['project_id'=>0,'id'=>['<',29]]);
$whiteModel = new ProjectWhiteHatAffix();
foreach ($lists as $val) {
echo date('Y-m-d H:i:s') . '开始--项目的id:' . $val['id'] . PHP_EOL;
$data = [
'project_id'=>$item['id'],
'prefix'=>$info['prefix'],
'suffix'=>$info['suffix']
'project_id'=>0,
'name'=>$val['keyword'],
'type'=>$val['type'],
];
$aggregateKeywordAffixModel->addReturnId($data);
$whiteModel->add($data);
}
return true;
}
... ...
... ... @@ -36,7 +36,14 @@ class InitKeywordComment extends Command
public $number = 100;
public function handle(){
return $this->_action(467);
$projectModel = new Project();
$lists = $projectModel->list(['delete_status' => 0,'id'=>['<',1368],'project_type'=>0,'extend_type'=>0,'type'=>['in',[1,2,3,4,6]]], 'id', ['id']);
foreach ($lists as $val) {
echo date('Y-m-d H:i:s') . '开始--项目的id:' . $val['id'] . PHP_EOL;
$this->_action($val['id']);
}
return true;
$keywordCommentModel = new AggregateKeywordComment();
while (true){
$list = NoticeLog::where('type', NoticeLog::TYPE_INIT_KEYWORD_COMMON)->where('status', NoticeLog::STATUS_PENDING)->get();
if(empty($list)){
... ... @@ -49,7 +56,7 @@ class InitKeywordComment extends Command
echo date('Y-m-d H:i:s').'执行的项目id:' . $project_id . PHP_EOL;
try {
$this->_action($project_id);
$count = $keywordCommonModel->counts(['project_id'=>$project_id]);
$count = $keywordCommentModel->counts(['project_id'=>$project_id]);
if($count > 100){
$item->status = NoticeLog::STATUS_SUCCESS;
$item->save();
... ... @@ -86,18 +93,22 @@ class InitKeywordComment extends Command
if(!isset($item['name']) || !isset($item['comment'])){
continue;
}
$twoMonthsAgo = strtotime('-2 months');
$randomTimestamp = rand($twoMonthsAgo, time());
$randomDateTime = date('Y-m-d H:i:s', $randomTimestamp);
$data[] = [
'nickname'=>$item['name'],
'text'=>$item['comment'],
'project_id'=>$project_id,
'type'=>1,
'uid'=>0,
'start_time'=>$randomDateTime,
'created_at'=>date('Y-m-d H:i:s'),
'updated_at'=>date('Y-m-d H:i:s')
];
}
$keywordCommonModel = new AggregateKeywordComment();
$keywordCommonModel->insertAll($data);
$keywordCommentModel = new AggregateKeywordComment();
$keywordCommentModel->insertAll($data);
}
return true;
}
... ...
<?php
/**
* Created by PhpStorm.
* User: Akun
* Date: 2025/06/121
*/
namespace App\Console\Commands\Test;
use App\Models\Product\StockData;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
/**
* Class CreateUpdatePageMaster
* @package App\Console\Commands
*/
class HyStockData extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'hy_stock_data';
/**
* The console command description.
*
* @var string
*/
protected $description = '翰宇药业中文站股票信息获取';
public function handle()
{
$hour = date('H');
$min = date('i');
//9:30 - 11:30 , 13:00 - 15:00
if (($hour == 9 && $min > 15) || $hour == 10 || ($hour == 11 && $min < 45) || $hour == 13 || $hour == 14 || ($hour == 15 && $min < 15)) {
sleep(30);
$this->get_stock();
}
}
public function get_stock()
{
//翰宇药业项目id
$project_id = 3531;
//流通股数量
$all_stock_num = 745000000;
// 连接数据库
$project = ProjectServer::useProject($project_id);
if ($project) {
// 基本参数配置
$apiUrl = "http://web.juhe.cn/finance/stock/hs"; // 接口请求URL
$method = "GET"; // 接口请求方式
$headers = ["Content-Type: application/x-www-form-urlencoded"]; // 接口请求header
$apiKey = "f6d2a89b4049c3400b5d1059deb320bf"; // 在个人中心->我的数据,接口名称上方查看
// 接口请求入参配置
$requestParams = [
'key' => $apiKey,
'gid' => 'sz300199',
'type' => '',
];
$requestParamsStr = http_build_query($requestParams);
// 发起接口网络请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $apiUrl . '?' . $requestParamsStr);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
if (1 == strpos("$" . $apiUrl, "https://")) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
$response = curl_exec($curl);
curl_close($curl);
// 解析响应结果
$responseResult = json_decode($response, true);
if ($responseResult) {
$data = $responseResult['result'][0]['data'];
if ($data) {
//获取最近一条
$stock = StockData::orderBy('id', 'desc')->first();
if (empty($stock) || $data['date'] > $stock->today_date) {
//新增当日数据
$stock = new StockData();
$stock->today_date = $data['date'];
$stock->today_time = $data['time'];
$stock->now_pri = $data['nowPri'];
$stock->increase = $data['increase'];
$stock->incre_per = $data['increPer'];
$stock->today_max = $data['todayMax'];
$stock->today_min = $data['todayMin'];
$stock->today_start_pri = $data['todayStartPri'];
$stock->yestod_end_pri = $data['yestodEndPri'];
$stock->tra_number = $data['traNumber'];
$stock->tra_amount = $data['traAmount'];
$stock->change_per = floor(($data['traNumber'] / $all_stock_num) * 10000) / 100;
$stock->save();
} elseif ($data['date'] == $stock['today_date'] && $data['time'] > $stock['today_time']) {
//当日数据更新
$stock->today_time = $data['time'];
$stock->now_pri = $data['nowPri'];
$stock->increase = $data['increase'];
$stock->incre_per = $data['increPer'];
$stock->today_max = $data['todayMax'];
$stock->today_min = $data['todayMin'];
$stock->today_start_pri = $data['todayStartPri'];
$stock->yestod_end_pri = $data['yestodEndPri'];
$stock->tra_number = $data['traNumber'];
$stock->tra_amount = $data['traAmount'];
$stock->change_per = floor(($data['traNumber'] / $all_stock_num) * 10000) / 100;
$stock->save();
}
$this->output('数据更新成功');
} else {
$this->output('数据为空');
}
} else {
$this->output('请求异常');
}
} else {
$this->output('数据库链接失败');
}
}
/**
* 输出处理日志
* @param $message
* @return bool
*/
public function output($message)
{
echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
return true;
}
}
... ...
... ... @@ -156,6 +156,10 @@ class HtmlCollect extends Command
return true;
}
if ($project_id == 437) {
//437项目单词替换
$html = str_replace('Forenia', 'Tourle', $html);
}
$collect_info->html = $html;
$collect_info->status = CollectTask::STATUS_COM;
$collect_info->save();
... ...
... ... @@ -123,13 +123,20 @@ class ProjectUpdate extends Command
$page_list = array_column($data_page, 'path');
}
//获取需要替换的内容
$replace = [];
if ($project_id == 437) {
//437项目单词替换
$replace = ['Forenia' => 'Tourle'];
}
//设置数据库
$project = ProjectServer::useProject($project_id);
if ($project) {
if ($api_type == 'category') {
//产品分类
$url = $api_url . '?' . http_build_query(['w' => 'category']);
$data = curl_c($url);
$data = curl_c($url, true, $replace);
if (isset($data['code']) && $data['code'] == 200) {
$items = $data['data'] ?? [];
$this->category_insert($project_id, $items, 0, $domain_arr['host'], $web_url_domain, $home_url);
... ... @@ -139,7 +146,7 @@ class ProjectUpdate extends Command
} elseif ($api_type == 'category_news') {
// 新闻分类
$url = $api_url . '?' . http_build_query(['w' => 'category_news']);
$data = curl_c($url);
$data = curl_c($url, true, $replace);
if (isset($data['code']) && $data['code'] == 200) {
$items = $data['data'] ?? [];
$this->category_news_insert($project_id, $items, 0);
... ... @@ -156,7 +163,7 @@ class ProjectUpdate extends Command
$total_page = ceil($count / $page_size);
for ($page = 1; $page <= $total_page; $page++) {
$url_page = $api_url . '?' . http_build_query(['w' => 'tag', 'page' => $page, 'pagesize' => $page_size]);
$data_page = curl_c($url_page);
$data_page = curl_c($url_page, true, $replace);
if (isset($data_page['code']) && $data_page['code'] == 200) {
$items = $data_page['data']['data'] ?? [];
... ... @@ -287,7 +294,7 @@ class ProjectUpdate extends Command
$total_page = ceil($count / $page_size);
for ($page = 1; $page <= $total_page; $page++) {
$url_page = $api_url . '?' . http_build_query(['w' => 'post', 'page' => $page, 'pagesize' => $page_size]);
$data_page = curl_c($url_page);
$data_page = curl_c($url_page, true, $replace);
if (isset($data_page['code']) && $data_page['code'] == 200) {
$items = $data_page['data']['data'] ?? [];
... ... @@ -522,7 +529,7 @@ class ProjectUpdate extends Command
$total_page = ceil($count / $page_size);
for ($page = 1; $page <= $total_page; $page++) {
$url_page = $api_url . '?' . http_build_query(['w' => $api_type, 'page' => $page, 'pagesize' => $page_size]);
$data_page = curl_c($url_page);
$data_page = curl_c($url_page, true, $replace);
if (isset($data_page['code']) && $data_page['code'] == 200) {
$items = $data_page['data']['data'] ?? [];
... ... @@ -616,7 +623,7 @@ class ProjectUpdate extends Command
$total_page = ceil($count / $page_size);
for ($page = 1; $page <= $total_page; $page++) {
$url_page = $api_url . '?' . http_build_query(['w' => 'page', 'page' => $page, 'pagesize' => $page_size]);
$data_page = curl_c($url_page);
$data_page = curl_c($url_page, true, $replace);
if (isset($data_page['code']) && $data_page['code'] == 200) {
$items = $data_page['data']['data'] ?? [];
... ... @@ -706,7 +713,7 @@ class ProjectUpdate extends Command
$total_page = ceil($count / $page_size);
for ($page = 1; $page <= $total_page; $page++) {
$url_page = $api_url . '?' . http_build_query(['w' => $api_type, 'page' => $page, 'pagesize' => $page_size]);
$data_page = curl_c($url_page);
$data_page = curl_c($url_page, true, $replace);
if (isset($data_page['code']) && $data_page['code'] == 200) {
$items = $data_page['data']['data'] ?? [];
... ...
... ... @@ -15,7 +15,7 @@ class FetchTicketProjects extends Command
*
* @var string
*/
protected $signature = 'workorder:fetch-ticket-projects {version}';
protected $signature = 'workorder:fetch-ticket-projects {action}}';
/**
* The console command description.
... ... @@ -41,15 +41,8 @@ class FetchTicketProjects extends Command
*/
public function handle()
{
$version = $this->argument('version');
if ($version == 'v5') {
$this->fetch_v5();
} elseif ($version == 'v6') {
$this->fetch_v6();
} else {
$this->error('Invalid action. Use "v5" or "v6".');
return 1;
}
$action = $this->argument('action');
$this->$action();
return 0;
}
... ... @@ -58,7 +51,7 @@ class FetchTicketProjects extends Command
* @return void
* 请求:https://www.quanqiusou.cn/extend_api/webs/globalso_all.php
*/
public function fetch_v5()
public function fetchV5()
{
# pm 项目经理 assm 售后服务经理
$response = Http::get('https://www.quanqiusou.cn/extend_api/webs/globalso_all.php');
... ... @@ -68,22 +61,25 @@ class FetchTicketProjects extends Command
# V5: 版本号+postid
$uuid = md5("V5{$item['postid']}");
$project = TicketProject::where('uuid', $uuid)->first();
$item['pm'] = $item['pm'] == '未安排' ? '杨长远' : $item['pm'];
$item['assm'] = $item['assm'] == '未安排' ? '杨长远' : $item['assm'];
$item['yhs'] = $item['yhs'] == '未安排' ? '杨长远' : $item['yhs'];
// 如果 $item['cate'] 包含”推广“字符,则$engineer_name = $item['assm']
$engineer_name = (strpos($item['cate'], '推广') !== false) ? $item['yhs'] : $item['assm'];
$assm_id = Manage::where('name', $item['assm'])->value('id') ?? Manage::where('name', '张鸿飞')->value('id') ?? 0; //售后服务经理
$seom_id = Manage::where('name', $item['yhs'])->value('id') ?? Manage::where('name', '陶婵')->value('id') ?? 0; //优化师
// 如果 $item['cate'] 包含”推广“字符,则 $engineer_name = $item['assm']
/**
* 第一负责人逻即说明:
* 优化推广项目:找售后服务经理??鸿飞
* 建站类项目: 找杨长远
*/
$engineer_id = (strpos($item['cate'], '推广') !== false) ? $assm_id : Manage::where('name', '杨长远')->value('id') ?? 0;
$fields = [
'post_id' => $item['postid'],
'company_name' => $item['company'],
'title' => $item['title'],
'engineer_id' => Manage::where('name', $engineer_name)->value('id') ?? 0, // 第一负责人
'assm_id' => Manage::where('name', $item['assm'])->value('id') ?? 0, //售后服务经理
'seom_id' => Manage::where('name', $item['yhs'])->value('id') ?? 0, //售后服务经理
'engineer_id' => $engineer_id, // 第一负责人
'assm_id' => $assm_id,
'seom_id' => $seom_id,
'website' => $item['main_url'] ?? '',
'is_del' => 0,
];
if (!$project) {
$new = new TicketProject();
... ... @@ -106,8 +102,13 @@ class FetchTicketProjects extends Command
$project->save();
}
}
echo "V5: {$item['postid']} - {$item['title']} - {$item['company']} - {$item['main_url']}\n";
}
$postids = collect($items)->pluck('postid')->toArray();
// 软删除 gl_ticket_projects 中不存在的项目
TicketProject::where('version', 5)
->whereNotIn('post_id', $postids)
->update(['is_del' => 1]);
echo date("Y-m-d H:i:s") . " V5: fetch completed, total " . count($items) . " items\n";
}
}
... ... @@ -116,12 +117,15 @@ class FetchTicketProjects extends Command
* 1. 按照ID升序查询 gl_project 表 limit 10
* 2。同步到 TicketProject 后,redis 缓存 ID
*/
public function fetch_v6()
public function fetchV6()
{
$lastid = 0;
while (true) {
try {
$items = Project::where('id', '>', intval($lastid))
// ->where('delete_status', 0)
// ->where('extend_type', '!=', 5) // 排除归档项目
// ->where('type', '!=', 8) // 排除归档项目
->orderBy('id', 'asc')
->limit(10)
->get();
... ... @@ -130,16 +134,46 @@ class FetchTicketProjects extends Command
break;
}
foreach ($items as $item) {
$uuid = md5("V5{$item->id}");
$uuid = md5("V6{$item->id}");
$project = TicketProject::where('uuid', $uuid)->first();
// 售后服务经理
$assm_id = collect([
$item->deploy_optimize->manager_mid ?? 0,
$item->deploy_optimize->tech_leader ?? 0,
8, //张鸿飞
])->first(fn($v) => $v !== null && $v !== 0, 0);
$seom_id = !empty($item->deploy_optimize->optimist_mid) ? $item->deploy_optimize->optimist_mid : $assm_id;
/**
* 第一负责人逻辑
* 建站类项目:找杨长远
* 推广类:找售后
*/
if (in_array($item->type, [Project::TYPE_TWO, Project::TYPE_FOUR, Project::TYPE_SIX])) {
// 优化推广项目
$engineer_id = $assm_id;
} elseif ($item->type == Project::TYPE_THREE) {
$engineer_id = Manage::where('name', '杨长远')->value('id') ?? 0; // 建站类项目找杨长远
} else {
$engineer_id = collect([
$item->deploy_build->manager_mid ?? 0,
$item->deploy_build->leader_mid ?? 0,
0
])->first(fn($v) => $v !== null && $v !== 0, 0);
}
$is_del = (
$item->extend_type == 5
|| $item->type == 8
|| $item->delete_status == 1
|| $item->site_status == 1
) ? 1 : 0;
$fields = [
'company_name' => $item->company,
'title' => $item->title,
'assm_id' => $item->type ==3 ? $item->deploy_optimize->manager_mid ?? 0 : $item->deploy_build->manager_mid ?? 0, // 售后服务经理
'seom_id' => $item->deploy_optimize->optimist_mid ?? $item->deploy_optimize->manager_mid ?? $item->deploy_optimize->tech_leader ?? 0, // 优化推广负责人
'engineer_id' => $item->type == 3 ?
$item->deploy_optimize->optimist_mid ?? $item->deploy_optimize->manager_mid ?? $item->deploy_optimize->tech_leader ?? 0
: $item->deploy_build->manager_mid ?? $item->deploy_build->leader_mid ?? 0, // 技术组长
'assm_id' => $assm_id,
'seom_id' => $seom_id,
'engineer_id' => $engineer_id,
'is_del' => $is_del
];
if (!$project) {
$project = new TicketProject();
... ... @@ -151,7 +185,7 @@ class FetchTicketProjects extends Command
$project->$k = $v;
}
$project->save();
}else{
} else {
$changed = false;
foreach ($fields as $k => $v) {
if ($project->$k != $v) {
... ... @@ -166,7 +200,35 @@ class FetchTicketProjects extends Command
$lastid = $item->id;
echo date('Y-m-d H:i:s') . " V6: $item->id {$item->company} fetch ok \n";
}
}catch (\Exception $exception) {
} catch (\Exception $exception) {
echo $exception;
break;
}
}
}
public function fetch_uuid()
{
$lastid = 0;
while (true) {
try {
$items = TicketProject::where('id', '>', $lastid)
->where('version', 6)
->orderBy('id', 'asc')
->limit(10)
->get();
if ($items->isEmpty()) {
echo "not found items \n";
break;
}
foreach ($items as $item) {
$uuid = md5("V6{$item->table_id}");
$item->uuid = $uuid;
$item->save();
$lastid = $item->id;
echo date('Y-m-d H:i:s') . " V6: $item->id fetch ok \n";
}
} catch (\Exception $exception) {
echo $exception;
break;
}
... ...
<?php
namespace App\Console\Commands;
namespace App\Console\Commands\WorkOrder;
use App\Models\WorkOrder\TicketLog;
use App\Models\WorkOrder\WorkOrderLog;
use App\Services\DingTalkService;
use Illuminate\Console\Command;
... ... @@ -42,12 +43,12 @@ class WorkOrderDing extends Command
{
while (true) {
try {
$log = WorkOrderLog::where('ding', 0)->first();
$log = TicketLog::where('ding', 0)->first();
if (!$log) {
sleep(3);
continue;
}
$mobile = $log->manager->mobile;
$mobile = $log->engineer->mobile;
$response = Http::withBasicAuth(
env('DINGDING_BASIC_USER'),
env('DINGDING_BASIC_PASS')
... ...
... ... @@ -170,12 +170,13 @@ function contains_russian($text) {
if (!function_exists('curl_c')) {
/**
* @param $url
* @param array $replace
* @param $is_array
* @return []
* @author Akun
* @date 2023/11/22 11:33
*/
function curl_c($url,$is_array=true){
function curl_c($url,$is_array=true,$replace=[]){
$header = array(
'Expect:',
'Content-Type: application/json; charset=utf-8'
... ... @@ -197,6 +198,11 @@ if (!function_exists('curl_c')) {
$http_code = curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
if($http_code == 200){
if(!empty($replace)){
foreach ($replace as $k=>$v){
$content = str_replace($k,$v,$content);
}
}
return $is_array ? json_decode($content, true) : $content;
}else{
return false;
... ... @@ -836,8 +842,18 @@ function ends_with($string, $suffix)
return substr($string, -strlen($suffix)) === $suffix;
}
function getCustomRouteMap($module_route,$route = '')
/**
* @remark :扩展模块分类路由
* @name :getCustomRouteMap
* @author :lyh
* @method :post
* @time :2025/6/21 9:57
*/
function getCustomRouteMap($module_route,$route = '',$is_upgrade = 0)
{
if($is_upgrade == 0){
return $route;
}
if($module_route == $route){
$resultRoute = $route;
}else{
... ...
... ... @@ -29,6 +29,7 @@ class TicketController extends BaseController
'logs.engineer:id,name',
])
->where('project_id', $project->id)
->where('submit_side', 2)
->orderBy('id', 'desc')
->paginate($size, ['*'], 'page', $page);
return response()->json(['data' => $tickets]);
... ... @@ -45,13 +46,10 @@ class TicketController extends BaseController
{
$request->validated();
$project = TicketProject::where('uuid', $project_id)->first();
if (!$project) return $this->error('未找到项目', 404);
if ($project->version == 6){
if ($project->project->projectV6->delete_status) return $this->error('该项目已被删除', 400);
if ($project->project->projectV6->extend_type == 5) return $this->error('未续费', 400);
if ($project->project->projectV6->type == 8) return $this->error('项目已归档', 400);
if ($project->project->projectV6->site_status == 1) return $this->error('站点已关闭', 400);
}
if (!$project) return response('未找到项目', 404);
if ($project->is_del) return response('项目状态异常', 400);
if (empty($project->first_engineer)) return response('项目未分配工单负责人', 400);
$result = DB::transaction(function () use ($request, $project) {
$ticket = new Tickets();
$ticket->project_id = $project->id;
... ... @@ -68,21 +66,7 @@ class TicketController extends BaseController
$ticket->submit_username = $request->input('submit_username');
$ticket->save();
$log = new TicketLog();
if ($project->version == 5){
# V5
$log->engineer_id = $project->engineer_id;
}else{
# V6 的项目
if ($project->projectV6->type == 3){
// 项目类型是优化推广,项目负责人找优化
$seo = $project->projectV6->deploy_optimize;
$log->engineer_id = $seo->manager_mid ?? $seo->optimist_mid ?? 0;
}else{
// 非优化推广项目,项目负责人找技术组长
$build = $project->projectV6->deploy_build;
$log->engineer_id = $build->leader_mid ?? 0;
}
}
$log->engineer_id = $project->engineer_id; // 默认第一负责人
$ticket->logs()->save($log);
return $ticket;
});
... ... @@ -103,16 +87,12 @@ class TicketController extends BaseController
])
->find($id);
if (!$ticket) return $this->error('工单未找到', 404);
if (!$ticket) return response('工单未找到', 404);
if ($ticket->project->uuid !== $project_id) return $this->error('无权限查看该工单', 403);
if ($ticket->project->uuid !== $project_id) return response('无权限查看该工单', 403);
if ($ticket->project->is_del) return response('项目状态异常', 400);
if ($ticket->project->version == 6){
if ($ticket->project->projectV6->delete_status) return $this->error('该项目已被删除', 400);
if ($ticket->project->projectV6->extend_type == 5) return $this->error('未续费', 400);
if ($ticket->project->projectV6->type == 8) return $this->error('项目已归档', 400);
if ($ticket->project->projectV6->site_status == 1) return $this->error('站点已关闭', 400);
}
return response()->json(['data' => $ticket]);
}
... ... @@ -148,7 +128,7 @@ class TicketController extends BaseController
'first_engineer:id,name',
])
->where('uuid', $project_id)->first();
if (!$project) return $this->error('未找到项目', 404);
if (!$project) return $this->response('未找到项目', 404);
return response()->json(['data' => $project]);
}
}
... ...
... ... @@ -43,69 +43,6 @@ use Illuminate\Support\Facades\DB;
class CNoticeController extends BaseController
{
/**
* @remark :计算页面数量
* @name :countLanguagePage
* @author :lyh
* @method :post
* @time :2025/6/19 17:14
*/
public function countLanguagePage(){
$this->request->validate([
'language'=>'required',
'project_id'=>'required',
],[
'language.required' => 'language不能为空',
'project_id.required' => 'project_id不能为空',
]);
$bigProjectModel = new TranslateBigProject();
$project_id_arr = $bigProjectModel->selectField(['status'=>1],'project_id') ?? [];
if(in_array($this->param['project_id'],$project_id_arr)){
$this->response('success');
}
$lang_num = count($this->param['language']);
ProjectServer::useProject($this->param['project_id']);
$keyword_num = (new Keyword())->counts(['route'=>['!=',null]]);
$data_num = $this->productNum() + $this->customNum() + $this->newsNum() + $this->blogNum();
DB::disconnect('custom_mysql');
$number = $keyword_num * 18 + $lang_num * $data_num;
if($number >= 450000){
$this->response('success',Code::SUCCESS,['msg'=>'翻译数量过多, 大概页面数量:'.$number.', 磁盘空间占用可能会超过40G,请联系管理员操作!']);
}
$this->response('success');
}
/**
* @remark :产品分类页面数量
* @name :productCateNum
* @author :lyh
* @method :post
* @time :2025/1/4 10:43
*/
public function productNum(){
$number = (new Product())->counts(['status'=>1]);
$settingModel = new SettingNum();
$info = $settingModel->read(['type'=>1]);
if($info === false){
$product_page_number = 15;
}else{
$product_page_number = $info['num'];
}
$productCateModel = new Category();
$productCateList = $productCateModel->list(['status'=>1]);
if(!empty($productCateList)){
$cateReModel = new CategoryRelated();
foreach ($productCateList as $v){
$cate_num = $cateReModel->counts(['cate_id'=>$v['id']]);
if($cate_num == 0){
$number += 1;
}else{
$number += ceil($cate_num / $product_page_number);
}
}
}
return $number;
}
/**
* 更新通知C端
* @param Request $request
* @return \Illuminate\Http\JsonResponse
... ... @@ -134,102 +71,8 @@ class CNoticeController extends BaseController
http_post($url, json_encode($param));
$this->response('更新中请稍后, 更新完成将会发送站内信通知更新结果!');
}
/**
* @remark :新闻数量
* @name :newsNum
* @author :lyh
* @method :post
* @time :2025/1/4 11:21
*/
public function newsNum(){
$newsModel = new News();
$number = $newsModel->counts(['status'=>1]);
$settingModel = new SettingNum();
$info = $settingModel->read(['type'=>2]);
if($info === false){
$news_page_number = 10;
}else{
$news_page_number = $info['num'];
}
$newsCateModel = new NewsCategory();
$newsCateList = $newsCateModel->list(['status'=>0]);
if(!empty($newsCateList)){
foreach ($newsCateList as $v){
$cate_num = $newsModel->counts(['category_id'=>['like',','.$v['id'].',']]);
if($cate_num == 0){
$number += 1;
}else{
$number += ceil($cate_num / $news_page_number);
}
}
}
return $number;
}
/**
* @remark :博客数量
* @name :blogNum
* @author :lyh
* @method :post
* @time :2025/1/4 11:21
*/
public function blogNum(){
$blogModel = new Blog();
$number = $blogModel->counts(['status'=>1]);
$settingModel = new SettingNum();
$info = $settingModel->read(['type'=>3]);
if($info === false){
$news_page_number = 10;
}else{
$news_page_number = $info['num'];
}
$blogCateModel = new BlogCategory();
$blogCateList = $blogCateModel->list(['status'=>0]);
if(!empty($blogCateList)){
foreach ($blogCateList as $v){
$cate_num = $blogModel->counts(['category_id'=>['like',','.$v['id'].',']]);
if($cate_num == 0){
$number += 1;
}else{
$number += ceil($cate_num / $news_page_number);
}
}
}
return $number;
}
/**
* @remark :扩展模块数量
* @name :blogNum
* @author :lyh
* @method :post
* @time :2025/1/4 11:21
*/
public function customNum(){
$contentModel = new CustomModuleContent();
$number = $contentModel->counts(['status'=>0]);
$settingModel = new SettingNum();
$info = $settingModel->read(['type'=>2]);
if($info === false){
$news_page_number = 10;
}else{
$news_page_number = $info['num'];
}
$cateModel = new CustomModuleCategory();
$cateList = $cateModel->list(['status'=>0]);
if(!empty($cateList)){
foreach ($cateList as $v){
$cate_num = $contentModel->counts(['category_id'=>['like',','.$v['id'].',']]);
if($cate_num == 0){
$number += 1;
}else{
$number += ceil($cate_num / $news_page_number);
}
}
}
return $number;
}
/**
* @remark :获取当前项目选中的语种
* @name :getCountry
* @author :lyh
... ...
<?php
/**
* @remark :
* @name :ProjectWhiteHatAffixController.php
* @author :lyh
* @method :post
* @time :2025/6/23 10:59
*/
namespace App\Http\Controllers\Aside\Project;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Models\Project\ProjectWhiteHatAffix;
use Illuminate\Http\Request;
/**
* @remark :白帽seo前后缀
* @name :ProjectWhiteHatAffixController
* @author :lyh
* @method :post
* @time :2025/6/23 10:59
*/
class ProjectWhiteHatAffixController extends BaseController
{
public function __construct(Request $request)
{
$this->model = new ProjectWhiteHatAffix();
parent::__construct($request);
}
/**
* @remark :根据项目获取白帽前后缀
* @name :lists
* @author :lyh
* @method :post
* @time :2025/6/23 11:00
* @param :project_id->项目id
*/
public function list(){
$this->request->validate([
'project_id'=>'required',
],[
'project_id.required' => '项目id不能为空',
]);
if(isset($this->map['project_id']) && !empty($this->map['project_id'])){
$this->map['project_id'] = ['in',[0,$this->map['project_id']]];
}
$data = $this->model->list($this->map);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :保存数据
* @name :save
* @author :lyh
* @method :post
* @time :2025/6/23 11:04
* @param :prefix->前缀
* @param :suffix->后缀
* @param :project_id->项目id
*/
public function save(){
$this->request->validate([
'project_id'=>'required',
'name'=>'required',
'type'=>'required',
],[
'project_id.required' => '项目id不能为空',
'name.required' => '前后缀名称不能为空',
'type.required' => '类型不能为空',
]);
if(isset($this->param['id']) && !empty($this->param['id'])){
$id = $this->param['id'];
$this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
$id = $this->model->addReturnId($this->param);
}
$this->response('success',Code::SUCCESS,['id'=>$id]);
}
/**
* @remark :删除数据
* @name :del
* @author :lyh
* @method :post
* @time :2025/6/23 11:08
* @param :ids->id集合数组
*/
public function del(){
$this->request->validate([
'ids'=>'required',
],[
'ids.required' => '项目id不能为空',
]);
foreach ($this->param['ids'] as $id){
$info = $this->model->read(['id'=>$id]);
if($info['project_id'] == 0){
continue;
}
$this->model->del(['id'=>$id]);
}
$this->response('success');
}
}
... ...
... ... @@ -25,9 +25,9 @@ class AsideTicketController extends BaseController
* 1. 超管看所有工单
* 2. 其他查看和自己有关的工单
*/
$lists = TicketLog::with([
'ticket.project.projectV6:id,company,title',
'ticket.logs.engineer:id,name',
$lists = Tickets::with([
'logs.engineer:id,name',
'project',
])
->when($this, function ($query) {
$role = $this->manage['role'];
... ... @@ -36,29 +36,32 @@ class AsideTicketController extends BaseController
return $query;
}
// 其他角色查自己参与的工单
return $query->where('engineer_id', $this->manage['id']);
return $query->where(function ($q) {
$q->where('submit_user_id', $this->manage['id'])
->orWhereHas('logs', function ($q1) {
$q1->where('engineer_id', $this->manage['id']);
});
});
})
->when($request->input('project_id') !== null, function ($query) use ($request) {
// project_id 查 gl_ticket_projects.uuid
return $query->whereHas('ticket.project', function ($q) use ($request) {
$q->where('uuid', $request->input('project_id'));
$projectId = $request->input('project_id');
return $query->whereHas('project', function ($q) use ($projectId) {
$q->where('uuid', $projectId);
});
})
->when($request->input('status') !== null, function ($query) use ($request) {
// status 查 gl_tickets.status
return $query->whereHas('ticket', function ($q) use ($request) {
$q->where('status', $request->input('status'));
});
$status = $request->input('status');
return $query->where('status', $status);
})
->when($request->input('search'), function ($query) use ($request) {
// search 查 gl_tickets.title 或 gl_ticket_projects.title 或 gl_ticket_projects.company_name
$search = $request->input('search');
$query->where(function ($q) use ($search) {
$q->whereHas('ticket', function ($q1) use ($search) {
$q1->where('title', 'like', '%' . $search . '%');
})
->orWhereHas('ticket.project', function ($q2) use ($search) {
$q2->where('title', 'like', '%' . $search . '%')
return $query->where(function ($q) use ($search) {
$q->where('title', 'like', '%' . $search . '%')
->orWhereHas('project', function ($q1) use ($search) {
$q1->where('title', 'like', '%' . $search . '%')
->orWhere('company_name', 'like', '%' . $search . '%');
});
});
... ... @@ -70,16 +73,11 @@ class AsideTicketController extends BaseController
public function getProjects($search)
{
$projects = TicketProject::with([
'projectV6:id,company,title',
])
$projects = TicketProject::where('is_del', 0)
->where(function ($query) use ($search) {
// 查找项目名称或公司名称
$query->where('title', 'like', '%' . $search . '%')
->orWhere('company_name', 'like', '%' . $search . '%')
->orWhereHas('projectV6', function ($q) use ($search) {
$q->where('company', 'like', '%' . $search . '%')
->orWhere('title', 'like', '%' . $search . '%');
});
->orWhere('company_name', 'like', '%' . $search . '%');
})
->get();
$this->response('success', Code::SUCCESS, $projects);
... ... @@ -95,12 +93,7 @@ class AsideTicketController extends BaseController
{
$request->validated();
$project = TicketProject::where('uuid', $request->input('project_id'))->first();
if ($project->version == 6){
if ($project->projectV6->delete_status) $this->response('该项目已被删除', Code::USER_MODEL_NOTFOUND_ERROE);
if ($project->projectV6->extend_type == 5) $this->response('未续费', Code::USER_MODEL_NOTFOUND_ERROE);
if ($project->projectV6->type == 8) $this->response('项目已归档', Code::USER_MODEL_NOTFOUND_ERROE);
if ($project->projectV6->site_status == 1) $this->response('站点已关闭', Code::USER_MODEL_NOTFOUND_ERROE);
}
if ($project->is_del) $this->response('该项目状态异常', Code::USER_MODEL_NOTFOUND_ERROE);
$result = DB::transaction(function () use ($request, $project) {
$ticket = new Tickets();
$ticket->project_id = $project->id;
... ... @@ -193,7 +186,6 @@ class AsideTicketController extends BaseController
$ticket->reply = $request->input('reply', null);
$ticket->status = $request->input('status', $ticket->status);
$ticket->save();
if ($ticket->status == Tickets::STATUS_COMPLETED)
{
// 完成工单,把子任务里面未完成的工单改为完成
... ... @@ -201,6 +193,7 @@ class AsideTicketController extends BaseController
$ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED)
->update(['status' => TicketLog::STATUS_COMPLETED, 'end_at' => now()]);
}
$ticket->save();
return $ticket;
});
$this->response('success', Code::SUCCESS, $result->toArray());
... ...
... ... @@ -69,10 +69,11 @@ class AsideTicketLogController extends BaseController
if ($log->status >= TicketLog::STATUS_COMPLETED)
{
// 我的工单标记为已完成
$log->status = $request->input('status');
$log->end_at = now();
}
}
if ($request->input('reply') !== null)
$log->reply = $request->input('reply', '');
$log->save();
// 是否有未完成的子任务
$pending = $ticket->logs()
... ...
... ... @@ -42,7 +42,7 @@ class CustomModuleCategoryController extends BaseController
$template_id = $this->getModuleTemplateId($this->param['module_id']);
foreach ($list as $k => $v){
$v['is_renovation'] = $this->getIsRenovation($v['module_id'],BTemplate::IS_LIST,$template_id,$v['id'],BTemplate::IS_CUSTOM);
$v['url'] = $this->user['domain'].getCustomRouteMap($moduleInfo['route'],$v['route']);
$v['url'] = $this->user['domain'].getCustomRouteMap($moduleInfo['route'],$v['route'],$this->user['is_upgrade']);
$list[$k] = $v;
}
}
... ...
... ... @@ -184,6 +184,9 @@ class FileManageController extends BaseController
$enName = $fileName .'-'.$i;
$i++;
}
if(empty($enName)){
$enName = md5(uniqid().$name);
}
return $enName.'.'.$suffix;
}
... ...
... ... @@ -43,6 +43,7 @@ class TestController extends BaseController
* @time :2025/2/13 16:34
*/
public function ceshi(){
$this->response('success',Code::SUCCESS,[]);
$data = Translate::tran('测试翻译', 'en');
$this->response('success',Code::SUCCESS,['data'=>$data]);
}
}
... ...
... ... @@ -26,6 +26,7 @@ use App\Models\Inquiry\InquiryIP;
use App\Models\Inquiry\InquirySet;
use App\Models\Manage\Manage;
use App\Models\Project\After;
use App\Models\Project\AggregateKeywordComment;
use App\Models\Project\AiBlogTask;
use App\Models\Project\DeployBuild;
use App\Models\Project\DeployOptimize;
... ... @@ -427,6 +428,12 @@ class ProjectLogic extends BaseLogic
$this->param['deploy_build']['is_supplier'] = 1;
}
}
//聚合页评论为空时,生成评论
$keywordCommentModel = new AggregateKeywordComment();
$commentNum = $keywordCommentModel->counts(['project_id'=>$param['id']]);
if(empty($commentNum)){
NoticeLog::createLog(NoticeLog::TYPE_INIT_KEYWORD_COMMON, ['project_id' => $param['id']]);
}
}
if($param['type'] == Project::TYPE_FIVE){
$param['extend_type'] = Project::TYPE_FIVE;
... ...
... ... @@ -202,7 +202,7 @@ class BlogCategoryLogic extends BaseLogic
RouteMap::delRoute(RouteMap::SOURCE_BLOG_CATE, $id, $this->user['project_id']);
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','alias']);
$this->curlDelRoute(['old_route'=>$info['alias']]);
$this->curlDelRoute(['old_route'=>$info['alias'],'source'=>RouteMap::SOURCE_BLOG_CATE]);
return $this->success();
}
... ...
... ... @@ -161,7 +161,7 @@ class BlogLogic extends BaseLogic
public function delRoute($id){
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','url']);
$this->curlDelRoute(['old_route'=>$info['url']]);
$this->curlDelRoute(['old_route'=>$info['url'],'source'=>RouteMap::SOURCE_BLOG]);
return $this->success();
}
... ...
... ... @@ -11,6 +11,7 @@ namespace App\Http\Logic\Bside\CustomModule;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Com\NoticeLog;
use App\Models\CustomModule\CustomModule;
use App\Models\CustomModule\CustomModuleCategory;
use App\Models\RouteMap\RouteMap;
use App\Models\Template\BTemplate;
... ... @@ -221,7 +222,10 @@ class CustomModuleCategoryLogic extends BaseLogic
}
RouteMap::delRoute(RouteMap::SOURCE_MODULE_CATE, $id, $this->user['project_id']);
//通知
$this->curlDelRoute(['old_route'=>$info['route']]);
//获取模块路由
$customModuleModel = new CustomModule();
$moduleInfo = $customModuleModel->read(['id'=>$info['module_id']]);
$this->curlDelRoute(['old_route'=>$info['route'],'path'=>getCustomRouteMap($moduleInfo['route'],$info['route'],$this->user['is_upgrade'])]);
return $this->success();
}
... ...
... ... @@ -355,8 +355,13 @@ class CustomModuleContentLogic extends BaseLogic
{
RouteMap::delRoute(RouteMap::SOURCE_MODULE, $id, $this->user['project_id']);
//通知
$info = $this->model->read(['id' => $id], ['id', 'route']);
$this->curlDelRoute(['old_route'=>$info['route']]);
$info = $this->model->read(['id' => $id], ['id', 'route','category_id']);
$categoryIdArr = $info['category_id'];
$cate_id = (int)array_shift($categoryIdArr);
$routeMapModel = new RouteMap();
$routeInfo = $routeMapModel->read(['source'=>RouteMap::SOURCE_MODULE_CATE,'source_id'=>$cate_id]);
$path = ($routeInfo['route'] ?? '');
$this->curlDelRoute(['old_route'=>$info['route'],'path'=>$path]);
return $this->success();
}
... ...
... ... @@ -216,7 +216,7 @@ class NewsCategoryLogic extends BaseLogic
//删除路由映射
RouteMap::delRoute(RouteMap::SOURCE_NEWS_CATE, $id, $this->user['project_id']);
$info = $this->model->read(['id'=>$id],['id','alias']);
$this->curlDelRoute(['old_route'=>$info['alias']]);
$this->curlDelRoute(['old_route'=>$info['alias'],'source'=>RouteMap::SOURCE_NEWS_CATE]);
return $this->success();
}
... ...
... ... @@ -357,7 +357,7 @@ class NewsLogic extends BaseLogic
{
//生成一条删除路由记录
$info = $this->model->read(['id' => $id], ['id', 'url']);
$this->curlDelRoute(['old_route'=>$info['url']]);
$this->curlDelRoute(['old_route'=>$info['url'],'source'=>RouteMap::SOURCE_NEWS]);
return $this->success();
}
... ...
... ... @@ -199,7 +199,7 @@ class CategoryLogic extends BaseLogic
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','route']);
if($info !== false){
$this->curlDelRoute(['old_route'=>$info['route']]);
$this->curlDelRoute(['old_route'=>$info['route'],'source'=>RouteMap::SOURCE_PRODUCT_CATE]);
}
return $this->success();
}
... ...
... ... @@ -188,7 +188,7 @@ class KeywordLogic extends BaseLogic
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','route']);
if($info !== false){
$this->curlDelRoute(['old_route'=>$info['route']]);
$this->curlDelRoute(['old_route'=>$info['route'],'source'=>RouteMap::SOURCE_PRODUCT_KEYWORD]);
}
return $this->success();
}
... ... @@ -396,7 +396,6 @@ class KeywordLogic extends BaseLogic
preg_match_all('/\{[^{}]*\}/', $text, $matches);
$data = [];
$twoMonthsAgo = strtotime('-2 months');
if (!empty($text)) {
foreach ($matches[0] as $item) {
$item = str_replace("'", '"', $item);
... ...
... ... @@ -472,7 +472,7 @@ class ProductLogic extends BaseLogic
public function delRoute($id){
//生成一条删除路由记录
$info = $this->model->read(['id'=>$id],['id','route']);
$this->curlDelRoute(['old_route'=>$info['route']]);
$this->curlDelRoute(['old_route'=>$info['route'],'source'=>RouteMap::SOURCE_PRODUCT]);
return $this->success();
}
... ...
... ... @@ -306,6 +306,7 @@ class UserLoginLogic
$info['is_inquiry_country'] = $project['is_inquiry_country'];
$info['is_subscribe'] = $project['is_subscribe'];
$info['is_news'] = $project['is_news'] ?? 0;
$info['api_no'] = $project['deploy_optimize']['api_no'] ?? '';
//是否开通AMP
$is_amp = 0;
if(!empty($project['deploy_optimize']['domain'])){
... ...
<?php
namespace App\Models\Product;
use Illuminate\Database\Eloquent\Model;
class StockData extends Model
{
protected $connection = "custom_mysql";
protected $table = 'gl_stock_data';
}
... ...
<?php
/**
* @remark :
* @name :ProjectWhiteHatAffix.php
* @author :lyh
* @method :post
* @time :2025/6/23 11:01
*/
namespace App\Models\Project;
use App\Models\Base;
/**
* @remark :白帽seo的前后缀
* @name :ProjectWhiteHatAffix
* @author :lyh
* @method :post
* @time :2025/6/23 11:02
*/
class ProjectWhiteHatAffix extends Base
{
protected $table = 'gl_project_white_hat_affix';
}
... ...
... ... @@ -15,7 +15,6 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/logout', [Aside\LoginController::class, 'logout'])->name('admin.logout.white');
Route::any('/getAccessAddress', [Aside\LoginController::class, 'getAccessAddress'])->name('admin.getAccessAddress');//获取B端地址
Route::any('/sendNotify', [Aside\Com\CNoticeController::class, 'sendNotify'])->name('admin.sendNotify');
Route::any('/countLanguagePage', [Aside\Com\CNoticeController::class, 'countLanguagePage'])->name('admin.countLanguagePage');//统计页面数量
Route::any('/getCountry', [Aside\Com\CNoticeController::class, 'getCountry'])->name('admin.getCountry');
Route::any('/getDynamicPassword', [Aside\Com\IndexController::class, 'getDynamicPassword'])->name('admin.getDynamicPassword');
Route::any('/notAiHumanizer', [Aside\Com\IndexController::class, 'notAiHumanizer'])->name('admin.notAiHumanizer');
... ... @@ -596,6 +595,12 @@ Route::middleware(['aloginauth'])->group(function () {
});
});
//白帽seo前后缀
Route::prefix('white_hat')->group(function () {
Route::any('/list', [Aside\Project\ProjectWhiteHatAffixController::class, 'list'])->name('admin.white_hat_read');
Route::any('/save', [Aside\Project\ProjectWhiteHatAffixController::class, 'save'])->name('admin.white_hat_save');
Route::any('/del', [Aside\Project\ProjectWhiteHatAffixController::class, 'del'])->name('admin.white_hat_del');
});
});
//无需登录验证的路由组
... ... @@ -621,6 +626,8 @@ Route::group([], function () {
Route::any('/collect', [Aside\Collect\CollectController::class, 'index'])->name('admin.collect');
//同步询盘
Route::any('/sync_inquiry', [Aside\Com\IndexController::class, 'sync_inquiry'])->name('admin.sync_inquiry');
Route::post('/images_uploads', [\App\Http\Controllers\File\ImageController::class, 'upload'])->name('admin.images_uploads');//无需登录上传
Route::post('/files_uploads', [\App\Http\Controllers\File\FileController::class, 'upload'])->name('admin.files_uploads');
});
... ...