作者 赵彬吉
... ... @@ -113,7 +113,7 @@ class AiBlogAutoPublish extends Command
}
}
} else {
if($frequency[0] == '1/2'){//一天2篇
if(strpos($frequency[0],'/')){//一天2篇
$aiBlogTaskModel = new AiBlogTaskModel();
$frequency = explode('/', $frequency[0]);
//查询当前已发布几篇
... ...
... ... @@ -62,16 +62,16 @@ class GeoCount extends Command
if(empty($project_id)){
return true;
}
$projectModel = new Project();
$geo_qualify_day = $projectModel->getValue(['id'=>$project_id],['geo_qualify_day']);
$geoQuestionResModel = new GeoQuestionResult();
$platforms = ['gemini','openai','deepseek','poe','perplexity','google_ai_overview','openai-not-network','claude'];
foreach ($project_id as $item){
$projectModel = new Project();
$geo_qualify_num = $projectModel->getValue(['id'=>$item],'geo_qualify_num');
$this->output('执行的项目ID----'.$item);
//收录总数
$total = $geoQuestionResModel->counts(['project_id' => $item,'hit'=>['!=',0],'created_at' => ['between',[$start,$end]]]);
$qualify_total = $geoQuestionResModel->counts(['platform'=>['in',['openai', 'gemini','google_ai_overview']],'project_id' => $item,'hit'=>['!=',0],'created_at' => ['between',[$start,$end]]]);
if($qualify_total > $geo_qualify_day){
if($qualify_total > $geo_qualify_num){
$is_qualify = 1;
}
$data = [
... ...
... ... @@ -66,16 +66,16 @@ class GeoCountAll extends Command
if(empty($project_id)){
return true;
}
$projectModel = new Project();
$geo_qualify_day = $projectModel->getValue(['id'=>$project_id],['geo_qualify_day']);
$geoQuestionResModel = new GeoQuestionLog();
$platforms = ['gemini','openai','deepseek','poe','perplexity','google_ai_overview','openai-not-network','claude'];
foreach ($project_id as $item){
$projectModel = new Project();
$geo_qualify_num = $projectModel->getValue(['id'=>$item],'geo_qualify_num');
$this->output('执行的项目ID----'.$item);
//收录总数
$total = $geoQuestionResModel->counts(['project_id' => $item,'hit'=>['!=',0],'created_at' => ['between',[$start,$end]]]);
$qualify_total = $geoQuestionResModel->counts(['platform'=>['in',['openai', 'gemini','google_ai_overview']],'project_id' => $item,'hit'=>['!=',0],'created_at' => ['between',[$start,$end]]]);
if($total > $geo_qualify_day){
if($total > $geo_qualify_num){
$is_qualify = 1;
}
$data = [
... ...
... ... @@ -25,6 +25,7 @@ use App\Models\Template\Template;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use PhpOffice\PhpSpreadsheet\IOFactory;
class LyhImportTest extends Command
{
... ... @@ -52,15 +53,41 @@ class LyhImportTest extends Command
*/
public function handle()
{
ProjectServer::useProject(3531);
echo date('Y-m-d H:i:s') . 'start->3531' . PHP_EOL;
// $this->importProductCategory('https://ecdn6-nc.globalso.com/upload/p/3654/file/2025-06/products-1.csv',3654);
$this->import3531CustomModule(3531);
ProjectServer::useProject(1517);
echo date('Y-m-d H:i:s') . 'start->1517' . PHP_EOL;
$url1 = 'https://ecdn6.globalso.com/upload/p/1517/file/2025-10/horse-racing-tkd-modification-1.xlsx';//改tdk
$url2 = 'https://v6-file.globalso.com/upload/p/1517/file/2025-10/horse-racing-url-modification.xlsx';//改url路由+tdk
$this->download_1517_action($url1);
DB::disconnect('custom_mysql');
echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
}
/**
* @remark :导入
* @name :download_1517_action
* @author :lyh
* @method :post
* @time :2025/10/22 16:47
*/
public function download_1517_action($url)
{
// 下载到 Laravel storage 的临时路径
$tempPath = storage_path('app/temp_url.xlsx');
file_put_contents($tempPath, file_get_contents($url));
// 载入 Excel
try {
$spreadsheet = IOFactory::load($tempPath);
$sheet = $spreadsheet->getActiveSheet();
$rows = $sheet->toArray();
unlink($tempPath);
dd($rows);
}catch (\Exception $e){
echo '文件打不开'.PHP_EOL;
DB::disconnect('custom_mysql');
}
}
/**
* @remark :3951项目导入产品
* @name :import3951Product
* @author :lyh
... ...
... ... @@ -44,6 +44,7 @@ use App\Models\WebSetting\WebLanguage;
use App\Models\WorkOrder\TicketProject;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
/**
* 项目管理
... ... @@ -320,7 +321,7 @@ class ProjectController extends BaseController
}
}
if(isset($this->map['seo_plan'])){
$query = $query->where('gl_project_deploy_build.seo_plan','!=',0);
$query = $query->whereNotIn('gl_project_deploy_build.seo_plan',[0,9])->where('gl_project_deploy_build.plan',0);
}
if(isset($this->map['site_status'])){
$query = $query->where('gl_project.site_status',$this->map['site_status']);
... ... @@ -1328,4 +1329,26 @@ class ProjectController extends BaseController
$data['videoFrequency'] =$videoModel->videoFrequency();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :获取广告先投特批
* @name :getSpAdsLists
* @author :lyh
* @method :post
* @time :2025/10/22 16:59
*/
public function getSpAdsLists()
{
$url = 'https://oa.cmer.com/api/sp_ads_lists';
// 发送 GET 请求(附带 token)
$params['token'] = md5('qqs' . date('Y-m-d'));
$response = Http::get($url, $params);
// 判断请求是否成功
if ($response->successful()) {
$data = $response->json(); // 自动解析 JSON
$this->response('success', Code::SUCCESS, $data);
} else {
$this->fail('拉取结果失败,请联系管理员');
}
}
}
... ...
... ... @@ -5,6 +5,8 @@ namespace App\Http\Logic\Bside\HomeCount;
use App\Helper\FormGlobalsoApi;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Geo\GeoCount;
use App\Models\RankData\RankDataBmseo;
use App\Models\Template\BCustomTemplate;
use App\Models\Visit\Visit;
use App\Models\Visit\VisitItem;
... ... @@ -102,11 +104,12 @@ class CountLogic extends BaseLogic
*/
public function keyword_data_count(){
$version = $this->project['version'] ?? '';
if(!empty($version) && $version != '7.5'){
}
$yesterday = date('Y-m-d');
$rankDataModel = new RankDataModel();
if($this->user['project_seo_type'] == 1){
$rankDataModel = new RankDataBmseo();
}else{
$rankDataModel = new RankDataModel();
}
$param = [
'updated_date' => $yesterday,
'project_id' => $this->user['project_id']
... ... @@ -121,6 +124,13 @@ class CountLogic extends BaseLogic
$data = [];
}
}
if(!empty($version) && ($version == '7.5')){
$geoCountModel = new GeoCount();
$geoInfo = $geoCountModel->where('project_id',$this->user['project_id'])->where('date', '<=', date('Y-m-d'))->orderBy('date', 'desc')->first();
$geoInfo = $geoInfo ? $geoInfo->toArray() : [];
$data['geo_qualify_total'] = $geoInfo['qualify_total'] ?? 0;
$data['total_count'] = ($this->project['deploy_build']['keyword_num'] ?? 0) + ($this->project['geo_qualify_num'] ?? 0);
}
return $this->success($data);
}
... ...
... ... @@ -286,6 +286,7 @@ class UserLoginLogic
$info['is_watermark'] = $project['is_watermark'];
$info['configuration'] = $project['deploy_build']['configuration'];
$info['project_type'] = $project['type'];
$info['version'] = $project['version'] ?? 6;
$info['project_seo_type'] = $project['project_type'];
$info['storage_type'] = $project['storage_type'];
$info['open_export_product'] = $project['open_export_product'];
... ...
... ... @@ -55,7 +55,7 @@ class LoginAuthMiddleware
//操作权限设置
$projectRoleModel = new ProjectRoleModel();
$role_info = $projectRoleModel->read(['id'=>$info['role_id']]);
if($role_info['status'] != 0){
if($role_info === false || $role_info['status'] != 0){
return response(['code'=>Code::USER_LOGIN_ERROE,'message'=>'当前用户角色被禁用']);
}
return $role_info;
... ...
... ... @@ -35,7 +35,7 @@ class GeoPlatform extends Base
public function getList(){
// $data = Cache::get('geo_platform');
// if(empty($data)){
$data = $this->list(['status'=>$this::STATUS_ON],'id',['name','en_name','icon','sort'],'asc');
$data = $this->list(['status'=>$this::STATUS_ON],'sort',['name','en_name','icon','sort'],'desc');
Cache::put('geo_platform',$data,'12 * 3600');
// }
return $data;
... ...
... ... @@ -79,7 +79,9 @@ class Project extends Base
3=>'2-4',
4=>'3-5',
5=>'5-7',
6=>'1/2'
6=>'1/2',
7=>'1/3',
8=>'1/1',
];
if($val){
return $arr[$val] ?? '';
... ...
... ... @@ -207,6 +207,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/saveSiteStatus', [Aside\Project\ProjectController::class, 'saveSiteStatus'])->name('admin.project_saveSiteStatus');
Route::any('/updateTdk', [Aside\Project\ProjectController::class, 'updateTdk'])->name('admin.project_updateTdk');//更新项目tdk
Route::any('/videoSetting', [Aside\Project\ProjectController::class, 'videoSetting'])->name('admin.project_videoSetting');//项目管理AI.video设置
Route::any('/getSpAdsLists', [Aside\Project\ProjectController::class, 'getSpAdsLists'])->name('admin.project_getSpAdsLists');//项目管理广告投放
//获取关键词前缀和后缀
Route::prefix('keyword')->group(function () {
Route::any('/getKeywordPrefix', [Aside\Project\KeywordPrefixController::class, 'getKeywordPrefix'])->name('admin.keyword_getKeywordPrefix');
... ...