|
@@ -8,21 +8,87 @@ import (
|
|
"net/http"
|
|
"net/http"
|
|
"os"
|
|
"os"
|
|
"qfw/util"
|
|
"qfw/util"
|
|
- wxutil "qfw/weixin/util"
|
|
|
|
"qfw/util/redis"
|
|
"qfw/util/redis"
|
|
"qfw/weixin/dao"
|
|
"qfw/weixin/dao"
|
|
|
|
+ wxutil "qfw/weixin/util"
|
|
"qfw/weixinconfig"
|
|
"qfw/weixinconfig"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+//关注事件处理
|
|
|
|
+func SubscribeHandler(w ResponseWriter, r *Request) {
|
|
|
|
+ l1 := time.Now().Unix()
|
|
|
|
+ wxutil.SubscribeInc()
|
|
|
|
+ openid := r.FromUserName
|
|
|
|
+ log.Println("user data", w.GetUserData())
|
|
|
|
+ ret,_ := w.GetUserData().(map[string]interface{})
|
|
|
|
+ var unionid, bindweixin, userphoto string
|
|
|
|
+ if ret != nil {
|
|
|
|
+ unionid = ""
|
|
|
|
+ bindweixin = "qmx-" + fmt.Sprintf("%d%d", time.Now().Local().Unix(), rand.Intn(99))
|
|
|
|
+ } else {
|
|
|
|
+ unionid, _ = ret["unionid"].(string)
|
|
|
|
+ bindweixin, _ = ret["nickname"].(string)
|
|
|
|
+ //取得用户头像
|
|
|
|
+ headimgurl, _ := ret["headimgurl"].(string)
|
|
|
|
+ log.Println("download userface :", headimgurl)
|
|
|
|
+ userphoto = downloadUserFace(headimgurl)
|
|
|
|
+ }
|
|
|
|
+ l2 := time.Now().Unix()
|
|
|
|
+ _, flag := dao.AddUser(openid, unionid, bindweixin, userphoto)
|
|
|
|
+ l2 = time.Now().Unix()
|
|
|
|
+ log.Println(",Add user", l2-l1)
|
|
|
|
+ l1 = l2
|
|
|
|
+ //保存关注日志
|
|
|
|
+ var source string
|
|
|
|
+ if len(r.EventKey) > 8 {
|
|
|
|
+ source = r.EventKey[8:]
|
|
|
|
+ } else {
|
|
|
|
+ source = ""
|
|
|
|
+ }
|
|
|
|
+ if digitreg.MatchString(source) {
|
|
|
|
+ dao.SaveSubscribeLogs(openid, unionid, bindweixin, "wangzhan", "subscribe")
|
|
|
|
+ if flag == 1 {
|
|
|
|
+ w.ReplyText(WELCOME_MSG) // 有新人关注,返回欢迎消息
|
|
|
|
+ redis.Put("sso", "new_"+source, openid, 900)
|
|
|
|
+ //TODO 处理分享(邀请)类的二维码,记录邀请关系
|
|
|
|
+ if strings.HasPrefix(source, "32") {
|
|
|
|
+ go dao.SaveInviteLink(source, r.FromUserName, false)
|
|
|
|
+ //go dao.UpdateInviteUserCoupon(source)
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ w.ReplyText(OWELCOME_MSG) // 有旧人关注,返回欢迎消息
|
|
|
|
+ if strings.HasPrefix(source, "32") {
|
|
|
|
+ go dao.SaveInviteLink(source, r.FromUserName, true)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ DoLogin(source, openid)
|
|
|
|
+ } else {
|
|
|
|
+ if flag == 1 {
|
|
|
|
+ w.ReplyText(WELCOME_MSG) // 有新人关注,返回欢迎消息
|
|
|
|
+ } else {
|
|
|
|
+ w.ReplyText(OWELCOME_MSG) // 有旧人关注,返回欢迎消息
|
|
|
|
+ }
|
|
|
|
+ dao.SaveSubscribeLogs(openid, unionid, bindweixin, source, "subscribe")
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ l2 = time.Now().Unix()
|
|
|
|
+ log.Println(",Do save userinfo", l2-l1)
|
|
|
|
+ l1 = l2
|
|
|
|
+}
|
|
|
|
|
|
//关注事件处理
|
|
//关注事件处理
|
|
-func SubscribeHandler(w ResponseWriter, r *Request) {
|
|
|
|
|
|
+func SubscribeHandlerBak(w ResponseWriter, r *Request) {
|
|
|
|
+ l1 := time.Now().Unix()
|
|
wxutil.SubscribeInc()
|
|
wxutil.SubscribeInc()
|
|
openid := r.FromUserName
|
|
openid := r.FromUserName
|
|
|
|
+ log.Println("user data", w.GetUserData())
|
|
ret, err := w.GetUserBaseInfo(openid)
|
|
ret, err := w.GetUserBaseInfo(openid)
|
|
|
|
+ //ret:=w.GetUserData()
|
|
|
|
+ l2 := time.Now().Unix()
|
|
|
|
+ log.Println(",Get user baseinfo", l2-l1, " s")
|
|
|
|
+ l1 = l2
|
|
var unionid, bindweixin, userphoto string
|
|
var unionid, bindweixin, userphoto string
|
|
if err != nil {
|
|
if err != nil {
|
|
unionid = ""
|
|
unionid = ""
|
|
@@ -36,6 +102,9 @@ func SubscribeHandler(w ResponseWriter, r *Request) {
|
|
userphoto = downloadUserFace(headimgurl)
|
|
userphoto = downloadUserFace(headimgurl)
|
|
}
|
|
}
|
|
_, flag := dao.AddUser(openid, unionid, bindweixin, userphoto)
|
|
_, flag := dao.AddUser(openid, unionid, bindweixin, userphoto)
|
|
|
|
+ l2 = time.Now().Unix()
|
|
|
|
+ log.Println(",Add user", l2-l1)
|
|
|
|
+ l1 = l2
|
|
//保存关注日志
|
|
//保存关注日志
|
|
var source string
|
|
var source string
|
|
if len(r.EventKey) > 8 {
|
|
if len(r.EventKey) > 8 {
|
|
@@ -43,7 +112,7 @@ func SubscribeHandler(w ResponseWriter, r *Request) {
|
|
} else {
|
|
} else {
|
|
source = ""
|
|
source = ""
|
|
}
|
|
}
|
|
- log.Println("source::", source, "flag:::", flag)
|
|
|
|
|
|
+ //log.Println("source::", source, "flag:::", flag)
|
|
if digitreg.MatchString(source) {
|
|
if digitreg.MatchString(source) {
|
|
dao.SaveSubscribeLogs(openid, unionid, bindweixin, "wangzhan", "subscribe")
|
|
dao.SaveSubscribeLogs(openid, unionid, bindweixin, "wangzhan", "subscribe")
|
|
if flag == 1 {
|
|
if flag == 1 {
|
|
@@ -69,6 +138,10 @@ func SubscribeHandler(w ResponseWriter, r *Request) {
|
|
}
|
|
}
|
|
dao.SaveSubscribeLogs(openid, unionid, bindweixin, source, "subscribe")
|
|
dao.SaveSubscribeLogs(openid, unionid, bindweixin, source, "subscribe")
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ l2 = time.Now().Unix()
|
|
|
|
+ log.Println(",Do save userinfo", l2-l1)
|
|
|
|
+ l1 = l2
|
|
}
|
|
}
|
|
|
|
|
|
//取消关注事件处理
|
|
//取消关注事件处理
|
|
@@ -112,18 +185,21 @@ func DoLogin(key string, openid string) {
|
|
//下载微信用户头像
|
|
//下载微信用户头像
|
|
func downloadUserFace(url string) string {
|
|
func downloadUserFace(url string) string {
|
|
var filename string
|
|
var filename string
|
|
- util.Try(func() {
|
|
|
|
|
|
+
|
|
tn := time.Now()
|
|
tn := time.Now()
|
|
filename = fmt.Sprintf("/upload/%s/%s/%s/%s%d.jpg", tn.Format("2006"), tn.Format("01"), tn.Format("02"), tn.Format("20060102150405"), rand.Intn(9999)+1000)
|
|
filename = fmt.Sprintf("/upload/%s/%s/%s/%s%d.jpg", tn.Format("2006"), tn.Format("01"), tn.Format("02"), tn.Format("20060102150405"), rand.Intn(9999)+1000)
|
|
- fi, _ := os.OpenFile(weixinconfig.SysConfig.Imgpath+filename, os.O_CREATE|os.O_TRUNC|os.O_SYNC|os.O_RDWR, 0x666)
|
|
|
|
- defer fi.Close()
|
|
|
|
- resp, err := http.Get(url)
|
|
|
|
- defer resp.Body.Close()
|
|
|
|
- if err == nil {
|
|
|
|
- io.Copy(fi, resp.Body)
|
|
|
|
- } else {
|
|
|
|
- log.Println("download userface err:", err.Error())
|
|
|
|
- }
|
|
|
|
- }, func(e interface{}) {})
|
|
|
|
|
|
+ go func() {
|
|
|
|
+ util.Try(func() {
|
|
|
|
+ fi, _ := os.OpenFile(weixinconfig.SysConfig.Imgpath+filename, os.O_CREATE|os.O_TRUNC|os.O_SYNC|os.O_RDWR, 0x666)
|
|
|
|
+ defer fi.Close()
|
|
|
|
+ resp, err := http.Get(url)
|
|
|
|
+ defer resp.Body.Close()
|
|
|
|
+ if err == nil {
|
|
|
|
+ io.Copy(fi, resp.Body)
|
|
|
|
+ } else {
|
|
|
|
+ log.Println("download userface err:", err.Error())
|
|
|
|
+ }
|
|
|
|
+ }, func(e interface{}) {})
|
|
|
|
+ }()
|
|
return filename
|
|
return filename
|
|
}
|
|
}
|