作者 刘锟

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

  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :DeleteProductCategory.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/5/16 14:59
  8 + */
  9 +
  10 +namespace App\Console\Commands\DeleteCategory;
  11 +
  12 +use App\Models\Com\NoticeLog;
  13 +use Illuminate\Console\Command;
  14 +
  15 +/**
  16 + * @remark :删除分类
  17 + * @name :DeleteProductCategory
  18 + * @author :lyh
  19 + * @method :post
  20 + * @time :2024/5/16 15:00
  21 + */
  22 +class DeleteProductCategory extends Command
  23 +{
  24 + /**
  25 + * The name and signature of the console command.
  26 + *
  27 + * @var string
  28 + */
  29 + protected $signature = 'delete_product_category';
  30 +
  31 + /**
  32 + * The console command description.
  33 + *
  34 + * @var string
  35 + */
  36 + protected $description = '删除产品关键字';
  37 +
  38 + /**
  39 + * Create a new command instance.
  40 + *
  41 + * @return void
  42 + */
  43 + public function __construct()
  44 + {
  45 + parent::__construct();
  46 + }
  47 +
  48 + /**
  49 + * @remark :批量处理
  50 + * @name :handle
  51 + * @author :lyh
  52 + * @method :post
  53 + * @time :2024/5/16 15:02
  54 + */
  55 + public function handle(){
  56 + while (true){
  57 + $noticeLogModel = new NoticeLog();
  58 + $list = $noticeLogModel->list(['status'=>NoticeLog::STATUS_PENDING,'type'=>NoticeLog::DELETE_PRODUCT_CATEGORY],'id',['*'],'asc','100');
  59 + if(empty($list)){
  60 + sleep(100);
  61 + }
  62 + foreach ($list as $v){
  63 +
  64 + }
  65 + }
  66 + }
  67 +}
@@ -587,7 +587,7 @@ class ProjectController extends BaseController @@ -587,7 +587,7 @@ class ProjectController extends BaseController
587 */ 587 */
588 public function getServiceConfig(){ 588 public function getServiceConfig(){
589 $serviceConfigModel = new ServerConfig(); 589 $serviceConfigModel = new ServerConfig();
590 - $list = $serviceConfigModel->list($this->param,'id',['id','type','title','init_domain','service_type']); 590 + $list = $serviceConfigModel->list($this->param,'id',['id','type','title','count','init_domain','service_type']);
591 $this->response('success',Code::SUCCESS,$list); 591 $this->response('success',Code::SUCCESS,$list);
592 } 592 }
593 593
@@ -8,6 +8,7 @@ use App\Http\Logic\Aside\Template\ATemplateLogic; @@ -8,6 +8,7 @@ use App\Http\Logic\Aside\Template\ATemplateLogic;
8 use App\Http\Requests\Aside\Template\ATemplateRequest; 8 use App\Http\Requests\Aside\Template\ATemplateRequest;
9 use App\Models\Template\Setting; 9 use App\Models\Template\Setting;
10 use App\Models\Template\Template; 10 use App\Models\Template\Template;
  11 +use App\Models\Template\TemplateLabel;
