Przeglądaj źródła

新增公众号自动回复

longyu 2 lat temu
rodzic
commit
232a7f1c83
2 zmienionych plików z 66 dodań i 1 usunięć
  1. 51 1
      controllers/wechat.go
  2. 15 0
      utils/config.go

+ 51 - 1
controllers/wechat.go

@@ -8,6 +8,7 @@ import (
 	"hongze/hongze_api/services"
 	"hongze/hongze_api/utils"
 	"strconv"
+	"strings"
 	"time"
 )
 
@@ -412,6 +413,54 @@ func (this *WechatCommonController) Notify() {
 				utils.FileLog.Info("wechat notify event:" + item.Event)
 			}
 			this.Ctx.WriteString(xmlTpl)
+		} else if item.MsgType == "text" {
+			textXmlTpl := `<xml>
+						  <ToUserName><![CDATA[%s]]></ToUserName>
+						  <FromUserName><![CDATA[%s]]></FromUserName>
+						  <CreateTime>%s</CreateTime>
+						  <MsgType><![CDATA[text]]></MsgType>
+						  <Content><![CDATA[%s]]></Content>
+						</xml>`
+			createTime := strconv.FormatInt(time.Now().Unix(), 10)
+			classifyArr := utils.ClassifyArr
+			var flag bool
+			for _, v := range classifyArr {
+				if strings.Contains(v, item.Content) || strings.Contains(item.Content, v) {
+					flag=true
+				}
+			}
+			if flag {
+				contactMsg=`请点击研究报告-FICC研报,查看报告`
+				textXmlTpl = fmt.Sprintf(textXmlTpl, item.FromUserName, utils.WxId, createTime, contactMsg)
+				this.Ctx.WriteString(textXmlTpl)
+				return
+			}
+			reportNameArr := utils.ReportNameArr
+			for _, v := range reportNameArr {
+				if strings.Contains(v, item.Content) || strings.Contains(item.Content, v) {
+					flag=true
+				}
+			}
+			if flag {
+				contactMsg=`请点击研究报告-FICC研报-研报(左上),查看报告`
+				textXmlTpl = fmt.Sprintf(textXmlTpl, item.FromUserName, utils.WxId, createTime, contactMsg)
+				this.Ctx.WriteString(textXmlTpl)
+				return
+			}
+
+			if strings.Contains("解绑", item.Content) || strings.Contains(item.Content, "解绑") ||
+				strings.Contains("手机号", item.Content) || strings.Contains(item.Content, "手机号") {
+				flag=true
+			}
+
+			if flag {
+				contactMsg=`推送:请通过电话联系我们或者联系销售人员处理`
+				textXmlTpl = fmt.Sprintf(textXmlTpl, item.FromUserName, utils.WxId, createTime, contactMsg)
+				this.Ctx.WriteString(textXmlTpl)
+				return
+			}
+			returnResult = xmlTpl
+			this.Ctx.WriteString(returnResult)
 		} else {
 			returnResult = xmlTpl
 		}
@@ -428,4 +477,5 @@ type Notify struct {
 	MsgType      string `xml:"MsgType"`
 	Event        string `xml:"Event"`
 	EventKey     string `xml:"EventKey"`
-}
+	Content      string `xml:"Content"`
+}

+ 15 - 0
utils/config.go

@@ -8,6 +8,7 @@ import (
 	"github.com/beego/beego/v2/server/web"
 	"github.com/go-redis/redis/v8"
 	"strconv"
+	"strings"
 )
 
 var (
@@ -44,6 +45,11 @@ var (
 	WxPcPlatform          int    //用户来源,需要入库,用来保存该用户来自哪个平台,默认是:3
 )
 
+var (
+	ClassifyArr []string
+	ReportNameArr  []string
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -112,6 +118,7 @@ func init() {
 
 	// 初始化redis缓存
 	initRedis(config)
+	initAutoReply()
 }
 
 // initRedis 初始化redis配置
@@ -149,6 +156,14 @@ func initRedis(config map[string]string) {
 	Redis = client
 }
 
+//自动回复
+func initAutoReply() {
+	keyWord := `宏观经济、利率债、原油、PTA、MEG、织造终端、甲醇、聚烯烃、沥青、苯乙烯、聚酯、钢材、铁矿、玻璃纯碱、PVC、双焦、铜/铝、镍/不锈钢、锌、钴锂、策略`
+	ClassifyArr = strings.Split(keyWord, "、")
+	reportNameStr := `比如晨报、周报、宏观报告、从宏观看商品、大宗商品、数据点评、知白守黑日评、有声有色日评、化里化外日评、股债日评、草根调研`
+	ReportNameArr = strings.Split(reportNameStr, "、")
+}
+
 //http://webapi.brilliantstart.cn/api/
 //http://webapi.brilliantstart.cn/swagger/
 //http://139.196.122.219:8603/swagger/