Browse Source

微信模板消息推送

xingzai 3 years ago
parent
commit
2a572ae1e1
6 changed files with 105 additions and 23 deletions
  1. 20 0
      controllers/wechat.go
  2. 25 0
      models/activity.go
  3. 45 14
      services/activity.go
  4. 2 2
      services/task.go
  5. 11 5
      services/wx_template_msg.go
  6. 2 2
      utils/config.go

+ 20 - 0
controllers/wechat.go

@@ -620,3 +620,23 @@ func (this *WechatController) GetEmailCode() {
 //	fmt.Println(err)
 //	fmt.Println(userInfo)
 //}
+
+// @Title 更新微信token
+// @Description 更新微信token
+// @Success Ret=200 更新成功
+// @router /updateWxAccesstoken [get]
+func (this *WechatController) UpdateWxAccesstoken() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	accessToken, err := models.GetWxAccessToken()
+	if err != nil {
+		utils.FileLog.Info("GetWxAccessToken Err:%s", err.Error())
+		return
+	}
+	br.Data = accessToken
+	br.Ret = 200
+	br.Success = true
+}

+ 25 - 0
models/activity.go

@@ -132,6 +132,7 @@ type CygxActivityList struct {
 	ActivityTime            string `description:"活动时间"`
 	ActivityTimeText        string `description:"活动时间带文字"`
 	City                    string `description:"城市"`
+	Address                 string `description:"活动地址"`
 	DistinguishedGuest      string `description:"嘉宾"`
 	Expert                  string `description:"专家"`
 	IsSignup                int    `description:"是否已报名 1是 ,0 否"`
@@ -139,6 +140,8 @@ type CygxActivityList struct {
 	ActiveState             string `description:"活动进行状态 未开始:1、进行中2、已结束3"`
 	IsCancelMeetingReminder int    `description:"是否取消会议提醒 1展示取消会议提醒 ,0展示会议提醒"`
 	IsBrackets              int    `description:"是否有方括号 1是 ,0 否"`
+	OpenId                  string `description:"OenId"`
+	FailType                int    `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
 }
 
 type GetCygxActivityListRep struct {
@@ -250,3 +253,25 @@ func UpdateActivitySattusToComplete() (err error) {
 	_, err = o.Raw(msql).Exec()
 	return
 }
+
+//列表
+func GetActivitySendMsgListAll(endDate string) (items []*CygxActivityList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	s.fail_type,
+	c.open_id,
+	a.*
+FROM
+	cygx_activity AS a
+	INNER JOIN cygx_activity_signup AS s ON s.activity_id = a.activity_id
+	INNER   JOIN user_record AS c ON c.bind_account = s.mobile 
+WHERE
+	1 = 1 
+	AND s.is_send_wx_msg = 0 
+	AND a.publish_status = 1 
+	AND a.activity_time <= ? AND a.activity_time >= NOW() 
+	AND s.is_cancel = 0
+	AND s.fail_type = 0`
+	_, err = o.Raw(sql, endDate).QueryRows(&items)
+	return
+}

+ 45 - 14
services/activity.go

@@ -3,6 +3,7 @@ package services
 import (
 	"fmt"
 	"hongze/hongze_cygx/models"
+	"time"
 )
 
 //修改活动状态
@@ -26,21 +27,51 @@ func SendActivityBeginMsg() (err error) {
 			fmt.Println("发送失败,Err:", err.Error())
 		}
 	}()
-	first := "您有活动 客户将于30天后到期,请注意查看"
-	keyword1 := "关键词11111"
-	keyword2 := "关键词22222"
-	remark := "备注"
-	fmt.Println("发送开始")
+	first := "感谢您对,诺亚活动的支持,您的预报名结果如下:"
+	//keyword1 := "关键词11111"
+	//keyword2 := "关键词22222"
+	//remark := "备注"
+	//fmt.Println("发送开始")
 	openIdList := make([]*models.OpenIdList, 0)
-	openIdItem := new(models.OpenIdList)
-	//openIdItem.OpenId = "oW3Gts2qY7-B2pPiurtjQrAfCXmI"
-	openIdItem.OpenId = "oN0jD1QwcA2uRD0BC4mH5zJMo0eg666"
-	//openIdItem.OpenId = "oMbJK42TIRonXYmzu12k_aFYEc3M"
-	//openIdItem.OpenId = "oW3Gts_aleSrjTFwYoWXz7gCK8R8"
-	//openIdItem.OpenId = "oN0jD1Z0QjeElAde32jOcLAdZDCo"
-	openIdList = append(openIdList, openIdItem)
+	//openIdItem := new(models.OpenIdList)
+	//openIdItem.OpenId = "oN0jD1QwcA2uRD0BC4mH5zJMo0eg"
+	//openIdList = append(openIdList, openIdItem)
+	//SendWxMsgWithFrequency(first, keyword1, keyword2, remark, openIdList)
+	endDate := time.Now().Add(+time.Minute * 30).Format("2006-01-02 15:04:05")
+	listActivity, err := models.GetActivitySendMsgListAll(endDate)
+	fmt.Println(len(listActivity))
+	if err != nil {
+		fmt.Println("GetActivitySendMsgListAll Err:", err.Error())
+		return
+	}
+	if len(listActivity) == 0 {
+		return
+	}
+
+	var remark = "如报名成功,点击详情可获取专属参会二维码凭证,并在签到时出示。如有住宿,请携带您的有效身份证件。期待与您见面!"
+	for _, v := range listActivity {
+		fmt.Println(v.OpenId)
+		var keyword2 string
+		openIdItem := new(models.OpenIdList)
+		openIdItem.OpenId = "oN0jD1QwcA2uRD0BC4mH5zJMo0eg"
+		openIdList := make([]*models.OpenIdList, 0)
+		openIdList = append(openIdList, openIdItem)
+		if v.FailType == 0 {
+			keyword2 = "成功"
+		} else if v.FailType == 1 {
+			keyword2 = "失败(总人数已满)"
+		} else if v.FailType == 2 {
+			keyword2 = "失败(单机构超限制)"
+		} else if v.FailType == 3 {
+			keyword2 = "失败(爽约次数超限)"
+		}
+		SendWxMsgWithFrequency(first, v.ActivityName, keyword2, v.Address, remark, openIdList)
+		//openIdItem.OpenId = v.OpenId
+
+	}
+
+	fmt.Println(openIdList)
+	fmt.Println(len(listActivity))
 
