作者 刘锟

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

  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :SyncMobile.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2023/12/25 15:00
  8 + */
  9 +
  10 +namespace App\Console\Commands;
  11 +
  12 +use App\Models\User\User;
  13 +use Illuminate\Console\Command;
  14 +use Illuminate\Support\Facades\DB;
  15 +
  16 +class SyncMobile extends Command
  17 +{
  18 + /**
  19 + * The name and signature of the console command.
  20 + *
  21 + * @var string
  22 + */
  23 + protected $signature = 'sync_manager';
  24 +
  25 + /**
  26 + * The console command description.
  27 + *
  28 + * @var string
  29 + */
  30 + protected $description = '同步手机号码库';
  31 +
  32 + /**
  33 + * @remark :统一更新路由
  34 + * @name :handle
  35 + * @author :lyh
  36 + * @method :post
  37 + * @time :2023/11/20 15:13
  38 + */
  39 + public function handle(){
  40 + $url = 'https://www.quanqiusou.cn/extend_api/saas/get_phone.php';
  41 + $data = curlGet($url);//TODO::获取号码库
  42 + DB::table('gl_mobile')->delete();
  43 + $create_time = date('Y-m-d H:i:s');
  44 + foreach ($data as $v){
  45 + $param = [
  46 + 'mobile'=>$v,
  47 + 'created_at'=>$create_time
  48 + ];
  49 + DB::table('gl_mobile')->insert($param);
  50 + }
  51 + if(!empty($data)){
  52 + $userModel = new User();
  53 + try {
  54 + $userModel->edit(['status'=>1],['project_id'=>1,'mobile'=>['not in',$data]]);
  55 + $userModel->edit(['status'=>0],['project_id'=>1,'mobile'=>['in',$data]]);
  56 + }catch (\Exception $e){
  57 + echo date('Y-m-d H:i:s') . 'error' . PHP_EOL;
  58 + }
  59 + }
  60 + }
  61 +
  62 +}
@@ -9,6 +9,7 @@ use App\Models\Channel\Channel; @@ -9,6 +9,7 @@ use App\Models\Channel\Channel;
9 use App\Models\Com\NoticeLog; 9 use App\Models\Com\NoticeLog;
10 use App\Models\Com\UpdateLog; 10 use App\Models\Com\UpdateLog;
11 use App\Models\Com\UpdateVisit; 11 use App\Models\Com\UpdateVisit;
  12 +use App\Models\Manage\Mobile;
12 use App\Models\Project\After; 13 use App\Models\Project\After;
13 use App\Models\Project\DeployBuild; 14 use App\Models\Project\DeployBuild;
14 use App\Models\Project\DeployOptimize; 15 use App\Models\Project\DeployOptimize;
@@ -201,7 +202,7 @@ class SyncProject extends Command @@ -201,7 +202,7 @@ class SyncProject extends Command
201 'is_upgrade'=>$is_update, 202 'is_upgrade'=>$is_update,
202 ], 203 ],
203 'deploy_build' => [ 204 'deploy_build' => [
204 - 'service_duration' => $param['years'], 205 + 'service_duration' => $param['years'] ?? 0,
205 'plan' => $this->versionData($param['plan_marketing']), 206 'plan' => $this->versionData($param['plan_marketing']),
206 'login_mobile'=>$param['principal_mobile'] 207 'login_mobile'=>$param['principal_mobile']
207 ], 208 ],
@@ -456,17 +457,23 @@ class SyncProject extends Command @@ -456,17 +457,23 @@ class SyncProject extends Command
456 */ 457 */
457 public function createUser($mobile,$project_id,$lead_name){ 458 public function createUser($mobile,$project_id,$lead_name){
458 $userModel = new UserModel(); 459 $userModel = new UserModel();
459 - //查看当前用户是否存在  
460 - $info = $userModel->read(['mobile'=>$mobile,'project_id'=>$project_id]);  
461 - if($info === false){  
462 - $data = [  
463 - 'mobile'=>$mobile,  
464 - 'password'=>base64_encode(md5('123456')),  
465 - 'project_id'=>$project_id,  
466 - 'name'=>$lead_name,  
467 - 'type'=>UserModel::TYPE_ONE  
468 - ];  
469 - $userModel->add($data); 460 + //查看当前项目是否存在号码库中
  461 + $mobileModel = new Mobile();
  462 + $mobileInfo = $mobileModel->read(['mobile'=>$mobile]);
  463 + if($mobileInfo === false){
  464 + //查看当前用户是否存在
  465 + $info = $userModel->read(['mobile'=>$mobile,'project_id'=>$project_id]);
  466 + if($info === false){
  467 + $data = [
  468 + 'mobile'=>$mobile,
  469 + 'password'=>base64_encode(md5('123456')),
  470 + 'project_id'=>$project_id,
  471 + 'name'=>$lead_name,
  472 + 'type'=>UserModel::TYPE_ONE
  473 + ];
  474 + $userModel->add($data);
  475 + }
470 } 476 }
  477 + return true;
471 } 478 }
472 } 479 }
@@ -40,6 +40,7 @@ class Kernel extends ConsoleKernel @@ -40,6 +40,7 @@ class Kernel extends ConsoleKernel
40 $schedule->command('update_seo_tdk_crontab')->dailyAt('00:00')->withoutOverlapping(1); //更新上线项目TDK 40 $schedule->command('update_seo_tdk_crontab')->dailyAt('00:00')->withoutOverlapping(1); //更新上线项目TDK
41 $schedule->command('website_data')->dailyAt('01:00')->withoutOverlapping(1); // 向AICC推送数据 41 $schedule->command('website_data')->dailyAt('01:00')->withoutOverlapping(1); // 向AICC推送数据
42 $schedule->command('project_file_pdf')->dailyAt('00:00')->withoutOverlapping(1); // 网站项目数据,生成PDF文件 42 $schedule->command('project_file_pdf')->dailyAt('00:00')->withoutOverlapping(1); // 网站项目数据,生成PDF文件
  43 + $schedule->command('sync_manager')->dailyAt('01:00')->withoutOverlapping(1); //TODO::手机号码同步 每天执行一次
