Config.go 1.99 KB
package Config

import (
	"github.com/bitly/go-simplejson"
	cmap "github.com/orcaman/concurrent-map"
	"src/Common/Request"
	"sync"
	"time"
)

type Config struct {
	Ini map[string]string  //Ini配置
	Sys cmap.ConcurrentMap //Sys配置
	Sps cmap.ConcurrentMap //Sp配置
	Sites cmap.ConcurrentMap //Site配置
}

var config *Config
var once sync.Once

func GetInstance() *Config {
	once.Do(func() {
		config = new(Config)
		config.Ini = initIniConfig("./", "config.ini", "debug")
		initLogConfig(config.Ini["log_path"], config.Ini["log_filename"], 24*30*time.Hour, 1*time.Hour)
		config.Sys = cmap.New()
		config.Sps = cmap.New()
		config.Sites = cmap.New()

	})
	return config
}

func (this *Config) InitSysConfig() error {
	url := this.Ini["api_conf_sys"]
	var data string = ""
	var err error
	data, err = Request.Get(url)
	if err == nil {
		jsonObj, err1 := simplejson.NewJson([]byte(data))
		if err1 != nil {
			err = err1
		} else {
			sysConf, err2 := jsonObj.Map()
			if err2 != nil {
				err = err2
			} else {
				for k, v := range sysConf {
					//log.Infoln(k, v)
					this.Sys.Set(k, v)
				}
			}
		}
	}
	return err
}

func (this *Config) InitSpsConfig() error {
	url := this.Ini["api_conf_sps"]
	var data string = ""
	var err error
	data, err = Request.Get(url)
	if err == nil {
		jsonObj, err1 := simplejson.NewJson([]byte(data))
		if err1 != nil {
			err = err1
		} else {
			spsConf, err2 := jsonObj.Map()
			if err2 != nil {
				err = err2
			} else {
				for k, v := range spsConf {
					//log.Infoln(k, v)
					this.Sps.Set(k, v)
				}
			}
		}
	}
	return err
}

func (this *Config) InitSitesConfig() error {
	url := this.Ini["api_conf_sites"]
	var data string = ""
	var err error
	data, err = Request.Get(url)
	if err == nil {
		jsonObj, err1 := simplejson.NewJson([]byte(data))
		if err1 != nil {
			err = err1
		} else {
			sitesConf, err2 := jsonObj.Map()
			if err2 != nil {
				err = err2
			} else {
				for k, v := range sitesConf {
					//log.Infoln(k, v)
					this.Sites.Set(k, v)
				}
			}
		}
	}
	return err
}