wangchuanjin 3 년 전
부모
커밋
0a5bff6c56

+ 9 - 8
src/config.json

@@ -20,12 +20,12 @@
         "entListFollow": "/jylab/followent/entList",
         "pcmyfollow": "/follow/set/list/%s",
         "feedback": "/swordfish/feedback",
-        "wxpushfollowlist": "/follow/notice/%s/%s",
+        "wxpushfollowlist": "/follow/notice/%s/%s?advertcode=%s",
         "community": "http://www.myfans.cc/30a78e9b78",
         "quickly": "http://mp.weixin.qq.com/s?__biz=MzIyNTM1NDUyNw==&mid=100000001&idx=1&sn=58e6008f0577d529a56c9ed78724decf&scene=0#wechat_redirect",
         "useskill": "http://mp.weixin.qq.com/mp/homepage?__biz=MzIyNTM1NDUyNw==&hid=1&sn=f9e98da1975f85011ee138a4ee5cfbe8#wechat_redirect",
         "about": "/swordfish/about?flag=1",
-        "followset": "/follow/set/%s/%s",
+        "followset": "/follow/set/%s/%s?advertcode=%s",
         "myfeedbacks": "/swordfish/myFeedbacks",
         "zqluckdraw": "/active/zqLuckdraw",
         "followent": "/jylab/followent/entList",
@@ -37,13 +37,13 @@
         "sealSend": "/active/seal/sealMsg",
         "futureIndex": "/active/future/index",
         "keysetIndex": "/wxkeyset/keyset/index?tiptext=%s",
-        "followEntDetail": "/jylab/followent/detail/%s",
+        "followEntDetail": "/jylab/followent/detail/%s?advertcode=%s",
         "mymenu": "/front/wxMyOrder/myMenu",
-		"historypush": "/swordfish/newhistorypush?times=%s",
+		"historypush": "/swordfish/newhistorypush?times=%s&advertcode=%s",
 		"msgremind": "/front/vipsubscribe/msgremind?%s",
 		"treasurebox":"/jyTreasureBox/treasureBox",
-		"vipreport":"/subscribepay/report/wxtplmsg?start=%s&end=%s&pushcount=%s",
-		"viphomepage":"/front/vipsubscribe/introducePage",
+		"vipreport":"/subscribepay/report/wxtplmsg?start=%s&end=%s&pushcount=%s&advertcode=%s",
+		"viphomepage":"/front/vipsubscribe/introducePage?advertcode=%s",
 		"viphomepage_new":"/front/vipsubscribe/vipsubscribe_new",
 		"liveAcitve":"/active/livePage/index",
 		"bigMember":"/big/wx/page/landingPage",
@@ -53,7 +53,8 @@
 		"pointsMobile":"/page_points_mobile/home",
 		"bidedoc":"/weixin/frontPage/bidedoc/sess/index",
 		"memberreport_experience":"/bigmember/report/openpushmsg?t=wx_experience&start=%s&end=%s&pushcount=%s",
-		"chanpartner":"/weixin/frontPage/partner/sess/partner?p=wxmeun"
+		"chanpartner":"/weixin/frontPage/partner/sess/partner?p=wxmeun",
+		"datareport":"/datareport/page/order/detail/%s?advertcode=%s"
     },
     "jy_activeset": {
         "activitystartcode": "3201000000",
@@ -238,7 +239,7 @@
         "shareTimesUpperLimitR": 4000,
         "shareTimesUpperLimitIrr": 1000
     },
