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 }