Merge remote-tracking branch 'origin/master' into akun
正在显示
22 个修改的文件
包含
284 行增加
和
66 行删除
app/Console/Commands/SyncMobile.php
0 → 100644
| 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 | } |
app/Models/Manage/Mobile.php
0 → 100644
| @@ -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'); |
-
请 注册 或 登录 后发表评论