123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- package service
- import (
- "context"
- "fmt"
- "time"
- "go-common/app/job/main/growup/conf"
- "go-common/app/job/main/growup/dao"
- "go-common/app/job/main/growup/dao/charge"
- "go-common/app/job/main/growup/dao/dataplatform"
- "go-common/app/job/main/growup/dao/email"
- "go-common/app/job/main/growup/dao/income"
- "go-common/app/job/main/growup/dao/tag"
- "go-common/app/job/main/growup/service/ctrl"
- "go-common/library/log"
- "go-common/library/queue/databus"
- )
- // Service struct
- type Service struct {
- conf *conf.Config
- dao *dao.Dao
- email *email.Dao
- dp *dataplatform.Dao
- tag *tag.Dao
- income *income.Dao
- charge *charge.Dao
- // databus sub
- arcSub *databus.Databus
- }
- // New fn
- func New(c *conf.Config, executor ctrl.Executor) (s *Service) {
- s = &Service{
- conf: c,
- dao: dao.New(c),
- email: email.New(c),
- dp: dataplatform.New(c),
- tag: tag.New(c),
- income: income.New(c),
- charge: charge.New(c),
- arcSub: databus.New(c.ArchiveSub),
- }
- // init task status service
- taskSvr = &taskService{
- dao: s.dao,
- dp: s.dp,
- }
- log.Info("service start")
- executor.Submit(
- s.checkExpired,
- s.updateDateBlacklist,
- s.sendMail,
- s.updateCheat,
- s.mailTagIncome,
- s.calCreativeActivity,
- s.updateUpInfoVideo,
- s.creativeBudget,
- s.checkAvBreach,
- s.checkUpPunish,
- s.archiveConsume,
- s.syncIncomeBubbleMetaTask,
- s.snapshotIncomeBubbleTask,
- )
- return s
- }
- // check the account state of video up
- func (s *Service) checkExpired(ctx context.Context) {
- for {
- // up_info_video
- s.expiredCheck(0, 5, 0, "up_info_video") // check all expired from quit to default
- s.expiredCheck(0, 7, 3, "up_info_video") // check all expired from forbidden to signed
- s.expiredCheck(1, 4, 0, "up_info_video") // check ugc expired from reject to default
- s.expiredCheck(2, 4, 1, "up_info_video") // check pgc expired from reject to pre-audit
- // up_info_column
- s.expiredCheck(0, 5, 0, "up_info_column") // check all expired from quit to default
- s.expiredCheck(0, 7, 3, "up_info_column") // check all expired from forbidden to signed
- s.expiredCheck(1, 4, 0, "up_info_column") // check ugc expired from reject to default
- s.expiredCheck(2, 4, 1, "up_info_column") // check pgc expired from reject to pre-audit
- time.Sleep(NextDay(0, 0, 0))
- }
- }
- // updateDateBlacklist update blacklist at 17:00 every day
- func (s *Service) updateDateBlacklist(ctx context.Context) {
- for {
- time.Sleep(NextDay(17, 0, 0))
- msg := ""
- log.Info("Exec growup-job updateDateBlacklist begin:%v", time.Now().Format("2006-01-02 15:04:05"))
- err := s.UpdateBlacklist(context.TODO())
- if err != nil {
- msg = fmt.Sprintf("UpdateBlacklist error(%v)", err)
- } else {
- msg = "Success"
- }
- err = s.email.SendMail(time.Now(), msg, "创作激励同步黑名单%d年%d月%d日", "shaozhenyu@bilibili.com", "gaopeng@bilibili.com", "limengqing@bilibili.com")
- if err != nil {
- log.Error("s.email.SendMail error(%v)", err)
- }
- log.Info("Exec growup-job updateDateBlacklist end:%v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) updateUpInfoVideo(ctx context.Context) {
- var mailReceivers []string
- for _, v := range s.conf.Mail.Send {
- if v.Type == 4 {
- mailReceivers = v.Addr
- break
- }
- }
- for {
- time.Sleep(NextDay(11, 0, 0))
- log.Info("Exec growup-job updateUpInfoVideo begin:%v", time.Now().Format("2006-01-02 15:04:05"))
- msg := ""
- err := s.UpdateUpInfo(context.TODO())
- if err != nil {
- msg = fmt.Sprintf("s.UpdateUpInfo error(%v)", err)
- } else {
- msg, err = s.autoExamination(context.TODO())
- if err != nil {
- msg = fmt.Sprintf("s.autoExamination error(%v)", err)
- }
- }
- err = s.email.SendMail(time.Now(), msg, "创作激励自动过审%d年%d月%d日", mailReceivers...)
- if err != nil {
- log.Error("s.email.SendMail error(%v)", err)
- }
- log.Info("Exec growup-job updateUpInfoVideo end:%v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) sendMail(ctx context.Context) {
- for {
- time.Sleep(NextDay(12, 0, 0))
- log.Info("Exec growup-job sendMail begin:%v", time.Now().Format("2006-01-02 15:04:05"))
- s.CombineMails()
- log.Info("Exec growup-job sendMail end:%v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) updateCheat(ctx context.Context) {
- for {
- time.Sleep(NextDay(13, 0, 0))
- log.Info("Exec growup-job updateCheat begin: %v", time.Now().Format("2006-01-02 15:04:05"))
- t := time.Now().Add(-24 * time.Hour)
- s.CheatStatistics(context.TODO(), t)
- log.Info("Exec growup-job updateCheat end: %v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) mailTagIncome(ctx context.Context) {
- for {
- time.Sleep(NextDay(19, 30, 0))
- log.Info("Exec growup-job mailTagIncome begin: %v", time.Now().Format("2006-01-02 15:04:05"))
- t := time.Now().Add(-24 * time.Hour)
- date := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
- s.sendTagIncome(context.TODO(), date)
- log.Info("End growup-job mailTagIncome: %v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) calCreativeActivity(ctx context.Context) {
- for {
- time.Sleep(NextDay(15, 30, 0))
- msg := ""
- log.Info("Exec growup-job calCreativeActivity begin: %v", time.Now().Format("2006-01-02 15:04:05"))
- t := time.Now().Add(-24 * time.Hour)
- date := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
- err := s.CreativeActivity(context.TODO(), date)
- if err != nil {
- msg = fmt.Sprintf("calCreativeActivity error(%v)", err)
- } else {
- msg = "Success"
- }
- err = s.email.SendMail(date, msg, "创作激励活动每日计算%d年%d月%d日", "shaozhenyu@bilibili.com", "gaopeng@bilibili.com", "limengqing@bilibili.com")
- if err != nil {
- log.Error("s.email.SendMail error(%v)", err)
- }
- log.Info("End growup-job calCreativeActivity: %v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) creativeBudget(ctx context.Context) {
- for {
- time.Sleep(NextDay(20, 0, 0))
- msg := ""
- log.Info("Exec growup-job creativeBudget begin: %v", time.Now().Format("2006-01-02 15:04:05"))
- t := time.Now().Add(-24 * time.Hour)
- date := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
- err := s.CreativeBudget(context.TODO(), date)
- if err != nil {
- msg = fmt.Sprintf("creativeBudget error(%v)", err)
- } else {
- msg = "Success"
- }
- err = s.email.SendMail(date, msg, "创作激励预算每日计算%d年%d月%d日", "shaozhenyu@bilibili.com", "gaopeng@bilibili.com", "limengqing@bilibili.com")
- if err != nil {
- log.Error("s.email.SendMail error(%v)", err)
- }
- log.Info("End growup-job creativeBudget: %v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) checkAvBreach(ctx context.Context) {
- var mailReceivers []string
- for _, v := range s.conf.Mail.Send {
- if v.Type == 4 {
- mailReceivers = v.Addr
- break
- }
- }
- for {
- time.Sleep(NextDay(0, 0, 0))
- log.Info("Exec growup-job check and auto breach av begin: %v", time.Now().Format("2006-01-02 15:04:05"))
- t := time.Now().Add(-48 * time.Hour)
- date := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
- msg, err := s.autoAvBreach(context.TODO(), date.Format(_layout))
- if err != nil {
- msg = fmt.Sprintf("autoAvBreach error(%v)", err)
- }
- err = s.email.SendMail(date, msg, "创作激励自制转转载每日扣除%d年%d月%d日", mailReceivers...)
- if err != nil {
- log.Error("s.email.SendMail error(%v)", err)
- }
- log.Info("End growup-job autoAvBreach: %v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) checkUpPunish(ctx context.Context) {
- var mailReceivers []string
- for _, v := range s.conf.Mail.Send {
- if v.Type == 4 {
- mailReceivers = v.Addr
- break
- }
- }
- for {
- time.Sleep(NextDay(10, 0, 0))
- if time.Now().Weekday() != time.Monday {
- continue
- }
- log.Info("Exec growup-job checkUpPunish begin: %v", time.Now().Format("2006-01-02 15:04:05"))
- msg, err := s.autoUpPunish(context.TODO())
- if err != nil {
- msg = fmt.Sprintf("s.autoUpPunish error(%v)", err)
- }
- err = s.email.SendMail(time.Now(), msg, "创作激励自制转转载处罚%d年%d月%d日", mailReceivers...)
- if err != nil {
- log.Error("s.email.SendMail error(%v)", err)
- }
- log.Info("End growup-job checkUpPunish: %v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) syncIncomeBubbleMetaTask(ctx context.Context) {
- for {
- msg := "ok"
- time.Sleep(NextDay(12, 0, 0))
- log.Info("Exec growup-job syncIncomeBubbleMetaTask begin: %v", time.Now().Format("2006-01-02 15:04:05"))
- t := time.Now().Add(-24 * time.Hour)
- date := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
- err := s.SyncIncomeBubbleMetaTask(context.TODO(), date)
- if err != nil {
- msg = fmt.Sprintf("s.syncIncomeBubbleMetaTask error(%v)", err)
- }
- err = s.email.SendMail(time.Now(), msg, "创作激励同步动态转发抽奖%d年%d月%d日", "shaozhenyu@bilibili.com", "gaopeng@bilibili.com", "limengqing@bilibili.com")
- if err != nil {
- log.Error("s.email.SendMail error(%v)", err)
- }
- log.Info("End growup-job syncIncomeBubbleMetaTask: %v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- func (s *Service) snapshotIncomeBubbleTask(ctx context.Context) {
- for {
- msg := "ok"
- time.Sleep(NextDay(19, 0, 0))
- log.Info("Exec growup-job snapshotIncomeBubbleTask begin: %v", time.Now().Format("2006-01-02 15:04:05"))
- t := time.Now().Add(-24 * time.Hour)
- date := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local)
- err := s.SnapshotBubbleIncomeTask(context.TODO(), date)
- if err != nil {
- msg = fmt.Sprintf("s.snapshotIncomeBubbleTask error(%v)", err)
- }
- err = s.email.SendMail(time.Now(), msg, "创作激励动态转发抽奖收入同步%d年%d月%d日", "shaozhenyu@bilibili.com", "gaopeng@bilibili.com", "limengqing@bilibili.com")
- if err != nil {
- log.Error("s.email.SendMail error(%v)", err)
- }
- log.Info("End growup-job snapshotIncomeBubbleTask: %v", time.Now().Format("2006-01-02 15:04:05"))
- }
- }
- // NextDay next day x hours
- func NextDay(hour, min, second int) time.Duration {
- n := time.Now()
- d := time.Date(n.Year(), n.Month(), n.Day(), hour, min, second, 0, n.Location())
- for !d.After(n) {
- d = d.AddDate(0, 0, 1)
- }
- return time.Until(d)
- }
- // Close close the service
- func (s *Service) Close() {
- s.dao.Close()
- s.tag.Close()
- s.income.Close()
- s.charge.Close()
- }
- // Ping check server ok.
- func (s *Service) Ping(c context.Context) (err error) {
- return s.dao.Ping(c)
- }
|