| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | package configimport (	"crypto/rsa"	"gitee.com/xuyiping_admin/pkg/di"	"os"	"strings"	"sync")var (	Module   = di.Provide(Options)	options  *AppConfig	appEnv   string	initOnce sync.Once)// AppConfig store all configuration optionstype AppConfig struct {	AppName        string `yaml:"app_name"`	AppEnv         string `yaml:"app_environment"`	Debug          bool   `yaml:"debug" env:"APP_DEBUG"`	HTTPServerAddr string `yaml:"http_server_addr" env:"HTTP_SERVER_ADDR"`	// 数据库配置 额外加载文件部分 database.yaml	StoreSetting StoreSetting `json:"storeSetting" yaml:"store"`	// redis 配置	RedisSetting RedisSetting `json:"RedisSetting" yaml:"redis_setting"`	JwtSecret    string       `json:"jwtSecret" yaml:"jwt_secret"`	ExcelSetting ExcelSetting `json:"excelSetting" yaml:"excel_setting"`	WechatSetting     WechatSetting     `json:"wechatSetting" yaml:"wechat_setting"`	JwtTokenKeyConfig JwtTokenKeyConfig `json:"jwtTokenKeyConfig"`	JwtExpireTime     int               `json:"jwtExpireTime" yaml:"jwt_expire_time"`}type JwtTokenKeyConfig struct {	PrivateKey *rsa.PrivateKey `json:"privateKey"`	PublicKey  *rsa.PublicKey  `json:"publicKey"`}type WechatSetting struct {	Appid  string `yaml:"appid"`	Secret string `yaml:"secret"`}type ExcelSetting struct {	SheetName string  `yaml:"sheet_name"` // = "Sheet1" //默认Sheet名称	Height    float64 `yaml:"height"`     // = 25.0     //默认行高度}// StoreSetting 数据库配置type StoreSetting struct {	// 开启 SyDb SQL 记录	DriverName      string `yaml:"driver_name" json:"driver_name"`	ShowSQL         bool   `yaml:"show_sql" env:"STORE_SHOW_SQL"`	KptEventDSNRW   string `yaml:"kpt_tmr_group_rw" env:"LINGO_COURSE_DSN_RW"`	KptEventDSNMigr string `yaml:"kpt_tmr_group_migr" env:"LINGO_COURSE_DSN_MIGR"`}type RedisSetting struct {	// sso 配置	SSOCache SSOCache `json:"SSOCache" yaml:"sso_cache"`}type SSOCache struct {	Addr        string `json:"addr" yaml:"addr"`	Requirepass string `json:"requirepass" yaml:"requirepass"`	DB          int    `json:"DB" yaml:"DB"`	Expiry      int    `json:"expiry" yaml:"expiry"`}func Options() *AppConfig {	return options}func init() {	appEnv = strings.ToLower(os.Getenv("APP_ENVIRONMENT"))	cfg := &AppConfig{}	var err error	initOnce.Do(func() {		switch appEnv {		default:			err = Initialize("app.test.yaml", cfg)		case "develop":			err = Initialize("app.develop.yaml", cfg)		case "production":			err = Initialize("app.production.yaml", cfg)		}		if err != nil {			panic(err)		}		cfg.JwtTokenKeyConfig = openPrivateKey()		options = cfg	})}
 |