代码拉取完成,页面将自动刷新
package global
import (
"database/sql"
"fmt"
"gitee.com/pangxianfei/multiapp/consts"
"gitee.com/pangxianfei/multiapp/database"
"gitee.com/pangxianfei/multiapp/simple"
"gitee.com/pangxianfei/multiapp/sysmodel"
"gorm.io/gorm"
"gitee.com/pangxianfei/multiapp/buffer"
)
func SetAppExampleDB(AppId int64) (AppDB *gorm.DB) {
if AppId <= 0 {
return nil
}
var CurrInstanceDB *sysmodel.InstanceDb
var AppExampleDBDBNo string
AppExampleDBDBNo = fmt.Sprintf(consts.APP_DB_KEY, AppId)
newAppIdAppDB := buffer.CacheInstanceDb.GetCacheInstanceDb(AppId)
if newAppIdAppDB != nil && newAppIdAppDB.ID > 0 && newAppIdAppDB.AppId == AppId {
CurrInstanceDB = newAppIdAppDB
} else {
tenantDbWhere := &sysmodel.RetrieveDB{AppId: AppId}
if err := simple.DB().Debug().Where(tenantDbWhere).Find(&CurrInstanceDB).Error; err != nil {
return nil
}
buffer.CacheInstanceDb.SetCacheInstanceDb(CurrInstanceDB)
}
if _, ok := InstanceDBMapsObject[AppExampleDBDBNo]; ok && InstanceDBMapsObject[AppExampleDBDBNo].Db != nil {
var ThemTenantsDB *sysmodel.InstanceObjectDB
ThemTenantsDB = InstanceDBMapsObject[AppExampleDBDBNo]
if ThemTenantsDB.AppId == AppId && CurrInstanceDB.AppId == AppId {
AppDB = InstanceDBMapsObject[AppExampleDBDBNo].Db
}
}
if AppDB != nil {
return AppDB.Session(&gorm.Session{})
}
return SetSourceData(CurrInstanceDB)
}
func SetSourceData(CurrInstanceDB *sysmodel.InstanceDb) (InstanceDB *gorm.DB) {
var mysqlStr string
var dber *sql.DB
AppExampleDBDBNo := fmt.Sprintf(consts.APP_DB_KEY, CurrInstanceDB.AppId)
InstanceDB = MysqlOpenDb(CurrInstanceDB)
SaveConnectionObject := sysmodel.InstanceObjectDB{}
SaveConnectionObject.DbName = CurrInstanceDB.DbName
SaveConnectionObject.AppName = CurrInstanceDB.AppName
SaveConnectionObject.AppId = CurrInstanceDB.AppId
SaveConnectionObject.Prefix = CurrInstanceDB.Prefix
SaveConnectionObject.DriverName = CurrInstanceDB.DriverName
SaveConnectionObject.Db = InstanceDB
SaveConnectionObject.Dber = dber
SaveConnectionObject.ConnStr = mysqlStr
InstanceDBMutex.Lock()
defer InstanceDBMutex.Unlock()
InstanceDBMapsObject[AppExampleDBDBNo] = &SaveConnectionObject
return InstanceDB
}
func MysqlOpenDb(Instance *sysmodel.InstanceDb) (AppDB *gorm.DB) {
var DbDns string
//如果是使用外网IP
if Instance.NetSwitch == 2 {
DbDns = Instance.OuterNet
} else {
//内网IP
DbDns = Instance.Host
}
_, AppDB = database.OpenDB(Instance.DriverName, DbDns, Instance.Dbuser, Instance.Password, Instance.DbName, Instance.Port, Instance.Prefix, Instance.Charset, Instance.SetmaxIdleconns, Instance.Setmaxopenconns, Instance.Setconnmaxlifetime)
return AppDB
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。