作者 赵彬吉

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

... ... @@ -435,22 +435,14 @@ function isEnglish($str) {
* @method :post
* @time :2023/6/28 17:39
*/
function characterTruncation($str,$rule = 1){
switch ($rule){
case 1:
$rule_str = '/<head>(.*?)<\/head>/';
break;
case 2:
$rule_str = '/<main>(.*?)<\/main>/';
break;
case 3:
$rule_str = '/<footer>(.*?)<\/footer>/';
break;
}
preg_match($rule_str, $str, $result);
if (isset($result[1])) {
$result = $result[1];
return $result;
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);
} else {
echo "无法找到起始或结束标签";
}
return $result;
}
... ...
... ... @@ -2,7 +2,11 @@
namespace App\Http\Controllers\Aside\Template;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Template\ATemplateLogic;
use App\Http\Logic\Aside\Template\ATemplateModuleLogic;
use App\Http\Requests\Aside\Template\ATemplateModuleRequest;
/**
* @remark :左侧模块管理
... ... @@ -19,8 +23,9 @@ class ATemplateModuleController extends BaseController
* @method :post
* @time :2023/6/28 16:54
*/
public function lists(){
public function lists(ATemplateModuleLogic $ATemplateModuleLogic){
$lists = $ATemplateModuleLogic->aTemplateModuleLists($this->map,$this->page,$this->row,$this->order);
$this->response('success',Code::SUCCESS,$lists);
}
/**
... ... @@ -30,8 +35,17 @@ class ATemplateModuleController extends BaseController
* @method :post
* @time :2023/6/28 16:55
*/
public function save(){
public function save(ATemplateModuleRequest $ATemplateModuleRequest,ATemplateModuleLogic $ATemplateModuleLogic){
if(isset($this->param['id'])){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
}
$ATemplateModuleRequest->validated();
$ATemplateModuleLogic->aTemplateModuleSave();
$this->response('success');
}
... ... @@ -42,8 +56,14 @@ class ATemplateModuleController extends BaseController
* @method :post
* @time :2023/6/28 16:55
*/
public function status(){
public function status(ATemplateModuleLogic $ATemplateModuleLogic){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
$ATemplateModuleLogic->aTemplateModuleStatus();
$this->response('success');
}
/**
... ... @@ -53,7 +73,13 @@ class ATemplateModuleController extends BaseController
* @method :post
* @time :2023/6/28 16:55
*/
public function del(){
public function del(ATemplateModuleLogic $ATemplateModuleLogic){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
$ATemplateModuleLogic->aTemplateModuleDel();
$this->response('success');
}
}
... ...
<?php
namespace App\Http\Controllers\Aside;
use App\Enums\Common\Code;
use App\Http\Logic\Aside\Template\TemplateChunkLogic;
use App\Http\Logic\Aside\Template\TemplateLogic;
use App\Http\Requests\Aside\Template\TemplateChunkRequest;
use App\Http\Requests\Aside\Template\TemplateRequest;
use App\Models\Template\ATemplate;
use App\Models\Template\ATemplateChunk;
use App\Models\Template\ATemplateHtml;
use Illuminate\Validation\Rule;
/**
* 模板
* @author:dc
* @time 2023/5/4 17:10
* Class TemplateController
* @package App\Http\Controllers\Aside
*/
class TemplateController extends BaseController
{
/**
* 列表
* @author:dc
* @time 2023/5/4 17:10
*/
public function index(){
$lists = (new ATemplate)->lists(
$this->map,
$this->page,
$this->row,
$this->order,
['id','name','status','is_default','sort','thumb','url','created_at','updated_at']
);
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @param false $is_edit
* @return \Illuminate\Http\JsonResponse
* @throws \Illuminate\Validation\ValidationException
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
* @author:dc
* @time 2023/5/11 10:13
*/
public function save(TemplateRequest $request){
$res = TemplateLogic::instance()->save($request->validated());
$data = TemplateLogic::instance()->getInfo($res['id']);
return $this->response('',Code::SUCCESS,$data);
}
/**
* 删除
* @author:dc
* @time 2023/5/4 17:10
*/
public function delete($id){
if(ATemplate::destroy($id)){
return $this->response('删除成功');
}
return $this->response('删除失败',Code::SYSTEM_ERROR);
}
/**
* 列表
* @author:dc
* @time 2023/5/4 17:10
*/
public function html_index($template_id){
$lists = (new ATemplateHtml)->list(
['template_id'=>$template_id],
$this->order
// , ['id','name','status','is_default','sort','thumb','url','created_at','updated_at']
);
$this->response('success',Code::SUCCESS,$lists);
}
/**
* 编辑
* @author:dc
* @time 2023/5/4 16:19
*/
public function html_edit($template_id){
$this->html_save($template_id,true);
}
/**
* 新增
* @author:dc
* @time 2023/5/5 9:30
*/
public function html_insert($template_id){
$this->html_save($template_id);
}
/**
* @param false $is_edit
* @return \Illuminate\Http\JsonResponse
* @throws \Illuminate\Validation\ValidationException
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
* @author:dc
* @time 2023/5/11 10:13
*/
private function html_save($template_id,$is_edit=false){
$verify = [
'role' => [
'id' => ['required','integer'],
// 'template_id' => ['required','integer'],
'name' => ['required'],
'type' => ['required',Rule::in(array_keys(ATemplateHtml::$typeMap))],
'css' => [],
'script' => [],
'html' => ['required'],
],
'message' => [
'id.required' => 'id必须',
'id.integer' => 'id必须',
// 'template_id.required' => '模板选择错误',
// 'template_id.integer' => '模板选择错误',
'name.required' => '名称必须',
'type.required' => '页面类型选择错误',
'type.in' => '页面类型选择错误',
'html.required' => 'html 代码必须',
]
];
if(!$is_edit) unset($verify['role']['id']);
$data = $this->validate(request() ,$verify['role'],$verify['message']);
// 保存
$id = ATemplateHtml::_save($template_id,$data,$data['id']??0);
if(!$id){
return $this->response('保存失败',Code::SYSTEM_ERROR);
}
return $this->response('保存成功',Code::SUCCESS,ATemplateHtml::_find($id));
}
/**
* 删除
* @author:dc
* @time 2023/5/4 17:10
*/
public function html_delete($template_id, $id){
if(ATemplateHtml::where('template_id',$template_id)->where('id',$id)->delete()){
return $this->response('删除成功');
}
return $this->response('删除失败',Code::SYSTEM_ERROR);
}
/**
* 页面类型
* @return \Illuminate\Http\JsonResponse
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
* @author:dc
* @time 2023/5/11 10:29
*/
public function html_type(){
return $this->response('',Code::SUCCESS,ATemplateHtml::$typeMap);
}
/**
* 自定义界面,块
* @author:dc
* @time 2023/5/29 10:27
*/
public function chunk_lists(){
$lists = TemplateChunkLogic::instance()->getList()->toArray();
return $this->response('',Code::SUCCESS,$lists);
}
/**
* 自定义界面,块 保存
* @author:dc
* @time 2023/5/29 10:37
*/
public function chunk_save(TemplateChunkRequest $request){
$data = TemplateChunkLogic::instance()->save($request->validated());
return $this->success(TemplateChunkLogic::instance()->getInfo($data['id']));
}
/**
* 自定义界面,块 删除
* @author:dc
* @time 2023/5/29 10:38
*/
public function chunk_delete($chunk_id){
TemplateChunkLogic::instance()->delete($chunk_id);
return $this->response('删除成功');
}
}
<?php
namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Http\Logic\Bside\CustomLogic;
use App\Http\Requests\Bside\Custom\CustomRequest;
use App\Models\BCustom;
/**
* 自定义 页面
* @author:dc
* @time 2023/5/9 10:08
* Class CustomController
* @package App\Http\Controllers\Bside
*/
class CustomController extends BaseController
{
/**
* 列表数据
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
* @author:dc
* @time 2023/5/8 16:37
*/
public function index(){
// 每页数量
$limit = intval($this->param['limit']??20);
$name = request()->get('name');
$map = [];
if($name){
$map[] = ['name','like','%'.htmlspecialchars($name).'%'];
}
$lists = CustomLogic::instance()->getList(
$map,
[],
['id','name','title','status','url','keywords','description','created_at','updated_at'],
$limit
);
return $this->success($lists);
}
/**
* 新增修改
* @return \Illuminate\Http\JsonResponse
* @throws \Illuminate\Validation\ValidationException
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
* @author:dc
* @time 2023/5/8 17:06
*/
public function save(CustomRequest $request){
return $this->success(CustomLogic::instance()->save($request->validated()));
}
/**
* 删除数据
* @return \Illuminate\Http\JsonResponse
* @author:dc
* @time 2023/5/9 9:20
*/
public function delete(CustomRequest $request){
CustomLogic::instance()->delete($request->validated()['id']);
return $this->response('删除成功');
}
/**
* @param $id
* @return \Illuminate\Http\JsonResponse
* @author:dc
* @time 2023/5/10 14:10
*/
public function html($id)
{
$data = BCustom::_find($this->user['project_id'],$id);
if(!$data){
return $this->response('数据不存在',Code::SYSTEM_ERROR);
}
if($this->isPost()){
$html = $this->param['html']??'';
$data->html = $html;
$data->save();
}
return $this->response('',Code::SUCCESS,$data['html']);
}
}
... ... @@ -2,9 +2,62 @@
namespace App\Http\Controllers\Bside\Template;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\BTemplate\BTemplateLogic;
class BTemplateController extends BaseController
{
/**
* @remark :获取所有公共主题
* @name :ATemplateLists
* @author :lyh
* @method :post
* @time :2023/6/29 9:21
*/
public function publicTemplateLists(BTemplateLogic $BTemplateLogic){
$lists = $BTemplateLogic->publicTemplateLists($this->map,$this->order);
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @remark :获取当前已选择的模板
* @name :getModuleTemplate
* @author :lyh
* @method :post
* @time :2023/6/29 9:40
*/
public function getPublicTemplate(BTemplateLogic $BTemplateLogic){
$info = $BTemplateLogic->getTemplate();
$this->response('success',Code::SUCCESS,$info);
}
/**
* @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
* @method :post
* @time :2023/6/29 10:02
*/
public function save(BTemplateLogic $BTemplateLogic){
$BTemplateLogic->templateSave();
$this->response('success');
}
}
... ...
<?php
namespace App\Http\Controllers\Bside\Template;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\BTemplate\BTemplateModuleLogic;
/**
* @remark :左侧模块管理
* @name :BTemplateModuleController
* @author :lyh
* @time :2023/6/29 11:32
*/
class BTemplateModuleController extends BaseController
{
/**
* @remark :获取左侧模块列表
* @name :lists
* @author :lyh
* @method :post
* @time :2023/6/29 11:33
*/
public function lists(BTemplateModuleLogic $BTemplateModuleLogic){
$list = $BTemplateModuleLogic->ModuleList($this->map,$this->page,$this->row,$this->order);
$this->response('success',Code::SUCCESS,$list);
}
}
... ...
<?php
namespace App\Http\Controllers\Bside\Template;
use App\Http\Controllers\Bside\BaseController;
/**
* @remark :自定义模块
* @name :CustomTemplateController
* @author :lyh
* @time :2023/6/29 9:23
*/
class CustomTemplateController extends BaseController
{
/**
* @remark :自定义界面列表
* @name :lists
* @author :lyh
* @method :post
* @time :2023/6/29 9:29
*/
public function lists(){
}
/**
* @remark :保存自定义模块
* @name :save
* @author :lyh
* @method :post
* @time :2023/6/29 9:30
*/
public function save(){
}
/**
* @remark :删除自定义模块
* @name :del
* @author :lyh
* @method :post
* @time :2023/6/29 9:30
*/
public function del(){
}
}
... ...
<?php
namespace App\Http\Controllers\Bside;
use App\Enums\Common\Code;
use App\Http\Logic\Aside\Template\TemplateChunkLogic;
use App\Http\Logic\Bside\TemplateLogic;
use App\Http\Requests\Bside\TemplateRequest;
use App\Models\Template\ATemplate;
use App\Models\Template\ATemplateHtml;
use App\Models\Template\BSetting;
use App\Models\Template\BTemplate;
use App\Models\Template\BTemplateData;
use Illuminate\Validation\Rule;
/**
* 模板
* @author:dc
* @time 2023/5/9 14:00
* Class TemplateController
* @package App\Http\Controllers\Bside
*/
class TemplateController extends BaseController
{
/**
* 模板列表
* @return \Illuminate\Http\JsonResponse
* @author:dc
* @time 2023/5/9 14:20
*/
public function index(){
$limit = intval($this->param['limit']??20);
// 读取列表
$data = ATemplate::_bAll($limit)->toArray();
return $this->success($data);
}
/**
* 当前使用的模板
* @author:dc
* @time 2023/5/9 15:19
*/
public function info(){
// 保存更新
if($this->isPost()){
$template_id = intval($this->param['template_id']??0);
// 是否存在模板
if($template_id && ATemplate::_bFind($template_id)){
BSetting::_save($this->user['project_id'],$template_id);
}else{
return $this->response('无法使用不存在的模板',Code::SYSTEM_ERROR);
}
}
// 读取我的模板
$conf = BSetting::_get($this->user['project_id']);
// 读取模板信息
$data = ATemplate::_bFind($conf['template_id']);
return $this->success([
'template_id' => $data['id']??0,
'name' => $data['name']??'',
'thumb' => $data['thumb']??'',
'time' => $conf['time']
]);
}
/**
* 保存模板
* @author:dc
* @time 2023/5/10 10:53
*/
public function save(){
$html = '<header id="globalso-header" class="web_head sticky-top py-1 py-md-0" style="background-color: #318fff;">asdf</header>';
// 替换 header
$html = preg_replace("/<header(.*)id=\"globalso-header\"(.*)>([\s\S]*)<\/header>/iU",'',$html);
$html = preg_replace("/<main(.*)id=\"globalso-main\"(.*)>([\s\S]*)<\/main>/iU",'',$html);
$html = preg_replace("/<footer(.*)id=\"globalso-footer\"(.*)>([\s\S]*)<\/footer>/iU",'',$html);
}
/**
* 数据源
* @return \Illuminate\Http\JsonResponse
* @author:dc
* @time 2023/5/11 10:47
*/
public function get_type(){
return $this->success(ATemplateHtml::$sourceMap);
}
/**
* 获取 编辑html
* @author:dc
* @time 2023/5/11 9:33
*/
public function get_html(){
$source = $this->param['source']??'';
$source_id = $this->param['source_id']??0;
$data = TemplateLogic::instance()->first($source,$source_id);
$res = [
'html' => $data['html']??'',
'section_list_id' => $data['section_list_id']??'',
'name' => 'example',
];
return $this->response('',Code::SUCCESS,$res);
}
/**
* 保存
* @author:dc
* @time 2023/5/11 11:00
*/
public function save_html(TemplateRequest $request){
$data = $request->validated();
$data['data_source'] = $data['source'];
$data['data_source_id'] = $data['source_id'];
// 不需要数据id
if(in_array($data['data_source'],['index'])){
$data['data_source_id'] = 0;
}
unset($data['source']);
unset($data['source_id']);
$id = TemplateLogic::instance()->save($data);
if($id){
$info = TemplateLogic::instance()->getInfo($id['id']);
$info['source'] = $info['data_source'];
$info['source_id'] = $info['data_source_id'];
unset($info['data_source']);
unset($info['data_source_id']);
unset($info['template_id']);
unset($info['created_at']);
unset($info['updated_at']);
unset($info['css']);
unset($info['script']);
unset($info['data_ext']);
return $this->success($info,Code::SUCCESS,'保存成功');
}
return $this->response('保存失败',Code::SYSTEM_ERROR);
}
/**
* 状态修改
* @param TemplateRequest $request
* @return \Illuminate\Http\JsonResponse
* @throws \App\Exceptions\AsideGlobalException
* @throws \App\Exceptions\BsideGlobalException
* @author:dc
* @time 2023/5/15 14:43
*/
public function status(TemplateRequest $request){
$data = $request->validated();
TemplateLogic::instance()->status($data['source'],$data['source_id'],$data['status']);
return $this->response('保存成功');
}
/**
* 自定义块
* @author:dc
* @time 2023/5/10 14:55
*/
public function chunk(){
$lists = TemplateChunkLogic::instance()->getList([['status','=',1]],['sort'=>'asc'],['*'],false);
foreach ($lists as &$list){
unset($list['created_at']);
unset($list['updated_at']);
unset($list['status']);
}
return $this->success($lists);
}
}
... ... @@ -56,7 +56,7 @@ class FileController
if ($info === false) {
$this->response('指定文件不存在!', Code::USER_ERROR);
}
$path = $info['path'];
$path = $this->path.$info['path'];
if (!is_file($path)) {
$this->response('指定文件已被系统删除!', Code::USER_ERROR);
}
... ... @@ -158,7 +158,7 @@ class FileController
return $this->response($files->getError(), Code::USER_ERROR);
}
$data = [
'path' => $url.$fileName,
'path' => $fileName,
'created_at' => date('Y-m-d H:i:s',time()),
'size' => $res->getSize(),
'hash' => $hash,
... ... @@ -200,7 +200,7 @@ class FileController
return $this->response($file->getError(), Code::USER_ERROR);
}
$save_data[] = [
'path' => $url.$fileName,
'path' => $fileName,
'created_at' => date('Y-m-d H:i:s',time()),
'size' => $res->getSize(),
'hash' => $hash,
... ...
... ... @@ -69,7 +69,7 @@ class ImageController
$content = file_get_contents($filename);
$header['Content-Length'] = strlen($content);
}else{
$path = $info['path'];
$path = $this->path.$info['path'];
if (!is_file($path)) {
$this->response('指定图片已被系统删除!', Code::USER_ERROR);
}
... ... @@ -137,7 +137,7 @@ class ImageController
return $this->response($files->getError(), Code::USER_ERROR);
}
$data = [
'path' => $url.$fileName,
'path' => $fileName,
'created_at' => date('Y-m-d H:i:s',time()),
'size' => $res->getSize(),
'hash' => $hash,
... ... @@ -197,7 +197,7 @@ class ImageController
return $this->response($file->getError(), Code::USER_ERROR);
}
$save_data[] = [
'path' => $url.$fileName,
'path' => $fileName,
'created_at' => date('Y-m-d H:i:s',time()),
'updated_at'=>date('Y-m-d H:i:s',time()),
'size' => $res->getSize(),
... ... @@ -258,10 +258,28 @@ class ImageController
case 'image':
$data['image_link'] = url('/b/image/' . $v);
break;
case 'hash':
$data['image_link'] = url('/b/image/' . $v);
break;
case 'path':
$data['path_link'] = url('/upload/images/' . basename($v));
break;
}
}
}
return $data;
}
/**
* @remark :获取所有图片
* @name :getImageList
* @author :lyh
* @method :post
* @time :2023/6/29 11:48
*/
public function getImageList(){
$imageModel = new ImageModel();
$lists = $imageModel->list([],$order = 'id',['id','hash','type','path','created_at']);
$this->response('success',Code::SUCCESS,$lists);
}
}
... ...
... ... @@ -3,7 +3,7 @@
namespace App\Http\Logic\Aside\Template;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Template\ATemplate;
use App\Models\Template\Template;
use App\Models\Template\BSetting;
class ATemplateLogic extends BaseLogic
... ... @@ -11,7 +11,7 @@ class ATemplateLogic extends BaseLogic
public function __construct()
{
parent::__construct();
$this->model = new ATemplate();
$this->model = new Template();
$this->param = $this->requestAll;
}
... ... @@ -36,9 +36,12 @@ class ATemplateLogic extends BaseLogic
*/
public function aTemplateSave(){
//字符串截取
$this->param['head_html'] = characterTruncation($this->param['html']);
$this->param['main_html'] = characterTruncation($this->param['html'],2);
$this->param['footer_html'] = characterTruncation($this->param['html'],3);
$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'])){
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
... ...
... ... @@ -3,7 +3,8 @@
namespace App\Http\Logic\Aside\Template;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\Template\ATemplateModule;
use App\Models\Template\TemplateModule;
use App\Models\Template\BSetting;
/**
* @remark :左侧模块管理
... ... @@ -16,7 +17,7 @@ class ATemplateModuleLogic extends BaseLogic
public function __construct()
{
parent::__construct();
$this->model = new ATemplateModule();
$this->model = new TemplateModule();
$this->param = $this->requestAll;
}
... ... @@ -27,8 +28,9 @@ class ATemplateModuleLogic extends BaseLogic
* @method :post
* @time :2023/6/28 18:01
*/
public function aTemplateModuleLists(){
public function aTemplateModuleLists($map,$page,$row,$order = 'created_at',$filed = ['*']){
$lists = $this->model->lists($map,$page,$row,$order,$filed);
return $this->success($lists);
}
/**
... ... @@ -39,7 +41,15 @@ class ATemplateModuleLogic extends BaseLogic
* @time :2023/6/28 18:01
*/
public function aTemplateModuleSave(){
if(isset($this->param['id'])){
$rs = $this->model->edit($this->param,['id'=>$this->param['id']]);
}else{
$rs = $this->model->add($this->param);
}
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
... ... @@ -50,7 +60,11 @@ class ATemplateModuleLogic extends BaseLogic
* @time :2023/6/28 18:02
*/
public function aTemplateModuleStatus(){
$rs = $this->model->edit(['status'=>$this->param['status']],['id'=>$this->param['id']]);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
/**
... ... @@ -61,6 +75,11 @@ class ATemplateModuleLogic extends BaseLogic
* @time :2023/6/28 18:02
*/
public function aTemplateModuleDel(){
//TODO::查看当前模板是否有模板在使用
$rs = $this->model->edit(['deleted_status'=>$this->param['deleted_status'],'deleted_at'=>date('Y-m-d H:i:s')],['id'=>$this->param['id']]);
if($rs === false){
$this->fail('error');
}
return $this->success();
}
}
... ...
... ... @@ -3,6 +3,8 @@
namespace App\Http\Logic\Bside\BTemplate;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Template\Template;
use App\Models\Template\BSetting;
use App\Models\Template\BTemplate;
/**
... ... @@ -19,4 +21,92 @@ class BTemplateLogic extends BaseLogic
$this->model = new BTemplate();
$this->param = $this->requestAll;
}
/**
* @remark :获取所有公共模板
* @name :publicTemplateLists
* @author :lyh
* @method :post
* @time :2023/6/29 9:34
*/
public function publicTemplateLists($map,$order = 'created_at',$filed = ['*']){
$templateModel = new Template();
$lists = $templateModel->list($map,$order,$filed);
return $this->success($lists);
}
/**
* @remark :获取当前选择的模板
* @name :getModuleTemplate
* @author :lyh
* @method :post
* @time :2023/6/29 9:44
*/
public function getTemplate(){
$bSettingModel = new BSetting();
$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']]);
if($TemplateInfo === false){
//获取模板详情
$ATemplateModel = new Template();
$TemplateInfo = $ATemplateModel->read(['id'=>$info['template_id']]);
}
}
return $this->success($TemplateInfo);
}
/**
* @remark :设置模板
* @name :setTemplate
* @author :lyh
* @method :post
* @time :2023/6/29 9:47
*/
public function setTemplate(){
$bSettingModel = new BSetting();
$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
* @author :lyh
* @method :post
* @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{
$this->param['project_id'] = $this->user['project_id'];
$rs = $this->model->add($this->param);
}
if($rs === false){
$this->fail('error');
}
return $this->success();
}
}
... ...
<?php
namespace App\Http\Logic\Bside\BTemplate;
use App\Http\Logic\Bside\BaseLogic;
use App\Models\Template\TemplateModule;
class BTemplateModuleLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new TemplateModule();
$this->param = $this->requestAll;
}
/**
* @remark :获取左侧模块列表
* @name :ModuleList
* @author :lyh
* @method :post
* @time :2023/6/29 13:35
*/
public function ModuleList($map,$page,$row,$order = 'created_at',$filed = ['*']){
$lists = $this->model->lists($map,$page,$row,$order,$filed);
return $this->success($lists);
}
}
... ...
<?php
namespace App\Http\Logic\Bside\BTemplate;
use App\Http\Logic\Bside\BaseLogic;
class CustomTemplateLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new Custom();
$this->param = $this->requestAll;
}
}
... ...
<?php
namespace App\Http\Logic\Bside;
use App\Helper\Arr;
use App\Models\BCustom;
use App\Models\Inquiry;
use App\Models\RouteMap;
use Illuminate\Support\Facades\DB;
/**
* 自定义页面
* @author:dc
* @time 2023/5/12 9:47
* Class CustomLogic
* @package App\Http\Logic\Bside
*/
class CustomLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new BCustom();
}
public function getList(array $map = [], array $sort = ['id' => 'desc'], array $columns = ['*'], int $limit = 20)
{
$data = parent::getList($map, $sort, $columns, $limit);
foreach ($data['list'] as &$v){
$v['route'] = RouteMap::getRoute(RouteMap::SOURCE_PAGE, $v['id'], $this->project['id']);
$v['url'] = $this->getProjectDomain() . $v['route'];
}
return $this->success($data);
}
/**
* @param $param
* @return array
* @throws \App\Exceptions\AsideGlobalException
* @throws \App\Exceptions\BsideGlobalException
* @author:dc
* @time 2023/5/12 9:54
*/
public function save($param)
{
$param['html'] = '';
DB::beginTransaction();
try {
$id = parent::save($param);
//路由映射
RouteMap::setRoute($param['url'] ?: $param['name'], RouteMap::SOURCE_PAGE, $id['id'], $this->user['project_id']);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('保存失败');
}
$data = $this->getInfo($id['id']);
return $data;
}
/**
* 删除
* @param $ids
* @param array $map
* @return array|void
* @author:dc
* @time 2023/5/12 9:58
*/
public function delete($ids, $map = [])
{
$ids = is_array($ids) ? $ids : [$ids];
DB::beginTransaction();
try {
foreach ($ids as $id) {
//删除路由映射
RouteMap::delRoute(RouteMap::SOURCE_PAGE, $id, $this->user['project_id']);
}
parent::delete($ids);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
$this->fail('删除失败');
}
return $this->success();
}
}
... ... @@ -3,7 +3,7 @@
namespace App\Http\Logic\Bside;
use App\Models\RouteMap;
use App\Models\Template\ATemplate;
use App\Models\Template\Template;
use App\Models\Template\BSetting;
use App\Models\Template\BTemplate;
... ... @@ -90,7 +90,7 @@ class TemplateLogic extends BaseLogic
'template_id' => BSetting::_get($this->user['project_id'])['template_id']
])->first();
if(empty($data)){
$data = ATemplate::where([
$data = Template::where([
'id' => BSetting::_get($this->user['project_id'])['template_id']
])->first();
}
... ... @@ -107,7 +107,7 @@ class TemplateLogic extends BaseLogic
*/
public function usingTemplates(){
//获取模版详情
$asideTemplateModel = new ATemplate();
$asideTemplateModel = new Template();
$templateInfo = $asideTemplateModel->read(['id'=>$this->param['template_id']]);
if($templateInfo === false){
$this->fail('当前模版不存在或已被删除');
... ...
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* b端控制, c端显示的自定义页面
* @author:dc
* @time 2023/5/8 16:14
* Class BCustom
* @package App\Models
*/
class BCustom extends Base
{
protected $table = 'gl_web_custom';
use SoftDeletes;
public $hidden = ['deleted_at','project_id'];
/**
* 显示
*/
const STATUS_ACTIVE = 1;
/**
* 隐藏
*/
const STATUS_DISABLED = 0;
/**
* 查询一条数据
* @param int $project_id
* @param int $id
* @return mixed
* @author:dc
* @time 2023/5/8 17:04
*/
public static function _find(int $project_id, int $id, $array = false)
{
$data = static::where(['id'=>$id,'project_id'=>$project_id])->first();
if($data){
return $array ? $data->toArray() : $data;
}
return [];
}
}
<?php
namespace App\Models\Template;
use App\Models\Base;
class BCustomTemplate extends Base
{
protected $table = 'gl_web_custom_template';
}
... ...
... ... @@ -6,11 +6,11 @@ use App\Models\Base;
/**
* @remark :公共模块
* @name :ATemplate
* @name :Template
* @author :lyh
* @time :2023/6/28 16:51
*/
class ATemplate extends Base
class Template extends Base
{
protected $table = 'gl_public_template';
}
... ...
... ... @@ -10,7 +10,7 @@ use App\Models\Base;
* @author :lyh
* @time :2023/6/28 16:51
*/
class ATemplateModule extends Base
class TemplateModule extends Base
{
protected $table = 'gl_public_template_module';
}
... ...
... ... @@ -193,24 +193,20 @@ Route::middleware(['aloginauth'])->group(function () {
Route::prefix('files')->group(function () {
Route::post('/upload', [\App\Http\Controllers\File\FileController::class, 'upload'])->name('files_upload');
});
// 自定义页面 模板,头部底部
// 公共主题模版
Route::prefix('template')->group(function () {
Route::get('/', [\App\Http\Controllers\Aside\TemplateController::class, 'index'])->name('admin.template');
Route::post('/edit', [\App\Http\Controllers\Aside\TemplateController::class, 'save'])->name('admin.template_edit');
Route::post('/insert', [\App\Http\Controllers\Aside\TemplateController::class, 'save'])->name('admin.template_insert');
Route::delete('/delete/{id}', [\App\Http\Controllers\Aside\TemplateController::class, 'delete'])->where('id', '\d+')->name('admin.template_delete');
Route::get('/html/{template_id}', [\App\Http\Controllers\Aside\TemplateController::class, 'html_index'])->where('template_id', '\d+')->name('admin.template.html');
Route::post('/html/{template_id}/edit', [\App\Http\Controllers\Aside\TemplateController::class, 'html_edit'])->where('template_id', '\d+')->name('admin.template_edit.html');
Route::post('/html/{template_id}/insert', [\App\Http\Controllers\Aside\TemplateController::class, 'html_insert'])->where('template_id', '\d+')->name('admin.template_insert.html');
Route::delete('/html/{template_id}/delete/{id}', [\App\Http\Controllers\Aside\TemplateController::class, 'html_delete'])->where('template_id', '\d+')->where('id', '\d+')->name('admin.template_delete.html');
Route::get('/html/type', [\App\Http\Controllers\Aside\TemplateController::class, 'html_type'])->name('admin.template_type.html');
// 自定义块,模板块
Route::get('/chunk/lists', [\App\Http\Controllers\Aside\TemplateController::class, 'chunk_lists'])->name('admin.template.chunk_lists');
Route::post('/chunk/create', [\App\Http\Controllers\Aside\TemplateController::class, 'chunk_save'])->name('admin.template.chunk_create');
Route::post('/chunk/update', [\App\Http\Controllers\Aside\TemplateController::class, 'chunk_save'])->name('admin.template.chunk_update');
Route::delete('/chunk/delete/{chunk_id}', [\App\Http\Controllers\Aside\TemplateController::class, 'chunk_delete'])->where('chunk_id', '\d+')->name('admin.template.chunk_delete');
Route::any('/', [Aside\Template\ATemplateController::class, 'lists'])->name('admin.ATemplate_lists');
Route::any('/save', [Aside\Template\ATemplateController::class, 'save'])->name('admin.ATemplate_save');
Route::any('/status', [Aside\Template\ATemplateController::class, 'status'])->name('admin.ATemplate_status');
Route::any('/del', [Aside\Template\ATemplateController::class, 'del'])->name('admin.ATemplate_del');
// 左侧模块
Route::prefix('module')->group(function () {
Route::any('/', [Aside\Template\ATemplateModuleController::class, 'lists'])->name('admin.ATemplateModule_lists');
Route::any('/save', [Aside\Template\ATemplateModuleController::class, 'save'])->name('admin.ATemplateModule_save');
Route::any('/status', [Aside\Template\ATemplateModuleController::class, 'status'])->name('admin.ATemplateModule_status');
Route::any('/del', [Aside\Template\ATemplateModuleController::class, 'del'])->name('admin.ATemplateModule_del');
});
});
});
... ...
... ... @@ -239,23 +239,18 @@ Route::middleware(['bloginauth'])->group(function () {
// 模板
Route::prefix('template')->group(function () {
Route::get('/', [\App\Http\Controllers\Bside\TemplateController::class, 'index'])->name('bside_template');
Route::any('/use-template', [\App\Http\Controllers\Bside\TemplateController::class, 'info'])->name('bside_template_use');
// Route::get('/custom-chunk', [\App\Http\Controllers\Bside\TemplateController::class, 'customChunk'])->name('bside_template_custom_chunk');
Route::get('/get_type', [\App\Http\Controllers\Bside\TemplateController::class, 'get_type'])->name('bside_template_type');
Route::get('/get_html', [\App\Http\Controllers\Bside\TemplateController::class, 'get_html'])->name('bside_template_get_html');
Route::post('/save_html', [\App\Http\Controllers\Bside\TemplateController::class, 'save_html'])->name('bside_template_save_html');
Route::get('/status', [\App\Http\Controllers\Bside\TemplateController::class, 'status'])->name('bside_template_status');
// 自定义模板的 块。
Route::get('/chunk', [\App\Http\Controllers\Bside\TemplateController::class, 'chunk'])->name('bside_template_chunk');
Route::post('/chunk/create', [\App\Http\Controllers\Aside\TemplateController::class, 'chunk_save'])->name('admin.template.chunk_create');
Route::post('/chunk/update', [\App\Http\Controllers\Aside\TemplateController::class, 'chunk_save'])->name('admin.template.chunk_update');
Route::delete('/chunk/delete/{chunk_id}', [\App\Http\Controllers\Aside\TemplateController::class, 'chunk_delete'])->where('chunk_id', '\d+')->name('admin.template.chunk_delete');
//获取所有公共主题模版
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::prefix('module')->group(function () {
//获取所有左侧模版
Route::any('/', [\App\Http\Controllers\Bside\Template\BTemplateModuleController::class, 'lists'])->name('template_module_lists');
});
});
... ... @@ -319,7 +314,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::group([], function () {
Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login');
Route::any('/stringTranslation', [\App\Http\Controllers\Bside\ComController::class, 'stringTranslation'])->name('com_stringTranslation');
Route::any('/ceshi', [\App\Http\Controllers\Bside\ComController::class, 'ceshi'])->name('com_ceshi');
Route::any('/getImageList', [\App\Http\Controllers\File\ImageController::class, 'getImageList'])->name('image_getImageList');
Route::any('/sendLoginSms', [\App\Http\Controllers\Bside\ComController::class, 'sendLoginSms'])->name('sendLoginSms');
Route::get('/file/download', [\App\Http\Controllers\Bside\FileController::class, 'download'])->name('file_download');
Route::any('/image/{hash}/{w?}/{h?}', [\App\Http\Controllers\File\ImageController::class, 'index'])->name('image_show');
... ...