5 Commits

Author SHA1 Message Date
  DengBiao 372410f373 update 1 year ago
  DengBiao 784506b4de update 1 year ago
  DengBiao 8c6f6a6dcf update 1 year ago
  DengBiao 4e64947d86 update 1 year ago
  DengBiao ed192a6383 update 1 year ago
4 changed files with 98 additions and 74 deletions
Split View
  1. +1
    -1
      app/db/db_qrcode_with_batch_records.go
  2. +8
    -4
      app/hdl/hdl_demo.go
  3. +89
    -68
      app/hdl/hdl_wx.go
  4. +0
    -1
      app/router/router.go

+ 1
- 1
app/db/db_qrcode_with_batch_records.go View File

@@ -60,7 +60,7 @@ func (qrcodeWithBatchRecordsDb *QrcodeWithBatchRecordsDb) FindQrcodeWithBatchRec
return
}
func (qrcodeWithBatchRecordsDb *QrcodeWithBatchRecordsDb) UpdateQrcodeWithBatchRecord(m *model.QrcodeWithBatchRecords) (int64, error) {
affected, err := qrcodeWithBatchRecordsDb.Db.Where("id =?", m.Id).FindAndCount(&m)
affected, err := qrcodeWithBatchRecordsDb.Db.Where("id =?", m.Id).Update(m)
if err != nil {
return 0, err
}


+ 8
- 4
app/hdl/hdl_demo.go View File

@@ -26,14 +26,18 @@ func Demo(c *gin.Context) {
}

func Demo1(c *gin.Context) {
post, err := utils.CurlPost("http://pay.com/wx/redPackage/index", map[string]string{
"re_openid": "oLAbGuMC5o6fJRcLSicj0MENGoEo",
"amount": "100.00",
}, nil)
DealCallBack("oLAbGuMC5o6fJRcLSicj0MENGoEo", "1692603601358587_sVxAbe")
post, err := utils.CurlPost("http://pay.com/wx/redPackage/index", utils.SerializeStr(map[string]string{
"openid": "oLAbGuMC5o6fJRcLSicj0MENGoEo",
"amount": "100.00",
}), nil)
if err != nil {
fmt.Println(err)
}

fmt.Println(post)
e.OutSuc(c, post, nil)

//eg := commDb.DBs[c.GetString("mid")]
//sess := eg.NewSession()
////r, err := eg.Table("user_profile").Where("uid=21699").Incr("fin_valid", 10).Exec()


+ 89
- 68
app/hdl/hdl_wx.go View File

@@ -5,7 +5,6 @@ import (
"applet/app/db/model"
"applet/app/enum"
"applet/app/md"
"applet/app/svc"
"applet/app/utils"
"encoding/json"
"encoding/xml"
@@ -13,7 +12,6 @@ import (
"fmt"
"log"
"net/http"
"strings"
"time"

"github.com/gin-gonic/gin"
@@ -27,8 +25,14 @@ func WXCheckSignature(c *gin.Context) {
timestamp := c.Query("timestamp")
nonce := c.Query("nonce")
echostr := c.Query("echostr")

ok := utils.CheckSignature(signature, timestamp, nonce, Token)
utils.FilePutContents("WXCheckSignature", utils.SerializeStr(map[string]interface{}{
"signature": signature,
"timestamp": timestamp,
"nonce": nonce,
"echostr": echostr,
"ok": ok,
}))
if !ok {
log.Println("[微信接入] - 微信公众号接入校验失败!")
return
@@ -85,68 +89,69 @@ type WXEventForScanMsg struct {

// WXMsgReceive 微信消息接收
func WXMsgReceive(c *gin.Context) {
log.Printf("[消息接收] - 收到新消息")
var msg WXMsg
err := c.ShouldBindXML(&msg)
if err != nil {
log.Printf("[消息接收] - XML数据包解析失败: %v\n", err)
return
}
utils.FilePutContents("WXMsgReceive", utils.SerializeStr(msg))
log.Printf("[消息接收] - 收到消息, 消息类型为: %s", msg.MsgType)
if msg.MsgType == "event" {
//事件类型消息
eventMsg := msg
log.Printf("[事件类型]-收到消息, 事件类型为: %s, 事件KEY值为: %s\n, 二维码的ticket值为: %s\n", eventMsg.Event, eventMsg.EventKey, eventMsg.Ticket)
if eventMsg.Event == "subscribe" {
//用户未关注时,进行关注后的事件推送
err := DealCallBack(eventMsg.FromUserName, eventMsg.EventKey)
if err != nil {
WXMsgReply(c, eventMsg.ToUserName, eventMsg.FromUserName, err.Error())
}
}
if eventMsg.Event == "SCAN" {
//用户已关注时的事件推送
err := DealCallBack(eventMsg.FromUserName, eventMsg.EventKey)
if err != nil {
WXMsgReply(c, eventMsg.ToUserName, eventMsg.FromUserName, err.Error())
}
}
if eventMsg.Event == "CLICK" { //公众号点击
if strings.Contains(strings.ToLower(eventMsg.EventKey), "official_account_custom_reply") {
id := strings.ReplaceAll(strings.ToLower(eventMsg.EventKey), "official_account_custom_reply_", "")
var mod model.SysModule
db.Db.Where("mod_id=?", id).Get(&mod)
fmt.Println(mod)
if mod.Data == "" {
fmt.Println(333)
//log.Printf("[消息接收] - 收到新消息")
//var msg WXMsg
//err := c.ShouldBindXML(&msg)
//if err != nil {
// log.Printf("[消息接收] - XML数据包解析失败: %v\n", err)
// return
//}
//utils.FilePutContents("WXMsgReceive", utils.SerializeStr(msg))
//log.Printf("[消息接收] - 收到消息, 消息类型为: %s", msg.MsgType)
//if msg.MsgType == "event" {
// //事件类型消息
// eventMsg := msg
// log.Printf("[事件类型]-收到消息, 事件类型为: %s, 事件KEY值为: %s\n, 二维码的ticket值为: %s\n", eventMsg.Event, eventMsg.EventKey, eventMsg.Ticket)
// if eventMsg.Event == "subscribe" {
// //用户未关注时,进行关注后的事件推送
// err := DealCallBack(eventMsg.FromUserName, eventMsg.EventKey)
// if err != nil {
// WXMsgReply(c, eventMsg.ToUserName, eventMsg.FromUserName, err.Error())
// }
// }
// if eventMsg.Event == "SCAN" {
// //用户已关注时的事件推送
// err := DealCallBack(eventMsg.FromUserName, eventMsg.EventKey)
// if err != nil {
// WXMsgReply(c, eventMsg.ToUserName, eventMsg.FromUserName, err.Error())
// }
// }
// if eventMsg.Event == "CLICK" { //公众号点击
// if strings.Contains(strings.ToLower(eventMsg.EventKey), "official_account_custom_reply") {
// id := strings.ReplaceAll(strings.ToLower(eventMsg.EventKey), "official_account_custom_reply_", "")
// var mod model.SysModule
// db.Db.Where("mod_id=?", id).Get(&mod)
// fmt.Println(mod)
// if mod.Data == "" {
// fmt.Println(333)
//
// return
// }
// var data []md.ReplyContent
// json.Unmarshal([]byte(mod.Data), &data)
// for _, v := range data {
// if v.MsgType == "text" {
// fmt.Println(1111)
//
// svc.WXMsgTextReply(c, msg.ToUserName, msg.FromUserName, v.Text.Content)
// }
// if v.MsgType == "image" {
// fmt.Println(22222)
// svc.WXMsgImageReply(c, msg.ToUserName, msg.FromUserName, v.Image.MediaId)
// }
// }
// }
// }
//}
//if msg.MsgType == "text" {
// //文本类型消息
// textMsg := msg
// log.Printf("[文本消息]-收到消息, 消息内容为: %s", textMsg.Content)
// WXMsgReply(c, textMsg.ToUserName, textMsg.FromUserName, textMsg.Content)
//}

return
}
var data []md.ReplyContent
json.Unmarshal([]byte(mod.Data), &data)
for _, v := range data {
if v.MsgType == "text" {
fmt.Println(1111)

svc.WXMsgTextReply(c, msg.ToUserName, msg.FromUserName, v.Text.Content)
}
if v.MsgType == "image" {
fmt.Println(22222)
svc.WXMsgImageReply(c, msg.ToUserName, msg.FromUserName, v.Image.MediaId)
}
}
}
}
}
if msg.MsgType == "text" {
//文本类型消息
textMsg := msg
log.Printf("[文本消息]-收到消息, 消息内容为: %s", textMsg.Content)
WXMsgReply(c, textMsg.ToUserName, textMsg.FromUserName, textMsg.Content)
}

c.String(http.StatusOK, "")
c.JSON(http.StatusOK, "")
return
}

// WXRepTextMsg 微信回复文本消息结构体
@@ -214,25 +219,41 @@ func DealCallBack(openId, ticket string) error {
}

//4、发送微信红包
post, err := utils.CurlPost("http://pay.izhyin.com/wx/redPackage/index", map[string]string{
post, err := utils.CurlPost("http://pay.izhyin.com/wx/redPackage/index", utils.SerializeStr(map[string]string{
"openid": openId,
"amount": utils.Float64ToStr(utils.StrToFloat64(qrcodeWithBatchRecord.Amount) * 100),
}, nil)
}), nil)

if err != nil {
return err
}
utils.FilePutContents("send_redPackage", utils.SerializeStr(map[string]interface{}{
"args": map[string]string{
"openid": openId,
"amount": utils.Float64ToStr(utils.StrToFloat64(qrcodeWithBatchRecord.Amount) * 100),
},
"resp": post,
"resp": string(post),
}))

var result struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data interface{} `json:"data"`
}
err = json.Unmarshal(post, &result)
if err != nil {
return err
}

var data md.SendRedPackageResp
err = json.Unmarshal(post, &data)
err = json.Unmarshal(utils.Serialize(result.Data), &data)
if err != nil {
return err
}
utils.FilePutContents("send_redPackage", utils.SerializeStr(map[string]interface{}{
"data": data,
}))

if data.ReturnCode != "SUCCESS" || data.ResultCode != "SUCCESS" {
return errors.New(data.ReturnMsg)
}


+ 0
- 1
app/router/router.go View File

@@ -49,7 +49,6 @@ func route(r *gin.RouterGroup) {
r.POST("/img_upload", hdl.ImgUpload)
r.Group("/wx")
{
r.Use(mw.DB)
// 微信公众号消息通知
r.GET("/msgReceive", hdl.WXCheckSignature)
r.POST("/msgReceive", hdl.WXMsgReceive)


Loading…
Cancel
Save