作者 赵彬吉

Merge branch 'develop' of http://47.244.231.31:8099/zhl/globalso-v6 into develop

... ... @@ -435,14 +435,12 @@ function isEnglish($str) {
* @method :post
* @time :2023/6/28 17:39
*/
function characterTruncation($string,$startTag,$endTag){
$startPos = strpos($string, $startTag);
$endPos = strpos($string, $endTag);
if ($startPos !== false && $endPos !== false) {
$startPos += strlen($startTag);
$result = substr($string, $startPos, $endPos - $startPos);
function characterTruncation($string,$pattern){
preg_match($pattern, $string, $matches);
if (isset($matches[0])) {
$result = $matches[0];
return $result; // 输出:这是footer标签的内容
} else {
echo "无法找到起始或结束标签";
return '';
}
return $result;
}
... ...
... ... @@ -5,7 +5,7 @@ namespace App\Http\Controllers\Bside\Template;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\BTemplate\BTemplateLogic;
use App\Http\Requests\Bside\TemplateRequest;
use App\Http\Requests\Bside\Template\TemplateRequest;
class BTemplateController extends BaseController
{
... ... @@ -58,13 +58,6 @@ class BTemplateController extends BaseController
* @time :2023/6/29 10:02
*/
public function save(TemplateRequest $templateRequest,BTemplateLogic $BTemplateLogic){
if(isset($this->param['id'])){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
}
$templateRequest->validated();
$BTemplateLogic->templateSave();
$this->response('success');
... ...
... ... @@ -25,4 +25,16 @@ class BTemplateModuleController extends BaseController
$list = $BTemplateModuleLogic->ModuleList($this->map,$this->page,$this->row,$this->order);
$this->response('success',Code::SUCCESS,$list);
}
/**
* @remark :获取所有模块类型
* @name :getType
* @author :lyh
* @method :post
* @time :2023/6/29 14:41
*/
public function getType(BTemplateModuleLogic $BTemplateModuleLogic){
$list = $BTemplateModuleLogic->ModuleType($this->map);
$this->response('success',Code::SUCCESS,$list);
}
}
... ...
... ... @@ -2,7 +2,9 @@
namespace App\Http\Controllers\Bside\Template;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\BTemplate\CustomTemplateLogic;
/**
* @remark :自定义模块
... ... @@ -19,8 +21,26 @@ class CustomTemplateController extends BaseController
* @method :post
* @time :2023/6/29 9:29
*/
public function lists(){
public function lists(CustomTemplateLogic $customTemplateLogic){
$lists = $customTemplateLogic->customTemplateLists($this->map,$this->page,$this->row,$this->order);
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :获取当前自定义界面详情
* @name :read
* @author :lyh
* @method :post
* @time :2023/6/29 16:23
*/
public function read(CustomTemplateLogic $customTemplateLogic){
$this->request->validate([
'id'=>['required'],
],[
'id.required' => 'ID不能为空',
]);
$customTemplateLogic->customTemplateInfo();
$this->response('success');
}
/**
... ... @@ -30,8 +50,9 @@ class CustomTemplateController extends BaseController
* @method :post
* @time :2023/6/29 9:30
*/
public function save(){
public function save(CustomTemplateLogic $customTemplateLogic){
$customTemplateLogic->customTemplateSave();
$this->response('success');
}
/**
... ... @@ -41,7 +62,8 @@ class CustomTemplateController extends BaseController
* @method :post
* @time :2023/6/29 9:30
*/
public function del(){
public function del(CustomTemplateLogic $customTemplateLogic){
$customTemplateLogic->customTemplateDel();
$this->response('success');
}
}
... ...
... ... @@ -36,12 +36,7 @@ class ATemplateLogic extends BaseLogic
*/
public function aTemplateSave(){
//字符串截取
$this->param['head_html'] = characterTruncation($this->param['html'],'<header>','</header>');
$this->param['main_html'] = characterTruncation($this->param['html'],'<main>','</main>');
$this->param['footer_html'] = characterTruncation($this->param['html'],'<footer>','</footer>');
$this->param['head_css'] = characterTruncation($this->param['html'],'<style id="vvvebjs-header">','</style>');
$this->param['main_css'] = characterTruncation($this->param['html'],'<style id="vvvebjs-style">','</style>');
$this->param['footer_css'] = characterTruncation($this->param['html'],'<style id="vvvebjs-footer">','</style>');
$this->StringProcessing();
if(isset($this->param['id'])){
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
... ... @@ -52,7 +47,22 @@ class ATemplateLogic extends BaseLogic
}
return $this->success();
}
/**
* @remark :字符串处理
* @name :StringProcessing
* @author :lyh
* @method :post
* @time :2023/6/29 15:35
*/
public function StringProcessing(){
//字符串截取
$this->param['head_html'] = characterTruncation($this->param['html'],'/<header\b[^>]*>(.*?)<\/header>/s');
$this->param['main_html'] = characterTruncation($this->param['html'],'/<main\b[^>]*>(.*?)<\/main>/s');
$this->param['footer_html'] = characterTruncation($this->param['html'],'/<footer\b[^>]*>(.*?)<\/footer>/s');
$this->param['head_css'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-header">(.*?)<\/style>/s');
$this->param['main_css'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-styles">(.*?)<\/style>/s');
$this->param['footer_css'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-footer">(.*?)<\/style>/s');
}
/**
* @remark :修改模块状态
* @name :aTemplateStatus
... ...
... ... @@ -29,14 +29,14 @@ class BTemplateLogic extends BaseLogic
* @method :post
* @time :2023/6/29 9:34
*/
public function publicTemplateLists($map,$order = 'created_at',$filed = ['*']){
public function publicTemplateLists($map,$order = 'created_at',$filed = ['id','name','image','created_at']){
$templateModel = new Template();
$lists = $templateModel->list($map,$order,$filed);
return $this->success($lists);
}
/**
* @remark :获取当前选择的模板
* @remark :获取当前选择使用的模板
* @name :getModuleTemplate
* @author :lyh
* @method :post
... ... @@ -47,8 +47,13 @@ class BTemplateLogic extends BaseLogic
$info = $bSettingModel->read(['project_id'=>$this->user['project_id']]);
$TemplateInfo = [];
if($info !== false){
//查看当前模板是否已编辑保存
$TemplateInfo = $this->model->read(['template_id'=>$info['template_id'],'project_id'=>$this->user['project_id']]);
//查看当前模板是否已编辑保存web_template
$TemplateInfo = $this->model->read([
'template_id'=>$info['template_id'],
'source'=>$this->param['source'],
'project_id'=>$this->user['project_id'],
'source_id'=>$this->param['source_id'],
]);
if($TemplateInfo === false){
//获取模板详情
$ATemplateModel = new Template();
... ... @@ -91,22 +96,44 @@ class BTemplateLogic extends BaseLogic
* @time :2023/6/29 11:05
*/
public function templateSave(){
//字符串截取
$this->param['head_html'] = characterTruncation($this->param['html'],'<header>','</header>');
$this->param['main_html'] = characterTruncation($this->param['html'],'<main>','</main>');
$this->param['footer_html'] = characterTruncation($this->param['html'],'<footer>','</footer>');
$this->param['head_css'] = characterTruncation($this->param['html'],'<style id="vvvebjs-header">','</style>');
$this->param['main_css'] = characterTruncation($this->param['html'],'<style id="vvvebjs-style">','</style>');
$this->param['footer_css'] = characterTruncation($this->param['html'],'<style id="vvvebjs-footer">','</style>');
if(isset($this->param['id']) && !empty($this->param['id'])){
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
//查询当前模版是否已保存
$info = $this->model->read(
[
'project_id'=>$this->user['project_id'],
'source'=>$this->param['source'],
'source_id'=>$this->param['source_id'],
'template_id'=>$this->param['template_id'],
]
);
if($info === false){
//字符串截取
$this->StringProcessing();
$this->param['project_id'] = $this->user['project_id'];
$rs = $this->model->add($this->param);
}else{
$this->StringProcessing();
$rs = $this->model->edit($this->param,['id'=>$info['id']]);
}
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @remark :字符串处理
* @name :StringProcessing
* @author :lyh
* @method :post
* @time :2023/6/29 15:35
*/
public function StringProcessing(){
//字符串截取
$this->param['head_html'] = characterTruncation($this->param['html'],'/<header\b[^>]*>(.*?)<\/header>/s');
$this->param['main_html'] = characterTruncation($this->param['html'],'/<main\b[^>]*>(.*?)<\/main>/s');
$this->param['footer_html'] = characterTruncation($this->param['html'],'/<footer\b[^>]*>(.*?)<\/footer>/s');
$this->param['head_css'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-header">(.*?)<\/style>/s');
$this->param['main_css'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-styles">(.*?)<\/style>/s');
$this->param['footer_css'] = characterTruncation($this->param['html'],'/<style id="vvvebjs-footer">(.*?)<\/style>/s');
}
}
... ...
... ... @@ -4,6 +4,7 @@ namespace App\Http\Logic\Bside\BTemplate;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Template\TemplateModule;
use App\Models\Template\TemplateType;
class BTemplateModuleLogic extends BaseLogic
{
... ... @@ -25,4 +26,17 @@ class BTemplateModuleLogic extends BaseLogic
$lists = $this->model->lists($map,$page,$row,$order,$filed);
return $this->success($lists);
}
/**
* @remark :获取所有模块类型
* @name :ModuleType
* @author :lyh
* @method :post
* @time :2023/6/29 14:42
*/
public function ModuleType($map){
$typeModel = new TemplateType();
$lists = $typeModel->list($map);
return $this->success($lists);
}
}
... ...
... ... @@ -3,13 +3,63 @@
namespace App\Http\Logic\Bside\BTemplate;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Template\BCustomTemplate;
class CustomTemplateLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new Custom();
$this->model = new BCustomTemplate();
$this->param = $this->requestAll;
}
/**
* @remark :获取自定义模块列表
* @name :lists
* @author :lyh
* @method :post
* @time :2023/6/29 15:46
*/
public function customTemplateLists($map,$page,$row,$order = 'created_at',$filed = ['*']){
$lists = $this->model->lists($map,$page,$row,$order,$filed);
return $this->success($lists);
}
/**
* @remark :获取当前自定义界面详情
* @name :customTemplateInfo
* @author :lyh
* @method :post
* @time :2023/6/29 16:23
*/
public function customTemplateInfo(){
$info = $this->model->read(['id'=>$this->param['id']]);
if($info === false){
$this->fail('error');
}
return $this->success($info);
}
/**
* @remark :保存自定义界面
* @name :customTemplateSave
* @author :lyh
* @method :post
* @time :2023/6/29 16:21
*/
public function customTemplateSave(){
return $this->success();
}
/**
* @remark :删除自定义界面
* @name :customTemplateDel
* @author :lyh
* @method :post
* @time :2023/6/29 16:21
*/
public function customTemplateDel(){
return $this->success();
}
}
... ...
<?php
namespace App\Http\Logic\Bside;
use App\Models\RouteMap;
use App\Models\Template\Template;
use App\Models\Template\BSetting;
use App\Models\Template\BTemplate;
/**
* @author:dc
* @time 2023/5/15 13:57
* Class TemplateLogic
* @package App\Http\Logic\Bside
*/
class TemplateLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new BTemplate();
$this->param = $this->requestAll;
}
/**
* @param $param
* @return array
* @throws \App\Exceptions\AsideGlobalException
* @throws \App\Exceptions\BsideGlobalException
* @author:dc
* @time 2023/5/12 9:54
*/
public function save($param)
{
// 查询
$data = $this->first($param['data_source'],$param['data_source_id']);
if($data){
$param['id'] = $data['id'];
}else{
$param['template_id'] = BSetting::_get($this->user['project_id'])['template_id'];
}
return parent::save($param);
}
/**
* 状态修改
* @param $source
* @param $source_id
* @param $status
* @return mixed
* @throws \App\Exceptions\AsideGlobalException
* @throws \App\Exceptions\BsideGlobalException
* @author:dc
* @time 2023/5/15 14:41
*/
public function status($source,$source_id,$status){
$data = $this->first($source,$source_id);
if(!$data){
$this->fail('数据不存在');
}
$data->status = $status;
return $data->save();
}
/**
* @param $source
* @param $source_id
* @return mixed
* @author:dc
* @time 2023/5/15 14:49
*/
public function first($source,$source_id)
{
$data = BTemplate::where([
'project_id'=>$this->user['project_id'],
'data_source' => $source,
'data_source_id' => $source_id,
'template_id' => BSetting::_get($this->user['project_id'])['template_id']
])->first();
if(empty($data)){
$data = Template::where([
'id' => BSetting::_get($this->user['project_id'])['template_id']
])->first();
}
return $data;
}
/**
* @remark :使用模版并保存数据
* @name :usingTemplates
* @author :lyh
* @method :post
* @time :2023/6/27 15:26
*/
public function usingTemplates(){
//获取模版详情
$asideTemplateModel = new Template();
$templateInfo = $asideTemplateModel->read(['id'=>$this->param['template_id']]);
if($templateInfo === false){
$this->fail('当前模版不存在或已被删除');
}
$bSettingTemplateModel = new BSetting();
//查看用户模版是否已使用过
$param = [
'template_id'=>$this->param['template_id'],
'project_id'=>$this->user['project_id']
];
$bSettingTemplateInfo = $bSettingTemplateModel->read($param);
//当前用户选择模版并关联
if($bSettingTemplateInfo === false){
$rs = $bSettingTemplateModel->add($param);
if($rs === false){
$this->fail('error');
}
}
return $this->success($templateInfo);
}
}
<?php
namespace App\Http\Requests\Bside;
namespace App\Http\Requests\Bside\Template;
use App\Models\Template\ATemplateHtml;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
/**
* @author:dc
* @time 2023/5/15 14:04
* Class TemplateRequest
* @package App\Http\Requests\Bside\Nav
*/
class TemplateRequest extends FormRequest
{
... ... @@ -34,6 +28,8 @@ class TemplateRequest extends FormRequest
{
return [
'html'=>'required',
'source'=>'required',
'source_id'=>'required',
'template_id'=>'required',
'section_list_id'=>'required',
];
... ... @@ -44,6 +40,8 @@ class TemplateRequest extends FormRequest
return [
'html.required'=>'请填写html',
'template_id.required'=>'模版id不能为空',
'source.required'=>'类型不能为空',
'source_id.required'=>'类型ID不能为空',
'section_list_id.required'=>'所选择的模块',
];
}
... ...
<?php
namespace App\Models\Template;
use App\Models\Base;
/**
* @remark :左侧模块类型表
* @name :TemplateType
* @author :lyh
* @time :2023/6/29 14:46
*/
class TemplateType extends Base
{
protected $table = 'gl_template_type';
}
... ...
... ... @@ -245,24 +245,21 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/getPublicTemplate', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'getPublicTemplate'])->name('template_getPublicTemplate');
//设置默认主题模版
Route::any('/setPublicTemplate', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'setPublicTemplate'])->name('template_setPublicTemplate');
//保存修改后的模版
Route::any('/save', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'save'])->name('template_save');
// 模板
Route::prefix('module')->group(function () {
//获取所有左侧模版
Route::any('/', [\App\Http\Controllers\Bside\Template\BTemplateModuleController::class, 'lists'])->name('template_module_lists');
Route::any('/type', [\App\Http\Controllers\Bside\Template\BTemplateModuleController::class, 'getType'])->name('template_module_getType');
});
});
// 自定义页面,专题页
Route::prefix('custom')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\CustomController::class, 'index'])->name('bside_custom');
Route::post('/create', [\App\Http\Controllers\Bside\CustomController::class, 'save'])->name('bside_custom_create');
Route::post('/update', [\App\Http\Controllers\Bside\CustomController::class, 'save'])->name('bside_custom_update');
Route::delete('/delete', [\App\Http\Controllers\Bside\CustomController::class, 'delete'])->name('bside_custom_delete');
Route::any('/html/{id}', [\App\Http\Controllers\Bside\CustomController::class, 'html'])->where('id', '\d+')->name('bside_custom_delete');
Route::any('/', [\App\Http\Controllers\Bside\Template\CustomTemplateController::class, 'lists'])->name('custom_lists');
Route::any('/save', [\App\Http\Controllers\Bside\Template\CustomTemplateController::class, 'save'])->name('custom_save');
Route::any('/del', [\App\Http\Controllers\Bside\Template\CustomTemplateController::class, 'del'])->name('custom_del');
});
// 导航栏编辑
Route::prefix('nav')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\NavController::class, 'index'])->name('bside_nav');
... ...