49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
|
package version
|
||
|
|
||
|
import (
|
||
|
"go-admin/cmd/migrate/migration/models"
|
||
|
common "go-admin/common/models"
|
||
|
"gorm.io/gorm"
|
||
|
"runtime"
|
||
|
"strconv"
|
||
|
|
||
|
"go-admin/cmd/migrate/migration"
|
||
|
)
|
||
|
|
||
|
func init() {
|
||
|
_, fileName, _, _ := runtime.Caller(0)
|
||
|
migration.Migrate.SetVersion(migration.GetFilename(fileName), _1653638869132Test)
|
||
|
}
|
||
|
|
||
|
func _1653638869132Test(db *gorm.DB, version string) error {
|
||
|
return db.Transaction(func(tx *gorm.DB) error {
|
||
|
var list []models.SysMenu
|
||
|
err := tx.Model(&models.SysMenu{}).Order("parent_id,menu_id").Find(&list).Error
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
for _, v := range list {
|
||
|
if v.ParentId == 0 {
|
||
|
v.Paths = "/0/" + strconv.Itoa(v.MenuId)
|
||
|
} else {
|
||
|
var e models.SysMenu
|
||
|
err = tx.Model(&models.SysMenu{}).Where("menu_id=?", v.ParentId).First(&e).Error
|
||
|
if err != nil {
|
||
|
if err == gorm.ErrRecordNotFound {
|
||
|
continue
|
||
|
}
|
||
|
return err
|
||
|
}
|
||
|
v.Paths = e.Paths + "/" + strconv.Itoa(v.MenuId)
|
||
|
}
|
||
|
err = tx.Model(&v).Update("paths", v.Paths).Error
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
return tx.Create(&common.Migration{
|
||
|
Version: version,
|
||
|
}).Error
|
||
|
})
|
||
|
}
|