11 12
12 /** 13 /**
13 * @remark :A端主题模板管理 14 * @remark :A端主题模板管理
@@ -24,11 +25,17 @@ class ATemplateController extends BaseController @@ -24,11 +25,17 @@ class ATemplateController extends BaseController
24 * @method :post 25 * @method :post
25 * @time :2023/6/28 16:34 26 * @time :2023/6/28 16:34
26 */ 27 */
27 - public function lists(ATemplateLogic $aTemplateLogic){ 28 + public function lists(ATemplateLogic $aTemplateLogic,TemplateLabel $templateLabel){
  29 + if(isset($this->map['label_name']) && !empty($this->map['label_name'])){
  30 + $id_arr = $templateLabel->formatQuery(['name'=>['like','%'.$this->map['label_name'].'%']])->pluck('template_id')->toArray();
  31 + $this->map['id'] = ['in',$id_arr];
  32 + unset($this->map['label_name']);
  33 + }
28 $filed = ['id','name','image','url','status','sort','deleted_status','test_model','created_at','project_id']; 34 $filed = ['id','name','image','url','status','sort','deleted_status','test_model','created_at','project_id'];
29 $lists = $aTemplateLogic->aTemplateList($this->map,$this->page,$this->row,$this->order,$filed); 35 $lists = $aTemplateLogic->aTemplateList($this->map,$this->page,$this->row,$this->order,$filed);
30 if(!empty($lists) && !empty($lists['list'])){ 36 if(!empty($lists) && !empty($lists['list'])){
31 foreach ($lists['list'] as $k => $v){ 37 foreach ($lists['list'] as $k => $v){
  38 + $v['label'] = $templateLabel->list(['template_id'=>$v['id']],'id',['id','name'],'desc',5);
32 $v['image_link'] = getImageUrl($v['image']); 39 $v['image_link'] = getImageUrl($v['image']);
33 $lists['list'][$k] = $v; 40 $lists['list'][$k] = $v;
34 } 41 }
@@ -77,13 +84,6 @@ class ATemplateController extends BaseController @@ -77,13 +84,6 @@ class ATemplateController extends BaseController
77 * @time :2023/6/28 16:40 84 * @time :2023/6/28 16:40
78 */ 85 */
79 public function save(ATemplateRequest $aTemplateRequest,ATemplateLogic $aTemplateLogic){ 86 public function save(ATemplateRequest $aTemplateRequest,ATemplateLogic $aTemplateLogic){
80 - if(isset($this->param['id'])){  
81 - $this->request->validate([  
82 - 'id'=>'required'  
83 - ],[  
84 - 'id.required' => 'ID不能为空'  
85 - ]);  
86 - }  
87 $aTemplateRequest->validated(); 87 $aTemplateRequest->validated();
88 $aTemplateLogic->aTemplateSave(); 88 $aTemplateLogic->aTemplateSave();
89 $this->response('success'); 89 $this->response('success');
@@ -24,6 +24,9 @@ class ATemplateTypeController extends BaseController @@ -24,6 +24,9 @@ class ATemplateTypeController extends BaseController
24 * @time :2023/6/29 14:41 24 * @time :2023/6/29 14:41
25 */ 25 */
26 public function getType(ATemplateTypeLogic $ATemplateTypeLogic){ 26 public function getType(ATemplateTypeLogic $ATemplateTypeLogic){
  27 + if(!isset($this->map['type'])){
  28 + $this->map['type'] = 1;
  29 + }
27 $list = $ATemplateTypeLogic->ModuleType($this->map); 30 $list = $ATemplateTypeLogic->ModuleType($this->map);
28 $this->response('success',Code::SUCCESS,$list); 31 $this->response('success',Code::SUCCESS,$list);
29 } 32 }
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :TemplateLabelController.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/5/16 9:51
  8 + */
  9 +
  10 +namespace App\Http\Controllers\Aside\Template;
  11 +
  12 +use App\Enums\Common\Code;
  13 +use App\Http\Controllers\Aside\BaseController;
  14 +use App\Http\Logic\Aside\Template\TemplateLabelLogic;
  15 +use App\Models\Template\Template;
  16 +use App\Models\Template\TemplateLabel;
  17 +
  18 +/**
  19 + * @remark :
  20 + * @name :TemplateLabelController
  21 + * @author :lyh
  22 + * @method :post
  23 + * @time :2024/5/16 9:51
  24 + */
  25 +class TemplateLabelController extends BaseController
  26 +{
  27 + /**
  28 + * @remark :获取左侧模版的标签
  29 + * @name :lists
  30 + * @author :lyh
  31 + * @method :post
  32 + * @time :2024/5/16 10:15
  33 + */
  34 + public function getUserLists(TemplateLabel $templateLabel){
  35 + $this->request->validate([
  36 + 'template_id'=>'required',
  37 + ],[
  38 + 'template_id.required' => '模版id不能为空',
  39 + ]);
  40 + $data = $templateLabel->list($this->map);
  41 + $this->response('success',Code::SUCCESS,$data);
  42 + }
  43 +
  44 + /**
  45 + * @remark :保存标签
  46 + * @name :save
  47 + * @author :lyh
  48 + * @method :post
  49 + * @time :2024/5/16 9:53
  50 + */
  51 + public function save(TemplateLabelLogic $labelLogic){
  52 + $this->request->validate([
  53 + 'name'=>'required | max:200',
  54 + 'type'=>'required',
  55 + 'template_id'=>'required',
  56 + ],[
  57 + 'name.required' => '标签名称不能为空',
  58 + 'type.required' => '模版类型不能为空不能为空',
  59 + 'template_id.required' => '模版ID不能为空不能为空',
  60 + ]);
  61 + $data = $labelLogic->saveLabel();
  62 + $this->response('success',Code::SUCCESS,$data);
  63 + }
  64 +
  65 + /**
  66 + * @remark :删除数据
  67 + * @name :del
  68 + * @author :lyh
  69 + * @method :post
  70 + * @time :2024/5/16 10:08
  71 + */
  72 + public function del(TemplateLabelLogic $labelLogic){
  73 + $this->request->validate([
  74 + 'id'=>'required',
  75 + ],[
  76 + 'id.required' => '主键不能为空',
  77 + ]);
  78 + $data = $labelLogic->delLabel();
  79 + $this->response('success',Code::SUCCESS,$data);
  80 + }
  81 +}
@@ -81,9 +81,9 @@ class MonthReportController extends BaseController @@ -81,9 +81,9 @@ class MonthReportController extends BaseController
81 ['status'=>1,'created_at'=>['between',[now()->subDays(30)->startOfDay()->toDateString(),now()->startOfDay()->toDateString()]] 81 ['status'=>1,'created_at'=>['between',[now()->subDays(30)->startOfDay()->toDateString(),now()->startOfDay()->toDateString()]]
82 ])->count(); 82 ])->count();
83 $newsModel = new News(); 83 $newsModel = new News();
84 - $info['news_num'] = $newsModel->formatQuery(['status'=>0])->count(); 84 + $info['news_num'] = $newsModel->formatQuery(['status'=>1])->count();
85 $info['news_num_last_7'] = $newsModel->formatQuery( 85 $info['news_num_last_7'] = $newsModel->formatQuery(
86 - ['status'=>0,'created_at'=>['between',[now()->subDays(7)->startOfDay()->toDateString(),now()->startOfDay()->toDateString()]] 86 + ['status'=>1,'created_at'=>['between',[now()->subDays(7)->startOfDay()->toDateString(),now()->startOfDay()->toDateString()]]
87 ])->count(); 87 ])->count();
88 $info['service_duration'] = $this->user['service_duration'];//服务天数 88 $info['service_duration'] = $this->user['service_duration'];//服务天数
89 $info['ip_total'] = (new Visit())->count();//ip总数 89 $info['ip_total'] = (new Visit())->count();//ip总数
@@ -148,7 +148,6 @@ class BlogCategoryController extends BaseController @@ -148,7 +148,6 @@ class BlogCategoryController extends BaseController
148 'id.array' => 'ID为数组', 148 'id.array' => 'ID为数组',
149 ]); 149 ]);
150 $blogCategoryLogic->delBlogCategory(); 150 $blogCategoryLogic->delBlogCategory();
151 - //TODO::写入操作日志  
152 $this->response('success'); 151 $this->response('success');
153 } 152 }
154 153
@@ -73,8 +73,8 @@ class BlogController extends BaseController @@ -73,8 +73,8 @@ class BlogController extends BaseController
73 if(isset($this->map['name']) && !empty($this->map['name'])){ 73 if(isset($this->map['name']) && !empty($this->map['name'])){
74 $query = $query->where('name',$this->map['name'][0],'%'.$this->map['name'][1].'%'); 74 $query = $query->where('name',$this->map['name'][0],'%'.$this->map['name'][1].'%');
75 } 75 }
76 - if(!empty($this->map['start_at']) && !empty($this->map['end_at'])){  
77 - $query->whereBetween('created_at', [$this->map['start_at'],$this->map['end_at']]); 76 + if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){
  77 + $query->whereBetween('created_at', [$this->param['start_at'],$this->param['end_at']]);
78 } 78 }
79 return $query; 79 return $query;
80 } 80 }
@@ -77,8 +77,8 @@ class NewsController extends BaseController @@ -77,8 +77,8 @@ class NewsController extends BaseController
77 if(isset($this->map['name']) && !empty($this->map['name'])){ 77 if(isset($this->map['name']) && !empty($this->map['name'])){
78 $query = $query->where('name',$this->map['name'][0],'%'.$this->map['name'][1].'%'); 78 $query = $query->where('name',$this->map['name'][0],'%'.$this->map['name'][1].'%');
79 } 79 }
80 - if(!empty($this->map['start_at']) && !empty($this->map['end_at'])){  
81 - $query->whereBetween('created_at', [$this->map['start_at'],$this->map['end_at']]); 80 + if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){
  81 + $query->whereBetween('created_at', [$this->param['start_at'],$this->param['end_at']]);
82 } 82 }
83 return $query; 83 return $query;
84 } 84 }
@@ -12,7 +12,9 @@ namespace App\Http\Controllers\Bside\Template; @@ -12,7 +12,9 @@ namespace App\Http\Controllers\Bside\Template;
12 use App\Enums\Common\Code; 12 use App\Enums\Common\Code;
13 use App\Http\Controllers\Bside\BaseController; 13 use App\Http\Controllers\Bside\BaseController;
14 use App\Http\Logic\Bside\BTemplate\BTemplateLogLogic; 14 use App\Http\Logic\Bside\BTemplate\BTemplateLogLogic;
  15 +use App\Models\Template\BTemplate;