43 } 44 }
44 45
45 /** 46 /**
@@ -8,9 +8,8 @@ use App\Utils\LogUtils; @@ -8,9 +8,8 @@ use App\Utils\LogUtils;
8 use GuzzleHttp\Client; 8 use GuzzleHttp\Client;
9 use GuzzleHttp\Exception\GuzzleException; 9 use GuzzleHttp\Exception\GuzzleException;
10 use Illuminate\Support\Carbon; 10 use Illuminate\Support\Carbon;
11 -use App\Models\File\File;  
12 -use Illuminate\Support\Facades\Cache;  
13 use Illuminate\Support\Facades\Redis; 11 use Illuminate\Support\Facades\Redis;
  12 +use App\Models\User\User;
14 13
15 define('HTTP_OPENAI_URL', 'http://openai.waimaoq.com/'); 14 define('HTTP_OPENAI_URL', 'http://openai.waimaoq.com/');
16 /** 15 /**
@@ -24,7 +23,8 @@ define('HTTP_OPENAI_URL', 'http://openai.waimaoq.com/'); @@ -24,7 +23,8 @@ define('HTTP_OPENAI_URL', 'http://openai.waimaoq.com/');
24 if (!function_exists('generateRoute')) { 23 if (!function_exists('generateRoute')) {
25 function generateRoute($string) 24 function generateRoute($string)
26 { 25 {
27 - return trim(strtolower(preg_replace('/[\W]+/', '-', trim($string))), '-'); 26 + //TODO::html结尾,htm结尾,只处理.htm前面的内容
  27 + return trim(strtolower(preg_replace('/[^\w.]+/', '-', trim($string))), '-');
28 } 28 }
29 } 29 }
30 30
@@ -31,7 +31,7 @@ class CreateKeywordController extends BaseController @@ -31,7 +31,7 @@ class CreateKeywordController extends BaseController
31 * @time :2023/12/19 9:31 31 * @time :2023/12/19 9:31
32 */ 32 */
33 public function lists(CreateKeyword $createKeyword){ 33 public function lists(CreateKeyword $createKeyword){
34 - $list = $createKeyword->list($this->map); 34 + $list = $createKeyword->list($this->map,'id',['*'],'asc');
35 $this->response('success',Code::SUCCESS,$list); 35 $this->response('success',Code::SUCCESS,$list);
36 } 36 }
37 37
@@ -37,7 +37,8 @@ class OptimizeController extends BaseController @@ -37,7 +37,8 @@ class OptimizeController extends BaseController
37 ->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id') 37 ->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id')
38 ->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id') 38 ->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
39 ->leftJoin('gl_project_online_check', 'gl_project.id', '=', 'gl_project_online_check.project_id'); 39 ->leftJoin('gl_project_online_check', 'gl_project.id', '=', 'gl_project_online_check.project_id');
40 - $query = $this->searchParam($query)->orderByRaw('CASE WHEN gl_project_deploy_optimize.start_date IS NULL THEN 0 ELSE 1 END') 40 + $query = $this->searchParam($query)->orderByRaw("FIELD(gl_project.level, '2') DESC")
  41 + ->orderByRaw('CASE WHEN gl_project_deploy_optimize.start_date IS NULL THEN 0 ELSE 1 END')
41 ->orderBy('gl_project_deploy_optimize.start_date','desc'); 42 ->orderBy('gl_project_deploy_optimize.start_date','desc');
42 $lists = $query->paginate($this->row, $this->selectParam(), 'page', $this->page)->toArray(); 43 $lists = $query->paginate($this->row, $this->selectParam(), 'page', $this->page)->toArray();
43 if(!empty($lists) && !empty($lists['list'])){ 44 if(!empty($lists) && !empty($lists['list'])){
@@ -187,6 +188,7 @@ class OptimizeController extends BaseController @@ -187,6 +188,7 @@ class OptimizeController extends BaseController
187 $query = $query->where('gl_project_deploy_build.test_domain','like','%'.$this->map['test_domain'].'%'); 188 $query = $query->where('gl_project_deploy_build.test_domain','like','%'.$this->map['test_domain'].'%');
188 } 189 }
189 $query = $query->whereIn('gl_project.type',[2,4]);//TODO::2,4代表优化项目 190 $query = $query->whereIn('gl_project.type',[2,4]);//TODO::2,4代表优化项目
  191 + $query = $query->where('gl_project_online_check.qa_status',1);
