123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package charge
- import (
- "context"
- "fmt"
- "time"
- model "go-common/app/job/main/growup/model/charge"
- task "go-common/app/job/main/growup/service"
- "go-common/library/log"
- "golang.org/x/sync/errgroup"
- )
- const (
- _layout = "2006-01-02"
- _layoutSec = "2006-01-02 15:04:05"
- )
- var (
- _dbInsert = 1
- _dbUpdate = 2
- _batchSize = 2000
- _limitSize = 2000
- startWeeklyDate time.Time
- startMonthlyDate time.Time
- )
- // RunAndSendMail run and send mail
- func (s *Service) RunAndSendMail(c context.Context, date time.Time) (err error) {
- var msg, msgVideo, msgColumn, msgBgm string
- mailReceivers := []string{"shaozhenyu@bilibili.com", "gaopeng@bilibili.com", "limengqing@bilibili.com"}
- var (
- eg errgroup.Group
- avBgmCharge = make(chan []*model.AvCharge, 1000)
- )
- // check task
- defer func() {
- task.GetTaskService().SetTaskStatus(c, task.TaskCreativeCharge, date.Format(_layout), err)
- if err != nil {
- msg = err.Error()
- }
- msgErr := s.email.SendMail(date, msg, "创作激励每日补贴%d年%d月%d日", mailReceivers...)
- if msgErr != nil {
- log.Error("s.email.SendMail error(%v)", msgErr)
- }
- }()
- err = task.GetTaskService().TaskReady(c, date.Format("2006-01-02"), task.TaskAvCharge, task.TaskCmCharge, task.TaskBgmSync)
- if err != nil {
- return
- }
- eg.Go(func() (err error) {
- startTime := time.Now().Unix()
- if err = s.runVideo(c, date, avBgmCharge); err != nil {
- log.Error("s.runVideo error(%v)", err)
- } else {
- msgVideo = fmt.Sprintf("%s 视频补贴计算完成,耗时%ds\n", date.Format("2006-01-02"), time.Now().Unix()-startTime)
- }
- return
- })
- eg.Go(func() (err error) {
- startTime := time.Now().Unix()
- if err = s.runColumn(c, date); err != nil {
- log.Error("s.runColumn error(%v)", err)
- } else {
- msgColumn = fmt.Sprintf("%s 专栏补贴计算完成,耗时%ds\n", date.Format("2006-01-02"), time.Now().Unix()-startTime)
- }
- return
- })
- eg.Go(func() (err error) {
- startTime := time.Now().Unix()
- if err = s.runBgm(c, date, avBgmCharge); err != nil {
- log.Error("s.runBgm error(%v)", err)
- } else {
- msgBgm = fmt.Sprintf("%s 素材补贴计算完成,耗时%ds\n", date.Format("2006-01-02"), time.Now().Unix()-startTime)
- }
- return
- })
- if err = eg.Wait(); err != nil {
- log.Error("run readGroup.Wait error(%v)", err)
- }
- msg = fmt.Sprintf("%s,%s,%s", msgVideo, msgColumn, msgBgm)
- return
- }
- func getStartWeeklyDate(date time.Time) time.Time {
- for date.Weekday() != time.Monday {
- date = date.AddDate(0, 0, -1)
- }
- return date
- }
- func getStartMonthlyDate(date time.Time) time.Time {
- return time.Date(date.Year(), date.Month(), 1, 0, 0, 0, 0, time.Local)
- }
|