2019-04-22 02:59:20 +00:00

88 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package email
import (
"encoding/json"
"fmt"
"strconv"
"go-common/app/job/main/archive/model/result"
"go-common/app/service/main/archive/api"
"go-common/app/service/main/archive/model/archive"
"go-common/library/log"
gomail "gopkg.in/gomail.v2"
)
var (
_states = map[int]string{
0: "开放浏览",
-1: "待审",
-2: "打回稿件回收站",
-3: "网警锁定删除",
-4: "锁定稿件",
// -5: "锁定稿件开放浏览",
-6: "修复待审",
-7: "暂缓审核",
// -8: "补档待审",
-9: "等待转码",
-10: "延迟发布",
-11: "视频源待修",
// -12: "上传失败",
-13: "允许评论待审",
// -14: "临时回收站",
-15: "分发中",
-16: "转码失败",
-30: "创建已提交",
-40: "UP主定时发布",
-100: "UP主删除",
}
)
func stateDescribe(state int) string {
des, ok := _states[state]
if ok {
return des
}
return strconv.Itoa(state)
}
const (
_bangumiMailSub = "番剧稿件《%s》状态变更"
_movieMailSub = "电影稿件《%s》状态变更"
_mailBody = `
稿件标题:%s
稿件状态:%s => %s
其他变更:%s => %s
稿件地址http://www.bilibili.com/video/av%d
审核后台http://manager.bilibili.co/#!/archive/modify/%d`
)
// PGCNotifyMail notify pgc mail
func (d *Dao) PGCNotifyMail(a *api.Arc, nw *result.Archive, old *result.Archive) {
msg := gomail.NewMessage()
msg.SetHeader("From", d.c.Mail.Username)
switch {
case a.AttrVal(archive.AttrBitIsBangumi) == archive.AttrYes:
msg.SetHeader("To", d.c.Mail.Bangumi...)
msg.SetHeader("Subject", fmt.Sprintf(_bangumiMailSub, a.Title))
case a.AttrVal(archive.AttrBitIsMovie) == archive.AttrYes:
msg.SetHeader("To", d.c.Mail.Movie...)
msg.SetHeader("Subject", fmt.Sprintf(_movieMailSub, a.Title))
default:
return
}
obs, _ := json.Marshal(old)
nbs, _ := json.Marshal(nw)
if old.State != nw.State {
oldState, newState := stateDescribe(old.State), stateDescribe(nw.State)
msg.SetBody("text/plain", fmt.Sprintf(_mailBody, a.Title, oldState, newState, obs, nbs, a.Aid, a.Aid))
} else {
state := stateDescribe(int(a.State))
msg.SetBody("text/plain", fmt.Sprintf(_mailBody, a.Title, state, state, obs, nbs, a.Aid, a.Aid))
}
if err := d.email.DialAndSend(msg); err != nil {
log.Error("s.email.DialAndSend(aid: %d) error(%v)", a.Aid, err)
}
}