package main import ( "github.com/han-joker/moo-layout/api/moo/confm" "github.com/han-joker/moo-layout/api/moo/toolm" "github.com/han-joker/moo-layout/api/tables" "log" "time" ) import ( "gorm.io/driver/sqlite" "gorm.io/gorm" ) func main() { // connect db, err := gorm.Open(sqlite.Open(confm.Get().String("sqlite.DSN")), &gorm.Config{}) if err != nil { log.Fatal(err) } // all tables tbs := []interface{}{ &tables.User{}, &tables.Role{}, &tables.Category{}, &tables.Content{}, } // drop tables if err := db.Migrator().DropTable(tbs...); err != nil { log.Fatal(err) } // create tables if err := db.AutoMigrate(tbs...); err != nil { log.Fatal(err) } // basic seed // role root := tables.Role{Name: "根", Key: "root"} if result := db.Create(&root); result.Error != nil { log.Fatal(result.Error) } // user users := []tables.User{ {Username: "admin", Password: "", PasswordSalt: "", Name: "Admin", Roles: []tables.Role{root}}, } for i, _ := range users { users[i].PasswordSalt = toolm.RandString(6, toolm.CharsAll) users[i].Password = toolm.Sha256HMacString("admin", users[i].PasswordSalt) } if result := db.Create(&users); result.Error != nil { log.Fatal(result.Error) } // category cats := []tables.Category{ {Model: tables.Model{ID: 1}, Name: "未分类", Status: tables.CategoryStatusPublish}, {Model: tables.Model{ID: 2}, Name: "新闻公告", Status: tables.CategoryStatusPublish}, {Model: tables.Model{ID: 3}, Name: "游戏介绍", Status: tables.CategoryStatusPublish}, {Model: tables.Model{ID: 4}, Name: "游戏特色", Status: tables.CategoryStatusPublish}, {Model: tables.Model{ID: 5}, Name: "特定内容", Status: tables.CategoryStatusPublish}, {Model: tables.Model{ID: 6}, Name: "怪物介绍", Status: tables.CategoryStatusPublish, ParentID: 3}, {Model: tables.Model{ID: 7}, Name: "NPC介绍", Status: tables.CategoryStatusPublish, ParentID: 3}, {Model: tables.Model{ID: 8}, Name: "武功介绍", Status: tables.CategoryStatusPublish, ParentID: 3}, {Model: tables.Model{ID: 9}, Name: "系统介绍", Status: tables.CategoryStatusPublish, ParentID: 3}, {Model: tables.Model{ID: 10}, Name: "装备预览", Status: tables.CategoryStatusPublish, ParentID: 3}, {Model: tables.Model{ID: 11}, Name: "武功", Status: tables.CategoryStatusPublish, ParentID: 4}, {Model: tables.Model{ID: 12}, Name: "离线挂机", Status: tables.CategoryStatusPublish, ParentID: 4}, {Model: tables.Model{ID: 13}, Name: "境界", Status: tables.CategoryStatusPublish, ParentID: 4}, {Model: tables.Model{ID: 14}, Name: "副本", Status: tables.CategoryStatusPublish, ParentID: 4}, } if result := db.Create(&cats); result.Error != nil { log.Fatal(result.Error) } contents := []tables.Content{ {Subject: "家长监护工程", Content: "

家长监护工程(请自行编辑)

", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "联系我们", Content: "

联系我们(请自行编辑)

", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "商务合作", Content: "

商务合作(请自行编辑)

", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "用户纠纷处理", Content: "

用户纠纷处理(请自行编辑)

", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "用户协议", Content: "

用户协议(请自行编辑)

", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "QRCode", Content: "

QRCode(请自行编辑)

", Cover: "contents/d45d56cdc40ff9ad6245b6a30b5c10a9.png", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "App Store 下载", Content: "

App Store 下载(请自行编辑)

", Cover: "contents/6ac066a9023d893deb030d8d04faaf4d.png", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "安卓下载", Content: "

安卓下载(请自行编辑)

", Cover: "contents/1d6e08823657c551a66bb25693e69678.png", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "Logo", Content: "

Logo(请自行编辑)

", Cover: "contents/fbc658d2b9c8209a0eaa9b9721e426c2.png", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "底部文字", Content: "健康游戏忠告:抵制不良游戏,拒绝盗版游戏。注意自我保护,谨防受骗上当。适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "Video Logo", Content: "

请自行编辑

", Cover: "contents/41af642d078b5cd5049f8eb4ee2472ed.png", CategoryID: 5, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "维护公告", Content: "

测试内容1

", Cover: "contents/e842edc945d88a4f3fa49a39a22c8920.png", CategoryID: 2, Status: tables.ContentStatusPublish, PublishTime: time.Now(), Promotes: tables.ContentPromoteIndexImage | tables.ContentPromoteLatest}, {Subject: "攻击类", Content: "

测试内容2

", Cover: "contents/25510c2d7e8c3dcc8c4e17b5787e1765.png", CategoryID: 11, Status: tables.ContentStatusPublish, PublishTime: time.Now(), Promotes: tables.ContentPromoteIndexImage}, {Subject: "步伐类", Content: "

测试内容3

", Cover: "contents/ca2d7c6650b11683d5af710583c5dbf0.png", CategoryID: 11, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "境界系统", Content: "

测试内容4

", Cover: "contents/9b17f01564d8a207de42e114aa5c9b2e.png", CategoryID: 13, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, {Subject: "出入境", Content: "

测试内容5

", Cover: "contents/cac4665a7441c3ceeea3b19bdd3d0ffd.png", CategoryID: 13, Status: tables.ContentStatusPublish, PublishTime: time.Now()}, } if result := db.Create(&contents); result.Error != nil { log.Fatal(result.Error) } log.Println("Migrated") }