作者 李宇航

合并分支 'lyh-server' 到 'master'

Lyh server



查看合并请求 !2050
<?php
/**
* @remark :
* @name :AggregateKeywordAffixController.php
* @author :lyh
* @method :post
* @time :2025/5/27 14:20
*/
namespace App\Http\Controllers\Aside\Project;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Project\AggregateKeywordAffixLogic;
use Illuminate\Http\Request;
class AggregateKeywordAffixController extends BaseController
{
public function __construct(Request $request)
{
parent::__construct($request);
$this->logic = new AggregateKeywordAffixLogic();
}
/**
* @remark :获取当前项目关键字前后缀
* @name :getAffix
* @author :lyh
* @method :post
* @time :2025/5/27 14:23
*/
public function getAffix(){
$this->request->validate([
'project_id'=>'required',
],[
'project_id.required' => 'project_id不能为空',
]);
$data = $this->logic->getAffix();
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :保存关键字前后缀
* @name :save
* @author :lyh
* @method :post
* @time :2025/5/27 14:23
*/
public function saveAffix(){
$this->request->validate([
'project_id'=>'required',
'prefix'=>'required',
'suffix'=>'required',
],[
'project_id.required' => 'project_id不能为空',
'prefix.required' => '前缀不能为空',
'suffix.required' => '后缀不能为空',
]);
$data = $this->logic->saveAffix();
$this->response('success',Code::SUCCESS,$data);
}
}
... ...
... ... @@ -9,9 +9,9 @@
namespace App\Http\Controllers\Bside\News;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\News\NewsExtendLogic;
use App\Models\News\NewsExtend;
use Illuminate\Http\Request;
class NewsExtendController extends BaseController
... ... @@ -56,6 +56,25 @@ class NewsExtendController extends BaseController
}
/**
* @remark :修改状态
* @name :status
* @author :lyh
* @method :post
* @time :2025/5/27 9:22
*/
public function status(){
$this->request->validate([
'id' => 'required',
'status' => 'required',
], [
'id.required' => '字段名称不能为空',
'status.required' => '字段类型不能为空',
]);
$data = $this->logic->extendStatus();
$this->response('success', Code::SUCCESS, $data);
}
/**
* @remark :删除扩展字段
* @name :del
* @author :lyh
... ...
<?php
/**
* @remark :
* @name :AggregateKeywordAffixLogic.php
* @author :lyh
* @method :post
* @time :2025/5/27 14:21
*/
namespace App\Http\Logic\Aside\Project;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Project\AggregateKeywordAffix;
class AggregateKeywordAffixLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->param = $this->requestAll;
$this->model = new AggregateKeywordAffix();
}
/**
* @remark :保存数据
* @name :getAffix
* @author :lyh
* @method :post
* @time :2025/5/27 14:25
*/
public function getAffix(){
$data = $this->model->read(['project_id'=>$this->param['project_id']]);
if($data === false){
$data = [];
}
return $this->success($data);
}
/**
* @remark :保存数据
* @name :saveAffix
* @author :lyh
* @method :post
* @time :2025/5/27 14:28
*/
public function saveAffix(){
$info = $this->model->read(['project_id'=>$this->param['project_id']]);
try {
if($info === false){
$this->model->addReturnId(['project_id'=>$this->param['project_id'],'prefix'=>$this->param['prefix'] ?? '','suffix'=>$this->param['suffix'] ?? '']);
}else{
$this->model->edit(['prefix'=>$this->param['prefix'] ?? '','suffix'=>$this->param['suffix'] ?? ''],['project_id'=>$this->param['project_id']]);
}
}catch (\Exception $e){
$this->fail('保存失败,请联系管理员');
}
return $this->success();
}
}
... ...
... ... @@ -49,10 +49,16 @@ class CustomTemplateLogic extends BaseLogic
if($info === false){
$this->fail('当前数据不存在');
}
if(!empty($info['html'])){
$info['is_renovation'] = 1;
}else{
$info['html'] = $info['text'];
$info['is_renovation'] = 0;
}
$info['image'] = getImageUrl($info['image'],$this->user['storage_type'],$this->user['project_location']);
if($info['is_visualization'] == 0 || $info['is_visualization'] == 1){
$template_id = $this->getTemplateId();
$html = $this->getTemplateComHtml(empty($info['html']) ? $info['text'] : $info['html'],$info['html_style'],$template_id);
$html = $this->getTemplateComHtml($info['html'],$info['html_style'],$template_id);
$info['html'] = $this->getHeadFooter($html);
}
return $this->success($info);
... ...
... ... @@ -30,6 +30,7 @@ class NewsExtendLogic extends BaseLogic
* @time :2025/5/26 15:17
*/
public function list($map){
$map['status'] = 1;
$data = $this->model->list($map);
return $this->success($data);
}
... ... @@ -61,6 +62,18 @@ class NewsExtendLogic extends BaseLogic
}
/**
* @remark :修改状态
* @name :extendStatus
* @author :lyh
* @method :post
* @time :2025/5/27 9:20
*/
public function extendStatus(){
$result = $this->model->edit(['status'=>$this->param['status']],['id'=>$this->param['id']]);
return $this->success(['result'=>$result]);
}
/**
* @remark :删除字段
* @name :extendDel
* @author :lyh
... ...
... ... @@ -8,6 +8,8 @@ use App\Http\Logic\Bside\BaseLogic;
use App\Models\News\News;
use App\Models\News\NewsCategory;
use App\Models\News\NewsCategory as NewsCategoryModel;
use App\Models\News\NewsExtend;
use App\Models\News\NewsExtendInfo;
use App\Models\RouteMap\RouteMap;
use App\Models\Template\BTemplate;
use App\Services\CosService;
... ... @@ -79,6 +81,7 @@ class NewsLogic extends BaseLogic
$this->edit(['url' => $route], ['id' => $id]);
$this->curlDelRoute(['new_route'=>$route]);
}
$this->model->saveExtendInfo($id,$this->param['extend'] ?? []);
$this->addUpdateNotify(RouteMap::SOURCE_NEWS,$route);
return $this->success(['id'=>$id]);
}
... ... @@ -143,11 +146,12 @@ class NewsLogic extends BaseLogic
{
$info = $this->model->read($this->param);
if($info === false){
$this->fail('error');
$this->fail('当前数据不存在');
}
$info['category_id'] = explode(',',trim($info['category_id'],','));
$info['image_link'] = getImageUrl($info['image'],$this->user['storage_type'],$this->user['project_location']);
$info['og_image'] = getImageUrl(empty($info['og_image']) ? $info['image'] : $info['og_image'],$this->user['storage_type'],$this->user['project_location']);
$info['extend'] = $this->model->getExtendInfo($info['id']);
return $this->success($info);
}
... ...
... ... @@ -32,4 +32,124 @@ class News extends Base
public function getRelatedProductIdAttribute($value){
return Arr::setToArr($value);
}
/**
* @remark :扩展字段根据type返回类型
* @name :setTypValues
* @author :lyh
* @method :post
* @time :2023/12/6 14:43
*/
public function getExtendInfo($news_id){
$extendModel = new NewsExtend();
$list = $extendModel->list(['status'=>1],'id',['id','type','key','title']);
if(empty($list)){
return [];
}
$extendInfoModel = new NewsExtendInfo();
$infoList = $extendInfoModel->list(['news_id'=>$news_id],'created_at');
foreach ($list as $k=>$v){
if($v['type'] == 3 || $v['type'] == 4){
$v['values'] = [];
}else{
$v['values'] = '';
}
if(!empty($infoList)){
foreach ($infoList as $values){
if($v['key'] == $values['key']){
$v = $this->setTypValues($v,$values);
break;
}
}
}
$list[$k] = $v;
}
return $list;
}
/**
* @remark :扩展字段根据type返回类型
* @name :setTypValues
* @author :lyh
* @method :post
* @time :2023/12/6 14:43
*/
public function setTypValues($v,$info){
if($v['type'] == 3){
$arr = json_decode($info['values']);
foreach ($arr as $k1=>$v1){
$v1 = (array)$v1;
$v1['url'] = getImageUrl($v1['url'],$this->user['storage_type'],$this->user['project_location']);
$arr[$k1] = $v1;
}
$v['values'] = $arr;
}elseif($v['type'] == 4){
$arr1 = json_decode($info['values']);
foreach ($arr1 as $k1=>$v1){
$v1 = (array)$v1;
if(isset($v1['url'])){
$v1['url'] = getFileUrl($v1['url'],$this->user['storage_type'],$this->user['project_location'],$this->user['file_cdn'] ?? 0);
}else{
$v1 = getFileUrl($v1,$this->user['storage_type'],$this->user['project_location'],$this->user['file_cdn'] ?? 0);
}
$arr1[$k1] = $v1;
}
$v['values'] = $arr1;
}else{
$v['values'] = $info['values'];
}
return $v;
}
/**
* @remark :保存扩展字段
* @name :saveExtend
* @author :lyh
* @method :post
* @time :2023/11/9 15:02
*/
public function saveExtendInfo($news_id,$extend){
//先删除以前的数据
$extendInfoModel = new NewsExtendInfo();
$extendInfoModel->del(['news_id'=>$news_id]);
if(empty($extend)) {
return true;
}
foreach ($extend as $k => $v){
if(empty($v['values'])){
continue;
}
$v = $this->saveHandleExtend($v,$news_id);
$extendInfoModel->add($v);
}
return true;
}
/**
* @remark :保存扩展字段时处理数据
* @name :saveHandleExtend
* @author :lyh
* @method :post
* @time :2023/12/6 15:11
*/
public function saveHandleExtend(&$v,$news_id){
unset($v['title']);
if($v['type'] == 3){
foreach ($v['values'] as $k1=>$v1){
$v1['url'] = str_replace_url($v1['url']);
$v['values'][$k1] = $v1;
}
$v['values'] = json_encode($v['values']);
}elseif ($v['type'] == 4){
foreach ($v['values'] as $k1=>$v1){
$v1['url'] = str_replace_url($v1['url']);
$v['values'][$k1] = $v1;
}
$v['values'] = json_encode($v['values']);
}
$v['project_id'] = $this->user['project_id'];
$v['news_id'] = $news_id;
return $v;
}
}
... ...
... ... @@ -26,7 +26,7 @@ class NewsExtend extends Base
* @time :2025/5/26 15:39
*/
public function getKey($key = self::EXTEND_KEY,$i = 1){
$info = $this->model->read(['key'=>$key.$i]);
$info = $this->read(['key'=>$key.$i]);
if($info !== false){
return $this->getKey($key,$i+1);
}else{
... ...
<?php
/**
* @remark :
* @name :AggregateKeywordAffix.php
* @author :lyh
* @method :post
* @time :2025/5/27 14:16
*/
namespace App\Models\Project;
use App\Models\Base;
/**
* @remark :聚合页关键字前后缀
* @name :AggregateKeywordAffix
* @author :lyh
* @method :post
* @time :2025/5/27 14:16
*/
class AggregateKeywordAffix extends Base
{
protected $table = 'gl_aggregate_keyword_affix';
}
... ...
... ... @@ -220,6 +220,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/', [Aside\Project\MinorLanguagesController::class, 'getMinorLanguageList'])->name('admin.getMinorLanguageList');
Route::any('/getLanguages', [Aside\Project\MinorLanguagesController::class, 'getLanguages'])->name('admin.getLanguages');
});
//更新项目tdk
Route::any('/updateSeoTdk', [Aside\Com\UpdateController::class, 'updateSeoTdk'])->name('admin.project_updateSeoTdk');
//项目内容采集
... ... @@ -562,6 +563,11 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/info', [Aside\Project\AggregateKeywordController::class, 'info'])->name('admin.aggregateKeyword_info');
Route::any('/save', [Aside\Project\AggregateKeywordController::class, 'save'])->name('admin.aggregateKeyword_save');
Route::any('/del', [Aside\Project\AggregateKeywordController::class, 'del'])->name('admin.aggregateKeyword_del');
//聚合页关键词前后缀
Route::prefix('affix')->group(function () {
Route::any('/getAffix', [Aside\Project\AggregateKeywordAffixController::class, 'getAffix'])->name('admin.affix_getAffix');
Route::any('/saveAffix', [Aside\Project\AggregateKeywordAffixController::class, 'saveAffix'])->name('admin.affix_saveAffix');
});
});
});
... ...
... ... @@ -104,6 +104,11 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/category/status', [\App\Http\Controllers\Bside\News\NewsCategoryController::class, 'status'])->name('news_category_status');
Route::any('/category/sort', [\App\Http\Controllers\Bside\News\NewsCategoryController::class, 'sort'])->name('news_category_sort');
Route::any('/category/categoryTopList', [\App\Http\Controllers\Bside\News\NewsCategoryController::class, 'categoryTopList'])->name('news_category_categoryTopList');
//新闻扩展模块
Route::any('/extend/', [\App\Http\Controllers\Bside\News\NewsExtendController::class, 'lists'])->name('news_extend_lists');
Route::any('/extend/save', [\App\Http\Controllers\Bside\News\NewsExtendController::class, 'save'])->name('news_extend_save');
Route::any('/extend/status', [\App\Http\Controllers\Bside\News\NewsExtendController::class, 'status'])->name('news_extend_status');
Route::any('/extend/del', [\App\Http\Controllers\Bside\News\NewsExtendController::class, 'del'])->name('news_extend_del');
});
//博客相关路由
... ...