system-default.go 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package version_local
  2. import (
  3. "IotAdmin/app/other/models/tools"
  4. jobModels "IotAdmin/app/schedule/models"
  5. sysModels "IotAdmin/app/system/models"
  6. "IotAdmin/core/sdk/config"
  7. "IotAdmin/migration"
  8. "IotAdmin/migration/models"
  9. "errors"
  10. "runtime"
  11. "strconv"
  12. "gorm.io/gorm"
  13. )
  14. /**
  15. 开发者项目的迁移脚本放在这个目录里,init写法参考version目录里的migrate或者自动生成
  16. */
  17. func init() {
  18. _, fileName, _, _ := runtime.Caller(0)
  19. migration.Migrate.SetVersion(migration.GetFilename(fileName)+"_init", systemDefaultDataInit)
  20. migration.Migrate.SetVersion(migration.GetFilename(fileName)+"_menu", systemDefaultMenu)
  21. }
  22. func systemDefaultDataInit(db *gorm.DB, version string) error {
  23. return db.Transaction(func(tx *gorm.DB) error {
  24. if config.DatabaseConfig.Driver == "mysql" {
  25. tx = tx.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
  26. }
  27. // 生成Table
  28. err := tx.Migrator().AutoMigrate(
  29. new(tools.SysTables),
  30. new(tools.SysColumns),
  31. new(sysModels.SysOrg),
  32. new(sysModels.SysConfig),
  33. new(sysModels.SysMenu),
  34. new(sysModels.SysLoginLog),
  35. new(sysModels.SysOperaLog),
  36. //new(sysModels.SysRoleDept),
  37. new(models.SysUser),
  38. new(models.SysRole),
  39. new(sysModels.SysPost),
  40. new(sysModels.SysDictData),
  41. new(sysModels.SysDictType),
  42. new(sysModels.SysConfig),
  43. new(sysModels.SysApi),
  44. new(jobModels.SysJob),
  45. )
  46. if err != nil {
  47. return err
  48. }
  49. // 插入数据
  50. if err := migration.InitDbData(tx); err != nil {
  51. return err
  52. }
  53. return tx.Create(&models.Migration{
  54. Version: version,
  55. }).Error
  56. })
  57. }
  58. func systemDefaultMenu(db *gorm.DB, version string) error {
  59. return db.Transaction(func(tx *gorm.DB) error {
  60. var list []sysModels.SysMenu
  61. err := tx.Model(&sysModels.SysMenu{}).Order("parent_id,menu_id").Find(&list).Error
  62. if err != nil {
  63. return err
  64. }
  65. for _, v := range list {
  66. if v.ParentId == 0 {
  67. v.Paths = "/0/" + strconv.Itoa(v.MenuId)
  68. } else {
  69. var e sysModels.SysMenu
  70. err = tx.Model(&sysModels.SysMenu{}).Where("menu_id=?", v.ParentId).First(&e).Error
  71. if err != nil {
  72. if errors.Is(err, gorm.ErrRecordNotFound) {
  73. continue
  74. }
  75. return err
  76. }
  77. v.Paths = e.Paths + "/" + strconv.Itoa(v.MenuId)
  78. }
  79. err = tx.Model(&v).Update("paths", v.Paths).Error
  80. if err != nil {
  81. return err
  82. }
  83. }
  84. return tx.Create(&models.Migration{
  85. Version: version,
  86. }).Error
  87. })
  88. }