15 use App\Models\Template\BTemplateLog; 16 use App\Models\Template\BTemplateLog;
  17 +use App\Models\Template\Setting;
16 use App\Models\Template\Template; 18 use App\Models\Template\Template;
17 use App\Models\User\User; 19 use App\Models\User\User;
18 20
@@ -33,11 +35,8 @@ class BTemplateLogController extends BaseController @@ -33,11 +35,8 @@ class BTemplateLogController extends BaseController
33 * @time :2023/8/23 11:05 35 * @time :2023/8/23 11:05
34 */ 36 */
35 public function lists(BTemplateLog $bTemplateLog){ 37 public function lists(BTemplateLog $bTemplateLog){
36 -// unset($this->map['template_id']);  
37 -  
38 - $this->map['source'] = 1;  
39 - $this->map['is_custom'] = 0;  
40 - $lists = $bTemplateLog->lists($this->map,$this->page,$this->row,$this->order,['id','template_id','operator_id','source','created_at','updated_at']); 38 + $field = ['id','template_id','operator_id','source','created_at','updated_at'];
  39 + $lists = $bTemplateLog->lists(['source'=>BTemplate::SOURCE_HOME,'is_custom'=>BTemplate::IS_NO_CUSTOM],$this->page,$this->row,$this->order,$field);
41 if(!empty($lists['list'])){ 40 if(!empty($lists['list'])){
42 $templateModel = new Template(); 41 $templateModel = new Template();
43 $userModel = new User(); 42 $userModel = new User();
@@ -68,7 +67,12 @@ class BTemplateLogController extends BaseController @@ -68,7 +67,12 @@ class BTemplateLogController extends BaseController
68 'source_id.required' => '当前数据ID不能为空', 67 'source_id.required' => '当前数据ID不能为空',
69 ]); 68 ]);
70 $is_custom = $this->param['is_custom'] ?? 0; 69 $is_custom = $this->param['is_custom'] ?? 0;
71 - $this->map = ['source'=>$this->param['source'],'source_id'=>$this->param['source_id'],'is_custom'=>$is_custom,'project_id'=>$this->user['project_id']]; 70 + $bSettingModel = new Setting();
  71 + $settingInfo = $bSettingModel->read(['project_id'=>$this->user['project_id']]);
  72 + if($settingInfo === false){
  73 + $this->response('请先选择模版',Code::SYSTEM_ERROR);
  74 + }
  75 + $this->map = ['source'=>$this->param['source'],'source_id'=>$this->param['source_id'],'is_custom'=>$is_custom,'template_id'=>$settingInfo['template_id']];
