|
@@ -22,6 +22,8 @@ import (
|
|
|
|
|
|
// 同步用户锁,防止重复同步,不管是全量还是增量,都是同一时间只能一个同步
|
|
|
var lockListenEmail sync.Mutex
|
|
|
+// 邮件改名规则
|
|
|
+var ruleList []report.MailRule
|
|
|
|
|
|
func ListenMail() {
|
|
|
var err error
|
|
@@ -41,6 +43,21 @@ func ListenMail() {
|
|
|
|
|
|
//fmt.Println(len(mailMessageChan))
|
|
|
|
|
|
+ // 获取规则
|
|
|
+ ruleList = []report.MailRule{}
|
|
|
+ ruleJson, e := eta.GetBusinessConfByKey("MailCheckRule")
|
|
|
+ if e != nil {
|
|
|
+ err = e
|
|
|
+ global.FILE_LOG.Error("获取规则配置失败:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err = json.Unmarshal([]byte(ruleJson.ConfVal), &ruleList)
|
|
|
+ if err != nil {
|
|
|
+ global.FILE_LOG.Error("解析规则配置失败:%v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
// 邮件监听后的处理函数
|
|
|
go afterByListen(mailMessageChan, mailMessageDoneChan)
|
|
|
|
|
@@ -200,23 +217,6 @@ func handleMailMessage(emailMessage mail.MailMessage) (err error) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ruleJson, err := eta.GetBusinessConfByKey("MailCheckRule")
|
|
|
- if err != nil {
|
|
|
- global.FILE_LOG.Error("获取规则配置失败:%v", err)
|
|
|
- return
|
|
|
- }
|
|
|
- var ruleList []report.MailRule
|
|
|
- err = json.Unmarshal([]byte(ruleJson.ConfVal), &ruleList)
|
|
|
- if err != nil {
|
|
|
- global.FILE_LOG.Error("解析规则配置失败:%v", err)
|
|
|
- return
|
|
|
- }
|
|
|
- ruleMap := make(map[string]report.MailRule)
|
|
|
- for _, v := range ruleList {
|
|
|
- ruleMap[v.Rule] = v
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
reportUpdateTime := emailMessage.Date
|
|
|
if reportUpdateTime.IsZero() {
|
|
|
reportUpdateTime = time.Now()
|
|
@@ -252,6 +252,17 @@ func handleMailMessage(emailMessage mail.MailMessage) (err error) {
|
|
|
return
|
|
|
}
|
|
|
reportInfo.ClassifyName = classify.ClassifyName
|
|
|
+
|
|
|
+ // 特殊规则
|
|
|
+ if strings.Contains(reportInfo.Title, "海外分公司市场信息月报") || strings.Contains(reportInfo.Title, "区域市场信息月报"){
|
|
|
+ if emailMessage.From == "report.pcanalyst00@petrochina-usa.com" {
|
|
|
+ reportInfo.SysUserName = "PCI"
|
|
|
+ break
|
|
|
+ } else {
|
|
|
+ v.Author = emailMessage.From
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if strings.Contains(v.Author, "@") {
|
|
|
sysUser, tmpErr := eta.GetSysUserByEmail(v.Author)
|
|
|
if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
|