service.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package income
  2. import (
  3. "context"
  4. "fmt"
  5. "time"
  6. "go-common/app/job/main/growup/conf"
  7. "go-common/app/job/main/growup/dao/dataplatform"
  8. "go-common/app/job/main/growup/dao/email"
  9. incomeD "go-common/app/job/main/growup/dao/income"
  10. "go-common/app/job/main/growup/service"
  11. "go-common/app/job/main/growup/service/ctrl"
  12. "go-common/library/log"
  13. )
  14. // Service struct
  15. type Service struct {
  16. conf *conf.Config
  17. dao *incomeD.Dao
  18. avCharge *AvChargeSvr
  19. income *Income
  20. ratio *ChargeRatioSvr
  21. email *email.Dao
  22. dp *dataplatform.Dao
  23. }
  24. // New fn
  25. func New(c *conf.Config, executor ctrl.Executor) (s *Service) {
  26. s = &Service{
  27. conf: c,
  28. dao: incomeD.New(c),
  29. email: email.New(c),
  30. dp: dataplatform.New(c),
  31. }
  32. s.avCharge = NewAvChargeSvr(s.dao)
  33. s.income = NewIncome(batchSize, s.dao)
  34. s.ratio = NewChargeRatioSvr(s.dao)
  35. log.Info("income service start")
  36. executor.Submit(
  37. s.calDailyCreativeIncome,
  38. s.syncBGM,
  39. )
  40. return s
  41. }
  42. func (s *Service) syncBGM(ctx context.Context) {
  43. for {
  44. time.Sleep(service.NextDay(1, 0, 0))
  45. msg := ""
  46. log.Info("sync BGM begin:%v", time.Now().Format("2006-01-02 15:04:05"))
  47. err := s.SyncBgmInfo(context.TODO())
  48. if err != nil {
  49. log.Error("s.SyncBgmInfo error(%v)", err)
  50. }
  51. if err != nil {
  52. msg = fmt.Sprintf("SyncBgmInfo error(%v)", err)
  53. } else {
  54. msg = "Success"
  55. }
  56. err = s.email.SendMail(time.Now(), msg, "创作激励同步bgm%d年%d月%d日", "shaozhenyu@bilibili.com", "gaopeng@bilibili.com", "limengqing@bilibili.com")
  57. if err != nil {
  58. log.Error("s.email.SendMail error(%v)", err)
  59. }
  60. log.Info("sync BGM end:%v", time.Now().Format("2006-01-02 15:04:05"))
  61. }
  62. }
  63. func (s *Service) calDailyCreativeIncome(ctx context.Context) {
  64. for {
  65. time.Sleep(service.NextDay(18, 0, 0))
  66. log.Info("calDailyCreativeIncome begin:%v", time.Now().Format("2006-01-02 15:04:05"))
  67. now := time.Now()
  68. date := time.Date(now.Year(), now.Month(), now.Day()-1, 0, 0, 0, 0, time.Local)
  69. err := s.RunAndSendMail(context.TODO(), date)
  70. if err != nil {
  71. log.Error("s.RunAndSendMail error(%v)", err)
  72. }
  73. if err == nil {
  74. err = s.RunStatis(context.TODO(), date)
  75. if err != nil {
  76. log.Error("s.RunStatis error(%v)", err)
  77. }
  78. }
  79. log.Info("calDailyCreativeIncome end:%v", time.Now().Format("2006-01-02 15:04:05"))
  80. }
  81. }
  82. // Ping check dao health.
  83. func (s *Service) Ping(c context.Context) (err error) {
  84. return s.dao.Ping(c)
  85. }