269 lines
6.9 KiB
Go
269 lines
6.9 KiB
Go
package config
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"regexp"
|
|
"runtime"
|
|
"strings"
|
|
|
|
"git.jiaxianghudong.com/go/logs"
|
|
|
|
"gopkg.in/yaml.v2"
|
|
|
|
"git.jiaxianghudong.com/go/utils"
|
|
)
|
|
|
|
var ostype = runtime.GOOS
|
|
var (
|
|
DBHandle *sql.DB
|
|
conf ConfAPI
|
|
Lottert LottertConfig
|
|
)
|
|
|
|
type LottertConfig struct {
|
|
LottertData map[int]interface{} `yaml:"data"`
|
|
}
|
|
|
|
//type Lotteryconfiginfo struct {
|
|
// Id int `yaml:"id"`
|
|
// Dataidint int `yaml:"data_idint"`
|
|
// Countint int `yaml:"countint"`
|
|
// Weightint int `yaml:"weightint"`
|
|
// Typeint int `yaml:"typeint"`
|
|
// ConsumeValueint int `yaml:"consume_valueint"`
|
|
// Frozenint int `yaml:"frozenint"`
|
|
// Probabilityint int `yaml:"probabilityint"`
|
|
//}
|
|
|
|
type ConfAPI struct {
|
|
Listen int `yaml:"listen"` // 监听端口
|
|
RunMode string `yaml:"runmode"` // 服务运行模式
|
|
Gsdk EntityGsdk `yaml:"gsdk"`
|
|
Logs EntityLogs `yaml:"logs"` // 日志
|
|
RedisFifteen EntityRedis `yaml:"redis_fifteen"`
|
|
Redis0 EntityRedis `yaml:"redis0"`
|
|
Redis4 EntityRedis `yaml:"redis4"`
|
|
Redis5 EntityRedis `yaml:"redis5"`
|
|
Redis7 EntityRedis `yaml:"redis7"`
|
|
Redis8 EntityRedis `yaml:"redis8"`
|
|
MysqlMain EntityMysql `yaml:"mysql_main"`
|
|
MysqlLog EntityMysql `yaml:"mysql_log"`
|
|
MysqlExt EntityMysql `yaml:"mysql_ext"`
|
|
MysqlAgent EntityMysql `yaml:"mysql_agent"`
|
|
Brand EntityBrand `yaml:"brand"`
|
|
Ymrt EntityYmrt `yaml:"ymrt"`
|
|
AliOss EntityAliOss `yaml:"alioss"`
|
|
}
|
|
|
|
type EntityLogs struct {
|
|
Dir string `yaml:"dir"`
|
|
File string `yaml:"file"`
|
|
Level int `yaml:"level"`
|
|
SaveFile bool `yaml:"savefile"`
|
|
}
|
|
|
|
type EntityMysql struct {
|
|
Addr string `yaml:"addr"`
|
|
UserName string `yaml:"user"`
|
|
Password string `yaml:"password"`
|
|
Database string `yaml:"db"`
|
|
Charset string `yaml:"charset"`
|
|
MaxOpen int `yaml:"max_open"`
|
|
MaxIdle int `yaml:"max_idle"`
|
|
}
|
|
|
|
type EntityRedis struct {
|
|
Addr string `yaml:"addr"`
|
|
Pwd string `yaml:"password"`
|
|
DB int `yaml:"db"`
|
|
PoolSize int `yaml:"poolsize"`
|
|
}
|
|
|
|
// gsdk 服务配置
|
|
type EntityGsdk struct {
|
|
IP string `yaml:"ip"`
|
|
Port int `yaml:"port"`
|
|
AppID string `yaml:"app_id"` // 应用标识
|
|
AuthKey string `yaml:"auth_key"` // 授权密钥
|
|
}
|
|
type EntityBrand struct {
|
|
ID int `yaml:"id"`
|
|
Tag string `yaml:"tag"`
|
|
Domain string `yaml:"domain"`
|
|
Name string `yaml:"name"`
|
|
Userfrom int `yaml:"userfrom"`
|
|
Client int `yaml:"client"`
|
|
Tel string `yaml:"tel"`
|
|
}
|
|
type EntityYmrt struct {
|
|
Cdkey string `yaml:"cdkey"`
|
|
Pwd string `yaml:"pwd"`
|
|
Data Ymrtdata `yaml:"data"`
|
|
}
|
|
type Ymrtdata struct {
|
|
Ename string `yaml:"ename"`
|
|
Linkman string `yaml:"linkman"`
|
|
Phonenum string `yaml:"phonenum"`
|
|
Mobile string `yaml:"mobile"`
|
|
Email string `yaml:"email"`
|
|
Fax string `yaml:"fax"`
|
|
Address string `yaml:"address"`
|
|
Postcode string `yaml:"postcode"`
|
|
}
|
|
|
|
//
|
|
type EntityAliOss struct {
|
|
Endpoint string `yaml:"endpoint"`
|
|
AccessKeyID string `yaml:"access_key_id"`
|
|
AccessKeySecret string `yaml:"access_key_secret"`
|
|
Bucket string `yaml:"bucket"`
|
|
BucketUrl string `yaml:"bucket_url"`
|
|
Domain string `yaml:"domain"`
|
|
DomainUrl string `yaml:"domain_url"`
|
|
HttpHead string `yaml:"http_head"`
|
|
}
|
|
|
|
func Init() {
|
|
fmt.Println("--init config start")
|
|
|
|
// 初始化日志
|
|
str := utils.ReadConfFile("wapi.yaml")
|
|
/* 替换注释 */
|
|
reg := regexp.MustCompile(`\/\*[^(\*\/)]*\*\/`)
|
|
str = reg.ReplaceAllString(str, "")
|
|
|
|
/* 解析yaml */
|
|
err := yaml.Unmarshal([]byte(str), &conf)
|
|
|
|
//解析lottery配置
|
|
lottery := utils.ReadConfFile("lottery.yaml")
|
|
lotterystr := reg.ReplaceAllString(lottery, "")
|
|
lotterterr := yaml.Unmarshal([]byte(lotterystr), &Lottert)
|
|
logs.Debug(lotterterr)
|
|
|
|
/* 配制全局变量 */
|
|
if nil == err {
|
|
// host config
|
|
fmt.Println(fmt.Sprintf(" Listen:%d", conf.Listen))
|
|
fmt.Println(fmt.Sprintf(" RunMode:%s", conf.RunMode))
|
|
// gsdk
|
|
fmt.Println(fmt.Sprintf(" Gsdk:{IP:%s\tPort:%d\tAppID:%s\tAppKey:%s}",
|
|
conf.Gsdk.IP, conf.Gsdk.Port, conf.Gsdk.AppID, conf.Gsdk.AuthKey))
|
|
// logs
|
|
fmt.Println(fmt.Sprintf(" LOG:{Dir:%s\tFile:%s\tLevel:%d\tSaveFile:%t}",
|
|
conf.Logs.Dir, conf.Logs.File, conf.Logs.Level, conf.Logs.SaveFile))
|
|
// mysql
|
|
fmt.Println(fmt.Sprintf(" Mysql_main:{Addr:%s\tUserName:%s\tPwd:%s\tDB:%s\tMaxOpen:%d\tMaxIdle:%d}}",
|
|
conf.MysqlMain.Addr, conf.MysqlMain.UserName, conf.MysqlMain.Password,
|
|
conf.MysqlMain.Database, conf.MysqlMain.MaxOpen, conf.MysqlMain.MaxIdle))
|
|
|
|
fmt.Println(fmt.Sprintf(" Mysql_ext:{Addr:%s\tUserName:%s\tPwd:%s\tDB:%s\tMaxOpen:%d\tMaxIdle:%d}}",
|
|
conf.MysqlExt.Addr, conf.MysqlExt.UserName, conf.MysqlExt.Password,
|
|
conf.MysqlExt.Database, conf.MysqlExt.MaxOpen, conf.MysqlExt.MaxIdle))
|
|
|
|
fmt.Println(fmt.Sprintf(" Mysql_log:{Addr:%s\tUserName:%s\tPwd:%s\tDB:%s\tMaxOpen:%d\tMaxIdle:%d}}",
|
|
conf.MysqlLog.Addr, conf.MysqlLog.UserName, conf.MysqlLog.Password,
|
|
conf.MysqlLog.Database, conf.MysqlLog.MaxOpen, conf.MysqlLog.MaxIdle))
|
|
|
|
fmt.Println(fmt.Sprintf(" Mysql_agent:{Addr:%s\tUserName:%s\tPwd:%s\tDB:%s\tMaxOpen:%d\tMaxIdle:%d}}",
|
|
conf.MysqlAgent.Addr, conf.MysqlLog.UserName, conf.MysqlLog.Password,
|
|
conf.MysqlAgent.Database, conf.MysqlLog.MaxOpen, conf.MysqlLog.MaxIdle))
|
|
|
|
// redis
|
|
|
|
fmt.Println(fmt.Sprintf(" RedisFifteen:{Addr:%s\tPwd:%s\tDB:%d\t:PoolSize:%d\t}",
|
|
conf.RedisFifteen.Addr, conf.RedisFifteen.Pwd, conf.RedisFifteen.DB, conf.RedisFifteen.PoolSize))
|
|
fmt.Println("--init config end")
|
|
|
|
} else {
|
|
/* 打印日志 */
|
|
fmt.Println("--init config err :", err.Error())
|
|
}
|
|
}
|
|
|
|
func GetListen() int {
|
|
return conf.Listen
|
|
}
|
|
|
|
func GetGsdk() *EntityGsdk {
|
|
return &conf.Gsdk
|
|
}
|
|
|
|
// 获取日志配置
|
|
func GetLogs() *EntityLogs {
|
|
if GetRunMode() == "debug" {
|
|
conf.Logs.Dir = "../log"
|
|
if ostype == "windows" {
|
|
conf.Logs.Dir = "..\\log"
|
|
}
|
|
}
|
|
return &conf.Logs
|
|
}
|
|
|
|
// 获取运行模式
|
|
func GetRunMode() string {
|
|
return strings.TrimSpace(strings.ToLower(conf.RunMode))
|
|
}
|
|
|
|
func GetRedisFifteen() EntityRedis {
|
|
return conf.RedisFifteen
|
|
}
|
|
func GetRedis0() EntityRedis {
|
|
return conf.Redis0
|
|
}
|
|
func GetRedis4() EntityRedis {
|
|
return conf.Redis4
|
|
}
|
|
func GetRedis5() EntityRedis {
|
|
return conf.Redis5
|
|
}
|
|
func GetRedis7() EntityRedis {
|
|
return conf.Redis7
|
|
}
|
|
func GetRedis8() EntityRedis {
|
|
return conf.Redis8
|
|
}
|
|
|
|
func GetRedis15() EntityRedis {
|
|
return conf.Redis4
|
|
}
|
|
func GetLottertConfig() LottertConfig {
|
|
return Lottert
|
|
}
|
|
|
|
// GetMainDBConf 获取MYSQL
|
|
func GetMainDBConf() EntityMysql {
|
|
return conf.MysqlMain
|
|
}
|
|
|
|
// GetLogDBConf Log
|
|
func GetLogDBConf() EntityMysql {
|
|
return conf.MysqlLog
|
|
}
|
|
|
|
// GetExtDBConf Ext
|
|
func GetExtDBConf() EntityMysql {
|
|
return conf.MysqlExt
|
|
}
|
|
|
|
func GetAgentDBConf() EntityMysql {
|
|
return conf.MysqlAgent
|
|
}
|
|
|
|
//
|
|
func GetBrand() *EntityBrand {
|
|
return &conf.Brand
|
|
}
|
|
func Getymrt() *EntityYmrt {
|
|
return &conf.Ymrt
|
|
}
|
|
|
|
// GetAliOss 获取Redis对象
|
|
func GetAliOss() *EntityAliOss {
|
|
return &conf.AliOss
|
|
}
|
|
func GetLottery() *EntityBrand {
|
|
return &conf.Brand
|
|
}
|