|
@@ -4,6 +4,7 @@ import (
|
|
"container/list"
|
|
"container/list"
|
|
"fmt"
|
|
"fmt"
|
|
"log"
|
|
"log"
|
|
|
|
+ "os"
|
|
"qfw/push"
|
|
"qfw/push"
|
|
"qfw/util"
|
|
"qfw/util"
|
|
"qfw/util/mail"
|
|
"qfw/util/mail"
|
|
@@ -12,7 +13,6 @@ import (
|
|
"regexp"
|
|
"regexp"
|
|
"strconv"
|
|
"strconv"
|
|
"strings"
|
|
"strings"
|
|
- "sync"
|
|
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -22,10 +22,7 @@ var re *regexp.Regexp
|
|
var MAXLen = 200
|
|
var MAXLen = 200
|
|
var TitleLen, ContentLen, GroupLen int
|
|
var TitleLen, ContentLen, GroupLen int
|
|
var WxTitle, WxContent, WxGroup string
|
|
var WxTitle, WxContent, WxGroup string
|
|
-var Mailpos = 0
|
|
|
|
-var MailposLock = &sync.Mutex{}
|
|
|
|
-var MailMap = []*mail.MailAuth{}
|
|
|
|
-var MailFrom = "剑鱼招标订阅"
|
|
|
|
|
|
+var GmailMap *mail.GmailAuth
|
|
var Domain = ""
|
|
var Domain = ""
|
|
var (
|
|
var (
|
|
mail_html = ""
|
|
mail_html = ""
|
|
@@ -33,18 +30,6 @@ var (
|
|
mail_title = ""
|
|
mail_title = ""
|
|
)
|
|
)
|
|
|
|
|
|
-//获取邮箱配置
|
|
|
|
-func GetSMail() (auth *mail.MailAuth) {
|
|
|
|
- defer util.Catch()
|
|
|
|
- MailposLock.Lock()
|
|
|
|
- defer MailposLock.Unlock()
|
|
|
|
- Mailpos %= len(MailMap)
|
|
|
|
- auth = MailMap[Mailpos]
|
|
|
|
- Mailpos++
|
|
|
|
- time.Sleep(80 * time.Millisecond)
|
|
|
|
- return
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
//初始化推送信息
|
|
//初始化推送信息
|
|
func Inits() {
|
|
func Inits() {
|
|
//推送标题
|
|
//推送标题
|
|
@@ -68,11 +53,12 @@ func Inits() {
|
|
//初始化服务邮箱
|
|
//初始化服务邮箱
|
|
arrMap := util.ObjArrToMapArr(push.PushConfig["mails"].([]interface{}))
|
|
arrMap := util.ObjArrToMapArr(push.PushConfig["mails"].([]interface{}))
|
|
for i := 0; i < len(arrMap); i++ {
|
|
for i := 0; i < len(arrMap); i++ {
|
|
- MailMap = append(MailMap,
|
|
|
|
- &mail.MailAuth{util.ObjToString(arrMap[i]["addr"]),
|
|
|
|
- util.IntAll(arrMap[i]["port"]),
|
|
|
|
- util.ObjToString(arrMap[i]["user"]),
|
|
|
|
- util.ObjToString(arrMap[i]["pwd"])})
|
|
|
|
|
|
+ GmailMap = &mail.GmailAuth{
|
|
|
|
+ SmtpHost: util.ObjToString(arrMap[i]["addr"]),
|
|
|
|
+ SmtpPort: util.IntAll(arrMap[i]["port"]),
|
|
|
|
+ User: util.ObjToString(arrMap[i]["user"]),
|
|
|
|
+ Pwd: util.ObjToString(arrMap[i]["pwd"]),
|
|
|
|
+ }
|
|
}
|
|
}
|
|
Domain = push.PushConfig["bidViewDomain"].(string)
|
|
Domain = push.PushConfig["bidViewDomain"].(string)
|
|
}
|
|
}
|
|
@@ -109,6 +95,8 @@ func DealSend(k *push.MemberInterest, v *list.List, now time.Time, MaxPushSize i
|
|
publishTitle := map[string]bool{}
|
|
publishTitle := map[string]bool{}
|
|
FilterData.Start(k.Openid)
|
|
FilterData.Start(k.Openid)
|
|
defer FilterData.End()
|
|
defer FilterData.End()
|
|
|
|
+ //邮件附件
|
|
|
|
+ var fmdatas = []map[string]interface{}{}
|
|
for ks := v.Front(); ks != nil; ks = ks.Next() {
|
|
for ks := v.Front(); ks != nil; ks = ks.Next() {
|
|
k2 := *(ks.Value.(*map[string]interface{}))
|
|
k2 := *(ks.Value.(*map[string]interface{}))
|
|
title := strings.Replace(k2["title"].(string), "\n", "", -1)
|
|
title := strings.Replace(k2["title"].(string), "\n", "", -1)
|
|
@@ -140,6 +128,21 @@ func DealSend(k *push.MemberInterest, v *list.List, now time.Time, MaxPushSize i
|
|
types = "其他"
|
|
types = "其他"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ classIndustry := "industry"
|
|
|
|
+ industry := util.ObjToString(k2["industry"])
|
|
|
|
+ if industry != "" {
|
|
|
|
+ industry = strings.TrimLeft(industry, ",")
|
|
|
|
+ industry = strings.TrimRight(industry, ",")
|
|
|
|
+ inds := strings.Split(industry, ",")
|
|
|
|
+ if len(inds) > 0 {
|
|
|
|
+ inds_ins := strings.Split(inds[0], "_")
|
|
|
|
+ if len(inds_ins) > 1 {
|
|
|
|
+ industry = inds_ins[len(inds_ins)-1]
|
|
|
|
+ } else {
|
|
|
|
+ industry = inds_ins[0]
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
dates := util.LongToDate(k2["publishtime"], false)
|
|
dates := util.LongToDate(k2["publishtime"], false)
|
|
//标题替换
|
|
//标题替换
|
|
otitle := util.ObjToString(k2["otitle"])
|
|
otitle := util.ObjToString(k2["otitle"])
|
|
@@ -161,7 +164,7 @@ func DealSend(k *push.MemberInterest, v *list.List, now time.Time, MaxPushSize i
|
|
break
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- mailContent += fmt.Sprintf(mail_content, i, url, otitle, classArea, area, classType, types, dates)
|
|
|
|
|
|
+ mailContent += fmt.Sprintf(mail_content, i, url, otitle, classArea, area, classType, types, classIndustry, industry, dates)
|
|
}
|
|
}
|
|
//str += "<div class='tslist'><span class='xh'>" + fmt.Sprintf("%d", i) + ".</span><a class='bt' target='_blank' sid='" + _sid + "' href='" + util.ObjToString(k2["href"]) + "'>" + title + "</a></div>"
|
|
//str += "<div class='tslist'><span class='xh'>" + fmt.Sprintf("%d", i) + ".</span><a class='bt' target='_blank' sid='" + _sid + "' href='" + util.ObjToString(k2["href"]) + "'>" + title + "</a></div>"
|
|
str += "<div class='tslist'><span class='xh'>" + fmt.Sprintf("%d", i) + ".</span><a class='bt' target='_blank' eid='" + _sid + "' href='" + util.ObjToString(k2["href"]) + "'>" + title + "</a></div>"
|
|
str += "<div class='tslist'><span class='xh'>" + fmt.Sprintf("%d", i) + ".</span><a class='bt' target='_blank' eid='" + _sid + "' href='" + util.ObjToString(k2["href"]) + "'>" + title + "</a></div>"
|
|
@@ -174,6 +177,18 @@ func DealSend(k *push.MemberInterest, v *list.List, now time.Time, MaxPushSize i
|
|
if k2["highlight"] != nil {
|
|
if k2["highlight"] != nil {
|
|
o_pushinfo[strconv.Itoa(i)]["highlight"] = k2["highlight"]
|
|
o_pushinfo[strconv.Itoa(i)]["highlight"] = k2["highlight"]
|
|
}
|
|
}
|
|
|
|
+ //附件数据
|
|
|
|
+ fmdata := map[string]interface{}{
|
|
|
|
+ "publishtime": k2["publishtime"],
|
|
|
|
+ "subtype": k2["subtype"],
|
|
|
|
+ "buyer": k2["buyer"],
|
|
|
|
+ "projectname": k2["projectname"],
|
|
|
|
+ "budget": k2["budget"],
|
|
|
|
+ "bidopentime": k2["bidopentime"],
|
|
|
|
+ "winner": k2["winner"],
|
|
|
|
+ "bidamount": k2["bidamount"],
|
|
|
|
+ }
|
|
|
|
+ fmdatas = append(fmdatas, fmdata)
|
|
if i >= MaxPushSize {
|
|
if i >= MaxPushSize {
|
|
//限制最大信息条数
|
|
//限制最大信息条数
|
|
break
|
|
break
|
|
@@ -252,22 +267,24 @@ func DealSend(k *push.MemberInterest, v *list.List, now time.Time, MaxPushSize i
|
|
log.Println("-----", k.Openid)
|
|
log.Println("-----", k.Openid)
|
|
wid = SendWeixin(k, str, now, Tip1+WXTitle+LastTip, o_pushinfo, ratemode, infoTypeName)
|
|
wid = SendWeixin(k, str, now, Tip1+WXTitle+LastTip, o_pushinfo, ratemode, infoTypeName)
|
|
}
|
|
}
|
|
-
|
|
|
|
//3、发送邮件
|
|
//3、发送邮件
|
|
if bmail {
|
|
if bmail {
|
|
html := fmt.Sprintf(mail_html, strings.Replace(strings.Join(k.Interest, ";"), "+", " ", -1), mailContent)
|
|
html := fmt.Sprintf(mail_html, strings.Replace(strings.Join(k.Interest, ";"), "+", " ", -1), mailContent)
|
|
- go SendEmail(k.Email, html, fmt.Sprintf(mail_title, infoTypeName))
|
|
|
|
|
|
+ subject := fmt.Sprintf(mail_title, infoTypeName)
|
|
|
|
+ go SendFmail(k.Email, subject, html, fmdatas)
|
|
if wid == "" { //保存信息
|
|
if wid == "" { //保存信息
|
|
SaveSendInfo(k, now, html, o_pushinfo, ratemode)
|
|
SaveSendInfo(k, now, html, o_pushinfo, ratemode)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-//推送邮件
|
|
|
|
-func SendEmail(email, str, title string) {
|
|
|
|
- auth := GetSMail()
|
|
|
|
- if auth != nil {
|
|
|
|
- mail.SendMail(auth, &mail.Message{title, MailFrom, []string{email}, str})
|
|
|
|
|
|
+//推送邮件(含附件)
|
|
|
|
+func SendFmail(email, subject, html string, fmdatas []map[string]interface{}) {
|
|
|
|
+ //生成附件
|
|
|
|
+ fname := GetBidInfoXlsx(fmdatas)
|
|
|
|
+ b := mail.GSendMail(email, "", "", subject, html, fname, GmailMap)
|
|
|
|
+ if b {
|
|
|
|
+ os.Remove(fname)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|