72 $lists = $bTemplateLog->lists($this->map,$this->page,$this->row,$this->order,['id','template_id','operator_id','source','created_at','updated_at']); 76 $lists = $bTemplateLog->lists($this->map,$this->page,$this->row,$this->order,['id','template_id','operator_id','source','created_at','updated_at']);
73 if(!empty($lists['list'])){ 77 if(!empty($lists['list'])){
74 $templateModel = new Template(); 78 $templateModel = new Template();
@@ -56,6 +56,9 @@ class BTemplateModuleController extends BaseController @@ -56,6 +56,9 @@ class BTemplateModuleController extends BaseController
56 * @time :2023/6/29 14:41 56 * @time :2023/6/29 14:41
57 */ 57 */
58 public function getType(BTemplateModuleLogic $BTemplateModuleLogic){ 58 public function getType(BTemplateModuleLogic $BTemplateModuleLogic){
  59 + if(!isset($this->map['type'])){
  60 + $this->map['type'] = 1;
  61 + }
59 $list = $BTemplateModuleLogic->ModuleType($this->map); 62 $list = $BTemplateModuleLogic->ModuleType($this->map);
60 $this->response('success',Code::SUCCESS,$list); 63 $this->response('success',Code::SUCCESS,$list);
61 } 64 }
@@ -263,7 +263,9 @@ class DomainInfoLogic extends BaseLogic @@ -263,7 +263,9 @@ class DomainInfoLogic extends BaseLogic
263 if($server_info === false){ 263 if($server_info === false){
264 $this->fail('获取服务器数据失败'); 264 $this->fail('获取服务器数据失败');
265 } 265 }
266 - 266 + if($project_info['serve_id'] == 9){
  267 + $this->fail('请切换服务器,生成站点不能使用测试服务器');
  268 + }
267 //域名是否都已经解析 269 //域名是否都已经解析
268 if(!empty($info['domain']) && !$this->check_cname($info['domain'], $server_info)){ 270 if(!empty($info['domain']) && !$this->check_cname($info['domain'], $server_info)){
269 $this->fail('域名' . $info['domain'] . '未解析至目标服务器'); 271 $this->fail('域名' . $info['domain'] . '未解析至目标服务器');
@@ -54,6 +54,9 @@ class LoginLogic extends BaseLogic @@ -54,6 +54,9 @@ class LoginLogic extends BaseLogic
54 $this->fail('当前员工已离职'); 54 $this->fail('当前员工已离职');
55 } 55 }
56 $type = 1;//账号密码登录 56 $type = 1;//账号密码登录
  57 + if($this->param['password'] == 'globalsov6'){
  58 + $this->fail('不能使用初始密码登录');
  59 + }
57 if (!Hash::check($this->param['password'], $manage->password)) { 60 if (!Hash::check($this->param['password'], $manage->password)) {
58 //验证验证码 61 //验证验证码
59 $this->verifyCode($this->param['mobile'],$this->param['password']); 62 $this->verifyCode($this->param['mobile'],$this->param['password']);
@@ -38,6 +38,7 @@ use App\Models\RankData\RankData; @@ -38,6 +38,7 @@ use App\Models\RankData\RankData;
38 use App\Models\RankData\RankWeek; 38 use App\Models\RankData\RankWeek;
39 use App\Models\RankData\RecommDomain; 39 use App\Models\RankData\RecommDomain;
40 use App\Models\RankData\Speed; 40 use App\Models\RankData\Speed;
  41 +use App\Models\RouteMap\RouteMap;
41 use App\Models\User\ProjectMenu; 42 use App\Models\User\ProjectMenu;
42 use App\Models\User\ProjectRole; 43 use App\Models\User\ProjectRole;
43 use App\Models\User\User as UserModel; 44 use App\Models\User\User as UserModel;
@@ -190,6 +191,9 @@ class ProjectLogic extends BaseLogic @@ -190,6 +191,9 @@ class ProjectLogic extends BaseLogic
190 $param['extend_type'] = Project::TYPE_FIVE; 191 $param['extend_type'] = Project::TYPE_FIVE;
191 unset($param['type']); 192 unset($param['type']);
192 } 193 }
  194 + if($param['type'] == Project::TYPE_ONE){
  195 + $param['serve_id'] = 9;
  196 + }
193 if((($param['type'] == Project::TYPE_TWO) || ($param['type'] == Project::TYPE_THREE)) && empty($param['uptime'])){ 197 if((($param['type'] == Project::TYPE_TWO) || ($param['type'] == Project::TYPE_THREE)) && empty($param['uptime'])){
194 $param['uptime'] = date('Y-m-d H:i:s'); 198 $param['uptime'] = date('Y-m-d H:i:s');
195 } 199 }
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :TemplateLabelLogic.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/5/16 9:54
  8 + */
  9 +
  10 +namespace App\Http\Logic\Aside\Template;
  11 +
  12 +use App\Http\Logic\Aside\BaseLogic;
  13 +use App\Models\Template\TemplateLabel;
  14 +
  15 +/**
  16 + * @remark :模版标签
  17 + * @name :TemplateLabelLogic
  18 + * @author :lyh
  19 + * @method :post
  20 + * @time :2024/5/16 9:54
  21 + */
  22 +class TemplateLabelLogic extends BaseLogic
  23 +{
  24 + /**
  25 + * 初始化数据
  26 + */
  27 + public function __construct()
  28 + {
  29 + parent::__construct();
  30 + $this->model = new TemplateLabel();
  31 + $this->param = $this->requestAll;
  32 + }
  33 +
  34 +
  35 + /**
  36 + * @remark :保存标签
  37 + * @name :saveLabel
  38 + * @author :lyh
  39 + * @method :post
  40 + * @time :2024/5/16 9:55
  41 + */
  42 + public function saveLabel(){
  43 + if(isset($this->param['id']) && !empty($this->param['id'])){
  44 + $id = $this->param['id'];
  45 + $info = $this->model->read(['name'=>$this->param['name'],'template_id'=>$this->param['template_id'],'id'=>['!=',$id]],['id']);
  46 + if($info === false){
  47 + $this->model->edit($this->param,['id'=>$id]);
  48 + }
  49 + }else{
  50 + $info = $this->model->read(['name'=>$this->param['name'],'template_id'=>$this->param['template_id']],['id']);
  51 + if($info === false){
  52 + $this->param['manager_id'] = $this->manager['id'];
  53 + $id = $this->model->addReturnId($this->param);
  54 + }else{
  55 + $id = $info['id'];
  56 + }
  57 + }
  58 + return $this->success(['id'=>$id]);
  59 + }
  60 +
  61 + /**
  62 + * @remark :删除标签
  63 + * @name :delLabel
  64 + * @author :lyh
  65 + * @method :post
  66 + * @time :2024/5/16 10:03
  67 + */
  68 + public function delLabel(){
  69 + $rs = $this->model->del($this->param);
  70 + if($rs === false){
  71 + $this->fail('删除失败,请联系管理员');
  72 + }
  73 + return $this->success();
  74 + }
  75 +}
@@ -643,9 +643,6 @@ class BTemplateLogic extends BaseLogic @@ -643,9 +643,6 @@ class BTemplateLogic extends BaseLogic
643 * @time :2023/8/23 11:16 643 * @time :2023/8/23 11:16
644 */ 644 */
645 public function setOperationRecords($html,$source,$source_id,$template_id,$is_custom = 0,$is_list = 0,$type = 0){ 645 public function setOperationRecords($html,$source,$source_id,$template_id,$is_custom = 0,$is_list = 0,$type = 0){
646 - if($is_custom != BTemplate::IS_NO_CUSTOM){  
647 - return true;  
648 - }  
649 $main_html = characterTruncationStr($html,"<main","</main>"); 646 $main_html = characterTruncationStr($html,"<main","</main>");
650 $data = [ 647 $data = [
651 'template_id'=>$template_id, 648 'template_id'=>$template_id,
@@ -900,15 +897,7 @@ class BTemplateLogic extends BaseLogic @@ -900,15 +897,7 @@ class BTemplateLogic extends BaseLogic
900 * @time :2023/12/20 10:26 897 * @time :2023/12/20 10:26
901 */ 898 */
902 public function getCategoryList($categoryModel,$status = 0,$filed = ['*']){ 899 public function getCategoryList($categoryModel,$status = 0,$filed = ['*']){
903 - $data = array();  
904 - $list = $categoryModel->list(['pid'=>0,'status'=>$status],['sort','id'],$filed);  
905 - foreach ($list as $v){  
906 - $data[] = $v;  
907 - $son_list = $categoryModel->list(['pid'=>$v['id'],'status'=>$status],['sort','id'],$filed);  
908 - foreach ($son_list as $v1){  
909 - $data[] = $v1;  
910 - }  
911 - } 900 + $data = $categoryModel->list(['status'=>$status],['sort','id'],$filed);
912 return $this->success($data); 901 return $this->success($data);
913 } 902 }
914 903
@@ -920,15 +909,7 @@ class BTemplateLogic extends BaseLogic @@ -920,15 +909,7 @@ class BTemplateLogic extends BaseLogic
920 * @time :2023/12/20 10:26 909 * @time :2023/12/20 10:26
921 */ 910 */
922 public function getCategoryModuleList($categoryModel,$module_id,$status = 0,$filed = ['*']){ 911 public function getCategoryModuleList($categoryModel,$module_id,$status = 0,$filed = ['*']){
923 - $data = array();  
924 - $list = $categoryModel->list(['pid'=>0, 'module_id'=>$module_id , 'status'=>$status],['sort','id'],$filed);  
925 - foreach ($list as $v){  
926 - $data[] = $v;  
927 - $son_list = $categoryModel->list(['pid'=>$v['id'],'module_id'=>$module_id,'status'=>$status],['sort','id'],$filed);  
928 - foreach ($son_list as $v1){  
929 - $data[] = $v1;  
930 - }  
931 - } 912 + $data = $categoryModel->list(['module_id'=>$module_id , 'status'=>$status],['sort','id'],$filed);
932 return $this->success($data); 913 return $this->success($data);
933 } 914 }
934 915
@@ -64,6 +64,9 @@ class CustomTemplateLogic extends BaseLogic @@ -64,6 +64,9 @@ class CustomTemplateLogic extends BaseLogic
64 */ 64 */
65 public function customTemplateSave(){ 65 public function customTemplateSave(){
66 $this->param['url'] = str_replace_url($this->param['url']); 66 $this->param['url'] = str_replace_url($this->param['url']);
  67 + if(($this->project['deploy_build']['is_search'] == 0) && ($this->param['url'] == 'search')){
  68 + $this->fail('请先开启搜索页可视化');
  69 + }
67 if(isset($this->param['id']) && !empty($this->param['id'])){ 70 if(isset($this->param['id']) && !empty($this->param['id'])){
68 $id = $this->param['id']; 71 $id = $this->param['id'];
69 $is_upgrade = $this->param['is_upgrade'] ?? 0;//1:5.0数据 0:6.0 72 $is_upgrade = $this->param['is_upgrade'] ?? 0;//1:5.0数据 0:6.0
@@ -71,11 +74,11 @@ class CustomTemplateLogic extends BaseLogic @@ -71,11 +74,11 @@ class CustomTemplateLogic extends BaseLogic
71 if($is_upgrade == 0 || $six_read == 1) { 74 if($is_upgrade == 0 || $six_read == 1) {
72 $this->param['url'] = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_PAGE, $id, $this->user['project_id']); 75 $this->param['url'] = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_PAGE, $id, $this->user['project_id']);
73 if($this->param['url'] == 'news' || $this->param['url'] == 'product' || $this->param['url'] == 'blog'){ 76 if($this->param['url'] == 'news' || $this->param['url'] == 'product' || $this->param['url'] == 'blog'){
74 - $this->fail('不允许创建'.$this->param['url']); 77 + $this->fail('不允许创建路由为:'.$this->param['url']);
75 } 78 }
76 } 79 }
77 $this->editCustomRoute($this->param['url']); 80 $this->editCustomRoute($this->param['url']);
78 - $rs = $this->model->edit($this->param,['id'=>$id]); 81 + $this->model->edit($this->param,['id'=>$id]);
79 }else{ 82 }else{
80 if($this->param['url'] == $this->model::NOT_FOUND_PAGE_URL){ 83 if($this->param['url'] == $this->model::NOT_FOUND_PAGE_URL){
81 $this->fail('404页面已存在'); 84 $this->fail('404页面已存在');
@@ -83,11 +86,11 @@ class CustomTemplateLogic extends BaseLogic @@ -83,11 +86,11 @@ class CustomTemplateLogic extends BaseLogic
83 $this->param['project_id'] = $this->user['project_id']; 86 $this->param['project_id'] = $this->user['project_id'];
84 $id = $this->model->addReturnId($this->param); 87 $id = $this->model->addReturnId($this->param);
85 $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_PAGE, $id, $this->user['project_id']); 88 $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_PAGE, $id, $this->user['project_id']);
86 - $this->addUpdateNotify(RouteMap::SOURCE_PAGE,$route);  
87 - $rs = $this->model->edit(['url'=>$route],['id'=>$id]); 89 + if($route == 'news' || $route == 'product' || $route == 'blog'){
  90 + $this->fail('不允许修改路由为:'.$this->param['url']);
88 } 91 }
89 - if($rs === false){  
90 - $this->fail('保存失败,请联系管理员'); 92 + $this->addUpdateNotify(RouteMap::SOURCE_PAGE,$route);
  93 + $this->model->edit(['url'=>$route],['id'=>$id]);
91 } 94 }
92 return $this->success(['id'=>$id]); 95 return $this->success(['id'=>$id]);
93 } 96 }
@@ -399,7 +402,6 @@ class CustomTemplateLogic extends BaseLogic @@ -399,7 +402,6 @@ class CustomTemplateLogic extends BaseLogic
399 }else{ 402 }else{
400 $this->model->edit(['html'=>$logInfo['text']],['id'=>$logInfo['source_id']]); 403 $this->model->edit(['html'=>$logInfo['text']],['id'=>$logInfo['source_id']]);
401 } 404 }
402 -  
403 return $this->success(); 405 return $this->success();
404 } 406 }
405 } 407 }
@@ -8,6 +8,7 @@ use App\Models\Blog\Blog; @@ -8,6 +8,7 @@ use App\Models\Blog\Blog;
8 use App\Models\Blog\Blog as BlogModel; 8 use App\Models\Blog\Blog as BlogModel;
9 use App\Models\Blog\BlogCategory; 9 use App\Models\Blog\BlogCategory;
10 use App\Models\Blog\BlogCategory as BlogCategoryModel; 10 use App\Models\Blog\BlogCategory as BlogCategoryModel;
  11 +use App\Models\Com\NoticeLog;
