✨ init project
This commit is contained in:
106
source/system/user.go
Normal file
106
source/system/user.go
Normal file
@@ -0,0 +1,106 @@
|
||||
package system
|
||||
|
||||
import (
|
||||
"context"
|
||||
sysModel "git.echol.cn/loser/lckt/model/system"
|
||||
"git.echol.cn/loser/lckt/service/system"
|
||||
"git.echol.cn/loser/lckt/utils"
|
||||
"github.com/google/uuid"
|
||||
"github.com/pkg/errors"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
const initOrderUser = initOrderAuthority + 1
|
||||
|
||||
type initUser struct{}
|
||||
|
||||
// auto run
|
||||
func init() {
|
||||
system.RegisterInit(initOrderUser, &initUser{})
|
||||
}
|
||||
|
||||
func (i *initUser) MigrateTable(ctx context.Context) (context.Context, error) {
|
||||
db, ok := ctx.Value("db").(*gorm.DB)
|
||||
if !ok {
|
||||
return ctx, system.ErrMissingDBContext
|
||||
}
|
||||
return ctx, db.AutoMigrate(&sysModel.SysUser{})
|
||||
}
|
||||
|
||||
func (i *initUser) TableCreated(ctx context.Context) bool {
|
||||
db, ok := ctx.Value("db").(*gorm.DB)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
return db.Migrator().HasTable(&sysModel.SysUser{})
|
||||
}
|
||||
|
||||
func (i *initUser) InitializerName() string {
|
||||
return sysModel.SysUser{}.TableName()
|
||||
}
|
||||
|
||||
func (i *initUser) InitializeData(ctx context.Context) (next context.Context, err error) {
|
||||
db, ok := ctx.Value("db").(*gorm.DB)
|
||||
if !ok {
|
||||
return ctx, system.ErrMissingDBContext
|
||||
}
|
||||
|
||||
ap := ctx.Value("adminPassword")
|
||||
apStr, ok := ap.(string)
|
||||
if !ok {
|
||||
apStr = "123456"
|
||||
}
|
||||
|
||||
password := utils.BcryptHash(apStr)
|
||||
adminPassword := utils.BcryptHash(apStr)
|
||||
|
||||
entities := []sysModel.SysUser{
|
||||
{
|
||||
UUID: uuid.New(),
|
||||
Username: "admin",
|
||||
Password: adminPassword,
|
||||
NickName: "Mr.奇淼",
|
||||
HeaderImg: "https://qmplusimg.henrongyi.top/gva_header.jpg",
|
||||
AuthorityId: 888,
|
||||
Phone: "17611111111",
|
||||
Email: "333333333@qq.com",
|
||||
},
|
||||
{
|
||||
UUID: uuid.New(),
|
||||
Username: "a303176530",
|
||||
Password: password,
|
||||
NickName: "用户1",
|
||||
HeaderImg: "https:///qmplusimg.henrongyi.top/1572075907logo.png",
|
||||
AuthorityId: 9528,
|
||||
Phone: "17611111111",
|
||||
Email: "333333333@qq.com"},
|
||||
}
|
||||
if err = db.Create(&entities).Error; err != nil {
|
||||
return ctx, errors.Wrap(err, sysModel.SysUser{}.TableName()+"表数据初始化失败!")
|
||||
}
|
||||
next = context.WithValue(ctx, i.InitializerName(), entities)
|
||||
authorityEntities, ok := ctx.Value(new(initAuthority).InitializerName()).([]sysModel.SysAuthority)
|
||||
if !ok {
|
||||
return next, errors.Wrap(system.ErrMissingDependentContext, "创建 [用户-权限] 关联失败, 未找到权限表初始化数据")
|
||||
}
|
||||
if err = db.Model(&entities[0]).Association("Authorities").Replace(authorityEntities); err != nil {
|
||||
return next, err
|
||||
}
|
||||
if err = db.Model(&entities[1]).Association("Authorities").Replace(authorityEntities[:1]); err != nil {
|
||||
return next, err
|
||||
}
|
||||
return next, err
|
||||
}
|
||||
|
||||
func (i *initUser) DataInserted(ctx context.Context) bool {
|
||||
db, ok := ctx.Value("db").(*gorm.DB)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
var record sysModel.SysUser
|
||||
if errors.Is(db.Where("username = ?", "a303176530").
|
||||
Preload("Authorities").First(&record).Error, gorm.ErrRecordNotFound) { // 判断是否存在数据
|
||||
return false
|
||||
}
|
||||
return len(record.Authorities) > 0 && record.Authorities[0].AuthorityId == 888
|
||||
}
|
||||
Reference in New Issue
Block a user