Files
gva/server/source/system/user.go
PiexlMax(奇淼 283143e1bf 发布v2.7.8Beta1 (#1957)
* beta:2.7.8-a 增加自动化创建树形结构 (#1941)

* feat: 支持创建树形结构

---------

Co-authored-by: piexlMax(奇淼 <qimiaojiangjizhao@gmail.com>

* 优化user store部分写法

* Update user.js

* feat: 升级版本号

* Dev 278 beta2 (#1954)

* 在关闭详情弹窗后 detailFrom为空对象,arr为undefined 使用slice控制台会报错

* 查询不重置pageSize

* 优化主题模式相关内容

* 优化弹窗手机端显示

* bugfix:PostgreSQL initdb (#1953)

* bugfix:postgresql增加显示指定template

---------

Co-authored-by: PiexlMax(奇淼 <165128580+pixelmaxQm@users.noreply.github.com>

---------

Co-authored-by: zayn <972858472@qq.com>
Co-authored-by: Azir <2075125282@qq.com>
Co-authored-by: Qing Liang <106448173+xue-ding-e@users.noreply.github.com>

* docs:调整部分代码注释以及代码格式

* feat: 自动化代码字典支持多选

* fix:调整值接收器和指针接收器

* feat: 支持导出表格复制,优化增加方法页面。

* chore:初始化代码规范化。

---------

Co-authored-by: piexlMax(奇淼 <qimiaojiangjizhao@gmail.com>
Co-authored-by: Azir <2075125282@qq.com>
Co-authored-by: zayn <972858472@qq.com>
Co-authored-by: Qing Liang <106448173+xue-ding-e@users.noreply.github.com>
Co-authored-by: cjb <75364055@qq.com>
2024-12-08 21:17:21 +08:00

107 lines
3.0 KiB
Go

package system
import (
"context"
sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system"
"github.com/flipped-aurora/gin-vue-admin/server/service/system"
"github.com/flipped-aurora/gin-vue-admin/server/utils"
"github.com/gofrs/uuid/v5"
"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.Must(uuid.NewV4()),
Username: "admin",
Password: adminPassword,
NickName: "Mr.奇淼",
HeaderImg: "https://qmplusimg.henrongyi.top/gva_header.jpg",
AuthorityId: 888,
Phone: "17611111111",
Email: "333333333@qq.com",
},
{
UUID: uuid.Must(uuid.NewV4()),
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
}