-	SendWxMsgWithFrequency(first, keyword1, keyword2, remark, openIdList)
-	fmt.Println("发送完成")
 	return
 }

+ 2 - 2
services/task.go

@@ -40,8 +40,8 @@ func Task() {
 
 	//UpdateIndustrialManagementSubjectNnames()
 
-	SendActivityBeginMsg()
-	toolbox.StartTask()
+	//SendActivityBeginMsg()
+	//toolbox.StartTask()
 
 	//if utils.RunMode == "debug" {
 	//	//syncTacticsList := toolbox.NewTask("syncTacticsList", "0 */5 * * * *", SyncTacticsList)

+ 11 - 5
services/wx_template_msg.go

@@ -11,7 +11,7 @@ import (
 	"time"
 )
 
-func SendWxMsgWithFrequency(first, keyword1, keyword2, remark string, openIdList []*models.OpenIdList) (err error) {
+func SendWxMsgWithFrequency(first, keyword1, keyword2, keyword3, remark string, openIdList []*models.OpenIdList) (err error) {
 	var msg string
 	defer func() {
 		if err != nil {
@@ -33,15 +33,13 @@ func SendWxMsgWithFrequency(first, keyword1, keyword2, remark string, openIdList
 
 	sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
 	templateId := utils.WxMsgTemplateIdActivityApply
-	fmt.Println(templateId)
-	fmt.Println(first)
-	fmt.Println(keyword1)
 	sendMap := make(map[string]interface{})
 	sendData := make(map[string]interface{})
 	sendMap["template_id"] = templateId
 	sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
 	sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
 	sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
+	sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
 	sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
 	sendMap["data"] = sendData
 	WxSendTemplateMsg(sendUrl, sendMap, openIdList)
@@ -51,7 +49,6 @@ func SendWxMsgWithFrequency(first, keyword1, keyword2, remark string, openIdList
 func WxSendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*models.OpenIdList) (err error) {
 	for _, v := range items {
 		sendMap["touser"] = v.OpenId
-		fmt.Println(v.OpenId)
 		data, err := json.Marshal(sendMap)
 		if err != nil {
 			fmt.Println("SendTemplateMsgOne Marshal Err:", err.Error())
@@ -124,3 +121,12 @@ func SendWxMsgWithCompanyRemind(first, keyword1, keyword2, remark string, openId
 	WxSendTemplateMsg(sendUrl, sendMap, openIdList)
 	return
 }
+
+//弘则投资:
+//Y59n_AHg-RLCKaz293geW76KDHpGL1qOnE7eF_lxelY  活动预约通知
+//CB7bOl7f3viMG4s1uhRo7WM0Jbx3WvodKuIZ8A_z8fM  项目状态变更通知
+//
+//
+//弘则研究:
+//MwZ5wxfd0O1Yt0Pkf6OkfWP4USQzZbiEo5SkZ26735s     活动预约通知
+//dYg6iHooRq74PyCXmw_Ns7qdJZmbtLoKS2p2FKeaXl0     项目状态变更通知

+ 2 - 2
utils/config.go

@@ -86,8 +86,8 @@ func init() {
 		WxMsgTemplateIdApply = "qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo"
 		WxMsgTemplateIdApplyCancel = "UU_d7ks0XZBnWg2xFzxL9Heilm4kisX39K7dr4SDdO8"
 		WxMsgTemplateIdPermissionApply = "qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo"
-		//WxMsgTemplateIdActivityApply = "Y59n_AHg-RLCKaz293geW76KDHpGL1qOnE7eF_lxelY"
-		WxMsgTemplateIdActivityApply = "MwZ5wxfd0O1Yt0Pkf6OkfWP4USQzZbiEo5SkZ26735s"
+		WxMsgTemplateIdActivityApply = "Y59n_AHg-RLCKaz293geW76KDHpGL1qOnE7eF_lxelY"
+		//WxMsgTemplateIdActivityApply = "MwZ5wxfd0O1Yt0Pkf6OkfWP4USQzZbiEo5SkZ26735s"
 		WxMsgTemplateIdActivityChange = "qfNuops-CB7bOl7f3viMG4s1uhRo7WM0Jbx3WvodKuIZ8A_z8fM"
 
 		WxPublicAppId = "wx9b5d7291e581233a"