@@ -50,15 +50,37 @@ func UpdateBaseMenu(menu model.SysBaseMenu) (err error) {
50
50
upDateMap ["icon" ] = menu .Icon
51
51
upDateMap ["sort" ] = menu .Sort
52
52
53
- db := global .GVA_DB .Where ("id = ?" , menu .ID ).Find (& oldMenu )
54
- if oldMenu .Name != menu .Name {
55
- if ! errors .Is (global .GVA_DB .Where ("id <> ? AND name = ?" , menu .ID , menu .Name ).First (& model.SysBaseMenu {}).Error , gorm .ErrRecordNotFound ) {
56
- global .GVA_LOG .Debug ("存在相同name修改失败" )
57
- return errors .New ("存在相同name修改失败" )
53
+ err = global .GVA_DB .Transaction (func (tx * gorm.DB ) error {
54
+ db := tx .Where ("id = ?" , menu .ID ).Find (& oldMenu )
55
+ if oldMenu .Name != menu .Name {
56
+ if ! errors .Is (tx .Where ("id <> ? AND name = ?" , menu .ID , menu .Name ).First (& model.SysBaseMenu {}).Error , gorm .ErrRecordNotFound ) {
57
+ global .GVA_LOG .Debug ("存在相同name修改失败" )
58
+ return errors .New ("存在相同name修改失败" )
59
+ }
58
60
}
59
- }
60
- err = global .GVA_DB .Delete (& model.SysBaseMenuParameter {}, "sys_base_menu_id = ?" , menu .ID ).Error
61
- err = db .Updates (upDateMap ).Error
61
+ err = tx .Delete (& model.SysBaseMenuParameter {}, "sys_base_menu_id = ?" , menu .ID ).Error
62
+ if err != nil {
63
+ global .GVA_LOG .Debug (err .Error ())
64
+ return err
65
+ }
66
+ if len (menu .Parameters ) > 0 {
67
+ for k , _ := range menu .Parameters {
68
+ menu .Parameters [k ].SysBaseMenuID = menu .ID
69
+ }
70
+ err = tx .Create (& menu .Parameters ).Error
71
+ if err != nil {
72
+ global .GVA_LOG .Debug (err .Error ())
73
+ return err
74
+ }
75
+ }
76
+
77
+ err = db .Updates (upDateMap ).Error
78
+ if err != nil {
79
+ global .GVA_LOG .Debug (err .Error ())
80
+ return err
81
+ }
82
+ return nil
83
+ })
62
84
return err
63
85
}
64
86
0 commit comments