54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"chatapp-cron/internal/config"
|
|
"chatapp-cron/internal/integration"
|
|
"chatapp-cron/internal/repo"
|
|
"chatapp-cron/internal/service"
|
|
"context"
|
|
"log"
|
|
"os/signal"
|
|
"syscall"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
cfg := config.Load()
|
|
|
|
repository, err := repo.New(cfg)
|
|
if err != nil {
|
|
log.Fatalf("init repository failed: %v", err)
|
|
}
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
defer cancel()
|
|
if err := repository.Ping(ctx); err != nil {
|
|
log.Fatalf("ping dependencies failed: %v", err)
|
|
}
|
|
|
|
javaClient := integration.New(cfg)
|
|
settlementService := service.NewWeekStarSettlementService(cfg, repository, javaClient)
|
|
roomTurnoverRewardService := service.NewRoomTurnoverRewardSettlementService(cfg, repository, javaClient)
|
|
|
|
workerCtx, workerCancel := context.WithCancel(context.Background())
|
|
defer workerCancel()
|
|
settlementService.Start(workerCtx)
|
|
roomTurnoverRewardService.Start(workerCtx)
|
|
log.Printf(
|
|
"week-star-job started. weekStarInterval=%s roomTurnoverInterval=%s timezone=%s javaOther=%s javaWallet=%s",
|
|
cfg.WeekStarSettleInterval,
|
|
cfg.RoomTurnoverSettleInterval,
|
|
cfg.WeekStarTimezone,
|
|
cfg.JavaOtherBaseURL,
|
|
cfg.JavaWalletBaseURL,
|
|
)
|
|
|
|
shutdownSignal, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
|
defer stop()
|
|
<-shutdownSignal.Done()
|
|
|
|
log.Printf("week-star-job shutdown signal received")
|
|
workerCancel()
|
|
time.Sleep(300 * time.Millisecond)
|
|
}
|