background/vendor/wapi/config/apiconf.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
}