190 return $query; 192 return $query;
191 } 193 }
192 194
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :ProjectKeywordController.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2023/12/26 9:22
  8 + */
  9 +
  10 +namespace App\Http\Controllers\Bside\Keyword;
  11 +
  12 +use App\Enums\Common\Code;
  13 +use App\Http\Controllers\Bside\BaseController;
  14 +use App\Models\Project\DeployOptimize;
  15 +
  16 +class ProjectKeywordController extends BaseController
  17 +{
  18 + /**
  19 + * @remark :获取搜索关键词
  20 + * @name :searchKeywords
  21 + * @author :lyh
  22 + * @method :post
  23 + * @time :2023/12/26 10:07
  24 + */
  25 + public function searchKeywords(DeployOptimize $deployOptimize){
  26 + $data = [];
  27 + $info = $deployOptimize->read(['project_id'=>$this->user['project_id']]);
  28 + if($info === false){
  29 + $this->response('success');
  30 + }
  31 + $data['search_keywords'] = $info['search_keywords'];
  32 + $data['main_keywords'] = $info['main_keywords'];
  33 + $this->response('success',Code::SUCCESS,$data);
  34 + }
  35 +
  36 +}
@@ -134,6 +134,12 @@ class LoginLogic extends BaseLogic @@ -134,6 +134,12 @@ class LoginLogic extends BaseLogic
134 } 134 }
135 //获取超级管理员登录 135 //获取超级管理员登录
136 if(isset($this->param['project_id']) && !empty($this->param['project_id'])){ 136 if(isset($this->param['project_id']) && !empty($this->param['project_id'])){
  137 + //查看当前项目是否有超级管理员
  138 + $userModel = new User();
  139 + $userinfo = $userModel->read(['project_id'=>$this->param['project_id'],'role_id'=>0]);
  140 + if($userinfo === false){
  141 + $this->fail('未添加超级管理员账号,请添加后在进入账号.');
  142 + }
137 $data['autologin_code'] = $encrypt->lock_url(json_encode(['project_id'=>$this->param['project_id'],'manager_id'=>$this->manager['id']]),$info['values']); 143 $data['autologin_code'] = $encrypt->lock_url(json_encode(['project_id'=>$this->param['project_id'],'manager_id'=>$this->manager['id']]),$info['values']);
138 } 144 }
139 //使用用户登录 145 //使用用户登录
@@ -73,6 +73,7 @@ class ProjectLogic extends BaseLogic @@ -73,6 +73,7 @@ class ProjectLogic extends BaseLogic
73 if($info['extend_type'] != 0){ 73 if($info['extend_type'] != 0){
74 $info['type'] = $info['extend_type']; 74 $info['type'] = $info['extend_type'];
75 } 75 }
  76 + $info['domain_url'] = (new DomainInfo())->getDomain($info['deploy_optimize']['domain'] ?? 0);
76 //升级项目初始上传配置 77 //升级项目初始上传配置
77 if(empty($info['upload_config'])){ 78 if(empty($info['upload_config'])){
78 $info['upload_config'] =["upload_max_num"=>100, "allow_file_type"=>"doc,docx,xls,xlsx,pdf,txt,csv,png,jpg,jpeg", "upload_max_size"=>5]; 79 $info['upload_config'] =["upload_max_num"=>100, "allow_file_type"=>"doc,docx,xls,xlsx,pdf,txt,csv,png,jpg,jpeg", "upload_max_size"=>5];
@@ -143,7 +144,7 @@ class ProjectLogic extends BaseLogic @@ -143,7 +144,7 @@ class ProjectLogic extends BaseLogic
143 DB::commit(); 144 DB::commit();
144 }catch (\Exception $e){ 145 }catch (\Exception $e){
145 DB::rollBack(); 146 DB::rollBack();
146 - $this->fail('请填写完整后再提交'); 147 + $this->fail('保存失败,请联系管理员');
147 } 148 }
148 (new SyncService())->projectAcceptAddress($this->param['id']); 149 (new SyncService())->projectAcceptAddress($this->param['id']);
149 return $this->success(); 150 return $this->success();
@@ -6,6 +6,7 @@ use App\Helper\Common; @@ -6,6 +6,7 @@ use App\Helper\Common;
6 use App\Http\Logic\Aside\BaseLogic; 6 use App\Http\Logic\Aside\BaseLogic;
7 use App\Models\Manage\Manage; 7 use App\Models\Manage\Manage;
8 use App\Models\Manage\MenuSpecial; 8 use App\Models\Manage\MenuSpecial;
  9 +use App\Models\Manage\Mobile;
