70 lines
1.2 KiB
Go
70 lines
1.2 KiB
Go
package script
|
|
|
|
import (
|
|
"website-nav/global/client"
|
|
"website-nav/model"
|
|
"website-nav/service"
|
|
"website-nav/utils"
|
|
)
|
|
|
|
type script struct{}
|
|
|
|
func New() script {
|
|
return script{}
|
|
}
|
|
|
|
func (s script) Do() error {
|
|
if err := s.migrate(); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := s.createSuperAdmin(); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// migrate
|
|
// @description: 生成数据库
|
|
// @receiver s
|
|
// @return error
|
|
func (s script) migrate() error {
|
|
var ent = []any{
|
|
new(model.User),
|
|
new(model.NavigationType),
|
|
new(model.Navigation),
|
|
}
|
|
|
|
return client.DB.AutoMigrate(ent...)
|
|
}
|
|
|
|
// createSuperAdmin
|
|
// @description: 创建超级管理员
|
|
// @receiver s
|
|
// @return error
|
|
func (s script) createSuperAdmin() error {
|
|
var count int64
|
|
if err := client.DB.Model(&model.User{}).
|
|
Where("account = ?", "admin").Count(&count).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
// 没有超管就创建一个
|
|
if count > 0 {
|
|
return nil
|
|
}
|
|
|
|
avatar, err := utils.Avatar().GenerateAvatar(true)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return service.User().CreateUser(&model.User{
|
|
Avatar: avatar,
|
|
Nickname: "超级管理员",
|
|
Account: "admin",
|
|
Contact: "",
|
|
Password: "admin123",
|
|
})
|
|
}
|