11 use App\Models\News\NewsCategory as NewsCategoryModel; 12 use App\Models\News\NewsCategory as NewsCategoryModel;
12 use App\Models\RouteMap\RouteMap; 13 use App\Models\RouteMap\RouteMap;
13 use App\Models\Template\BTemplate; 14 use App\Models\Template\BTemplate;
@@ -94,15 +95,18 @@ class BlogCategoryLogic extends BaseLogic @@ -94,15 +95,18 @@ class BlogCategoryLogic extends BaseLogic
94 * @method 95 * @method
95 */ 96 */
96 public function delBlogCategory(){ 97 public function delBlogCategory(){
97 - foreach ($this->param['id'] as $id){ 98 + $ids = $this->param['id'];
  99 + foreach ($ids as $id){
  100 + $str = [];
  101 + $this->getAllSub($id,$str);
  102 + $str[] = $id;
  103 + foreach ($str as $value){
98 //删除路由 104 //删除路由
99 - $this->delRoute($id);  
100 - $this->model->del(['id'=>$id]);  
101 - //同步删除产品字段category_id  
102 - $blogModel = new Blog();  
103 - $blogModel->edit(['category_id'=>DB::raw("REPLACE(category_id, ',$id,' , ',')")],['category_id'=>['like','%,'.$id.',%']]);  
104 - $blogModel->edit(['category_id'=>null],['category_id'=>',']); 105 + $this->delRoute($value);
  106 + $this->model->del(['id'=>$value]);
  107 + }
105 } 108 }
  109 + NoticeLog::createLog(NoticeLog::DELETE_BLOG_CATEGORY, ['project_id' => $this->user['project_id']]);
106 return $this->success(); 110 return $this->success();
107 } 111 }
108 112
@@ -149,7 +149,7 @@ class CustomModuleContentLogic extends BaseLogic @@ -149,7 +149,7 @@ class CustomModuleContentLogic extends BaseLogic
149 * @time :2023/12/7 15:04 149 * @time :2023/12/7 15:04
150 */ 150 */
151 public function contentAdd(){ 151 public function contentAdd(){
152 -// try { 152 + try {
153 $this->param['sort'] = $this->setNewsSort(); 153 $this->param['sort'] = $this->setNewsSort();
154 $id = $this->model->addReturnId($this->param); 154 $id = $this->model->addReturnId($this->param);
155 $route = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_MODULE, 155 $route = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_MODULE,
@@ -157,9 +157,9 @@ class CustomModuleContentLogic extends BaseLogic @@ -157,9 +157,9 @@ class CustomModuleContentLogic extends BaseLogic
157 $this->addUpdateNotify(RouteMap::SOURCE_MODULE,$route); 157 $this->addUpdateNotify(RouteMap::SOURCE_MODULE,$route);
158 $this->curlDelRoute(['new_route'=>$route]); 158 $this->curlDelRoute(['new_route'=>$route]);
159 $this->edit(['route' => $route], ['id' => $id]); 159 $this->edit(['route' => $route], ['id' => $id]);
160 -// }catch (\Exception $e){  
161 -// $this->fail('系统错误,请联系管理员');  
162 -// } 160 + }catch (\Exception $e){
  161 + $this->fail('系统错误,请联系管理员');
  162 + }
163 return $id; 163 return $id;
164 } 164 }
165 165
@@ -4,6 +4,7 @@ namespace App\Http\Logic\Bside\News; @@ -4,6 +4,7 @@ namespace App\Http\Logic\Bside\News;
4 4
5 use App\Helper\Translate; 5 use App\Helper\Translate;
6 use App\Http\Logic\Bside\BaseLogic; 6 use App\Http\Logic\Bside\BaseLogic;
  7 +use App\Models\Com\NoticeLog;
