Browse Source

新增一种RedirectTarget

hsun 2 years ago
parent
commit
28dd698462
3 changed files with 24 additions and 21 deletions
  1. 1 1
      models/wechat_send_msg.go
  2. 17 16
      services/wechat_send_msg.go
  3. 6 4
      utils/constants.go

+ 1 - 1
models/wechat_send_msg.go

@@ -214,7 +214,7 @@ type SendWxTemplate struct {
 	Remark         string   `description:"模板消息remark字段"`
 	TemplateId     string   `description:"模板id"`
 	RedirectUrl    string   `description:"跳转地址"`
-	RedirectTarget int      `description:"小程序跳转目标:1:弘则研报小程序,2:随手办公小程序,3:查研观向"`
+	RedirectTarget int      `description:"小程序跳转目标:1:弘则研报小程序,2:随手办公小程序,3:查研观向;4:研报备用小程序"`
 	Resource       string   `description:"资源唯一标识"`
 	SendType       int      `description:"发送的消息类型:1:报告,2:指标更新提醒,3:审批通知,4:销售领取客户通知,5:活动取消通知,6活动更改时间通知,7:关注的作者发布报告通知,8:发送日报(周报、双周报、月报)模板消息,9:活动预约/报名时间通知"`
 	OpenIdArr      []string `description:"消息接收者openid"`

+ 17 - 16
services/wechat_send_msg.go

@@ -90,6 +90,8 @@ func SendWxTemplateMsg(sendInfo *models.SendWxTemplate) (err error) {
 				xcxAppId = utils.WxCrmAppId
 			} else if sendInfo.RedirectTarget == 3 {
 				xcxAppId = utils.WxCygxAppId
+			} else if sendInfo.RedirectTarget == 4 {
+				xcxAppId = utils.WxCopyYbAppId
 			} else {
 				err = errors.New("无效的微信小程序跳转方式:RedirectTarget" + strconv.Itoa(sendInfo.RedirectTarget))
 			}
@@ -147,7 +149,7 @@ func sendTemplateMsg(sendMap map[string]interface{}, openIdArr []string, resourc
 					utils.FileLog.Info(fmt.Sprintf("SendTemplateMsgOne Marshal Err:%s", err.Error()))
 					return err
 				}
-				err = toSendTemplateMsg( data, resource, sendType, openId, uniqueCode)
+				err = toSendTemplateMsg(data, resource, sendType, openId, uniqueCode)
 				if err != nil {
 					fmt.Println("send err:", err.Error())
 					utils.FileLog.Info(fmt.Sprintf("ToSendTemplateMsg Err:%s", err.Error()))
@@ -162,9 +164,9 @@ func sendTemplateMsg(sendMap map[string]interface{}, openIdArr []string, resourc
 func toSendTemplateMsg(data []byte, resource string, sendType int, openId, uniqueCode string) (err error) {
 	utils.FileLog.Info("Send:" + string(data))
 	//获取accessToken
-	accessToken, err,errMsg := getWxAccessToken()
+	accessToken, err, errMsg := getWxAccessToken()
 	if err != nil {
-		utils.FileLog.Info(fmt.Sprintf("获取Token失败,err:%s,errMsg:%s",err.Error(), errMsg))
+		utils.FileLog.Info(fmt.Sprintf("获取Token失败,err:%s,errMsg:%s", err.Error(), errMsg))
 		return
 	}
 	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
@@ -209,10 +211,10 @@ func toSendTemplateMsg(data []byte, resource string, sendType int, openId, uniqu
 	}
 
 	//accessToken过期
-	if templateResponse.Errcode == 40001{
+	if templateResponse.Errcode == 40001 {
 		//强刷token并重新推送
-		accessToken,err,errMsg = refreshWxAccessToken()
-		if err != nil{
+		accessToken, err, errMsg = refreshWxAccessToken()
+		if err != nil {
 			utils.FileLog.Info(fmt.Sprintf("refreshWxAccessToken Err:%s", err.Error()))
 			return err
 		}
@@ -268,7 +270,7 @@ func toSendTemplateMsg(data []byte, resource string, sendType int, openId, uniqu
 }
 
 // getWxAccessToken 获取微信token
-func getWxAccessToken()(accessToken string,err error,errMsg string){
+func getWxAccessToken() (accessToken string, err error, errMsg string) {
 	accessToken, err = utils.Rc.RedisString(utils.CACHE_WX_ACCESS_TOKEN_HZ)
 	//fmt.Println(err)
 	//fmt.Println(accessToken)
@@ -278,7 +280,7 @@ func getWxAccessToken()(accessToken string,err error,errMsg string){
 	//	return
 	//}
 	//取到数据后就直接返回了,没有后续了
-	if accessToken != ""{
+	if accessToken != "" {
 		return
 	}
 
@@ -287,7 +289,7 @@ func getWxAccessToken()(accessToken string,err error,errMsg string){
 }
 
 // refreshWxAccessToken 强制刷新微信token
-func refreshWxAccessToken()(accessToken string,err error,errMsg string){
+func refreshWxAccessToken() (accessToken string, err error, errMsg string) {
 	fmt.Println("强制刷新微信token")
 	//调用微信官方接口获取新的accessToken
 	wxAccessToken, tmpErr := models.GetWxToken()
@@ -304,23 +306,22 @@ func refreshWxAccessToken()(accessToken string,err error,errMsg string){
 		return
 	}
 
-
 	accessToken = wxAccessToken.AccessToken
 	//更新mysql的accessToken
 	expiresIn := time.Now().Add(time.Duration(wxAccessToken.ExpiresIn) * time.Second).Unix()
-	err = models.ModifyAccessToken(wxAccessToken.AccessToken,expiresIn)
-	if err!=nil{
+	err = models.ModifyAccessToken(wxAccessToken.AccessToken, expiresIn)
+	if err != nil {
 		errMsg = "更新mysql中的accessToken失败 Err:" + err.Error()
 		return
 	}
 
 	//更新redis的accessToken(过期时间提前十分钟)
-	redisTimeExpire := time.Duration(wxAccessToken.ExpiresIn - 600) * time.Second
-	err = utils.Rc.Put(utils.CACHE_WX_ACCESS_TOKEN_HZ,accessToken,redisTimeExpire)
-	if err!=nil{
+	redisTimeExpire := time.Duration(wxAccessToken.ExpiresIn-600) * time.Second
+	err = utils.Rc.Put(utils.CACHE_WX_ACCESS_TOKEN_HZ, accessToken, redisTimeExpire)
+	if err != nil {
 		errMsg = "更新redis中的accessToken失败 Err:" + err.Error()
 		return
 	}
 
 	return
-}
+}

+ 6 - 4
utils/constants.go

@@ -38,11 +38,13 @@ const (
 )
 
 const (
-	WxCrmAppId = `wx67b68e39913e511e` //随手办公
-	WxYbAppId  = `wxb059c872d79b9967` //弘则研报小程序
-	WxCygxAppId  = `wxcc32b61f96720d2f` //弘则研报小程序
+	WxCrmAppId    = `wx67b68e39913e511e` //随手办公
+	WxYbAppId     = `wxb059c872d79b9967` //弘则研报小程序
+	WxCygxAppId   = `wxcc32b61f96720d2f` //查研观向小程序
+	WxCopyYbAppId = `wx9a2a9b49a00513a0` //弘则研报备用小程序
 )
+
 // 缓存key
 const (
-	CACHE_WX_ACCESS_TOKEN_HZ         = "wx:accesstoken:hzyj"                  //弘则研究公众号 微信accessToken
+	CACHE_WX_ACCESS_TOKEN_HZ = "wx:accesstoken:hzyj" //弘则研究公众号 微信accessToken
 )