作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

... ... @@ -296,13 +296,13 @@ class AiBlogTask extends Command
$domain = $domainModel->getProjectIdDomain($project_id);
if (empty($domain)) {
$this->output('send: 域名不存在, project id: ' . $project_id);
return true;
continue;
}
//判断是否是自建站服务器,如果是,不请求C端接口,数据直接入库
$project_info = $project_model->read(['id'=>$project_id],['serve_id']);
if(!$project_info){
$this->output('send: 项目不存在, project id: ' . $project_id);
return true;
continue;
}
$serve_ip_model = new ServersIp();
$serve_ip_info = $serve_ip_model->read(['id'=>$project_info['serve_id']],['servers_id']);
... ...
<?php
/**
* @remark :
* @name :CheckListController.php
* @author :lyh
* @method :post
* @time :2025/4/17 9:25
*/
namespace App\Http\Controllers\Aside\Optimize;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Models\Project\OptimizeCheckList;
use Illuminate\Http\Request;
/**
* @remark :保存清单
* @name :CheckListController
* @author :lyh
* @method :post
* @time :2025/4/17 9:25
*/
class CheckListController extends BaseController
{
public function __construct(Request $request)
{
parent::__construct($request);
$this->model = new OptimizeCheckList();
}
/**
* @remark :获取分页检查清单数据
* @name :lists
* @author :lyh
* @method :post
* @time :2025/4/17 9:31
*/
public function lists(){
$field = ['id','status','sort','text','created_at'];
$data = $this->model->list($this->map,$this->page,$this->row,'id',$field);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :保存检查清单
* @name :save
* @author :lyh
* @method :post
* @time :2025/4/17 9:32
*/
public function save(){
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 :status
* @author :lyh
* @method :post
* @time :2025/4/17 9:48
*/
public function status(){
$this->request->validate([
'id'=>'required',
'status'=>'required'
],[
'id.required' => '主键不能为空',
'status.required' => '状态不能为空',
]);
$data = $this->model->edit(['status'=>$this->param['status']],['id'=>$this->param['id']]);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :删除数据
* @name :del
* @author :lyh
* @method :post
* @time :2025/4/17 9:48
*/
public function del(){
$this->request->validate([
'id'=>'required',
],[
'id.required' => '主键不能为空',
]);
if(!is_array($this->param['id'])){
$this->param['id'] = ['in',[$this->param['id']]];
}
$data = $this->model->del($this->map);
$this->response('success',Code::SUCCESS,$data);
}
}
... ...
<?php
/**
* @remark :
* @name :CheckLogController.php
* @author :lyh
* @method :post
* @time :2025/4/17 10:07
*/
namespace App\Http\Controllers\Aside\Optimize;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Models\Project\OptimizeCheckLog;
use Illuminate\Http\Request;
/**
* @remark :检查日志
* @name :CheckLogController
* @author :lyh
* @method :post
* @time :2025/4/17 10:15
*/
class CheckLogController extends BaseController
{
public function __construct(Request $request)
{
parent::__construct($request);
$this->model = new OptimizeCheckLog();
}
/**
* @remark :检查日志列表
* @name :lists
* @author :lyh
* @method :post
* @time :2025/4/17 10:17
*/
public function lists(){
$field = ['id','check_id','date','status','images','result','created_at'];
$this->map['status'] = 1;
$lists = $this->model->lists($this->map,$this->page,$this->row,'id',$field);
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :保存数据
* @name :save
* @author :lyh
* @method :post
* @time :2025/4/17 10:27
*/
public function save(){
$this->request->validate([
'id'=>'required', 'check_id'=>'required',
'date'=>'required', 'result'=>'required',
],[
'id.required' => '主键不能为空', 'check_id.required' => '问题id不能为空',
'date.required' => '时间不能为空', 'result.required' => '检查结果不能为空',
]);
$this->param = $this->model->saveHandleParam($this->param,$this->manage['id']);
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 :status
* @author :lyh
* @method :post
* @time :2025/4/17 10:43
*/
public function status(){
$this->request->validate([
'id'=>'required',
'status'=>'required',
],[
'id.required' => '主键不能为空',
'status.required' => 'status不能为空',
]);
$data = $this->model->edit(['status'=>$this->param['status']],['id'=>$this->param['id']]);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :删除数据
* @name :del
* @author :lyh
* @method :post
* @time :2025/4/17 10:52
*/
public function del(){
$this->request->validate([
'id'=>'required',
],[
'id.required' => '主键不能为空',
]);
if(!is_array($this->param['id'])){
$this->param['id'] = ['in',[$this->param['id']]];
}
$data = $this->model->del($this->map);
$this->response('success',Code::SUCCESS,$data);
}
}
... ...
... ... @@ -295,4 +295,21 @@ class KeywordController extends BaseController
$logic->delAllKeyword();
$this->response('success');
}
/**
* @remark :删除关键词所有关联产品
* @name :delRelatedProductId
* @author :lyh
* @method :post
* @time :2025/4/17 11:01
*/
public function delRelatedProductId(KeywordLogic $logic){
$this->request->validate([
'keyword_id'=>'required',
],[
'keyword_id.required' => '关键词ID不能为空',
]);
$logic->delAllRelated($this->param['keyword_id']);
$this->response('success');
}
}
... ...
... ... @@ -826,4 +826,5 @@ class ProductController extends BaseController
}
return $keyword_name;
}
}
... ...
... ... @@ -1025,7 +1025,7 @@ class ProjectLogic extends BaseLogic
public function saveOtherProject(){
//获取当前数据详情
$projectInfo = $this->getProjectInfo($this->param['id']);
if(($projectInfo['created_at'] >= '2014-12-01 00:00:00')){//12月1号过后默认不开启
if(($projectInfo['created_at'] >= '2024-12-01 00:00:00')){//12月1号过后默认不开启
$this->param['aicc'] = Project::TYPE_ZERO;
}
if($this->param['aicc'] == Project::TYPE_ONE && !empty($this->param['exclusive_aicc_day'])){
... ...
... ... @@ -298,6 +298,23 @@ class KeywordLogic extends BaseLogic
}
/**
* @remark :对应删除关联关系
* @name :delRelated
* @author :lyh
* @method :post
* @time :2024/11/28 9:46
*/
public function delAllRelated($keyword_id){
$productModel = new Product();
$productModel->update(['keyword_id' => DB::raw("REPLACE(keyword_id, ',$keyword_id,' , ',')"),'keyword_video_id' => DB::raw("REPLACE(keyword_video_id, ',$keyword_id,' , ',')")]);
$productModel->where('keyword_id',',')->orWhere('keyword_video_id',',')
->update(['keyword_id' => DB::raw("REPLACE(keyword_id, ',' , '')"),'keyword_video_id' => DB::raw("REPLACE(keyword_video_id, ',' , '')")]);
$keywordRelatedModel = new KeywordRelated();
$keywordRelatedModel->del(['keyword_id'=>$keyword_id]);
return $this->success();
}
/**
* @remark :删除所有的关键字
* @name :delAllKeyword
* @author :lyh
... ...
... ... @@ -51,7 +51,6 @@ class RankDataLogic extends BaseLogic
}else{
$api_no = $project['deploy_optimize']['api_no'] ?? 0;
}
$domain_info = (new DomainInfoLogic)->getDomainInfo($project_id);
$rank = RankData::where('project_id', $project_id)->where('api_no', $api_no)->first();
if(empty($rank) && ($project['deploy_optimize']['api_no'] != 0)){
... ...
... ... @@ -11,6 +11,13 @@ namespace App\Models\Project;
use App\Models\Base;
/**
* @remark :售后数据统计
* @name :After
* @author :lyh
* @method :post
* @time :2025/4/17 9:26
*/
class After extends Base
{
protected $table = 'gl_project_after';
... ...
<?php
/**
* @remark :
* @name :OptimizeCheckList.php
* @author :lyh
* @method :post
* @time :2025/4/17 9:27
*/
namespace App\Models\Project;
use App\Models\Base;
/**
* @remark :优化检查清单
* @name :OptimizeCheckList
* @author :lyh
* @method :post
* @time :2025/4/17 9:27
*/
class OptimizeCheckList extends Base
{
protected $table = 'gl_optimize_check_list';
}
... ...
<?php
/**
* @remark :
* @name :OptimizeCheckList.php
* @author :lyh
* @method :post
* @time :2025/4/17 9:27
*/
namespace App\Models\Project;
use App\Helper\Arr;
use App\Models\Base;
/**
* @remark :优化检查日志
* @name :OptimizeCheckList
* @author :lyh
* @method :post
* @time :2025/4/17 9:27
*/
class OptimizeCheckLog extends Base
{
protected $table = 'gl_optimize_check_log';
/**
* @remark :获取器图片数据
* @name :getImagesAttribute
* @author :lyh
* @method :post
* @time :2025/4/17 10:26
*/
public function getImagesAttribute($value){
return Arr::s2a($value);
}
/**
* @remark :保存数据设置参数
* @name :handleParam
* @author :lyh
* @method :post
* @time :2025/4/17 10:35
*/
public function saveHandleParam($param,$manage_id){
if(isset($param['images'])){
$param['images'] = Arr::a2s($param['images'] ?? []);
}
$this->param['operator_id'] = $manage_id;
$this->param['date'] = date('Y-m-d hH:i:s');
return $param;
}
}
... ...
... ... @@ -283,6 +283,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/delProductType', [\App\Http\Controllers\Bside\Product\ProductController::class, 'delProductType'])->name('product_delProductType');
Route::any('/getButton', [\App\Http\Controllers\Bside\Product\ProductController::class, 'getButton'])->name('product_getButton');
Route::any('/batchSetKeyword', [\App\Http\Controllers\Bside\Product\ProductController::class, 'batchSetKeyword'])->name('product_batchSetKeyword');
//产品分类batchSetKeyword
Route::get('category', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'index'])->name('product_category');
Route::get('category/info', [\App\Http\Controllers\Bside\Product\CategoryController::class, 'info'])->name('product_category_info');
... ... @@ -304,6 +305,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('keyword/batchUpdateKeyword', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'batchUpdateKeyword'])->name('product_keyword_batchUpdateKeyword');
Route::any('keyword/batchKeywordIsVideo', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'batchKeywordIsVideo'])->name('product_keyword_batchKeywordIsVideo');
Route::any('keyword/batchKeywordFiled', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'batchKeywordFiled'])->name('product_keyword_batchKeywordFiled');
Route::any('keyword/delRelatedProductId', [\App\Http\Controllers\Bside\Product\KeywordController::class, 'delRelatedProductId'])->name('product_keyword_delRelatedProductId');
//产品参数
Route::get('attr', [\App\Http\Controllers\Bside\Product\AttrController::class, 'index'])->name('product_attr');
Route::get('attr/info', [\App\Http\Controllers\Bside\Product\AttrController::class, 'info'])->name('product_attr_info');
... ...