email.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package email
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "strconv"
  6. "go-common/app/job/main/archive/model/result"
  7. "go-common/app/service/main/archive/api"
  8. "go-common/app/service/main/archive/model/archive"
  9. "go-common/library/log"
  10. gomail "gopkg.in/gomail.v2"
  11. )
  12. var (
  13. _states = map[int]string{
  14. 0: "开放浏览",
  15. -1: "待审",
  16. -2: "打回稿件回收站",
  17. -3: "网警锁定删除",
  18. -4: "锁定稿件",
  19. // -5: "锁定稿件开放浏览",
  20. -6: "修复待审",
  21. -7: "暂缓审核",
  22. // -8: "补档待审",
  23. -9: "等待转码",
  24. -10: "延迟发布",
  25. -11: "视频源待修",
  26. // -12: "上传失败",
  27. -13: "允许评论待审",
  28. // -14: "临时回收站",
  29. -15: "分发中",
  30. -16: "转码失败",
  31. -30: "创建已提交",
  32. -40: "UP主定时发布",
  33. -100: "UP主删除",
  34. }
  35. )
  36. func stateDescribe(state int) string {
  37. des, ok := _states[state]
  38. if ok {
  39. return des
  40. }
  41. return strconv.Itoa(state)
  42. }
  43. const (
  44. _bangumiMailSub = "番剧稿件《%s》状态变更"
  45. _movieMailSub = "电影稿件《%s》状态变更"
  46. _mailBody = `
  47. 稿件标题:%s
  48. 稿件状态:%s => %s
  49. 其他变更:%s => %s
  50. 稿件地址:http://www.bilibili.com/video/av%d
  51. 审核后台:http://manager.bilibili.co/#!/archive/modify/%d`
  52. )
  53. // PGCNotifyMail notify pgc mail
  54. func (d *Dao) PGCNotifyMail(a *api.Arc, nw *result.Archive, old *result.Archive) {
  55. msg := gomail.NewMessage()
  56. msg.SetHeader("From", d.c.Mail.Username)
  57. switch {
  58. case a.AttrVal(archive.AttrBitIsBangumi) == archive.AttrYes:
  59. msg.SetHeader("To", d.c.Mail.Bangumi...)
  60. msg.SetHeader("Subject", fmt.Sprintf(_bangumiMailSub, a.Title))
  61. case a.AttrVal(archive.AttrBitIsMovie) == archive.AttrYes:
  62. msg.SetHeader("To", d.c.Mail.Movie...)
  63. msg.SetHeader("Subject", fmt.Sprintf(_movieMailSub, a.Title))
  64. default:
  65. return
  66. }
  67. obs, _ := json.Marshal(old)
  68. nbs, _ := json.Marshal(nw)
  69. if old.State != nw.State {
  70. oldState, newState := stateDescribe(old.State), stateDescribe(nw.State)
  71. msg.SetBody("text/plain", fmt.Sprintf(_mailBody, a.Title, oldState, newState, obs, nbs, a.Aid, a.Aid))
  72. } else {
  73. state := stateDescribe(int(a.State))
  74. msg.SetBody("text/plain", fmt.Sprintf(_mailBody, a.Title, state, state, obs, nbs, a.Aid, a.Aid))
  75. }
  76. if err := d.email.DialAndSend(msg); err != nil {
  77. log.Error("s.email.DialAndSend(aid: %d) error(%v)", a.Aid, err)
  78. }
  79. }