go-common/app/job/main/credit-timer/service/service.go
2019-04-22 18:49:16 +08:00

97 lines
1.7 KiB
Go

package service
import (
"context"
"time"
"go-common/app/job/main/credit-timer/conf"
"go-common/app/job/main/credit-timer/dao"
"go-common/library/log"
)
// Service struct of service.
type Service struct {
c *conf.Config
dao *dao.Dao
}
// New create service instance and return.
func New(c *conf.Config) (s *Service) {
s = &Service{
c: c,
dao: dao.New(c),
}
go s.loadConfproc()
go s.caseproc()
go s.juryproc()
go s.voteproc()
go s.kpiproc()
return
}
func (s *Service) loadConfproc() {
for {
s.loadConf(context.TODO())
time.Sleep(time.Duration(s.c.Judge.ConfTimer))
}
}
func (s *Service) caseproc() {
for {
s.caseProc(context.TODO())
time.Sleep(time.Duration(s.c.Judge.CaseTimer))
}
}
func (s *Service) juryproc() {
for {
s.juryProc(context.TODO())
time.Sleep(time.Duration(s.c.Judge.JuryTimer))
}
}
func (s *Service) voteproc() {
for {
s.voteProc(context.TODO())
time.Sleep(time.Duration(s.c.Judge.VoteTimer))
}
}
func (s *Service) kpiproc() {
var err error
for {
d := time.Now().AddDate(0, 0, 1)
ts := time.Until(time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 1, 0, time.Local))
time.Sleep(ts)
for {
err = s.kpiPointProc(context.TODO())
if err != nil {
log.Error("kpiPointProc err(%v)", err)
time.Sleep(time.Second * 5)
continue
}
break
}
log.Info("KPIPointproc err(%v)", err)
for {
err = s.KPIProc(context.TODO())
if err != nil {
log.Error("kpiProc err(%v)", err)
time.Sleep(time.Second * 5)
continue
}
break
}
log.Info("kpiproc err(%v)", err)
}
}
// Close kafka consumer close.
func (s *Service) Close() (err error) {
return
}
// Ping check service health.
func (s *Service) Ping(c context.Context) error {
return s.dao.Ping(c)
}