9 use App\Models\Project\Project; 10 use App\Models\Project\Project;
10 use App\Models\User\ProjectRole; 11 use App\Models\User\ProjectRole;
11 use App\Models\User\User; 12 use App\Models\User\User;
@@ -54,6 +55,9 @@ class UserLogic extends BaseLogic @@ -54,6 +55,9 @@ class UserLogic extends BaseLogic
54 $this->param = $this->editPassword($this->param); 55 $this->param = $this->editPassword($this->param);
55 $rs = $this->model->edit($this->param, ['id' => $this->param['id']]); 56 $rs = $this->model->edit($this->param, ['id' => $this->param['id']]);
56 } else { 57 } else {
  58 + $mobileModel = new Mobile();
  59 + //查看当前手机号码是否存在于手机号码库
  60 + $mobileInfo = $mobileModel->read(['mobile'=>$this->param['mobile']]);
57 $this->param['password'] = base64_encode(md5($this->param['password'])); 61 $this->param['password'] = base64_encode(md5($this->param['password']));
58 $rs = $this->model->add($this->param); 62 $rs = $this->model->add($this->param);
59 } 63 }
@@ -148,20 +152,19 @@ class UserLogic extends BaseLogic @@ -148,20 +152,19 @@ class UserLogic extends BaseLogic
148 public function user_del() 152 public function user_del()
149 { 153 {
150 foreach ($this->param['id'] as $id){ 154 foreach ($this->param['id'] as $id){
151 - $info = $this->model->read(['id'=>$id],['id','role_id']);  
152 - if($info['role_id'] != 0){  
153 - $rs = $this->model->del(['id'=>$id]);  
154 - if($rs === false){  
155 - $this->fail('系统错误,请联系管理员');  
156 - }  
157 - Common::del_user_cache($this->model, $id, 'A');  
158 - }else{ 155 + $info = $this->model->read(['id'=>$id],['id','role_id','project_id']);
  156 + if($info['role_id'] == 0) {
159 //查看当前项目是否有其他的超级管理员 157 //查看当前项目是否有其他的超级管理员
160 - $roleInfo = $this->model->read(['id'=>['!=',$info['id']],'role_id'=>0]);  
161 - if($roleInfo === false){  
162 - $this->fail('超级管理员不允许删除'); 158 + $roleInfo = $this->model->read(['id' => ['!=', $id], 'role_id' => 0,'project_id'=>$info['project_id']]);
  159 + if ($roleInfo === false) {
  160 + $this->fail('唯一超级管理员,禁止删除');
163 } 161 }
164 } 162 }
  163 + $rs = $this->model->del(['id' => $id]);
  164 + if ($rs === false) {
  165 + $this->fail('系统错误,请联系管理员');
  166 + }
  167 + Common::del_user_cache($this->model, $id, 'A');
165 } 168 }
166 return $this->success(); 169 return $this->success();
167 } 170 }
@@ -195,7 +198,7 @@ class UserLogic extends BaseLogic @@ -195,7 +198,7 @@ class UserLogic extends BaseLogic
195 $roleInfo = $roleModel->where('project_id',$this->param['project_id'])->orderBy('id','asc')->first(); 198 $roleInfo = $roleModel->where('project_id',$this->param['project_id'])->orderBy('id','asc')->first();
196 $info = $this->model->read(['role_id'=>0]); 199 $info = $this->model->read(['role_id'=>0]);
197 if(empty($info) || empty($roleInfo)){ 200 if(empty($info) || empty($roleInfo)){
198 - $this->fail('系统错误,请联系管理员'); 201 + $this->fail('请先添加角色');
199 } 202 }
200 try { 203 try {
201 $this->model->edit(['role_id'=>$roleInfo['id']],['id'=>$info['id']]); 204 $this->model->edit(['role_id'=>$roleInfo['id']],['id'=>$info['id']]);
@@ -89,7 +89,7 @@ class BTemplateLogic extends BaseLogic @@ -89,7 +89,7 @@ class BTemplateLogic extends BaseLogic
89 $type = $this->getCustomizedType($source, $source_id);//定制获取头部底部类型 89 $type = $this->getCustomizedType($source, $source_id);//定制获取头部底部类型
90 $commonInfo = $this->getCommonPage($type,$this->user['project_id'],0);//获取定制头部 90 $commonInfo = $this->getCommonPage($type,$this->user['project_id'],0);//获取定制头部
91 $html = $this->handleAllHtml($commonInfo,$templateInfo['html']); 91 $html = $this->handleAllHtml($commonInfo,$templateInfo['html']);
92 - return $this->success(['html'=>$html,'template_id'=>$template_id,'id'=>$templateInfo['id']]); 92 + return $this->success(['html'=>$html,'template_id'=>$template_id,'id'=>$templateInfo['id'],'updated_at'=>$templateInfo['updated_at']]);
93 } 93 }
94 $mainInfo = ['main_html'=>$templateInfo['main_html'], 'main_css'=>$templateInfo['main_css']]; 94 $mainInfo = ['main_html'=>$templateInfo['main_html'], 'main_css'=>$templateInfo['main_css']];
95 } 95 }
@@ -98,7 +98,10 @@ class BTemplateLogic extends BaseLogic @@ -98,7 +98,10 @@ class BTemplateLogic extends BaseLogic
98 $commonInfo['head_html'].$mainInfo['main_html'].$commonInfo['footer_html']; 98 $commonInfo['head_html'].$mainInfo['main_html'].$commonInfo['footer_html'];
99 $html = $this->getHeadFooter($html); 99 $html = $this->getHeadFooter($html);
100 $result = ['html'=>$html,'template_id'=>$template_id]; 100 $result = ['html'=>$html,'template_id'=>$template_id];
101 - if($templateInfo !== false){$result['id'] = $templateInfo['id'];} 101 + if($templateInfo !== false){
  102 + $result['id'] = $templateInfo['id'];
  103 + $result['updated_at'] = $templateInfo['updated_at'];
  104 + }
