You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.3 KiB
87 lines
2.3 KiB
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) |
|
} |
|
}
|
|
|