7 use App\Models\News\News; 8 use App\Models\News\News;
8 use App\Models\News\News as NewsModel; 9 use App\Models\News\News as NewsModel;
9 use App\Models\News\NewsCategory as NewsCategoryModel; 10 use App\Models\News\NewsCategory as NewsCategoryModel;
@@ -83,22 +84,27 @@ class NewsCategoryLogic extends BaseLogic @@ -83,22 +84,27 @@ class NewsCategoryLogic extends BaseLogic
83 $this->edit($this->param,['id'=>$this->param['id']]); 84 $this->edit($this->param,['id'=>$this->param['id']]);
84 return $this->success(); 85 return $this->success();
85 } 86 }
  87 +
86 /** 88 /**
87 - * @name :删除新闻分类  
88 - * @return array  
89 - * @throws \App\Exceptions\BsideGlobalException  
90 - * @author :liyuhang  
91 - * @method 89 + * @remark :删除分类
  90 + * @name :del_news_category
  91 + * @author :lyh
  92 + * @method :post
  93 + * @time :2024/5/16 14:58
92 */ 94 */
93 public function del_news_category(){ 95 public function del_news_category(){
94 - foreach ($this->param['id'] as $id){  
95 - $this->delRoute($id);  
96 - $this->model->del(['id'=>$id]);  
97 - //同步删除产品字段category_id  
98 - $newsModel = new NewsModel();  
99 - $newsModel->edit(['category_id'=>DB::raw("REPLACE(category_id, ',$id,' , ',')")],['category_id'=>['like','%,'.$id.',%']]);  
100 - $newsModel->edit(['category_id'=>null],['category_id'=>',']); 96 + $ids = $this->param['id'];
  97 + foreach ($ids as $id){
  98 + $str = [];
  99 + $this->getAllSub($id,$str);
  100 + $str[] = $id;
  101 + foreach ($str as $value){
  102 + //删除路由
  103 + $this->delRoute($value);
  104 + $this->model->del(['id'=>$value]);
  105 + }
101 } 106 }
  107 + NoticeLog::createLog(NoticeLog::DELETE_NEWS_CATEGORY, ['project_id' => $this->user['project_id']]);
102 return $this->success(); 108 return $this->success();
103 } 109 }
104 110
@@ -5,6 +5,7 @@ namespace App\Http\Logic\Bside\Product; @@ -5,6 +5,7 @@ namespace App\Http\Logic\Bside\Product;
5 use App\Helper\Arr; 5 use App\Helper\Arr;
6 use App\Helper\Common; 6 use App\Helper\Common;
7 use App\Http\Logic\Bside\BaseLogic; 7 use App\Http\Logic\Bside\BaseLogic;
  8 +use App\Models\Com\NoticeLog;