102 return $this->success($result); 105 return $this->success($result);
103 } 106 }
104 107
@@ -618,7 +621,10 @@ class BTemplateLogic extends BaseLogic @@ -618,7 +621,10 @@ class BTemplateLogic extends BaseLogic
618 * @method :post 621 * @method :post
619 * @time :2023/7/27 15:08 622 * @time :2023/7/27 15:08
620 */ 623 */
621 - public function getModule($type){ 624 + public function getModule($type,$is_custom){
  625 + if($is_custom == BTemplate::SOURCE_CUSTOM){
  626 + $type == BTemplate::TYPE_CUSTOM_DETAIL;
  627 + }
622 $mainModel = new TemplateTypeMain(); 628 $mainModel = new TemplateTypeMain();
623 $info = $mainModel->read(['type'=>$type]); 629 $info = $mainModel->read(['type'=>$type]);
624 return $info['main_html']; 630 return $info['main_html'];
@@ -709,7 +715,7 @@ class BTemplateLogic extends BaseLogic @@ -709,7 +715,7 @@ class BTemplateLogic extends BaseLogic
709 $moduleModel = new CustomModule(); 715 $moduleModel = new CustomModule();
710 $moduleList = $moduleModel->list(['status'=>0]); 716 $moduleList = $moduleModel->list(['status'=>0]);
711 foreach ($moduleList as $v){ 717 foreach ($moduleList as $v){
712 - $moduleCategory = $this->getCategoryList((new CustomModuleCategory()),0,['id','name','pid']); 718 + $moduleCategory = $this->getCategoryModuleList((new CustomModuleCategory()),$v['id'],0,['id','name','pid']);
713 $categoryList = [["id"=>"all", "name"=>"全部"], ["id"=>"new", "name"=>"最新"]]; 719 $categoryList = [["id"=>"all", "name"=>"全部"], ["id"=>"new", "name"=>"最新"]];
714 foreach ($moduleCategory as $values){ 720 foreach ($moduleCategory as $values){
715 $categoryList[] = $values; 721 $categoryList[] = $values;
@@ -782,6 +788,26 @@ class BTemplateLogic extends BaseLogic @@ -782,6 +788,26 @@ class BTemplateLogic extends BaseLogic
782 } 788 }
783 789
784 /** 790 /**
  791 + * @remark :获取1级+2级
  792 + * @name :getCategoryList
  793 + * @author :lyh
  794 + * @method :post
  795 + * @time :2023/12/20 10:26
  796 + */
  797 + public function getCategoryModuleList($categoryModel,$module_id,$status = 0,$filed = ['*']){
  798 + $data = array();
  799 + $list = $categoryModel->list(['pid'=>0, 'module_id'=>$module_id , 'status'=>$status],['sort','id'],$filed);
  800 + foreach ($list as $v){
  801 + $data[] = $v;
  802 + $son_list = $categoryModel->list(['pid'=>$v['id'],'module_id'=>$module_id,'status'=>$status],['sort','id'],$filed);
  803 + foreach ($son_list as $v1){
  804 + $data[] = $v1;
  805 + }
  806 + }
  807 + return $this->success($data);
  808 + }
  809 +
  810 + /**
785 * @remark :保存html 811 * @remark :保存html
786 * @name :savePublicTemplateHtml 812 * @name :savePublicTemplateHtml
787 * @author :lyh 813 * @author :lyh
@@ -819,9 +845,9 @@ class BTemplateLogic extends BaseLogic @@ -819,9 +845,9 @@ class BTemplateLogic extends BaseLogic
819 $commonInfo = $this->getTypeCommonHtml($bSettingInfo['template_id'],$this->param['type'],$is_custom); 845 $commonInfo = $this->getTypeCommonHtml($bSettingInfo['template_id'],$this->param['type'],$is_custom);
820 //获取设置的默认中间部分 846 //获取设置的默认中间部分
821 $bTemplateMainModel = new BTemplateMain(); 847 $bTemplateMainModel = new BTemplateMain();
822 - $mainInfo = $bTemplateMainModel->read(['project_id'=>$this->user['project_id'],'type'=>$this->param['type']]); 848 + $mainInfo = $bTemplateMainModel->read(['project_id'=>$this->user['project_id'],'type'=>$this->param['type'],'is_custom'=>$is_custom]);
823 if($mainInfo === false){ 849 if($mainInfo === false){
824 - $main_html = $this->getModule($this->param['type']); 850 + $main_html = $this->getModule($this->param['type'],$is_custom);
825 $main_style = "<style id='globalsojs-styles'></style>"; 851 $main_style = "<style id='globalsojs-styles'></style>";
826 }else{ 852 }else{
827 $main_html = $mainInfo['main_html']; 853 $main_html = $mainInfo['main_html'];
@@ -38,6 +38,7 @@ class BlogLogic extends BaseLogic @@ -38,6 +38,7 @@ class BlogLogic extends BaseLogic
38 $route = $this->param['url']; 38 $route = $this->param['url'];
39 $this->edit($this->param,['id'=>$this->param['id']]); 39 $this->edit($this->param,['id'=>$this->param['id']]);
40 }else{ 40 }else{
  41 + $this->param['sort'] = $this->setNewsSort();
41 $id = $this->model->addReturnId($this->param); 42 $id = $this->model->addReturnId($this->param);
42 $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_BLOG, $id, $this->user['project_id']); 43 $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_BLOG, $id, $this->user['project_id']);
43 $this->edit(['url'=>$route],['id'=>$id]); 44 $this->edit(['url'=>$route],['id'=>$id]);
@@ -53,6 +54,22 @@ class BlogLogic extends BaseLogic @@ -53,6 +54,22 @@ class BlogLogic extends BaseLogic
53 } 54 }
54 55
55 /** 56 /**
  57 + * @remark :设置最新产品的sort排序
  58 + * @name :setNewsSort
  59 + * @author :lyh
  60 + * @method :post
  61 + * @time :2023/12/25 9:27
  62 + */
  63 + public function setNewsSort(){
  64 + $info = $this->model->orderBy('sort','desc')->first();
  65 + if(empty($info)){
  66 + return 1;
  67 + }
  68 + $sort = $info['sort']+1;
  69 + return $sort;
  70 + }
  71 +
  72 + /**
56 * @name :编辑seo 73 * @name :编辑seo
57 * @return void 74 * @return void
58 * @author :liyuhang 75 * @author :liyuhang
@@ -149,6 +149,7 @@ class CustomModuleContentLogic extends BaseLogic @@ -149,6 +149,7 @@ class CustomModuleContentLogic extends BaseLogic
149 */ 149 */
150 public function contentAdd(){ 150 public function contentAdd(){
151 try { 151 try {
  152 + $this->param['sort'] = $this->setNewsSort();
152 $id = $this->model->addReturnId($this->param); 153 $id = $this->model->addReturnId($this->param);
153 $route = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_MODULE, 154 $route = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_MODULE,
154 $id, $this->user['project_id']); 155 $id, $this->user['project_id']);
@@ -162,6 +163,22 @@ class CustomModuleContentLogic extends BaseLogic @@ -162,6 +163,22 @@ class CustomModuleContentLogic extends BaseLogic
162 } 163 }
163 164
164 /** 165 /**
  166 + * @remark :设置最新产品的sort排序
  167 + * @name :setNewsSort
  168 + * @author :lyh
  169 + * @method :post
  170 + * @time :2023/12/25 9:27
  171 + */
  172 + public function setNewsSort(){
  173 + $info = $this->model->orderBy('sort','desc')->first();
  174 + if(empty($info)){
  175 + return 1;
  176 + }
  177 + $sort = $info['sort']+1;
  178 + return $sort;
  179 + }
  180 +
  181 + /**
165 * @remark :编辑数据 182 * @remark :编辑数据
166 * @name :contentEdit 183 * @name :contentEdit
167 * @author :lyh 184 * @author :lyh
@@ -122,6 +122,7 @@ class NavLogic extends BaseLogic @@ -122,6 +122,7 @@ class NavLogic extends BaseLogic
122 'target'=>$param['target'] ?? 1, 122 'target'=>$param['target'] ?? 1,
123 'remark'=>$param['remark'] ?? '', 123 'remark'=>$param['remark'] ?? '',
124 'group_id'=>$param['group_id'], 124 'group_id'=>$param['group_id'],
  125 + 'show'=>$param['show'],
125 ]; 126 ];
126 return $this->success($data); 127 return $this->success($data);
127 } 128 }
@@ -68,6 +68,7 @@ class NewsLogic extends BaseLogic @@ -68,6 +68,7 @@ class NewsLogic extends BaseLogic
68 $route = $this->param['url']; 68 $route = $this->param['url'];
69 $this->edit($this->param, ['id' => $this->param['id']]); 69 $this->edit($this->param, ['id' => $this->param['id']]);
70 } else { 70 } else {
  71 + $this->param['sort'] = $this->setNewsSort();
71 $id = $this->model->addReturnId($this->param); 72 $id = $this->model->addReturnId($this->param);
72 $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $id, $this->user['project_id']); 73 $route = RouteMap::setRoute($this->param['url'], RouteMap::SOURCE_NEWS, $id, $this->user['project_id']);
73 $this->edit(['url' => $route], ['id' => $id]); 74 $this->edit(['url' => $route], ['id' => $id]);
@@ -84,6 +85,22 @@ class NewsLogic extends BaseLogic @@ -84,6 +85,22 @@ class NewsLogic extends BaseLogic
84 } 85 }
85 86
86 /** 87 /**
  88 + * @remark :设置最新产品的sort排序
  89 + * @name :setNewsSort
  90 + * @author :lyh
  91 + * @method :post
  92 + * @time :2023/12/25 9:27
  93 + */
  94 + public function setNewsSort(){
  95 + $info = $this->model->orderBy('sort','desc')->first();
  96 + if(empty($info)){
  97 + return 1;
  98 + }
  99 + $sort = $info['sort']+1;
  100 + return $sort;
  101 + }
  102 +
  103 + /**
87 * @name :编辑seo 104 * @name :编辑seo
88 * @return void 105 * @return void
89 * @author :liyuhang 106 * @author :liyuhang
@@ -41,7 +41,6 @@ class KeywordLogic extends BaseLogic @@ -41,7 +41,6 @@ class KeywordLogic extends BaseLogic
41 $info = $this->model->read($this->param); 41 $info = $this->model->read($this->param);
42 $info['url'] = $this->user['domain'] . $info['route']; 42 $info['url'] = $this->user['domain'] . $info['route'];
43 $info['related_news_info'] = News::whereIn('id', $info['related_news_ids'])->select(['id', 'name'])->get(); 43 $info['related_news_info'] = News::whereIn('id', $info['related_news_ids'])->select(['id', 'name'])->get();
44 -  
45 return $this->success($info); 44 return $this->success($info);
46 } 45 }
47 46
@@ -53,27 +52,27 @@ class KeywordLogic extends BaseLogic @@ -53,27 +52,27 @@ class KeywordLogic extends BaseLogic
53 * @time :2023/8/23 16:50 52 * @time :2023/8/23 16:50
54 */ 53 */
55 public function keywordSave(){ 54 public function keywordSave(){
56 - DB::beginTransaction();  
57 - try {  
58 - $this->param = $this->handleSaveParam($this->param);  
59 - if(isset($this->param['id']) && !empty($this->param['id'])){  
60 - //TODO::不能修改路由  
61 - $this->model->edit($this->param,['id'=>$this->param['id']]);  
62 - $route = RouteMap::getRoute(RouteMap::SOURCE_PRODUCT_KEYWORD,$this->param['id'], $this->user['project_id']);  
63 - }else{  
64 - $this->param = $this->addHandleParam($this->param);  
65 - $id = $this->model->insertGetId($this->param);  
66 - //路由映射  
67 - $route = RouteMap::setRoute($this->param['title'], RouteMap::SOURCE_PRODUCT_KEYWORD, $id, $this->user['project_id']);  
68 - $this->model->edit(['route'=>$route],['id'=>$id]); 55 + $this->param = $this->handleSaveParam($this->param);
  56 + if(isset($this->param['id']) && !empty($this->param['id'])){
  57 + $info = $this->model->read(['title'=>$this->param['title'],'id'=>['!=',$this->param['id']]]);
  58 + if($info !== false){
  59 + $this->fail('当前title已存在');
69 } 60 }
70 -// //清除缓存  
71 - Common::del_user_cache('product_keyword',$this->user['project_id']);  
72 - DB::commit();  
73 - }catch (\Exception $e){  
74 - DB::rollBack();  
75 - $this->fail('保存失败'); 61 + //TODO::不能修改路由
  62 + $this->model->edit($this->param,['id'=>$this->param['id']]);
  63 + $route = RouteMap::getRoute(RouteMap::SOURCE_PRODUCT_KEYWORD,$this->param['id'], $this->user['project_id']);
  64 + }else{
  65 + $info = $this->model->read(['title'=>$this->param['title']]);
  66 + if($info !== false){
  67 + $this->fail('当前title已存在');
  68 + }
  69 + $this->param = $this->addHandleParam($this->param);
  70 + $id = $this->model->insertGetId($this->param);
  71 + //路由映射
  72 + $route = RouteMap::setRoute($this->param['title'], RouteMap::SOURCE_PRODUCT_KEYWORD, $id, $this->user['project_id']);
  73 + $this->model->edit(['route'=>$route],['id'=>$id]);
76 } 74 }
  75 + Common::del_user_cache('product_keyword',$this->user['project_id']);
77 $this->addUpdateNotify(RouteMap::SOURCE_PRODUCT_KEYWORD,$route); 76 $this->addUpdateNotify(RouteMap::SOURCE_PRODUCT_KEYWORD,$route);
78 $this->curlDelRoute(['new_route'=>$route]); 77 $this->curlDelRoute(['new_route'=>$route]);
79 return $this->success(); 78 return $this->success();
@@ -52,6 +52,7 @@ class ProductLogic extends BaseLogic @@ -52,6 +52,7 @@ class ProductLogic extends BaseLogic
52 $id = $this->param['id']; 52 $id = $this->param['id'];
53 }else{ 53 }else{
54 $this->param = $this->addHandleParam($this->param); 54 $this->param = $this->addHandleParam($this->param);
  55 + $this->param['sort'] = $this->setNewsSort();
55 $id = $this->model->addReturnId($this->param); 56 $id = $this->model->addReturnId($this->param);
56 $route = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_PRODUCT, $id, $this->user['project_id']); 57 $route = RouteMap::setRoute($this->param['route'], RouteMap::SOURCE_PRODUCT, $id, $this->user['project_id']);
57 $this->model->edit(['route'=>$route],['id'=>$id]); 58 $this->model->edit(['route'=>$route],['id'=>$id]);
@@ -77,10 +78,11 @@ class ProductLogic extends BaseLogic @@ -77,10 +78,11 @@ class ProductLogic extends BaseLogic
77 */ 78 */
78 public function setNewsSort(){ 79 public function setNewsSort(){
79 $info = $this->model->orderBy('sort','desc')->first(); 80 $info = $this->model->orderBy('sort','desc')->first();
80 - if($info === false){ 81 + if(empty($info)){
81 return 1; 82 return 1;
82 } 83 }
83 - return $info['sort']++; 84 + $sort = $info['sort']+1;
  85 + return $sort;
84 } 86 }
85 87
86 /** 88 /**
@@ -171,6 +171,7 @@ class UserLoginLogic @@ -171,6 +171,7 @@ class UserLoginLogic
171 $info['image_max'] = $project['image_max']; 171 $info['image_max'] = $project['image_max'];
172 $info['is_update_language'] = $project['is_update_language']; 172 $info['is_update_language'] = $project['is_update_language'];
173 $info['configuration'] = $project['deploy_build']['configuration']; 173 $info['configuration'] = $project['deploy_build']['configuration'];
  174 + $info['project_type'] = $project['type'];
174 if($info['is_customized'] == 1){ 175 if($info['is_customized'] == 1){
175 $info['is_visualization'] = json_decode($project['is_visualization']); 176 $info['is_visualization'] = json_decode($project['is_visualization']);
176 } 177 }
@@ -207,7 +208,7 @@ class UserLoginLogic @@ -207,7 +208,7 @@ class UserLoginLogic
207 $info['image_max'] = $project['image_max']; 208 $info['image_max'] = $project['image_max'];
208 $info['is_update_language'] = $project['is_update_language']; 209 $info['is_update_language'] = $project['is_update_language'];
209 $info['configuration'] = $project['deploy_build']['configuration']; 210 $info['configuration'] = $project['deploy_build']['configuration'];
210 - $info['type'] = $project['type']; 211 + $info['project_type'] = $project['type'];
211 if($info['is_customized'] == 1){ 212 if($info['is_customized'] == 1){
212 $info['is_visualization'] = json_decode($project['is_visualization']); 213 $info['is_visualization'] = json_decode($project['is_visualization']);
213 } 214 }
@@ -25,7 +25,7 @@ class BlogRequest extends FormRequest @@ -25,7 +25,7 @@ class BlogRequest extends FormRequest
25 { 25 {
26 return [ 26 return [
27 'name'=>'required|max:100', 27 'name'=>'required|max:100',
28 - 'remark'=>'max:255', 28 +// 'remark'=>'max:500',
29 'url'=>'required', 29 'url'=>'required',
30 ]; 30 ];
31 } 31 }
@@ -34,9 +34,9 @@ class BlogRequest extends FormRequest @@ -34,9 +34,9 @@ class BlogRequest extends FormRequest
34 { 34 {
35 return [ 35 return [
36 'name.required'=>'请填写名称', 36 'name.required'=>'请填写名称',
37 - 'name.max'=>'名称超过最长长度', 37 + 'name.max'=>'名称超过最长长度100',
38 'url.required'=>'链接不能为空', 38 'url.required'=>'链接不能为空',
39 - 'remark.max'=>'描述超过最长长度' 39 +// 'remark.max'=>'描述超过最长长度500'
40 ]; 40 ];
41 } 41 }
42 } 42 }
@@ -25,7 +25,7 @@ class NewsRequest extends FormRequest @@ -25,7 +25,7 @@ class NewsRequest extends FormRequest
25 { 25 {
26 return [ 26 return [
27 'name'=>'required|max:100', 27 'name'=>'required|max:100',
28 - 'remark'=>'max:255', 28 +// 'remark'=>'max:500',
29 'url'=>'required', 29 'url'=>'required',
30 ]; 30 ];
31 } 31 }
@@ -34,9 +34,9 @@ class NewsRequest extends FormRequest @@ -34,9 +34,9 @@ class NewsRequest extends FormRequest
34 { 34 {
35 return [ 35 return [
36 'name.required'=>'请填写名称', 36 'name.required'=>'请填写名称',
37 - 'name.max'=>'名称超过最长长度', 37 + 'name.max'=>'名称超过最长长度100',
38 'url.required'=>'链接不能为空', 38 'url.required'=>'链接不能为空',
39 - 'remark.max'=>'描述超过最长长度' 39 +// 'remark.max'=>'描述超过最长长度500'
40 ]; 40 ];
41 } 41 }
42 } 42 }
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :Mobile.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2023/12/25 15:41
  8 + */
  9 +
  10 +namespace App\Models\Manage;
  11 +
  12 +use App\Models\Base;
  13 +
  14 +class Mobile extends Base
  15 +{
  16 + protected $table = 'gl_mobile';
  17 +}
@@ -427,7 +427,10 @@ Route::middleware(['bloginauth'])->group(function () { @@ -427,7 +427,10 @@ Route::middleware(['bloginauth'])->group(function () {
427 Route::prefix('language')->group(function () { 427 Route::prefix('language')->group(function () {
428 Route::any('/', [\App\Http\Controllers\Bside\Setting\LanguageController::class, 'lists'])->name('language_lists'); 428 Route::any('/', [\App\Http\Controllers\Bside\Setting\LanguageController::class, 'lists'])->name('language_lists');
429 }); 429 });
430 - 430 + //优化关键词,检索关键词
  431 + Route::prefix('project_keyword')->group(function () {
  432 + Route::any('/', [\App\Http\Controllers\Bside\Keyword\ProjectKeywordController::class, 'searchKeywords'])->name('searchKeywords');
  433 + });
431 //自定义模板 434 //自定义模板
432 Route::prefix('custom_module')->group(function () { 435 Route::prefix('custom_module')->group(function () {
433 Route::any('/', [\App\Http\Controllers\Bside\CustomModule\CustomModuleController::class, 'lists'])->name('custom_lists'); 436 Route::any('/', [\App\Http\Controllers\Bside\CustomModule\CustomModuleController::class, 'lists'])->name('custom_lists');