-    "cookiedomain": "web-jydev-ws.jianyu360.cn",
+    "cookiedomain": "wcj.jydev.jianyu360.com",
     "pcHelper": {
         "subscribeTokenTimeout": 15,
         "version": "V2.5.1"

+ 8 - 79
src/jfw/front/front.go

@@ -1,7 +1,6 @@
 package front
 
 import (
-	"encoding/hex"
 	"fmt"
 	"jfw/config"
 	"jfw/jyutil"
@@ -139,8 +138,6 @@ type Front struct {
 	dataService xweb.Mapper `xweb:"/front/dataService.html"`
 	//打赏页面
 	payIndex xweb.Mapper `xweb:"/weixin/pay/index"` //微信打赏
-	//订阅付费消息提醒中转
-	msgremind xweb.Mapper `xweb:"/front/vipsubscribe/msgremind"`
 	//获取打赏标语
 	rewardText xweb.Mapper `xweb:"/front/rewardText"`
 	//生成二维码
@@ -797,10 +794,10 @@ func FindUserAndCreateSess(openid string, sess *httpsession.Session, typ string,
 	}, sess, typ, flag)
 }
 
-func FindUserAndCreateSessById(userId primitive.ObjectID, sess *httpsession.Session) (bool, *map[string]interface{}, map[string]interface{}) {
+func FindUserAndCreateSessById(userId primitive.ObjectID, sess *httpsession.Session, flag bool) (bool, *map[string]interface{}, map[string]interface{}) {
 	return CreateSession(map[string]interface{}{
 		"_id": userId,
-	}, sess, "pc", true)
+	}, sess, "pc", flag)
 }
 
 func CreateSession(q map[string]interface{}, sess *httpsession.Session, typ string, flag bool) (bool, *map[string]interface{}, map[string]interface{}) {
@@ -850,7 +847,12 @@ func (m *Front) Sess(ostr string) error {
 	str := strings.Split(sewx.DecodeString(strs[0]), ",")
 	if len(str) == 4 {
 		openid := str[0]
-		ok, _, _ := FindUserAndCreateSess(openid, m.Session(), "wx", false)
+		ok := false
+		if str[1] == "_id" {
+			ok, _, _ = FindUserAndCreateSessById(mgdb.StringTOBsonId(openid), m.Session(), false)
+		} else {
+			ok, _, _ = FindUserAndCreateSess(openid, m.Session(), "wx", false)
+		}
 		if ok {
 			actionurl := util.ObjToString(urlMap[str[3]])
 			if actionurl != "" {
@@ -1499,79 +1501,6 @@ func (s *Front) StaticPage(pagename string) error {
 	return s.Render("/staticpage/" + pagename)
 }
 
-//
-func (f *Front) Msgremind() error {
-	param := map[string]string{}
-	if array := strings.Split(f.Url(), "?"); len(array) == 2 {
-		decode, _ := hex.DecodeString(array[1])
-		for _, v := range strings.Split(string(decode), "&") {
-			if vv := strings.Split(v, "="); len(vv) == 2 {
-				param[vv[0]] = vv[1]
-			}
-		}
-	}
-	userId, _ := f.GetSession("userId").(string)
-	if userId == "" {
-		return f.Render("_error.html")
-	}
-	user, ok := public.MQFW.FindById("user", userId, `{"i_vip_status":1,"l_vip_endtime":1}`)
-	i_vip_status := util.IntAll((*user)["i_vip_status"])
-	if !ok || user == nil || len(*user) == 0 {
-		return f.Render("_error.html")
-	}
-	myLastOrderCode := func(user_id string) string {
-		order := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
-			"user_id":      user_id,
-			"order_status": 1,
-			"product_type": "VIP订阅",
-		}, "id,order_code", "pay_time desc")
-		if order != nil && len(*order) > 0 {
-			return util.ObjToString((*order)["order_code"])
-		} else {
-			return ""
-		}
-	}
-	t := param["type"]
-	if t == "unpaid" { //未支付 已支付
-		return f.Redirect("/front/vipsubscribe/toOrderDetailPage?orderCode=" + param["ordercode"])
-	} else if t == "paid" {
-		if i_vip_status > 0 {
-			return f.Redirect("/front/vipsubscribe/toSubVipSetPage")
-		} else {
-			return f.Redirect("/front/vipsubscribe/vipsubscribe_new?orderCode=" + myLastOrderCode(userId))
-		}
-	} else if t == "ontrial_soonexprie" || t == "ontrial_expried" || t == "soonexprie" || t == "expried" { //试用即将到期 试用已到期 即将到期 已到期
-		if t == "ontrial_soonexprie" || t == "ontrial_expried" {
-			if i_vip_status == 2 {
-				return f.Redirect("/front/vipsubscribe/toSubVipSetPage")
-			} else {
-				return f.Redirect("/front/vipsubscribe/vipsubscribe_new")
-			}
-		} else if t == "soonexprie" || t == "expried" {
-			now_unix := time.Now().Unix()
-			l_vip_endtime := util.Int64All((*user)["l_vip_endtime"])
-			if now_unix < l_vip_endtime-259200 {
-				//已续费
-				return f.Redirect("/front/vipsubscribe/toSubVipSetPage")
-			} else {
-				if now_unix > l_vip_endtime {
-					//未续费已到期,跳转到再次购买页面
-					return f.Redirect("/front/vipsubscribe/vipsubscribe_new?orderCode=" + myLastOrderCode(userId))
-				} else {
-					//未续费未到期,跳转到续费页面
-					return f.Redirect("/front/vipsubscribe/vipsubscribe_renew")
-				}
-			}
-		}
-	} else if t == "buyerclass" { //公共资源交易提醒
-		if i_vip_status > 0 { //vip未到期
-			return f.Redirect("/front/vipsubscribe/toSubVipSetPage")
-		} else if i_vip_status < 0 { //vip已到期
-			return f.Redirect("/front/vipsubscribe/introducePage")
-		}
-	}
-	return f.Render("_error.html")
-}
 func (f *Front) Downloadapppage(from string) error {
 	f.T["from"] = from
 	f.T["source"] = f.GetString("source")

+ 1 - 1
src/jfw/front/login.go

@@ -307,7 +307,7 @@ func afterLogin(phone string, session *httpsession.Session) (bool, *map[string]i
 	if user == nil || len(user) == 0 {
 		return false, nil, nil
 	}
-	return FindUserAndCreateSessById(user["_id"].(primitive.ObjectID), session)
+	return FindUserAndCreateSessById(user["_id"].(primitive.ObjectID), session, true)
 }
 
 //

+ 82 - 0
src/jfw/front/vipsubscribe.go

@@ -1,6 +1,7 @@
 package front
 
 import (
+	"encoding/hex"
 	"fmt"
 	"jfw/config"
 	"jfw/jyutil"
@@ -10,6 +11,7 @@ import (
 	"net/url"
 	"qfw/util"
 	"qfw/util/redis"
+	"strings"
 	"time"
 
 	"github.com/go-xweb/xweb"
@@ -51,6 +53,8 @@ type Subscribepay struct {
 	upgradePage   xweb.Mapper `xweb:"/front/vipsubscribe/upgradePage"`   //升级页面
 	//超级订阅企业搜索
 	entSearch xweb.Mapper `xweb:"/front/vipsubscribe/entSearch"` //企业搜索
+	//订阅付费消息提醒中转
+	msgremind xweb.Mapper `xweb:"/front/vipsubscribe/msgremind"`
 }
 
 func init() {
@@ -405,3 +409,81 @@ func (s *Subscribepay) PreheatPoster() {
 		}
 	}
 }
+
+//
+func (s *Subscribepay) Msgremind() error {
+	param := map[string]string{}
+	if array := strings.Split(s.Url(), "?"); len(array) == 2 {
+		decode, _ := hex.DecodeString(array[1])
+		for _, v := range strings.Split(string(decode), "&") {
+			if vv := strings.Split(v, "="); len(vv) == 2 {
+				param[vv[0]] = vv[1]
+			}
+		}
+	}
+	t := param["type"]
+	advertcode := param["advertcode"]
+	if t == "bigmember_soonexprie" || t == "bigmember_expried" { //大会员即将到期、已到期
+		return s.Redirect("/big/wx/page/landingPage?advertcode=" + advertcode)
+	} else if t == "unpaid" { //未支付 已支付
+		return s.Redirect("/front/vipsubscribe/toOrderDetailPage?orderCode=" + param["ordercode"] + "&advertcode=" + advertcode)
+	}
+	userId, _ := s.GetSession("userId").(string)
+	if userId == "" {
+		return s.Render("_error.html")
+	}
+	user, ok := public.MQFW.FindById("user", userId, `{"i_vip_status":1,"l_vip_endtime":1}`)
+	i_vip_status := util.IntAll((*user)["i_vip_status"])
+	if !ok || user == nil || len(*user) == 0 {
+		return s.Render("_error.html")
+	}
+	myLastOrderCode := func(user_id string) string {
+		order := public.Mysql.FindOne("dataexport_order", map[string]interface{}{
+			"user_id":      user_id,
+			"order_status": 1,
+			"product_type": "VIP订阅",
+		}, "id,order_code", "pay_time desc")
+		if order != nil && len(*order) > 0 {
+			return util.ObjToString((*order)["order_code"])
+		} else {
+			return ""
+		}
+	}
+	if t == "paid" {
+		if i_vip_status > 0 {
+			return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + advertcode)
+		} else {
+			return s.Redirect("/front/vipsubscribe/vipsubscribe_new?orderCode=" + myLastOrderCode(userId) + "&advertcode=" + advertcode)
+		}
+	} else if t == "ontrial_soonexprie" || t == "ontrial_expried" || t == "soonexprie" || t == "expried" { //试用即将到期 试用已到期 即将到期 已到期
+		if t == "ontrial_soonexprie" || t == "ontrial_expried" {
+			if i_vip_status == 2 {
+				return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + advertcode)
+			} else {
+				return s.Redirect("/front/vipsubscribe/vipsubscribe_new?advertcode=" + advertcode)
+			}
+		} else if t == "soonexprie" || t == "expried" {
+			now_unix := time.Now().Unix()
+			l_vip_endtime := util.Int64All((*user)["l_vip_endtime"])
+			if now_unix < l_vip_endtime-259200 {
+				//已续费
+				return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + advertcode)
+			} else {
+				if now_unix > l_vip_endtime {
+					//未续费已到期,跳转到再次购买页面
+					return s.Redirect("/front/vipsubscribe/vipsubscribe_new?orderCode=" + myLastOrderCode(userId) + "&advertcode=" + advertcode)
+				} else {
+					//未续费未到期,跳转到续费页面
+					return s.Redirect("/front/vipsubscribe/vipsubscribe_renew?advertcode=" + advertcode)
+				}
+			}
+		}
+	} else if t == "buyerclass" { //公共资源交易提醒
+		if i_vip_status > 0 { //vip未到期
+			return s.Redirect("/front/vipsubscribe/toSubVipSetPage?advertcode=" + advertcode)
+		} else if i_vip_status < 0 { //vip已到期
+			return s.Redirect("/front/vipsubscribe/introducePage?advertcode=" + advertcode)
+		}
+	}
+	return s.Render("_error.html")
+}

+ 15 - 20
src/jfw/modules/subscribepay/src/config/config.go

@@ -91,13 +91,21 @@ type timeTaskConfig struct {
 	UpdateDEStatus                 string //定时更新超时订单状态-2
 }
 type messageConfig struct {
-	WxTpl_OnTrial_SoonExpire *WxTplMsg //试用即将到期
-	WxTpl_OnTrial_Expired    *WxTplMsg //试用已到期
-	WxTpl_SoonExpire         *WxTplMsg //即将到期
-	WxTpl_Expired            *WxTplMsg //已到期
-	WxTpl_Unpaid             *WxTplMsg //未支付订单
-	WxTpl_PaySuccess         *WxTplMsg //支付成功
-	WxTpl_DataReport         *WxTplMsg //数据报告
+	WxTpl_OnTrial_SoonExpire   *WxTplMsg //微信-超级订阅-试用即将到期
+	WxTpl_OnTrial_Expired      *WxTplMsg //微信-超级订阅-试用已到期
+	WxTpl_SoonExpire           *WxTplMsg //微信-超级订阅-即将到期
+	WxTpl_Expired              *WxTplMsg //微信-超级订阅-已到期
+	WxTpl_BigMember_SoonExpire *WxTplMsg //微信-大会员-即将到期
+	WxTpl_BigMember_Expired    *WxTplMsg //微信-大会员-已到期
+	WxTpl_Unpaid               *WxTplMsg //未支付订单
+	WxTpl_PaySuccess           *WxTplMsg //支付成功
+	WxTpl_DataReport           *WxTplMsg //数据报告
+	App_OnTrial_SoonExpire     string    //app-超级订阅-试用即将到期
+	App_OnTrial_Expired        string    //app-超级订阅-试用已到期
+	App_SoonExpire             string    //app-超级订阅-即将到期
+	App_Expired                string    //app-超级订阅-已到期
+	App_BigMember_SoonExpire   string    //app-大会员-即将到期
+	App_BigMember_Expired      string    //app-大会员-已到期
 }
 
 type WxTplMsg struct {
@@ -268,13 +276,6 @@ var WxPayConf map[string]interface{}
 
 var Wxoauth, Wxoauthinfo string
 var AutoMergeTimeStamp int64
-var (
-	WxTpl_OnTrial_SoonExpire_SceneCode string
-	WxTpl_OnTrial_Expired_SceneCode    string
-	WxTpl_SoonExpire_SceneCode         string
-	WxTpl_Expired_SceneCode            string
-	WxTpl_DataReport_SceneCode         string
-)
 
 func init() {
 	//程序配置文件
@@ -314,10 +315,4 @@ func init() {
 		panic(err)
 	}
 	AutoMergeTimeStamp = time.Unix()
-	//
-	WxTpl_OnTrial_SoonExpire_SceneCode = MessageConfig.WxTpl_OnTrial_SoonExpire.First.Value
-	WxTpl_OnTrial_Expired_SceneCode = MessageConfig.WxTpl_OnTrial_Expired.First.Value
-	WxTpl_SoonExpire_SceneCode = MessageConfig.WxTpl_SoonExpire.First.Value
-	WxTpl_Expired_SceneCode = MessageConfig.WxTpl_Expired.First.Value
-	WxTpl_DataReport_SceneCode = MessageConfig.WxTpl_DataReport.First.Value
 }

+ 6 - 9
src/jfw/modules/subscribepay/src/entity/dataReportStruct.go

@@ -6,6 +6,7 @@ import (
 	"errors"
 	"fmt"
 	"log"
+	. "p"
 	"pay"
 	qutil "qfw/util"
 	frpc "qfw/util/rpc"
@@ -167,21 +168,17 @@ func sendtemp(openid, order_coded, product_type, pay_time string) {
 	if openid == "" || order_coded == "" || product_type == "" || pay_time == "" {
 		fmt.Println("数据报告模板参数异常")
 	} else {
-		wxTplMsgErr := (&util.WxTplMsgCustom{}).DataReport()
-		if wxTplMsgErr != nil {
-			log.Println(wxTplMsgErr)
-		}
+		util.DataReport_WTMCS.Reload()
+		wtmc := util.DataReport_WTMCS.Get(config.MessageConfig.WxTpl_DataReport.First.Value)
 		ok, status := frpc.WxPush(config.Config.Weixinrpc, "WeiXinRpc.SendDataReportMsg", &frpc.NotifyMsg{
 			Openid:  openid,
-			Title:   config.MessageConfig.WxTpl_DataReport.First.Value,
+			Title:   wtmc.FirstData,
 			Detail:  product_type, //产品类型
 			Service: order_coded,  //订单编号
 			Date:    pay_time,     //支付时间
 			Remark:  "数据报告将以电子版形式发送至您的邮箱,请注意垃圾邮件过滤,感谢您的光临",
-			Url:     config.Config.WebDomain + "/datareport/page/order/detail/" + order_coded,
+			Url:     config.Config.WebDomain + "/front/sess/" + Se.EncodeString(openid+",uid,"+strconv.Itoa(int(time.Now().Unix()))+",datareport") + "__" + order_coded + "__" + wtmc.AdvertCode,
 		})
-		if !ok {
-			fmt.Println("数据报告", order_coded, ok, status)
-		}
+		log.Println("数据报告", order_coded, ok, status, wtmc.AdvertCode, wtmc.FirstData)
 	}
 }

+ 3 - 10
src/jfw/modules/subscribepay/src/main.go

@@ -16,17 +16,10 @@ import (
 	"github.com/go-xweb/xweb"
 )
 
-func init() {
-	wxTplMsgExpiredErr := (&util.WxTplMsgCustom{}).Expired()
-	if wxTplMsgExpiredErr != nil {
-		log.Println(wxTplMsgExpiredErr)
-	}
-	wxTplMsgDataReportErr := (&util.WxTplMsgCustom{}).DataReport()
-	if wxTplMsgDataReportErr != nil {
-		log.Println(wxTplMsgDataReportErr)
-	}
-}
 func main() {
+	util.OnTrial_WTMCS.Reload()
+	util.Formal_WTMCS.Reload()
+	util.DataReport_WTMCS.Reload()
 	go func() {
 		frpc := new(rpcfollow.JyPayRpc)
 		rpc.Register(frpc)

+ 39 - 1
src/jfw/modules/subscribepay/src/message.json

@@ -47,10 +47,42 @@
 		"keyword3": {
 			"value":"超级订阅"
 		},
+		"remark": {
+			"value":"如已购买,请忽略此信息。"
+		}
+	},
+	"WxTpl_BigMember_SoonExpire": {
+		"id": "_kQ-lk4LLPY_3gPWd1XKjRX3o-exDwoAPETBCaw53hg",
+		"first":{
+			"value":"003",
+			"color":"#FE737A"
+		},
+		"keyword2": {
+			"value":"-"
+		},
+		"keyword3": {
+			"value":"大会员"
+		},
 		"remark": {
 			"value":"如已续费,请忽略此信息。"
 		}
 	},
+	"WxTpl_BigMember_Expired": {
+		"id": "_kQ-lk4LLPY_3gPWd1XKjRX3o-exDwoAPETBCaw53hg",
+		"first":{
+			"value":"004",
+			"color":"#FE737A"
+		},
+		"keyword2": {
+			"value":"-"
+		},
+		"keyword3": {
+			"value":"大会员"
+		},
+		"remark": {
+			"value":"如已购买,请忽略此信息。"
+		}
+	},
 	"WxTpl_Unpaid": {
 		"id": "kDYkiU8GlkScTLOUcpO7T99wbI8UJUelasPzyOJTn0s",
 		"first":{
@@ -101,5 +133,11 @@
 		"first":{
 			"value":"001"
 		}
-	}
+	},
+	"App_OnTrial_SoonExpire":"您试用的超级订阅服务即将到期,如需获取更多精准招标信息,请及时购买。",
+	"App_OnTrial_Expired":"您试用的超级订阅服务已到期,如需获取更多精准招标信息,请及时购买。",
+	"App_SoonExpire":"您的超级订阅服务即将到期,为了不影响您所获取更全面的招标信息,请您及时续费。",
+	"App_Expired":"您的超级订阅服务已到期,如需获取更多精准招标信息,请再次购买。",
+	"App_BigMember_SoonExpire":"您的大会员服务即将到期,为了不影响您所获取更全面的招标信息,请您及时续费。",
+	"App_BigMember_Expired":"您的大会员服务已到期,如需获取更多精准招标信息,请再次购买。"
 }

+ 228 - 36
src/jfw/modules/subscribepay/src/timetask/timetask.go

@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"log"
 	. "mongodb"
+	. "p"
 	"pay"
 	qutil "qfw/util"
 	"qfw/util/jy"
@@ -231,7 +232,7 @@ func checkIsExpire() {
 		it := sess.DB("qfw").C("user").Find(map[string]interface{}{
 			"i_appid": 2,
 			"i_vip_status": map[string]interface{}{
-				"$in": []int{1, 2},
+				"$gt": 0,
 			},
 			"l_vip_endtime": map[string]interface{}{
 				"$lte": now_unix + threeday,
@@ -283,9 +284,9 @@ func expireRemind() {
 	crontab(false, TimeTaskConfig.ExpireRemind, func() {
 		defer qutil.Catch()
 		log.Println("定时任务,到期提醒,开始推送消息")
-		if wxTplMsgErr := (&util.WxTplMsgCustom{}).Expired(); wxTplMsgErr != nil {
-			log.Println(wxTplMsgErr)
-		}
+		now_unix := time.Now().Unix()
+		util.OnTrial_WTMCS.Reload()
+		util.Formal_WTMCS.Reload()
 		sess := util.MQFW.GetMgoConn()
 		for {
 			if sess != nil {
@@ -298,31 +299,35 @@ func expireRemind() {
 		it := sess.DB("qfw").C("user").Find(map[string]interface{}{
 			"i_appid": 2,
 			"i_vip_expire_tip": map[string]interface{}{
-				"$in": []int{1, 2},
+				"$gt": 0,
 			},
 		}).Select(map[string]interface{}{
-			"s_m_openid":       1,
-			"s_jpushid":        1,
-			"s_opushid":        1,
-			"s_appponetype":    1,
-			"s_nickname":       1,
-			"i_ispush":         1,
-			"i_vip_status":     1,
-			"l_vip_starttime":  1,
-			"l_vip_endtime":    1,
-			"i_vip_expire_tip": 1,
+			"s_m_openid":             1,
+			"s_jpushid":              1,
+			"s_opushid":              1,
+			"s_appponetype":          1,
+			"s_nickname":             1,
+			"i_ispush":               1,
+			"i_vip_status":           1,
+			"l_vip_starttime":        1,
+			"l_vip_endtime":          1,
+			"i_vip_expire_tip":       1,
+			"i_vip_expire_tip_retry": 1,
 		}).Iter()
 		for m := make(map[string]interface{}); it.Next(&m); {
-			_id := BsonIdToSId(m["_id"])
-			log.Println("发送消息", _id)
-			i_vip_status := qutil.IntAll(m["i_vip_status"])
 			i_vip_expire_tip := qutil.IntAll(m["i_vip_expire_tip"])
-			wxPushOk, appPushOk := false, false
 			if i_vip_expire_tip != 1 && i_vip_expire_tip != 2 {
 				continue
 			}
-			l_vip_starttime := qutil.Int64All(m["l_vip_starttime"])
+			_id := BsonIdToSId(m["_id"])
 			l_vip_endtime := qutil.Int64All(m["l_vip_endtime"])
+			if l_vip_endtime-now_unix > threeday && i_vip_expire_tip == 1 {
+				log.Println("即将到期提醒,结束时间大于三天,过滤掉", _id, l_vip_endtime)
+				continue
+			}
+			i_vip_status := qutil.IntAll(m["i_vip_status"])
+			wxPushOk, appPushOk := false, false
+			l_vip_starttime := qutil.Int64All(m["l_vip_starttime"])
 			s_m_openid := qutil.ObjToString(m["s_m_openid"])
 			isPushWx := qutil.IntAllDef(m["i_ispush"], 1)
 			s_jpushid := qutil.ObjToString(m["s_jpushid"])
@@ -330,21 +335,25 @@ func expireRemind() {
 			s_appponetype := qutil.ObjToString(m["s_appponetype"])
 			log.Println("到期提醒,推送消息", _id, "i_vip_status", i_vip_status, "l_vip_starttime", l_vip_starttime, "l_vip_endtime", l_vip_endtime, "i_vip_expire_tip", i_vip_expire_tip, "s_m_openid", s_m_openid, "isPushWx", isPushWx, "s_appponetype", s_appponetype, "s_jpushid", s_jpushid, "s_opushid", s_opushid)
 			tp := ""
-			tplId, first_value, first_color, keyword1_value, keyword2_value, keyword3_value, keyword4_value, remark := "", "", "", "", "", "", "", ""
+			tplId, first_color, keyword1_value, keyword2_value, keyword3_value, keyword4_value, remark := "", "", "", "", "", "", ""
+			app_descript := ""
+			var wtmc *WxTplMsgCustom
 			switch i_vip_status {
 			case 1, -1:
 				if i_vip_expire_tip == 1 {
 					tp = "ontrial_soonexprie"
 					tplId = MessageConfig.WxTpl_OnTrial_SoonExpire.Id
-					first_value = MessageConfig.WxTpl_OnTrial_SoonExpire.First.Value
+					wtmc = util.OnTrial_WTMCS.Get(MessageConfig.WxTpl_OnTrial_SoonExpire.First.Value)
 					first_color = MessageConfig.WxTpl_OnTrial_SoonExpire.First.Color
 					remark = MessageConfig.WxTpl_OnTrial_SoonExpire.Remark.Value
+					app_descript = MessageConfig.App_OnTrial_SoonExpire
 				} else if i_vip_expire_tip == 2 {
 					tp = "ontrial_expried"
 					tplId = MessageConfig.WxTpl_OnTrial_Expired.Id
-					first_value = MessageConfig.WxTpl_OnTrial_Expired.First.Value
+					wtmc = util.OnTrial_WTMCS.Get(MessageConfig.WxTpl_OnTrial_Expired.First.Value)
 					first_color = MessageConfig.WxTpl_OnTrial_Expired.First.Color
 					remark = MessageConfig.WxTpl_OnTrial_Expired.Remark.Value
+					app_descript = MessageConfig.App_OnTrial_Expired
 				}
 				keyword1_value = qutil.ObjToString(m["s_nickname"])
 				keyword2_value = qutil.FormatDateByInt64(&l_vip_endtime, qutil.Date_Short_Layout)
@@ -353,28 +362,32 @@ func expireRemind() {
 				if i_vip_expire_tip == 1 {
 					tp = "soonexprie"
 					tplId = MessageConfig.WxTpl_SoonExpire.Id
-					first_value = MessageConfig.WxTpl_SoonExpire.First.Value
+					wtmc = util.Formal_WTMCS.Get(MessageConfig.WxTpl_SoonExpire.First.Value)
 					first_color = MessageConfig.WxTpl_SoonExpire.First.Color
 					keyword2_value = MessageConfig.WxTpl_SoonExpire.Keyword2.Value
 					keyword3_value = MessageConfig.WxTpl_SoonExpire.Keyword3.Value
 					remark = MessageConfig.WxTpl_SoonExpire.Remark.Value
+					app_descript = MessageConfig.App_SoonExpire
 				} else if i_vip_expire_tip == 2 {
 					tp = "expried"
 					tplId = MessageConfig.WxTpl_Expired.Id
-					first_value = MessageConfig.WxTpl_Expired.First.Value
+					wtmc = util.Formal_WTMCS.Get(MessageConfig.WxTpl_Expired.First.Value)
 					first_color = MessageConfig.WxTpl_Expired.First.Color
 					keyword2_value = MessageConfig.WxTpl_Expired.Keyword2.Value
 					keyword3_value = MessageConfig.WxTpl_Expired.Keyword3.Value
 					remark = MessageConfig.WxTpl_Expired.Remark.Value
+					app_descript = MessageConfig.App_Expired
 				}
 				keyword1_value = qutil.ObjToString(m["s_nickname"])
 				keyword4_value = qutil.FormatDateByInt64(&l_vip_endtime, qutil.Date_Short_Layout)
 				break
+			default:
+				continue
 			}
-			if isPushWx == 1 && s_m_openid != "" { //微信推送
+			if isPushWx == 1 && s_m_openid != "" && wtmc != nil { //微信推送
 				tmplData := map[string]*qrpc.TmplItem{
 					"first": &qrpc.TmplItem{
-						Value: first_value,
+						Value: wtmc.FirstData,
 						Color: first_color,
 					},
 					"keyword1": &qrpc.TmplItem{
@@ -397,10 +410,10 @@ func expireRemind() {
 					OpenId:   s_m_openid,
 					TplId:    tplId,
 					TmplData: tmplData,
-					Url:      Config.WebDomain + "/front/sess/" + util.Se_Topnet.EncodeString(s_m_openid+",uid,"+strconv.Itoa(int(time.Now().Unix()))+",msgremind") + "__" + hex.EncodeToString([]byte(fmt.Sprintf("type=%s", tp))),
+					Url:      Config.WebDomain + "/front/sess/" + util.Se_Topnet.EncodeString(s_m_openid+",uid,"+strconv.Itoa(int(time.Now().Unix()))+",msgremind") + "__" + hex.EncodeToString([]byte(fmt.Sprintf("type=%s&advertcode=%s", tp, wtmc.AdvertCode))),
 				})
-				log.Println("到期提醒,微信推送", _id, wxPushOk)
-			} else if m["s_opushid"] != nil || m["s_jpushid"] != nil { //app推送
+				log.Println("到期提醒,微信推送", _id, wxPushOk, wtmc.AdvertCode, wtmc.FirstData)
+			} else if (m["s_opushid"] != nil || m["s_jpushid"] != nil) && app_descript != "" { //app推送
 				appPushOk = qrpc.AppPush(Config.AppPushServiceRpc, map[string]interface{}{
 					"phoneType":   m["s_appponetype"],
 					"otherPushId": m["s_opushid"],
@@ -408,17 +421,23 @@ func expireRemind() {
 					"url":         "/jyapp/free/sess/" + util.Se_Topnet.EncodeString(_id+",uid,"+strconv.Itoa(int(time.Now().Unix()))+",msgremind") + "__" + hex.EncodeToString([]byte(fmt.Sprintf("type=%s", tp))),
 					"userId":      _id,
 					"type":        "vipNotice",
-					"descript":    first_value,
+					"descript":    app_descript,
 					"title":       "剑鱼提醒",
 				})
 				log.Println("到期提醒,app推送", _id, appPushOk)
 			}
-			if wxPushOk || appPushOk {
+			if wxPushOk || appPushOk || qutil.IntAll(m["i_vip_expire_tip_retry"]) >= 2 {
 				util.MQFW.UpdateById("user", _id, map[string]interface{}{
 					"$set": map[string]interface{}{
 						"i_vip_expire_tip": 0,
 					},
 				})
+			} else if i_vip_expire_tip == 2 {
+				util.MQFW.UpdateById("user", _id, map[string]interface{}{
+					"$inc": map[string]interface{}{
+						"i_vip_expire_tip_retry": 1,
+					},
+				})
 			}
 			m = make(map[string]interface{})
 		}
@@ -442,23 +461,38 @@ func checkMemberIsExpire() {
 			time.Sleep(time.Minute)
 			sess = util.MQFW.GetMgoConn()
 		}
+		delSess := util.Mgo_log.GetMgoConn()
+		delSessErrCount := 0
+		for {
+			if delSessErrCount == 10 {
+				break
+			} else if delSess != nil {
+				defer util.Mgo_log.DestoryMongoConn(delSess)
+				break
+			}
+			delSessErrCount++
+			time.Sleep(5 * time.Second)
+			delSess = util.Mgo_log.GetMgoConn()
+		}
 		it := sess.DB("qfw").C("user").Find(map[string]interface{}{
 			"i_appid": 2,
 			"i_member_status": map[string]interface{}{
 				"$gt": 0,
 			},
 			"i_member_endtime": map[string]interface{}{
-				"$lte": now_unix,
+				"$lte": now_unix + threeday,
 			},
-		}).Select(map[string]interface{}{"i_member_status": 1, "i_member_endtime": 1}).Iter()
+		}).Select(map[string]interface{}{"i_member_status": 1, "i_member_endtime": 1, "i_member_expire_tip": 1}).Iter()
 		for m := make(map[string]interface{}); it.Next(&m); {
 			_id := BsonIdToSId(m["_id"])
 			i_member_endtime := qutil.Int64All(m["i_member_endtime"])
 			i_member_status := qutil.IntAll(m["i_member_status"])
+			i_member_expire_tip := qutil.IntAll(m["i_member_expire_tip"])
 			if i_member_endtime <= now_unix {
 				util.MQFW.UpdateById("user", _id, map[string]interface{}{
 					"$set": map[string]interface{}{
-						"i_member_status": -i_member_status,
+						"i_member_status":     -i_member_status,
+						"i_member_expire_tip": 2,
 					},
 					"$unset": map[string]interface{}{
 						"i_mainaccount":       "",
@@ -468,15 +502,32 @@ func checkMemberIsExpire() {
 						"s_member_mainid":     "",
 					},
 				})
+				if delSess != nil {
+					for _, pushColl := range []string{"pushspace_member", "pushspace_member_temp", "pushspace_member_wait", "pushspace_member_project"} {
+						_, err := delSess.DB("push").C(pushColl).RemoveAll(map[string]interface{}{"userid": _id})
+						if err != nil {
+							log.Println("用户", _id, "大会员已到期删除", pushColl, "表数据出错", err)
+						} else {
+							log.Println("用户", _id, "大会员已到期删除", pushColl, "表数据")
+						}
+					}
+				}
 				//大会员用户服务表
 				if util.Mysql.UpdateOrDeleteBySql(`UPDATE `+jy.BigmemberUserPowerTable+` a SET a.i_frequency = 0 , a.i_status = -1, a.l_updatetime=?  WHERE a.s_userid = ?`, now_time, _id) < 0 {
-					log.Println(_id, "跟新到期用户服务表出错")
+					log.Println(_id, "新到期用户服务表出错")
 				} else {
 					if !jy.ClearBigVipUserPower(_id) {
 						log.Println("清除 redis 大会员服务详情 缓存失败:", _id)
 					}
 					clearBigVipUserPower(_id)
 				}
+			} else if i_member_endtime-now_unix <= threeday && i_member_expire_tip != 1 {
+				updateOk := util.MQFW.UpdateById("user", _id, map[string]interface{}{
+					"$set": map[string]interface{}{
+						"i_member_expire_tip": 1,
+					},
+				})
+				log.Println("用户", _id, i_member_status, i_member_endtime, "修改大会员即将到期状态", updateOk)
 			}
 			m = make(map[string]interface{})
 		}
@@ -484,6 +535,147 @@ func checkMemberIsExpire() {
 	})
 }
 
+//大会员即将到期或者已到期发推送消息
+func bigMemberExpireRemind() {
+	crontab(false, TimeTaskConfig.ExpireRemind, func() {
+		defer qutil.Catch()
+		log.Println("定时任务,大会员到期提醒,开始推送消息")
+		now_unix := time.Now().Unix()
+		util.Formal_WTMCS.Reload()
+		sess := util.MQFW.GetMgoConn()
+		for {
+			if sess != nil {
+				defer util.MQFW.DestoryMongoConn(sess)
+				break
+			}
+			time.Sleep(time.Minute)
+			sess = util.MQFW.GetMgoConn()
+		}
+		it := sess.DB("qfw").C("user").Find(map[string]interface{}{
+			"i_appid": 2,
+			"i_member_expire_tip": map[string]interface{}{
+				"$in": []int{1, 2},
+			},
+		}).Select(map[string]interface{}{
+			"s_m_openid":          1,
+			"s_jpushid":           1,
+			"s_opushid":           1,
+			"s_appponetype":       1,
+			"s_nickname":          1,
+			"i_ispush":            1,
+			"i_member_status":     1,
+			"i_member_starttime":  1,
+			"i_member_endtime":    1,
+			"i_member_expire_tip": 1,
+		}).Iter()
+		for m := make(map[string]interface{}); it.Next(&m); {
+			i_member_expire_tip := qutil.IntAll(m["i_member_expire_tip"])
+			if i_member_expire_tip != 1 && i_member_expire_tip != 2 {
+				continue
+			}
+			_id := BsonIdToSId(m["_id"])
+			i_member_endtime := qutil.Int64All(m["i_member_endtime"])
+			if i_member_endtime-now_unix > threeday && i_member_endtime == 1 {
+				log.Println("大会员即将到期提醒,结束时间大于三天,过滤掉", _id, i_member_endtime)
+				continue
+			}
+			i_member_status := qutil.IntAll(m["i_member_status"])
+			wxPushOk, appPushOk := false, false
+			i_member_starttime := qutil.Int64All(m["i_member_starttime"])
+			s_m_openid := qutil.ObjToString(m["s_m_openid"])
+			isPushWx := qutil.IntAllDef(m["i_ispush"], 1)
+			s_jpushid := qutil.ObjToString(m["s_jpushid"])
+			s_opushid := qutil.ObjToString(m["s_opushid"])
+			s_appponetype := qutil.ObjToString(m["s_appponetype"])
+			log.Println("大会员到期提醒,推送消息", _id, "i_member_status", i_member_status, "i_member_starttime", i_member_starttime, "i_member_endtime", i_member_endtime, "i_member_expire_tip", i_member_expire_tip, "s_m_openid", s_m_openid, "isPushWx", isPushWx, "s_appponetype", s_appponetype, "s_jpushid", s_jpushid, "s_opushid", s_opushid)
+			tp := ""
+			tplId, first_color, keyword1_value, keyword2_value, keyword3_value, keyword4_value, remark := "", "", "", "", "", "", ""
+			app_descript := ""
+			var wtmc *WxTplMsgCustom
+			if i_member_status > 0 {
+				tp = "bigmember_soonexprie"
+				tplId = MessageConfig.WxTpl_BigMember_SoonExpire.Id
+				wtmc = util.Formal_WTMCS.Get(MessageConfig.WxTpl_BigMember_SoonExpire.First.Value)
+				first_color = MessageConfig.WxTpl_BigMember_SoonExpire.First.Color
+				keyword2_value = MessageConfig.WxTpl_BigMember_SoonExpire.Keyword2.Value
+				keyword3_value = MessageConfig.WxTpl_BigMember_SoonExpire.Keyword3.Value
+				remark = MessageConfig.WxTpl_BigMember_SoonExpire.Remark.Value
+				app_descript = MessageConfig.App_BigMember_SoonExpire
+			} else if i_member_status < 0 {
+				tp = "bigmember_expried"
+				tplId = MessageConfig.WxTpl_BigMember_Expired.Id
+				wtmc = util.Formal_WTMCS.Get(MessageConfig.WxTpl_BigMember_Expired.First.Value)
+				first_color = MessageConfig.WxTpl_BigMember_Expired.First.Color
+				keyword2_value = MessageConfig.WxTpl_BigMember_Expired.Keyword2.Value
+				keyword3_value = MessageConfig.WxTpl_BigMember_Expired.Keyword3.Value
+				remark = MessageConfig.WxTpl_BigMember_Expired.Remark.Value
+				app_descript = MessageConfig.App_BigMember_Expired
+			} else {
+				continue
+			}
+			keyword1_value = qutil.ObjToString(m["s_nickname"])
+			keyword4_value = qutil.FormatDateByInt64(&i_member_endtime, qutil.Date_Short_Layout)
+			if isPushWx == 1 && s_m_openid != "" && wtmc != nil { //微信推送
+				tmplData := map[string]*qrpc.TmplItem{
+					"first": &qrpc.TmplItem{
+						Value: wtmc.FirstData,
+						Color: first_color,
+					},
+					"keyword1": &qrpc.TmplItem{
+						Value: keyword1_value,
+					},
+					"keyword2": &qrpc.TmplItem{
+						Value: keyword2_value,
+					},
+					"keyword3": &qrpc.TmplItem{
+						Value: keyword3_value,
+					},
+					"keyword4": &qrpc.TmplItem{
+						Value: keyword4_value,
+					},
+					"remark": &qrpc.TmplItem{
+						Value: remark,
+					},
+				}
+				wxPushOk, _ = qrpc.WxSendTmplMsg(Config.Weixinrpc, &qrpc.WxTmplMsg{
+					OpenId:   s_m_openid,
+					TplId:    tplId,
+					TmplData: tmplData,
+					Url:      Config.WebDomain + "/front/sess/" + util.Se_Topnet.EncodeString(s_m_openid+",uid,"+strconv.Itoa(int(time.Now().Unix()))+",msgremind") + "__" + hex.EncodeToString([]byte(fmt.Sprintf("type=%s&advertcode=%s", tp, wtmc.AdvertCode))),
+				})
+				log.Println("大会员到期提醒,微信推送", _id, wxPushOk, wtmc.AdvertCode, wtmc.FirstData)
+			} else if (m["s_opushid"] != nil || m["s_jpushid"] != nil) && app_descript != "" { //app推送
+				appPushOk = qrpc.AppPush(Config.AppPushServiceRpc, map[string]interface{}{
+					"phoneType":   m["s_appponetype"],
+					"otherPushId": m["s_opushid"],
+					"jgPushId":    m["s_jpushid"],
+					"url":         "/jyapp/free/sess/" + util.Se_Topnet.EncodeString(_id+",uid,"+strconv.Itoa(int(time.Now().Unix()))+",msgremind") + "__" + hex.EncodeToString([]byte(fmt.Sprintf("type=%s", tp))),
+					"userId":      _id,
+					"type":        "vipNotice",
+					"descript":    app_descript,
+					"title":       "剑鱼提醒",
+				})
+				log.Println("大会员到期提醒,app推送", _id, appPushOk)
+			}
+			if wxPushOk || appPushOk || qutil.IntAll(m["i_member_expire_tip_retry"]) >= 2 {
+				util.MQFW.UpdateById("user", _id, map[string]interface{}{
+					"$set": map[string]interface{}{
+						"i_member_expire_tip": 0,
+					},
+				})
+			} else {
+				util.MQFW.UpdateById("user", _id, map[string]interface{}{
+					"$inc": map[string]interface{}{
+						"i_member_expire_tip_retry": 1,
+					},
+				})
+			}
+			m = make(map[string]interface{})
+		}
+		log.Println("定时任务,大会员到期提醒,推送消息结束")
+	})
+}
+
 //查看是否有大会员用户定时开启会员
 func checkMemberIsStart() {
 	crontab(true, TimeTaskConfig.MemberIsStart, func() {

+ 2 - 1
src/jfw/modules/subscribepay/src/util/dataExportExcel.go

@@ -5,12 +5,13 @@ import (
 	"config"
 	"errors"
 	"fmt"
-	"github.com/tealeg/xlsx"
 	"io"
 	"os"
 	qutil "qfw/util"
 	"strings"
 	"time"
+
+	"github.com/tealeg/xlsx"
 )
 
 var (

+ 5 - 0
src/jfw/modules/subscribepay/src/util/db.go

@@ -3,6 +3,7 @@ package util
 import (
 	. "config"
 	mg "mongodb"
+	. "p"
 	qutil "qfw/util"
 	"qfw/util/elastic"
 	"qfw/util/mysql"
@@ -93,4 +94,8 @@ func init() {
 		Password:    Config.Mongolog.Password,
 	}
 	Mgo_log.InitPool()
+	//
+	OnTrial_WTMCS = NewWxTplMsgCustoms(Mysql, MessageConfig.WxTpl_OnTrial_SoonExpire.Id, MessageConfig.WxTpl_OnTrial_SoonExpire.First.Value, MessageConfig.WxTpl_OnTrial_Expired.First.Value)
+	Formal_WTMCS = NewWxTplMsgCustoms(Mysql, MessageConfig.WxTpl_Expired.Id, MessageConfig.WxTpl_SoonExpire.First.Value, MessageConfig.WxTpl_Expired.First.Value)
+	DataReport_WTMCS = NewWxTplMsgCustoms(Mysql, MessageConfig.WxTpl_DataReport.Id, MessageConfig.WxTpl_DataReport.First.Value)
 }

+ 7 - 0
src/jfw/modules/subscribepay/src/util/util.go

@@ -1,9 +1,16 @@
 package util
 
 import (
+	. "p"
 	qutil "qfw/util"
 )
 
+var (
+	OnTrial_WTMCS    *WxTplMsgCustoms
+	Formal_WTMCS     *WxTplMsgCustoms
+	DataReport_WTMCS *WxTplMsgCustoms
+)
+
 func ConfirmIntArr(arr []interface{}) []int {
 	tmp := make([]int, 0)
 	for _, v := range arr {

+ 0 - 86
src/jfw/modules/subscribepay/src/util/wxtplmsgcustom.go

@@ -1,86 +0,0 @@
-package util
-
-import (
-	. "config"
-	"errors"
-	"log"
-	. "qfw/util/rpc"
-	"strings"
-)
-
-type WxTplMsgCustom struct {
-}
-
-/* 获取自定义模板消息
- * @Param tplId 模板消息id
- * @Param sceneCode 场景代码
- */
-func (w *WxTplMsgCustom) Get(tplId string, sceneCode ...string) map[string]*TmplItem {
-	param := []interface{}{tplId}
-	wh := []string{}
-	for _, v := range sceneCode {
-		param = append(param, v)
-		wh = append(wh, "?")
-	}
-	list := Mysql.SelectBySql(`select firstdata,sceneCode from scene a 
-	inner join template_message b on (a.templateId=b.id and b.templateId=? and a.sceneCode in (`+strings.Join(wh, ",")+`) and a.state=1 and a.isTest=1)`, param...)
-	m := map[string]*TmplItem{}
-	if list != nil {
-		for _, v := range *list {
-			sceneCode, _ := v["sceneCode"].(string)
-			sceneCode = strings.TrimSpace(sceneCode)
-			//
-			firstdata, _ := v["firstdata"].(string)
-			firstdata = strings.TrimSpace(firstdata)
-			//
-			m[sceneCode] = &TmplItem{
-				Value: firstdata,
-			}
-		}
-	}
-	return m
-}
-
-//超级订阅试用即将到期、超级订阅试用已到期、超级订阅即将到期、超级订阅已到期
-func (w *WxTplMsgCustom) Expired() error {
-	//试用-微信模板消息自定义
-	onTrial_WxTplMsg := w.Get(MessageConfig.WxTpl_OnTrial_SoonExpire.Id, WxTpl_OnTrial_SoonExpire_SceneCode, WxTpl_OnTrial_Expired_SceneCode)
-	//试用-即将到期
-	if onTrial_WxTplMsg[WxTpl_OnTrial_SoonExpire_SceneCode] == nil {
-		return errors.New("试用-即将到期,微信模板消息异常")
-	}
-	MessageConfig.WxTpl_OnTrial_SoonExpire.First.Value = onTrial_WxTplMsg[WxTpl_OnTrial_SoonExpire_SceneCode].Value
-	log.Println("试用-即将到期,微信模板消息first_data", MessageConfig.WxTpl_OnTrial_SoonExpire.First.Value)
-	//试用-已到期
-	if onTrial_WxTplMsg[WxTpl_OnTrial_Expired_SceneCode] == nil {
-		return errors.New("试用-已到期,微信模板消息异常")
-	}
-	MessageConfig.WxTpl_OnTrial_Expired.First.Value = onTrial_WxTplMsg[WxTpl_OnTrial_Expired_SceneCode].Value
-	log.Println("试用-已到期,微信模板消息first_data", MessageConfig.WxTpl_OnTrial_Expired.First.Value)
-	//购买-微信模板消息自定义
-	wxTplMsg := w.Get(MessageConfig.WxTpl_Expired.Id, WxTpl_SoonExpire_SceneCode, WxTpl_Expired_SceneCode)
-	//即将到期
-	if wxTplMsg[WxTpl_SoonExpire_SceneCode] == nil {
-		return errors.New("即将到期,微信模板消息异常")
-	}
-	MessageConfig.WxTpl_SoonExpire.First.Value = wxTplMsg[WxTpl_SoonExpire_SceneCode].Value
-	log.Println("即将到期,微信模板消息first_data", MessageConfig.WxTpl_SoonExpire.First.Value)
-	//已到期
-	if wxTplMsg[WxTpl_Expired_SceneCode] == nil {
-		return errors.New("已到期,微信模板消息异常")
-	}
-	MessageConfig.WxTpl_Expired.First.Value = wxTplMsg[WxTpl_Expired_SceneCode].Value
-	log.Println("已到期,微信模板消息first_data", MessageConfig.WxTpl_Expired.First.Value)
-	return nil
-}
-
-//数据报告
-func (w *WxTplMsgCustom) DataReport() error {
-	wxTplMsg := w.Get(MessageConfig.WxTpl_DataReport.Id, WxTpl_DataReport_SceneCode)
-	if wxTplMsg[WxTpl_DataReport_SceneCode] == nil {
-		return errors.New("数据报告,微信模板消息异常")
-	}
-	MessageConfig.WxTpl_DataReport.First.Value = wxTplMsg[WxTpl_DataReport_SceneCode].Value
-	log.Println("数据报告,微信模板消息first_data", MessageConfig.WxTpl_DataReport.First.Value)
-	return nil
-}