feat:完善项目
This commit is contained in:
84
app/common/init.go
Normal file
84
app/common/init.go
Normal file
@ -0,0 +1,84 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"SciencesServer/app/common/model"
|
||||
"SciencesServer/config"
|
||||
"SciencesServer/serve/orm"
|
||||
)
|
||||
|
||||
type synchronized struct {
|
||||
iModel model.IModel
|
||||
iValues func() interface{}
|
||||
Catch func() interface{}
|
||||
}
|
||||
|
||||
type caches struct {
|
||||
iModel model.IModel
|
||||
iValues func() interface{}
|
||||
toCache func(values interface{})
|
||||
}
|
||||
|
||||
func initModel() {
|
||||
db := orm.GetDB()
|
||||
|
||||
function := func(synchronized ...*synchronized) {
|
||||
for _, v := range synchronized {
|
||||
if !db.Migrator().HasTable(v.iModel) {
|
||||
_ = db.Migrator().CreateTable(v.iModel)
|
||||
|
||||
if v.iValues != nil && v.iValues() != nil {
|
||||
db.Table(v.iModel.TableName()).Create(v.iValues())
|
||||
}
|
||||
} else if v.Catch != nil && v.Catch() != nil {
|
||||
v.Catch()
|
||||
}
|
||||
}
|
||||
}
|
||||
function(
|
||||
&synchronized{iModel: model.NewSysTenant()}, &synchronized{iModel: model.NewSysTenantMenu()},
|
||||
&synchronized{iModel: model.NewSysConfig()},
|
||||
&synchronized{iModel: model.NewSysMenu()}, &synchronized{iModel: model.NewSysAuth()},
|
||||
&synchronized{iModel: model.NewSysUser(), iValues: func() interface{} {
|
||||
return &model.SysUser{Account: "admin", Name: "商挈智能", Mobile: "13888888888", Password: "123456",
|
||||
IsAdmin: model.SysUserAdministratorForAdmin, Remark: "超级管理员"}
|
||||
}},
|
||||
&synchronized{iModel: model.NewSysUserTenant()},
|
||||
&synchronized{iModel: model.NewSysDepartment()},
|
||||
&synchronized{iModel: model.NewSysRole()}, &synchronized{iModel: model.NewSysRoleMenu()}, &synchronized{iModel: model.NewSysRoleAuth()},
|
||||
&synchronized{iModel: model.NewSysUserRole()},
|
||||
// 日志管理
|
||||
&synchronized{iModel: model.NewSysLog()}, &synchronized{iModel: model.NewSysUserLoginLog()},
|
||||
)
|
||||
}
|
||||
func initCacheMode() {
|
||||
db := orm.GetDB()
|
||||
|
||||
function := func(cache ...*caches) {
|
||||
for _, v := range cache {
|
||||
if db.Migrator().HasTable(v.iModel) {
|
||||
if v.iValues != nil {
|
||||
if values := v.iValues(); values != nil {
|
||||
v.toCache(values)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function(
|
||||
&caches{iModel: model.NewSysTenant(), iValues: func() interface{} {
|
||||
out := make([]*model.SysConfig, 0)
|
||||
_ = model.Find(model.NewSysConfig(), &out)
|
||||
return out
|
||||
}, toCache: func(values interface{}) {
|
||||
out := values.([]*model.SysConfig)
|
||||
for _, v := range out {
|
||||
config.SystemConfig[v.Key] = v.Value
|
||||
}
|
||||
}},
|
||||
)
|
||||
}
|
||||
|
||||
func Init() {
|
||||
initModel()
|
||||
initCacheMode()
|
||||
}
|
Reference in New Issue
Block a user