Skip to content

Commit 9db3bcf

Browse files
author
piexlMax(奇淼
committed
Merge branch 'main' of github.com:flipped-aurora/gin-vue-admin
2 parents a6b6b5d + 23f9227 commit 9db3bcf

File tree

7 files changed

+52
-10
lines changed

7 files changed

+52
-10
lines changed

server/api/v1/system/sys_menu.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ func (a *AuthorityMenuApi) AddBaseMenu(c *gin.Context) {
143143
err = menuService.AddBaseMenu(menu)
144144
if err != nil {
145145
global.GVA_LOG.Error("添加失败!", zap.Error(err))
146-
response.FailWithMessage("添加失败", c)
146+
response.FailWithMessage("添加失败:"+err.Error(), c)
147147
return
148148
}
149149
response.OkWithMessage("添加成功", c)

server/resource/package/web/view/table.vue.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ getDataSourceFunc()
161161
>
162162
<el-table-column type="selection" width="55" />
163163
{{ if .GvaModel }}
164-
<el-table-column sortable align="left" label="日期" prop="CreatedAt" {{- if .IsTree }} min-{{- end }}width="180">
164+
<el-table-column sortable align="left" label="日期" prop="CreatedAt" {{- if .IsTree }} min-{{- end -}}width="180">
165165
<template #default="scope">{{ "{{ formatDate(scope.row.CreatedAt) }}" }}</template>
166166
</el-table-column>
167167
{{ end }}

server/resource/plugin/web/view/view.vue.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ getDataSourceFunc()
158158
>
159159
<el-table-column type="selection" width="55" />
160160
{{ if .GvaModel }}
161-
<el-table-column sortable align="left" label="日期" prop="CreatedAt" {{- if .IsTree }} min-{{- end }}width="180">
161+
<el-table-column sortable align="left" label="日期" prop="CreatedAt" {{- if .IsTree }} min-{{- end -}}width="180">
162162
<template #default="scope">{{ "{{ formatDate(scope.row.CreatedAt) }}" }}</template>
163163
</el-table-column>
164164
{{ end }}

server/service/system/sys_menu.go

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,52 @@ func (menuService *MenuService) getBaseChildrenList(menu *system.SysBaseMenu, tr
134134
//@return: error
135135

136136
func (menuService *MenuService) AddBaseMenu(menu system.SysBaseMenu) error {
137-
if !errors.Is(global.GVA_DB.Where("name = ?", menu.Name).First(&system.SysBaseMenu{}).Error, gorm.ErrRecordNotFound) {
138-
return errors.New("存在重复name,请修改name")
139-
}
140-
return global.GVA_DB.Create(&menu).Error
137+
return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
138+
// 检查name是否重复
139+
if !errors.Is(tx.Where("name = ?", menu.Name).First(&system.SysBaseMenu{}).Error, gorm.ErrRecordNotFound) {
140+
return errors.New("存在重复name,请修改name")
141+
}
142+
143+
if menu.ParentId != 0 {
144+
// 检查父菜单是否存在
145+
var parentMenu system.SysBaseMenu
146+
if err := tx.First(&parentMenu, menu.ParentId).Error; err != nil {
147+
if errors.Is(err, gorm.ErrRecordNotFound) {
148+
return errors.New("父菜单不存在")
149+
}
150+
return err
151+
}
152+
153+
// 检查父菜单下现有子菜单数量
154+
var existingChildrenCount int64
155+
err := tx.Model(&system.SysBaseMenu{}).Where("parent_id = ?", menu.ParentId).Count(&existingChildrenCount).Error
156+
if err != nil {
157+
return err
158+
}
159+
160+
// 如果父菜单原本是叶子菜单(没有子菜单),现在要变成枝干菜单,需要清空其权限分配
161+
if existingChildrenCount == 0 {
162+
// 检查父菜单是否被其他角色设置为首页
163+
var defaultRouterCount int64
164+
err := tx.Model(&system.SysAuthority{}).Where("default_router = ?", parentMenu.Name).Count(&defaultRouterCount).Error
165+
if err != nil {
166+
return err
167+
}
168+
if defaultRouterCount > 0 {
169+
return errors.New("父菜单已被其他角色的首页占用,请先释放父菜单的首页权限")
170+
}
171+
172+
// 清空父菜单的所有权限分配
173+
err = tx.Where("sys_base_menu_id = ?", menu.ParentId).Delete(&system.SysAuthorityMenu{}).Error
174+
if err != nil {
175+
return err
176+
}
177+
}
178+
}
179+
180+
// 创建菜单
181+
return tx.Create(&menu).Error
182+
})
141183
}
142184

143185
//@author: [piexlmax](https://github.com/piexlmax)

web/src/view/superAdmin/api/api.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@
531531
if (res.code === 0) {
532532
ElMessage({
533533
type: 'success',
534-
message: '添加成功',
534+
message: '添加成功,请到角色管理页面分配权限',
535535
showClose: true
536536
})
537537
syncApiData.value.newApis = syncApiData.value.newApis.filter(

web/src/view/superAdmin/authority/components/menus.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
defaultRouter: data.name
133133
})
134134
if (res.code === 0) {
135-
ElMessage({ type: 'success', message: '设置成功' })
135+
relation()
136136
emit('changeRow', 'defaultRouter', res.data.authority.defaultRouter)
137137
}
138138
}

web/src/view/superAdmin/menu/menu.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@
700700
if (res.code === 0) {
701701
ElMessage({
702702
type: 'success',
703-
message: isEdit.value ? '编辑成功' : '添加成功!'
703+
message: isEdit.value ? '编辑成功' : '添加成功,请到角色管理页面分配权限'
704704
})
705705
getTableData()
706706
}

0 commit comments

Comments
 (0)