package main

import (
	"ability/controllers"
	"ability/protocol"
	_ "ability/routers"
	"ability/services/im"
	"github.com/astaxie/beego"
	_ "github.com/go-sql-driver/mysql"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/common"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/config"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/orm"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/redis"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/websocket"
	"time"
)

func init() {
	time.Local = time.FixedZone("CST", 3600*8)
	log.InitLog(config.Logger{
		Filename: "app.log",
		Level:    "7",
	})
	//TODO:kafka配置
	log.InitKafkaLogger(log.KafkaConfig{
		Topic: "ability",
		Addrs: []string{"127.0.0.1:9092"},
		Level: 6,
	})
	err := redis.InitWithDb(100, beego.AppConfig.String("redis_add_port"), beego.AppConfig.String("redis_auth"), "0")
	if err != nil {
		log.Fatal(err)
		panic(err)
	}
	orm.NewBeeormEngine(config.Mysql{
		DataSource: beego.AppConfig.String("data_source"),
		MaxIdle:    100,
		MaxOpen:    100,
	})
	//TODO:邮件服务配置
	common.InitMailService(&common.MailConfig{
		//Host:"smtp.qq.com",
		//Port:465,
		//From:"785410885@qq.com",
		//Password:"ibfduqhfmgypbffe", //授权码
		//IsUseSsl:true,
	})
	im.InitImClient(beego.AppConfig.String("net_im_base_url"),beego.AppConfig.String("net_im_app_key"),beego.AppConfig.String("net_im_app_secret"))
	websocket.InitWebsocketConnmgrs(10)
}

func main() {
	defer func() {
		log.Info("app on stop!")
	}()
	beego.InsertFilter("/*", beego.BeforeRouter, controllers.FilterComm)
	protocol.InitMessageCode()
	log.Info("app on start!")
	log.Info("Beego Run Mode:", beego.BConfig.RunMode)

	beego.Run()
}