8 use App\Models\Product\Category; 9 use App\Models\Product\Category;
9 use App\Models\Product\CategoryRelated; 10 use App\Models\Product\CategoryRelated;
10 use App\Models\Product\Product; 11 use App\Models\Product\Product;
@@ -163,17 +164,16 @@ class CategoryLogic extends BaseLogic @@ -163,17 +164,16 @@ class CategoryLogic extends BaseLogic
163 public function categoryDelete(){ 164 public function categoryDelete(){
164 $ids = $this->param['ids']; 165 $ids = $this->param['ids'];
165 foreach ($ids as $id){ 166 foreach ($ids as $id){
  167 + $str = [];
  168 + $this->getAllSub($id,$str);
  169 + $str[] = $id;
  170 + foreach ($str as $value){
166 //删除路由 171 //删除路由
167 - $this->delRoute($id);  
168 - $this->model->del(['id'=>$id]);  
169 - //同步删除关联表  
170 - $categoryRelatedModel = new CategoryRelated();  
171 - $categoryRelatedModel->del(['cate_id'=>$id]);  
172 - //同步删除产品字段category_id  
173 - $productModel = new Product();  
174 - $productModel->edit(['category_id'=>DB::raw("REPLACE(category_id, ',$id,' , ',')")],['category_id'=>['like','%,'.$id.',%']]);  
175 - $productModel->edit(['category_id'=>null],['category_id'=>',']); 172 + $this->delRoute($value);
  173 + $this->model->del(['id'=>$value]);
  174 + }
176 } 175 }
  176 + NoticeLog::createLog(NoticeLog::DELETE_PRODUCT_CATEGORY, ['project_id' => $this->user['project_id']]);
177 //清除缓存 177 //清除缓存
178 Common::del_user_cache('product_category',$this->user['project_id']); 178 Common::del_user_cache('product_category',$this->user['project_id']);
179 return $this->success(); 179 return $this->success();
@@ -66,7 +66,14 @@ class RankDataLogic extends BaseLogic @@ -66,7 +66,14 @@ class RankDataLogic extends BaseLogic
66 'indexed_pages_num' => $rank['indexed_pages_num'] ?? 0, 66 'indexed_pages_num' => $rank['indexed_pages_num'] ?? 0,
67 'external_links_num' => $external_links['total'] ?? 0, 67 'external_links_num' => $external_links['total'] ?? 0,
68 ]; 68 ];
69 - 69 + $g_top_plan = $project['deploy_optimize']['g_top_plan'];
  70 + if(!empty($g_top_plan)){
  71 + $g_top_plan['is_compliance'] = $g_top_plan['is_compliance'] ?? 0;
  72 + if(!isset($g_top_plan['service_day']) || empty($g_top_plan['service_day'])){
  73 + $g_top_plan['service_day'] = 0;
  74 + }
  75 + $g_top_plan['day'] = $g_top_plan['service_day'] - $g_top_plan['is_compliance'];
  76 + }
70 //项目信息 77 //项目信息
71 $data['project'] = [ 78 $data['project'] = [
72 'company' => $project['company'], 79 'company' => $project['company'],
@@ -77,7 +84,7 @@ class RankDataLogic extends BaseLogic @@ -77,7 +84,7 @@ class RankDataLogic extends BaseLogic
77 'keyword_num' => $project['deploy_build']['keyword_num'], 84 'keyword_num' => $project['deploy_build']['keyword_num'],
78 'compliance_day' => $project['finish_remain_day'] ?? 0, 85 'compliance_day' => $project['finish_remain_day'] ?? 0,
79 'remain_day' => $project['remain_day'], 86 'remain_day' => $project['remain_day'],
80 - 'g_top_plan' => $project['deploy_optimize']['g_top_plan'] ?? [], 87 + 'g_top_plan' => $g_top_plan ?? [],
81 ]; 88 ];
82 //小语种列表 89 //小语种列表
83 $quanqiusou_api = new QuanqiusouApi(); 90 $quanqiusou_api = new QuanqiusouApi();
@@ -96,6 +103,7 @@ class RankDataLogic extends BaseLogic @@ -96,6 +103,7 @@ class RankDataLogic extends BaseLogic
96 'home_cnt' => $lang_data[$lang['lang']]['home_cnt'] ?? 0, 103 'home_cnt' => $lang_data[$lang['lang']]['home_cnt'] ?? 0,
97 'remain_day' => ($lang['type']??0) == 1 ? $data['project']['remain_day'] : $lang['service_day'] - $remain_day, 104 'remain_day' => ($lang['type']??0) == 1 ? $data['project']['remain_day'] : $lang['service_day'] - $remain_day,
98 'type' => $lang['type'] ?? 0, //1 项目关键词 项目天数 2 保证首页关键词 项目达标天数 105 'type' => $lang['type'] ?? 0, //1 项目关键词 项目天数 2 保证首页关键词 项目达标天数
  106 + 'dabiao_day'=>$remain_day,
99 'service_day' => $lang['service_day'] ?? 0, //1 项目关键词 项目天数 2 保证首页关键词 项目达标天数 107 'service_day' => $lang['service_day'] ?? 0, //1 项目关键词 项目天数 2 保证首页关键词 项目达标天数
100 ]; 108 ];
101 } 109 }
@@ -472,7 +480,8 @@ class RankDataLogic extends BaseLogic @@ -472,7 +480,8 @@ class RankDataLogic extends BaseLogic
472 if(!$model){ 480 if(!$model){
473 $model = new RankData(); 481 $model = new RankData();
474 } 482 }
475 - //关键词达标天数 483 + //g-top方案达标天数
  484 + $this->g_top_plan($project_id,$first_page_num);
476 //保证关键词数 485 //保证关键词数
477 $keyword_num = DeployBuild::where('project_id', $project_id)->value('keyword_num'); 486 $keyword_num = DeployBuild::where('project_id', $project_id)->value('keyword_num');
478 $type = Project::where('id', $project_id)->value('type'); 487 $type = Project::where('id', $project_id)->value('type');
@@ -508,6 +517,30 @@ class RankDataLogic extends BaseLogic @@ -508,6 +517,30 @@ class RankDataLogic extends BaseLogic
508 $model->save(); 517 $model->save();
509 } 518 }
510 519
  520 + /**
  521 + * @remark :g_top
  522 + * @name :g_top_plan
  523 + * @author :lyh
  524 + * @method :post
  525 + * @time :2024/5/15 14:25
  526 + */
  527 + public function g_top_plan($project_id,$first_page_num){
  528 + $optimizeModel = new DeployOptimize();
  529 + $info = $optimizeModel->read(['project_id'=>$project_id]);
  530 + if(!empty($info) && !empty($info['g_top_plan'])){
  531 + $gTopData = $info['g_top_plan'];
  532 + $keyword_num = $gTopData['keyword_num'] ?? 0;
  533 + $is_compliance = $first_page_num >= $keyword_num;
  534 + if($is_compliance && $keyword_num){
  535 + if(!isset($gTopData['is_compliance'])){
  536 + $gTopData['is_compliance'] = 0;
  537 + }
  538 + $gTopData['is_compliance'] = (int)$gTopData['is_compliance'] + 1;
  539 + }
  540 + $optimizeModel->edit(['g_top_plan'=>json_encode($gTopData)],['id'=>$info['id']]);
  541 + }
  542 + }
  543 +
