Browse Source

update wechat send template message

ls 6 months ago
parent
commit
e001788dfd
3 changed files with 48 additions and 9 deletions
  1. 14 7
      db/db.go
  2. 23 2
      wechat/client.go
  3. 11 0
      wechat/request.go

+ 14 - 7
db/db.go

@@ -67,7 +67,7 @@ func NewConfig(config Config) (dbx *DB, err error) {
 	dbx.conn.SetMaxOpenConns(config.MaxOpenConns)
 	dbx.conn.SetMaxIdleConns(config.MaxIdle)
 	dbx.conn.SetConnMaxLifetime(config.MaxLifetime)
-	dbx.conn.Ping()
+	err = dbx.conn.Ping()
 	return
 }
 
@@ -81,11 +81,17 @@ func ReleaseConfig(dbx *DB) {
 func connect() (dbx *sqlx.DB, err error) {
 	once.Do(func() {
 		db, err = sqlx.Connect(config.Driver, config.DNS)
-		if err == nil {
-			db.DB.SetMaxOpenConns(config.MaxOpenConns)
-			db.DB.SetMaxIdleConns(config.MaxIdle)
-			db.DB.SetConnMaxLifetime(config.MaxLifetime)
-			err = db.Ping()
+		if err != nil {
+			fmt.Println("Connect ERR", err)
+			return
+		}
+		db.DB.SetMaxOpenConns(config.MaxOpenConns)
+		db.DB.SetMaxIdleConns(config.MaxIdle)
+		db.DB.SetConnMaxLifetime(config.MaxLifetime)
+		err = db.Ping()
+		if err != nil {
+			fmt.Println("Connect Ping", err)
+			return
 		}
 	})
 	if db == nil {
@@ -134,7 +140,8 @@ func (d *DB) BeginTrans() (err error) {
 	if err != nil {
 		return
 	}
-	d.tx = d.conn.MustBegin()
+
+	d.tx, err = d.conn.Beginx()
 	return
 }
 

+ 23 - 2
wechat/client.go

@@ -302,8 +302,9 @@ func (wc Client) CreateMenu(menu FormMenu) (err error) {
 }
 
 // GetSignPackage JS 签名
-//   uri      当前 URL
-//   nonceStr 随机字符串
+//
+//	uri      当前 URL
+//	nonceStr 随机字符串
 func (wc Client) GetSignPackage(uri, nonceStr string) (sign SignPackage, err error) {
 	if wc.AccessToken, err = wc.getToken(); err != nil {
 		return
@@ -364,3 +365,23 @@ func (wc Client) TemplateMessageReslut(jq *myth.JSONQuery) (code int, id int64,
 	}
 	return
 }
+
+// SendTemplateMessageX 发送自定义模版消息
+func (wc Client) SendTemplateMessageX(data []byte) (res TemplateResponse, err error) {
+	uri := BaseURL + "/cgi-bin/message/template/send?"
+
+	if wc.AccessToken, err = wc.getToken(); err != nil {
+		return
+	}
+	args := url.Values{}
+	args.Add("access_token", wc.AccessToken)
+
+	uri += args.Encode()
+
+	var msg myth.HTTPMessage
+	msg, err = postJSONData(uri, data)
+	if err == nil {
+		err = json.Unmarshal(msg.Body, &res)
+	}
+	return
+}

+ 11 - 0
wechat/request.go

@@ -100,6 +100,17 @@ func postJSON(url string, args interface{}) (msg myth.HTTPMessage, err error) {
 	return
 }
 
+func postJSONData(url string, data []byte) (msg myth.HTTPMessage, err error) {
+	headers := make(map[string]string)
+
+	headers["Accept-Encoding"] = "gzip, deflate, br"
+	headers["Content-Type"] = "application/json; charset=utf-8"
+
+	msg, err = myth.Post(url, "", "", headers, bytes.NewReader(data))
+
+	return
+}
+
 func postXML(url string, args interface{}) (msg myth.HTTPMessage, err error) {
 	headers := make(map[string]string)