package base import ( "fmt" "github.com/druidcaesa/gotool" _ "github.com/go-sql-driver/mysql" "log" "time" "ulink-admin/config" "ulink-admin/pkg/common" redisTool "ulink-admin/pkg/redistool" "xorm.io/xorm" ) // X 全局DB var ( SqlDB *xorm.Engine RedisDB *redisTool.RedisClient ) func init() { var err error //配置mysql数据库 mysql := config.GetMysqlCfg() jdbc := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", mysql.Username, mysql.Password, mysql.Host, mysql.Port, mysql.Database) SqlDB, err = xorm.NewEngine(mysql.ShowType, jdbc) if err != nil { log.Fatalf("db error: %#v\n", err.Error()) } err = SqlDB.Ping() if err != nil { log.Printf("db connect error: %#v\n", err.Error()) } SqlDB.SetMaxIdleConns(10) SqlDB.SetMaxOpenConns(100) timer := time.NewTicker(time.Minute * 30) go func(x *xorm.Engine) { for range timer.C { err = x.Ping() if err != nil { log.Fatalf("db connect error: %#v\n", err.Error()) } } }(SqlDB) SqlDB.ShowSQL(true) if config.GetServerCfg().Redis { //初始化redis开始 redisCfg := config.GetRedisCfg() redisOpt := common.RedisConnOpt{ Enable: true, Host: redisCfg.RedisHost, Port: int32(redisCfg.Port), Password: redisCfg.RedisPwd, Index: int32(redisCfg.RedisDB), TTL: 240, } RedisDB = redisTool.NewRedis(redisOpt) } //配置redis结束 //缓存初始化数据 //saveCache() } func GetBeanByIdDesc(bean interface{}) { _, err := SqlDB.NewSession().Desc("id").Limit(1).Get(bean) if err != nil { gotool.Logs.ErrorLog().Println(err) } } // 初始化缓存数据 /*func saveCache() { initDict() initConfig() } func initDict() { //查询字典类型数据 dictTypeDao := new(DictTypeDao) typeAll := dictTypeDao.FindAll() //所有字典数据 d := new(DictDataDao) listData := d.GetDiceDataAll() m := new(model.SysDictData) for _, dictType := range typeAll { dictData := make([]model.SysDictData, 0) for _, data := range *listData { if dictType.DictType == data.DictType { dictData = append(dictData, data) } } RedisDB.SET(dictType.DictType, m.MarshalDictList(dictData)) } } func initConfig() { //查询配置数据存入到缓存中 configDao := new(ConfigDao) configSession := configDao.sql(SqlDB.NewSession()) configs := make([]*model.SysConfig, 0) err := configSession.Find(&configs) if err != nil { gotool.Logs.ErrorLog().Println(err) return } m2 := new(model.SysConfig) for _, sysConfig := range configs { RedisDB.SET(sysConfig.ConfigKey, m2.Marshal(*sysConfig)) } }*/