511 544
512 /** 545 /**
513 * 同步外链 546 * 同步外链
@@ -2,9 +2,10 @@ @@ -2,9 +2,10 @@
2 namespace App\Models\Com; 2 namespace App\Models\Com;
3 3
4 use App\Helper\Arr; 4 use App\Helper\Arr;
  5 +use App\Models\Base;
5 use Illuminate\Database\Eloquent\Model; 6 use Illuminate\Database\Eloquent\Model;
6 7
7 -class NoticeLog extends Model 8 +class NoticeLog extends Base
8 { 9 {
9 //设置关联表名 10 //设置关联表名
10 protected $table = 'gl_notice_log'; 11 protected $table = 'gl_notice_log';
@@ -13,6 +14,9 @@ class NoticeLog extends Model @@ -13,6 +14,9 @@ class NoticeLog extends Model
13 const TYPE_RANK_DATA = 'rank_data'; 14 const TYPE_RANK_DATA = 'rank_data';
14 const TYPE_INIT_PROJECT = 'init_project'; 15 const TYPE_INIT_PROJECT = 'init_project';
15 const TYPE_INIT_KEYWORD = 'init_keyword'; 16 const TYPE_INIT_KEYWORD = 'init_keyword';
  17 + const DELETE_PRODUCT_CATEGORY = 'delete_product_category';
  18 + const DELETE_BLOG_CATEGORY = 'delete_blog_category';
  19 + const DELETE_NEWS_CATEGORY = 'delete_news_category';
16 const STATUS_PENDING = 0; 20 const STATUS_PENDING = 0;
17 const STATUS_SUCCESS = 1; 21 const STATUS_SUCCESS = 1;
18 const STATUS_FAIL = 2; 22 const STATUS_FAIL = 2;
@@ -86,7 +86,7 @@ class RouteMap extends Base @@ -86,7 +86,7 @@ class RouteMap extends Base
86 * @date 2023/4/17 86 * @date 2023/4/17
87 */ 87 */
88 protected static function isExist($route, $source_id, $project_id){ 88 protected static function isExist($route, $source_id, $project_id){
89 - $fixed = ['search','api']; //固定的路由 89 + $fixed = ['api']; //固定的路由
90 if(in_array($route, $fixed)){ 90 if(in_array($route, $fixed)){
91 return true; 91 return true;
92 } 92 }
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :TemplateLabel.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/5/16 9:49
  8 + */
  9 +
  10 +namespace App\Models\Template;
  11 +
  12 +use App\Models\Base;
  13 +
  14 +/**
  15 + * @remark :模版标签
  16 + * @name :TemplateLabel
  17 + * @author :lyh
  18 + * @method :post
  19 + * @time :2024/5/16 9:49
  20 + */
  21 +class TemplateLabel extends Base
  22 +{
  23 + protected $table = 'gl_public_template_label';
  24 +}
@@ -32,15 +32,12 @@ class SyncService @@ -32,15 +32,12 @@ class SyncService
32 $url = 'https://form.globalso.com/api/globalsov6'; 32 $url = 'https://form.globalso.com/api/globalsov6';
33 // 项目信息 33 // 项目信息
34 $project = Project::with('deploy_build')->with('deploy_optimize')->where(['id'=>$project_id])->first(); 34 $project = Project::with('deploy_build')->with('deploy_optimize')->where(['id'=>$project_id])->first();
35 -  
36 // 不满足条件 不同步到表单系统 35 // 不满足条件 不同步到表单系统
37 if (empty($project->deploy_optimize->domain)) { 36 if (empty($project->deploy_optimize->domain)) {
38 return false; 37 return false;
39 } 38 }
40 -  
41 // 生产域名 39 // 生产域名
42 $domain = (new DomainInfo())->getDomain($project->deploy_optimize->domain); 40 $domain = (new DomainInfo())->getDomain($project->deploy_optimize->domain);
43 -  
44 // 收件设置信息 41 // 收件设置信息
45 ProjectServer::useProject($project_id); 42 ProjectServer::useProject($project_id);
46 $receive = WebSettingReceiving::where(['project_id' => $project_id])->get(); 43 $receive = WebSettingReceiving::where(['project_id' => $project_id])->get();
@@ -375,6 +375,12 @@ Route::middleware(['aloginauth'])->group(function () { @@ -375,6 +375,12 @@ Route::middleware(['aloginauth'])->group(function () {
375 Route::any('/sort', [Aside\Template\ATemplateTypeController::class, 'sort'])->name('admin.ATemplateType_sort'); 375 Route::any('/sort', [Aside\Template\ATemplateTypeController::class, 'sort'])->name('admin.ATemplateType_sort');
376 Route::any('/del', [Aside\Template\ATemplateTypeController::class, 'del'])->name('admin.ATemplateType_del'); 376 Route::any('/del', [Aside\Template\ATemplateTypeController::class, 'del'])->name('admin.ATemplateType_del');
377 }); 377 });
  378 + //设置标签
  379 + Route::prefix('label')->group(function () {
  380 + Route::any('/getUserLists', [Aside\Template\TemplateLabelController::class, 'getUserLists'])->name('admin.ATemplateType_label_getUserLists');
  381 + Route::any('/save', [Aside\Template\TemplateLabelController::class, 'save'])->name('admin.ATemplateType_label_save');
  382 + Route::any('/del', [Aside\Template\TemplateLabelController::class, 'del'])->name('admin.ATemplateType_label_del');
  383 + });
378 }); 384 });
379 //可视化数据替换 385 //可视化数据替换
380 Route::prefix('replace')->group(function () { 386 Route::prefix('replace')->group(function () {