You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
2.2 KiB
Go

package boot
import (
"joybuywork/internal/app"
"joybuywork/internal/config"
"joybuywork/internal/consts"
"joybuywork/internal/repository/dao"
"joybuywork/internal/server"
"joybuywork/internal/service/crons"
"joybuywork/internal/service/queue/consumer"
"joybuywork/internal/service/queue/consumer/campaignnotice"
"joybuywork/internal/service/queue/consumer/statcampaign"
"joybuywork/internal/service/queue/delay"
"joybuywork/internal/service/queue/producer"
"joybuywork/internal/utils"
"flag"
"fmt"
"time"
)
// Init 初始化活动配置和全局变量
func Init() (err error) {
// 启动环境获取
env := flag.String("env", "local", "environment, can be 'dev', 'test' or 'prod'")
flag.Parse()
var filePath = config.FilePath{
ConfigName: fmt.Sprintf("config-%s", *env),
ConfigType: "yaml",
ConfigPath: "./etc",
}
err = config.LoadConfig(filePath)
if err != nil {
return
}
//报警推送,一定要先初始化推送再开启日志
err = app.InitFeiShu()
if err != nil {
return
}
//日志
app.InitLogger()
//mysql
err = app.InitDB()
if err != nil {
return
}
// 设置dao的数据库
dao.SetDefault(app.DB.Client)
//redis
err = app.InitRedis()
if err != nil {
return
}
err = app.InitNode()
if err != nil {
return
}
app.InitSubLock()
// 采集
app.SetUpCollector()
err = app.InitEtcdCli()
if err != nil {
return
}
//kafka
err = app.InitKafka()
if err != nil {
return
}
//定时任务
crons.SetUp()
//队列生产者
producer.SetUp()
//队列消费者
err = queue()
if err != nil {
return
}
// 固定的奖品数据
err = app.LangDataInit()
if err != nil {
return
}
err = app.AdsInit("")
if err != nil {
return
}
app.InitCollect()
return
}
// Run 服务启动
func Run() {
_ = server.Run()
// 初始化micro的一些服务
app.InitMicro()
app.FeishuNormalSend("[%s]「%s」[%s] 服务启动", utils.GetIp(), config.Config.Server.Env, consts.ServiceName)
}
func Shutdown() {
consumer.Stop()
delay.Stop()
time.Sleep(5 * time.Second)
}
func queue() (err error) {
err = campaignnotice.Run()
if err != nil {
return
}
err = statcampaign.Run()
if err != nil {
return
}
err = delay.Setup()
if err != nil {
return
}
return
}