| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package version_local
- import (
- "IotAdmin/app/other/models/tools"
- jobModels "IotAdmin/app/schedule/models"
- sysModels "IotAdmin/app/system/models"
- "IotAdmin/core/sdk/config"
- "IotAdmin/migration"
- "IotAdmin/migration/models"
- "errors"
- "runtime"
- "strconv"
- "gorm.io/gorm"
- )
- /**
- 开发者项目的迁移脚本放在这个目录里,init写法参考version目录里的migrate或者自动生成
- */
- func init() {
- _, fileName, _, _ := runtime.Caller(0)
- migration.Migrate.SetVersion(migration.GetFilename(fileName)+"_init", systemDefaultDataInit)
- migration.Migrate.SetVersion(migration.GetFilename(fileName)+"_menu", systemDefaultMenu)
- }
- func systemDefaultDataInit(db *gorm.DB, version string) error {
- return db.Transaction(func(tx *gorm.DB) error {
- if config.DatabaseConfig.Driver == "mysql" {
- tx = tx.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
- }
- // 生成Table
- err := tx.Migrator().AutoMigrate(
- new(tools.SysTables),
- new(tools.SysColumns),
- new(sysModels.SysOrg),
- new(sysModels.SysConfig),
- new(sysModels.SysMenu),
- new(sysModels.SysLoginLog),
- new(sysModels.SysOperaLog),
- //new(sysModels.SysRoleDept),
- new(models.SysUser),
- new(models.SysRole),
- new(sysModels.SysPost),
- new(sysModels.SysDictData),
- new(sysModels.SysDictType),
- new(sysModels.SysConfig),
- new(sysModels.SysApi),
- new(jobModels.SysJob),
- )
- if err != nil {
- return err
- }
- // 插入数据
- if err := migration.InitDbData(tx); err != nil {
- return err
- }
- return tx.Create(&models.Migration{
- Version: version,
- }).Error
- })
- }
- func systemDefaultMenu(db *gorm.DB, version string) error {
- return db.Transaction(func(tx *gorm.DB) error {
- var list []sysModels.SysMenu
- err := tx.Model(&sysModels.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 sysModels.SysMenu
- err = tx.Model(&sysModels.SysMenu{}).Where("menu_id=?", v.ParentId).First(&e).Error
- if err != nil {
- if errors.Is(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(&models.Migration{
- Version: version,
- }).Error
- })
- }
|