作者 lyh

gx

... ... @@ -50,23 +50,6 @@ class BTemplateController extends BaseController
}
/**
* @remark :设置默认模板
* @name :setModuleTemplate
* @author :lyh
* @method :post
* @time :2023/6/29 9:39
*/
public function setPublicTemplate(BTemplateLogic $BTemplateLogic){
$this->request->validate([
'template_id'=>['required'],
],[
'template_id.required' => '模版ID不能为空',
]);
$BTemplateLogic->setTemplate();
$this->response('success');
}
/**
* @remark :保存编辑后的模板
* @name :save
* @author :lyh
... ...
... ... @@ -31,8 +31,7 @@ class VisualizationController extends BaseController
* @time :2023/11/15 10:26
*/
public function info(Visualization $visualization){
//查看当前模板是否在可视化中保存
$info = $visualization->read(['source'=>$this->map['source']],['html','source','id','project_id']);
$info = $visualization->read(['type'=>$this->map['type']],['main_html','type','id','project_id']);
if($info === false){
$info = [];
}
... ... @@ -48,11 +47,11 @@ class VisualizationController extends BaseController
*/
public function save(VisualizationLogic $logic){
$this->request->validate([
'source'=>'required',
'html'=>'required',
'type'=>'required',
'main_html'=>'required',
],[
'source.required' => '类型不能为空',
'html.required' => 'html不能为空',
'type.required' => '类型不能为空',
'main_html.required' => 'main_html不能为空',
]);
$logic->saveVisualization();
$this->response('success');
... ...
... ... @@ -4,8 +4,11 @@ namespace App\Http\Logic\Aside\Template;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Service\Service as ServiceSettingModel;
use App\Models\Template\BTemplate;
use App\Models\Template\BTemplateCommon;
use App\Models\Template\Template;
use App\Models\Template\Setting;
use App\Services\ProjectServer;
use Illuminate\Support\Facades\DB;
class ATemplateLogic extends BaseLogic
... ... @@ -180,6 +183,8 @@ class ATemplateLogic extends BaseLogic
}else{
$rs = $bSettingModel->edit(['template_id'=>$this->param['template_id']],['id'=>$info['id']]);
}
$this->saveTemplate($this->param['project_id'],$this->param['template_id']);
//保存一条装修数据
if($rs === false){
$this->fail('error');
}
... ... @@ -187,6 +192,41 @@ class ATemplateLogic extends BaseLogic
}
/**
* @remark :设置模版保存装修首页记录
* @name :saveTemplate
* @author :lyh
* @method :post
* @time :2023/11/17 11:04
*/
public function saveTemplate($project_id,$template_id){
$templateInfo = $this->model->read(['id'=>$template_id]);
ProjectServer::useProject($project_id);
$bTemplateModel = new BTemplate();
$info = $bTemplateModel->read(['source'=>1,'template_id'=>$template_id]);
if($info === false){
$data = [
'source'=>1, 'source_id'=>0, 'template_id'=>$template_id, 'main_html'=>$templateInfo['main_html'],
'main_css'=>$templateInfo['main_css'], 'project_id'=>$project_id,
];
$bTemplateModel->add($data);
}
//保存一次公共头部信息
$bCommonTemplateModel = new BTemplateCommon();
$commonInfo = $bCommonTemplateModel->read(['template_id'=>$template_id,'type'=>1]);
if($commonInfo === false){
$commonData = [
'type'=>1, 'template_id'=>$template_id, 'head_html'=>$templateInfo['head_html'],
'head_css'=>$templateInfo['head_css'], 'footer_html'=>$templateInfo['footer_html'],
'footer_css'=>$templateInfo['footer_css'],'project_id'=>$project_id,
'other'=>str_replace('<header','',characterTruncation($templateInfo['html'],"/<link id=\"google-fonts-link\"(.*?)<header/s"))
];
$bCommonTemplateModel->add($commonData);
}
DB::disconnect('custom_mysql');
return $this->success();
}
/**
* @remark :获取选择的模版
* @name :getSettingInfo
* @author :lyh
... ...
... ... @@ -222,32 +222,6 @@ class BTemplateLogic extends BaseLogic
return $commonInfo;
}
/**
* @remark :设置模板
* @name :setTemplate
* @author :lyh
* @method :post
* @time :2023/6/29 9:47
*/
public function setTemplate(){
$bSettingModel = new Setting();
$info = $bSettingModel->read(['project_id'=>$this->user['project_id']]);
if($info === false){
$param = [
'project_id'=>$this->user['project_id'],
'template_id'=>$this->param['template_id'],
];
$rs = $bSettingModel->add($param);
}else{
$rs = $bSettingModel->edit(['template_id'=>$this->param['template_id']],['project_id'=>$this->user['project_id']]);
}
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
* @remark :保存修改后的模版
* @name :templateSave
... ...
... ... @@ -25,7 +25,7 @@ class VisualizationLogic extends BaseLogic
public function __construct()
{
parent::__construct();
$this->model = new Visualization();
$this->model = new BTemplateMain();
$this->param = $this->requestAll;
}
... ... @@ -38,11 +38,36 @@ class VisualizationLogic extends BaseLogic
*/
public function saveVisualization(){
try {
if(isset($this->param['id']) && !empty($this->param['id'])){
$this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
$this->param['project_id'] = $this->user['project_id'];
$this->model->add($this->param);
$type = $this->getType($this->param['source'],$this->param['source_id']);
$typeArray = [1,3,5,7];//单页数据
if(in_array($type,$typeArray)){
$bTemplateModel = new BTemplate();
$templateInfo = $bTemplateModel->read(['source'=>$this->param['source'],'template_id'=>0]);
if($templateInfo === false){
$data = [
'html'=>$this->param['html'],
'project_id'=>$this->user['project_id'],
'source'=>$this->param['source'],
'source_id'=>$this->param['source_id'],
'section_list_id'=>$this->param['section_list_id'],
];
$bTemplateModel->add($data);
}else{
$bTemplateModel->edit(['html'=>$this->param['html']],['id'=>$templateInfo['id']]);
}
}else{//模块数据
$bTemplateMainModel = new BTemplateMain();
$mainInfo = $bTemplateMainModel->read(['type'=>$type]);
if($mainInfo === false){
$mainData = [
'project_id'=>$this->user['project_id'],
'type'=>$type,
'main_html'=>$this->param['html']
];
$bTemplateMainModel->add($mainData);
}else{
$bTemplateMainModel->edit(['main_html'=>$this->param['html']],['id'=>$mainInfo['id']]);
}
}
}catch (\Exception $e){
$this->fail('系统错误,请联系管理员');
... ... @@ -58,54 +83,51 @@ class VisualizationLogic extends BaseLogic
* @time :2023/11/15 11:30
*/
public function getHtml(){
$TemplateInfo = $this->getWebTemplate($this->param['source'],$this->param['source_id']);
$type = $this->getType($this->param['source'],$this->param['source_id']);
$page_array = (array)$this->user['is_visualization']->page_array;
if($TemplateInfo === false){
if(in_array($type,$page_array)){//定制页面
$info = $this->model->read(['source'=>$type],['html','source','id','project_id']);
if($info === false){
$type = $this->getType($this->param['source'],$this->param['source_id']);//获取类型
$page_array = (array)$this->user['is_visualization']->page_array;//获取定制界面
//查看当前类型是否是定制界面
if(in_array($type,$page_array)){//是定制界面
if(in_array($type,[1,3,5,7])){//单页
$templateInfo = $this->getWebTemplate($this->param['source'],$this->param['source_id']);//查看当前定制单页是否有代码块
if($templateInfo === false){
$this->fail('请先上传定制代码块');
}
return $info['html'];
}else{//非定制界面
$bSettingModel = new Setting();
$settingInfo = $bSettingModel->read(['project_id'=>$this->user['project_id']]);
if($settingInfo === false){
$this->fail('请先选择模版');
}
//获取公共头部底部
$commonInfo = $this->getCommonPage($this->param['source'],$this->param['source_id'],$settingInfo['template_id']);
if($commonInfo === false){
//保存一次首页头部底部
$ATemplateModel = new Template();
$aTemplateInfo = $ATemplateModel->read(['id'=>$settingInfo['template_id']]);
$commonInfo = $this->saveHomeHeaderFooter($settingInfo['template_id'],$aTemplateInfo);
return ['html'=>$templateInfo['html']];
}else{//模块页
$templateInfo = $this->getWebTemplate($this->param['source'],$this->param['source_id']);//查看当前页面是否可视化
if($templateInfo === false){//获取代码块
$bTemplateMainModel = new BTemplateMain();
$mainInfo = $bTemplateMainModel->read(['type'=>$type]);
if($mainInfo === false){
$this->fail('请先上传定制代码块');
}
return ['html'=>$mainInfo['main_html']];
}
return ['html'=>$templateInfo['html']];
}
}else{//非定制界面
$bSettingModel = new Setting();
$settingInfo = $bSettingModel->read(['project_id'=>$this->user['project_id']]);
if($settingInfo === false){
$this->fail('请先选择模版');
}
$templateInfo = $this->getWebTemplate($this->param['source'],$this->param['source_id'],$settingInfo['template_id']);//查看当前页面是否可视化
if($templateInfo === false){
//根据类型在获取中间部分
$mainData = $this->getCommonMain($this->param['source'],$this->param['source_id']);
//拼接数据
$html = $commonInfo['head_css'].$mainData['main_css'].$commonInfo['footer_css'].$commonInfo['other'].
$commonInfo['head_html'].$mainData['main_html'].$commonInfo['footer_html'];
$html = $this->getHeadFooter($html);
return ['html'=>$html,'template_id'=>$settingInfo['template_id']];
}
}else{
if($TemplateInfo['template_id'] != 0){
$bSettingModel = new Setting();
$settingInfo = $bSettingModel->read(['project_id'=>$this->user['project_id']]);
if($settingInfo === false){
$this->fail('请先选择模版');
}
//获取头部信息
$commonInfo = $this->getCommonPage($this->param['source'],$this->param['source_id'],$settingInfo['template_id']);
$html = $commonInfo['head_css'].$TemplateInfo['main_css'].$commonInfo['footer_css'].$commonInfo['other'].
$commonInfo['head_html'].$TemplateInfo['main_html'].$commonInfo['footer_html'];
$html = $this->getHeadFooter($html);
return ['html'=>$html,'template_id'=>$settingInfo['template_id']];
}else{
return $TemplateInfo['html'];
$mainData = [
'main_html'=>$templateInfo['main_html'],
'main_css'=>$templateInfo['main_css']
];
}
//获取公共头部底部
$commonInfo = $this->getCommonPage($this->param['source'],$this->param['source_id'],$settingInfo['template_id']);
//拼接数据
$html = $commonInfo['head_css'].$mainData['main_css'].$commonInfo['footer_css'].$commonInfo['other'].
$commonInfo['head_html'].$mainData['main_html'].$commonInfo['footer_html'];
$html = $this->getHeadFooter($html);
return ['html'=>$html,'template_id'=>$settingInfo['template_id']];
}
}
... ... @@ -139,14 +161,16 @@ class VisualizationLogic extends BaseLogic
* @method :post
* @time :2023/11/16 11:21
*/
public function getWebTemplate($source,$source_id){
public function getWebTemplate($source,$source_id,$template_id = 0){
//查询可视化是否第一次保存
$bTemplateModel = new BTemplate();
return $bTemplateModel->read([
$param = [
'source'=>$source,
'project_id'=>$this->user['project_id'],
'source_id'=>$source_id,
]);
'template_id'=>$template_id
];
return $bTemplateModel->read($param);
}
/**
... ... @@ -203,36 +227,43 @@ class VisualizationLogic extends BaseLogic
public function saveHtml(){
$page_array = (array)$this->user['is_visualization']->page_array;
$type = $this->getType($this->param['source'],$this->param['source_id']);
if(in_array($type,$page_array)){//定制页面
$bTemplateModel = new BTemplate();
$templateInfo = $bTemplateModel->read([
'source'=>$this->param['source'],
'project_id'=>$this->user['project_id'],
'source_id'=>$this->param['source_id'],
]);
}else{
$bTemplateModel = new BTemplate();
$templateInfo = $bTemplateModel->read([
'source'=>$this->param['source'],
'project_id'=>$this->user['project_id'],
'source_id'=>$this->param['source_id'],
'template_id'=>$this->param['template_id'],
]);
$this->param['main_html'] = characterTruncation($this->param['html'],'/<main\b[^>]*>(.*?)<\/main>/s');
$this->param['main_css'] = characterTruncation($this->param['html'],'/<style id="globalsojs-styles">(.*?)<\/style>/s');
//保存头部
$this->saveCommonTemplate($this->param['html'],$this->param['source'],$this->param['source_id'],$this->param['template_id']);
}
try {
if($templateInfo === false){
$this->param['project_id'] = $this->user['project_id'];
$bTemplateModel->add($this->param);
if(in_array($type,$page_array)){//定制页面
$bTemplateModel = new BTemplate();
$templateInfo = $bTemplateModel->read([
'source'=>$this->param['source'],
'project_id'=>$this->user['project_id'],
'source_id'=>$this->param['source_id'],
]);
if($templateInfo === false){
$this->param['project_id'] = $this->user['project_id'];
$bTemplateModel->add($this->param);
}else{
$bTemplateModel->edit(['html'=>$this->param['html']],['source'=>$this->param['source'],'source_id'=>$this->param['source_id']]);
}
}else{
$bTemplateModel->edit($this->param,['source'=>$this->param['source'],'source_id'=>$this->param['source_id']]);
$bTemplateModel = new BTemplate();
$templateInfo = $bTemplateModel->read([
'source'=>$this->param['source'],
'project_id'=>$this->user['project_id'],
'source_id'=>$this->param['source_id'],
'template_id'=>$this->param['template_id'],
]);
$this->param['main_html'] = characterTruncation($this->param['html'],'/<main\b[^>]*>(.*?)<\/main>/s');
$this->param['main_css'] = characterTruncation($this->param['html'],'/<style id="globalsojs-styles">(.*?)<\/style>/s');
//保存头部
$this->saveCommonTemplate($this->param['html'],$this->param['source'],$this->param['source_id'],$this->param['template_id']);
if($templateInfo === false){
$this->param['project_id'] = $this->user['project_id'];
$bTemplateModel->add($this->param);
}else{
$bTemplateModel->edit($this->param,['source'=>$this->param['source'],'source_id'=>$this->param['source_id']]);
}
}
}catch (\Exception $e){
$this->fail('系统错误请联系管理员');
$this->fail('系统错误请联系管理员');
}
return $this->success();
}
... ... @@ -282,8 +313,7 @@ class VisualizationLogic extends BaseLogic
if ($source == 4) {if ($source_id != 0) {$type = 6;} else {$type = 7;}}
if ($source == 5) {$type = 8;}
//查询有没有公共详情模板
$bTemplateMainModel = new BTemplateMain();
$mainInfo = $bTemplateMainModel->read(['project_id'=>$this->user['project_id'],'type'=>$type]);
$mainInfo = $this->model->read(['type'=>$type]);
if($mainInfo === false){
$data['main_html'] = $this->getModule($type);
$data['main_css'] = "<style id='globalsojs-styles'></style>";
... ...
... ... @@ -301,8 +301,6 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/publicTemplateLists', [\App\Http\Controllers\Bside\Template\BTemplateController::class, 'publicTemplateLists'])->name('template_publicTemplateLists');
//获取选中的主题模版
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');
//可视化保存获取数据类型
... ...