Browse Source

修复可能产生数据库锁死的事务错误

修复菜单参数无法修改的错误
main
pixel 4 years ago
parent
commit
22b0f33312
  1. 2
      server/api/v1/sys_system.go
  2. 6
      server/model/sys_base_menu.go
  3. 2
      server/service/sys_api.go
  4. 24
      server/service/sys_base_menu.go

2
server/api/v1/sys_system.go

@ -72,7 +72,7 @@ func GetServerInfo(c *gin.Context) {
global.GVA_LOG.Error("获取失败!", zap.Any("err", err))
response.FailWithMessage("获取失败", c)
return
}else {
} else {
response.OkWithDetailed(gin.H{"server": server}, "获取成功", c)
}

6
server/model/sys_base_menu.go

@ -29,7 +29,7 @@ type Meta struct {
type SysBaseMenuParameter struct {
global.GVA_MODEL
SysBaseMenuID uint
Type string `json:"type" gorm:"commit:'地址栏携带参数为params还是query'"`
Key string `json:"key" gorm:"commit:'地址栏携带参数的key'"`
Value string `json:"value" gorm:"commit:'地址栏携带参数的值'"`
Type string `json:"type" gorm:"comment:地址栏携带参数为params还是query"`
Key string `json:"key" gorm:"comment:地址栏携带参数的key"`
Value string `json:"value" gorm:"comment:地址栏携带参数的值"`
}

2
server/service/sys_api.go

@ -46,7 +46,7 @@ func AutoCreateApi(api model.SysApi) (err error) {
fxErr := tx.Where("path = ? AND method = ?", api.Path, api.Method).First(&fApi).Error
if errors.Is(fxErr, gorm.ErrRecordNotFound) {
txErr = tx.Create(&api).Error
if txErr != nil{
if txErr != nil {
return txErr
}
}

24
server/service/sys_base_menu.go

@ -58,26 +58,26 @@ func UpdateBaseMenu(menu model.SysBaseMenu) (err error) {
return errors.New("存在相同name修改失败")
}
}
err = tx.Delete(&model.SysBaseMenuParameter{}, "sys_base_menu_id = ?", menu.ID).Error
if err != nil {
global.GVA_LOG.Debug(err.Error())
return err
txErr := tx.Unscoped().Delete(&model.SysBaseMenuParameter{}, "sys_base_menu_id = ?", menu.ID).Error
if txErr != nil {
global.GVA_LOG.Debug(txErr.Error())
return txErr
}
if len(menu.Parameters) > 0 {
for k, _ := range menu.Parameters {
menu.Parameters[k].SysBaseMenuID = menu.ID
}
err = tx.Create(&menu.Parameters).Error
if err != nil {
global.GVA_LOG.Debug(err.Error())
return err
txErr = tx.Create(&menu.Parameters).Error
if txErr != nil {
global.GVA_LOG.Debug(txErr.Error())
return txErr
}
}
err = db.Updates(upDateMap).Error
if err != nil {
global.GVA_LOG.Debug(err.Error())
return err
txErr = db.Updates(upDateMap).Error
if txErr != nil {
global.GVA_LOG.Debug(txErr.Error())
return txErr
}
return nil
})

Loading…
Cancel
Save