作者 lyh

gx复制项目脚本

<?php
/**
* @remark :
* @name :ProjectMenuSeoController.php
* @author :lyh
* @method :post
* @time :2025/3/4 15:28
*/
namespace App\Http\Controllers\Aside\User;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\User\ProjectMenuSeoLogic;
use App\Models\User\ProjectMenuSeo;
/**
* @remark :设置白帽菜单
* @name :ProjectMenuSeoController
* @author :lyh
* @method :post
* @time :2025/3/4 15:28
*/
class ProjectMenuSeoController extends BaseController
{
/**
* @remark :白帽菜单列表
* @name :lists
* @author :lyh
* @method :post
* @time :2025/3/4 15:33
*/
public function lists(ProjectMenuSeo $projectMenuSeo){
$lists = $projectMenuSeo->list($this->map,'sort');
$menu = array();
foreach ($lists as $k => $v){
$v = (array)$v;
if ($v['pid'] == 0) {
$v['sub'] = _get_child($v['id'], $lists);
$menu[] = $v;
}
}
$this->response('success',Code::SUCCESS,$menu);
}
/**
* @remark :获取白帽详情
* @name :info
* @author :lyh
* @method :post
* @time :2025/3/4 15:34
*/
public function info(ProjectMenuSeo $projectMenuSeo){
$this->request->validate([
'id'=>'required'
],[
'id.required' => 'ID不能为空'
]);
$info = $projectMenuSeo->read($this->param);
$this->response('success',Code::SUCCESS,$info);
}
/**
* @remark :添加菜单
* @name :add
* @author :lyh
* @method :post
* @time :2025/3/4 15:38
*/
public function add(ProjectMenuSeoLogic $projectMenuSeoLogic){
$this->request->validate([
'name'=>'required'
],[
'name.required' => '名称不能为空'
]);
$projectMenuSeoLogic->menu_add();
$this->response('success');
}
/**
* @remark :编辑菜单
* @name :edit
* @author :lyh
* @method :post
* @time :2025/3/4 15:42
*/
public function edit(ProjectMenuSeoLogic $projectMenuSeoLogic){
$this->request->validate([
'name'=>'required'
],[
'name.required' => '名称不能为空'
]);
$projectMenuSeoLogic->menu_edit();
$this->response('success');
}
/**
* @remark :删除菜单
* @name :del
* @author :lyh
* @method :post
* @time :2025/3/4 15:43
*/
public function del(ProjectMenuSeoLogic $projectMenuSeoLogic){
$this->request->validate([
'id'=>['required','array'],
],[
'id.required' => 'ID不能为空',
'id.array' => 'ID为数组',
]);
$projectMenuSeoLogic->menu_del();
$this->response('success');
}
/**
* @remark :获取子菜单
* @name :getSonMenu
* @author :lyh
* @method :post
* @time :2023/8/3 14:19
*/
public function getSonMenu(ProjectMenuSeoLogic $projectMenuSeoLogic){
$list = $projectMenuSeoLogic->roleMenuInfo();
$this->response('success',Code::SUCCESS,$list);
}
/**
* @remark :排序
* @name :setSort
* @author :lyh
* @method :post
* @time :2023/8/10 16:40
*/
public function sort(ProjectMenuSeoLogic $projectMenuSeoLogic){
$this->request->validate([
'id'=>'required',
],[
'id.required' => 'ID不能为空',
]);
$projectMenuSeoLogic->setParamStatus();
$this->response('success');
}
}
... ...
... ... @@ -13,9 +13,9 @@ use App\Models\Project\DeployBuild;
use App\Models\Project\Project;
use App\Models\RouteMap\RouteMap;
use App\Models\User\ProjectMenu as ProjectMenuModel;
use App\Models\User\ProjectMenuSeo;
use App\Models\User\ProjectRole as ProjectRoleModel;
use App\Models\User\User;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Cache;
/***
... ... @@ -36,9 +36,7 @@ class ComController extends BaseController
}else{
$this->map = $this->getAdminMenuCondition();
}
if(!isset($this->map['type'])){//默认获取6.0菜单
$this->map['type'] = 0;
}
$lists = $projectMenuModel->list($this->map,'sort');
$menu = array();
foreach ($lists as $k => $v){
... ... @@ -52,6 +50,27 @@ class ComController extends BaseController
}
/**
* @remark :白帽seo获取菜单
* @name :seo_get_menu
* @author :lyh
* @method :post
* @time :2025/3/4 14:48
*/
public function seo_get_menu(){
$seoMenuModel = new ProjectMenuSeo();
$lists = $seoMenuModel->list($this->map,'sort');
$menu = array();
foreach ($lists as $k => $v){
$v = (array)$v;
if ($v['pid'] == 0) {
$v['sub'] = _get_child($v['id'], $lists);
$menu[] = $v;
}
}
$this->response('当前用户菜单列表',Code::SUCCESS,$menu);
}
/**
* @remark :获取当前菜单的自定义模块
* @name :getProjectCustomMenu
* @author :lyh
... ...
... ... @@ -79,6 +79,7 @@ class AiCommandLogic extends BaseLogic
'project_id'=>$this->param['project_id']??0,
];
$info = $this->model->read($condition);
if($info !== false){
$this->fail('当前编辑的指令key已存在');
}
... ...
<?php
namespace App\Http\Logic\Aside\User;
use App\Http\Logic\Aside\BaseLogic;
use App\Models\User\ProjectMenuSeo;
class ProjectMenuSeoLogic extends BaseLogic
{
public function __construct()
{
parent::__construct();
$this->model = new ProjectMenuSeo();
$this->param = $this->requestAll;
}
/**
* @remark :添加菜单
* @name :menu_add
* @author :lyh
* @method :post
* @time :2025/3/4 15:39
*/
public function menu_add(){
//查询当前名称是否存在
$info = $this->model->read(['name'=>$this->param['name']]);
if($info !== false){
$this->fail('当前菜单名称已存在');
}
$rs = $this->model->add($this->param);
if($rs === false){
$this->fail('添加失败');
}
return $this->success();
}
/**
* @name :编辑菜单
* @return void
* @author :liyuhang
* @method
*/
public function menu_edit(){
//查询当前名称是否存在
$info = $this->model->read(['name'=>$this->param['name'],'id'=>['!=',$this->param['id']]]);
if($info !== false){
$this->fail('当前菜单名称已存在');
}
$this->model->edit($this->param,['id'=>$this->param['id']]);
return $this->success();
}
/**
* @name :删除菜单
* @return void
* @author :liyuhang
* @method
*/
public function menu_del(){
$ids = $this->param['id'];
//查看当前菜单是否有子菜单
foreach ($ids as $v){
$info = $this->model->read(['pid'=>$v],['id','name']);
if($info !== false){
$this->fail('当前分类存在子分类:'.$info['name'].',不允许删除');
}
}
$this->param['id'] = ['in',$this->param['id']];
$rs = $this->model->del($this->param);
if($rs === false){
$this->fail('编辑失败');
}
return $this->success();
}
/**
* @remark :添加时获取菜单列表
* @name :MenuList
* @author :lyh
* @method :post
* @time :2023/6/21 17:26
*/
public function MenuList($map){
$lists = $this->model->list($map,'sort');
$menu = array();
foreach ($lists as $k => $v){
$v = (array)$v;
if ($v['pid'] == 0) {
$v['sub'] = _get_child($v['id'], $lists);
$menu[] = $v;
}
}
return $this->success($menu);
}
/**
* @remark :当前菜单下的所有权限子菜单
* @name :roleMenuInfo
* @author :lyh
* @method :post
* @time :2023/8/2 16:24
*/
public function roleMenuInfo(){
$list = $this->model->list(['pid'=>$this->param['id']]);
return $this->success($list);
}
/**
* @remark :设置排序
* @name :setSort
* @author :lyh
* @method :post
* @time :2023/8/10 16:42
*/
public function setParamStatus(){
$rs = $this->model->edit(['sort'=>$this->param['sort']],['id'=>$this->param['id']]);
if($rs === false){
$this->fail('修改失败');
}
return $this->success();
}
}
... ...
<?php
/**
* @remark :
* @name :ProjectMenuSeo.php
* @author :lyh
* @method :post
* @time :2025/3/4 15:24
*/
namespace App\Models\User;
use App\Models\Base;
/**
* @remark :白帽seo菜单
* @name :ProjectMenuSeo
* @author :lyh
* @method :post
* @time :2025/3/4 15:25
*/
class ProjectMenuSeo extends Base
{
protected $table = 'gl_project_menu_seo';
}
... ...
... ... @@ -50,7 +50,16 @@ Route::middleware(['aloginauth'])->group(function () {
Route::any('/routes', [Aside\User\ProjectMenuController::class, 'routes'])->name('admin.user_menu_routes');
Route::any('/sort', [Aside\User\ProjectMenuController::class, 'sort'])->name('admin.user_menu_sort');
});
//seo白帽菜单管理
Route::prefix('seo_menu')->group(function () {
Route::any('/', [Aside\User\ProjectMenuSeoController::class, 'lists'])->name('admin.user_menu_lists');
Route::any('/info', [Aside\User\ProjectMenuSeoController::class, 'info'])->name('admin.user_menu_info');
Route::any('/add', [Aside\User\ProjectMenuSeoController::class, 'add'])->name('admin.user_menu_add');
Route::any('/edit', [Aside\User\ProjectMenuSeoController::class, 'edit'])->name('admin.user_menu_edit');
Route::any('/del', [Aside\User\ProjectMenuSeoController::class, 'del'])->name('admin.user_menu_del');
Route::any('/getSonMenu', [Aside\User\ProjectMenuSeoController::class, 'getSonMenu'])->name('admin.user_menu_getSonMenu');
Route::any('/sort', [Aside\User\ProjectMenuSeoController::class, 'sort'])->name('admin.user_menu_sort');
});
//用户组
Route::prefix('dept')->group(function () {
Route::any('/', [Aside\User\ProjectDeptController::class, 'lists'])->name('admin.user_group_lists');
... ...
... ... @@ -13,6 +13,7 @@ Route::middleware(['bloginauth'])->group(function () {
Route::any('/unbindWechat', [\App\Http\Controllers\Bside\BCom\ComController::class, 'unbindWechat'])->name('unbindWechat');
//获取当前登录用户菜单
Route::any('/get_menu', [\App\Http\Controllers\Bside\BCom\ComController::class, 'get_menu'])->name('get_menu');
Route::any('/seo_get_menu', [\App\Http\Controllers\Bside\BCom\ComController::class, 'seo_get_menu'])->name('seo_get_menu');
//自定义菜单
Route::any('/getCustomMenu', [\App\Http\Controllers\Bside\BCom\ComController::class, 'getCustomMenu'])->name('get_getCustomMenu');
//获取当前登录用户项目详情
... ...