thinkphp6权限角色菜单功能实现方式
首先上图展示效果:
代码展示:
/**
* @Description 新增菜单
* @Date 2022/1/24 15:42
*/
public function add()
{
$param = get_params();
if (request()->isAjax()) {
if ($param['id'] > 0) {
try {
validate(MenuCheck::class)->scene('edit')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$param['update_time'] = time();
Db::name('admin_menu')->strict(false)->field(true)->update($param);
// add_log('edit', $param['id'], $param); //员工操作日志
} else {
try {
validate(MenuCheck::class)->scene('add')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$param['create_time'] = time();
$mid = Db::name('admin_menu')->strict(false)->field(true)->insertGetId($param);
//自动为系统所有者管理组分配新增的菜单
$group = Db::name('admin_group')->find(1);
if (!empty($group)) {
$newGroup['id'] = 1;
$newGroup['menus'] = $group['menus'] . ',' . $mid;
Db::name('admin_group')->strict(false)->field(true)->update($newGroup);
// add_log('add', $mid, $param); //员工操作日志
}
}
// 删除后台菜单缓存
clear_cache('admin_menu');
return to_assign();
} else {
$id = isset($param['id']) ? $param['id'] : 0;
$pid = isset($param['pid']) ? $param['pid'] : 0;
if($id>0){
$detail = Db::name('admin_menu')->where('id',$id)->find();
View::assign('detail', $detail);
}
View::assign('id', $id);
View::assign('pid', $pid);
return view();
}
}
/**
* @Description 删除菜单
* @Date 2022/1/25 15:26
*/
public function delete()
{
$id = get_params('id');
$count = Db::name('admin_menu')->where(['pid' => $id])->count();
if ($count > 0) {
return to_assign(1, '该菜单下还有子菜单,无法删除');
}
if (Db::name('admin_menu')->delete($id) !== false) {
// 删除后台菜单缓存
clear_cache('admin_menu');
// add_log('delete', $id, []);
return to_assign(0, '删除菜单成功');
} else {
return to_assign(1, '删除失败');
}
}
//添加
public function add()
{
$param = get_params();
if (request()->isAjax()) {
if ($param['id'] > 0) {
try {
validate(RuleCheck::class)->scene('edit')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
Db::name('AdminRule')->strict(false)->field(true)->update($param);
add_log('edit', $param['id'], $param);
} else {
try {
validate(RuleCheck::class)->scene('add')->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$param['create_time'] = time();
$rid = Db::name('AdminRule')->strict(false)->field(true)->insertGetId($param);
//自动为系统所有者管理组分配新增的节点
$group = Db::name('AdminGroup')->find(1);
if (!empty($group)) {
$newGroup['id'] = 1;
$newGroup['rules'] = $group['rules'] . ',' . $rid;
Db::name('AdminGroup')->strict(false)->field(true)->update($newGroup);
add_log('add', $rid, $param);
}
}
// 删除后台节点缓存
clear_cache('adminRules');
return to_assign();
} else {
$id = isset($param['id']) ? $param['id'] : 0;
$pid = isset($param['pid']) ? $param['pid'] : 0;
if($id>0){
$detail = Db::name('AdminRule')->where('id',$id)->find();
View::assign('detail', $detail);
}
View::assign('id', $id);
View::assign('pid', $pid);
return view();
}
}
//删除
public function delete()
{
$id = get_params("id");
$count = Db::name('AdminRule')->where(["pid" => $id])->count();
if ($count > 0) {
return to_assign(1, "该节点下还有子节点,无法删除");
}
if (Db::name('AdminRule')->delete($id) !== false) {
clear_cache('adminRules');
add_log('delete', $id, []);
return to_assign(0, "删除节点成功");
} else {
return to_assign(1, "删除失败");
}
}
具体的前端代码和后端框架和数据库我打包放到码云上了,需要的前往下载(账号密码我放在text文件中,配置完即可查看运行)(点击即可查看):码云代码地址
https://gitee.com/zhangchang521/authority-management.git(备注,以防跳转失败)
如有任何疑问可留言询问