Files

123 lines
3.7 KiB
Go
Raw Normal View History

2021-09-28 11:47:19 +08:00
package common
import (
2021-12-01 11:31:55 +08:00
config2 "SciencesServer/app/basic/config"
2021-09-28 11:47:19 +08:00
"SciencesServer/app/common/model"
"SciencesServer/config"
"SciencesServer/serve/orm"
2021-12-03 15:22:23 +08:00
"SciencesServer/utils"
2021-09-28 11:47:19 +08:00
)
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) {
2021-12-03 15:22:23 +08:00
err := db.Migrator().CreateTable(v.iModel)
if err != nil {
panic(err)
}
2021-09-28 11:47:19 +08:00
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{} {
2021-12-03 15:22:23 +08:00
return &model.SysUser{Account: "admin", Name: "商挈智能", Mobile: "13888888888", Password: utils.Md5String("123456"),
2021-09-28 11:47:19 +08:00
IsAdmin: model.SysUserAdministratorForAdmin, Remark: "超级管理员"}
}},
2021-12-03 15:22:23 +08:00
&synchronized{iModel: model.NewSysUserRole()}, &synchronized{iModel: model.NewSysUserTenant()},
2021-09-28 11:47:19 +08:00
&synchronized{iModel: model.NewSysDepartment()},
&synchronized{iModel: model.NewSysRole()}, &synchronized{iModel: model.NewSysRoleMenu()}, &synchronized{iModel: model.NewSysRoleAuth()},
2021-10-27 13:27:01 +08:00
// 配置管理
&synchronized{iModel: model.NewSysConfig(), iValues: func() interface{} {
return nil
}},
2021-11-26 17:26:01 +08:00
&synchronized{iModel: model.NewSysPatent(), iValues: func() interface{} {
return nil
}},
2021-12-01 11:31:55 +08:00
&synchronized{iModel: model.NewSysIdentity(), iValues: func() interface{} {
out := make([]*model.SysIdentity, 0)
for k, v := range config2.TenantUserIdentityData {
registerCount := 1
if k == config2.TenantUserIdentityForCompany {
registerCount = -1
}
out = append(out, &model.SysIdentity{
Identity: k,
Name: v,
RegisterCount: registerCount,
IsExamine: 1,
})
}
return out
}},
2021-09-28 11:47:19 +08:00
// 日志管理
&synchronized{iModel: model.NewSysLog()}, &synchronized{iModel: model.NewSysUserLoginLog()},
2021-12-03 10:08:23 +08:00
// 用户管理
&synchronized{iModel: model.NewUserInstance()}, &synchronized{iModel: model.NewUserIdentity()},
&synchronized{iModel: model.NewUserPatent()}, &synchronized{iModel: model.NewUserBank()},
&synchronized{iModel: model.NewUserCompany()}, &synchronized{iModel: model.NewUserExpert()},
&synchronized{iModel: model.NewUserLaboratory()}, &synchronized{iModel: model.NewUserResearch()},
&synchronized{iModel: model.NewUserAgent()},
// 入驻管理
&synchronized{iModel: model.NewManageCompany()}, &synchronized{iModel: model.NewManageExpert()},
&synchronized{iModel: model.NewManageLaboratory()}, &synchronized{iModel: model.NewManageResearch()},
&synchronized{iModel: model.NewManageAgent()},
2021-09-28 11:47:19 +08:00
)
}
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()
}