Selaa lähdekoodia

update

master
dengbiao 2 kuukautta sitten
vanhempi
commit
52bdd35a0e
1 muutettua tiedostoa jossa 31 lisäystä ja 31 poistoa
  1. +31
    -31
      app/hdl/hdl_wx.go

+ 31
- 31
app/hdl/hdl_wx.go Näytä tiedosto

@@ -51,9 +51,9 @@ type WXMsg struct {
MsgType string
Content string
MsgId int64
Event string //事件类型,subscribe
EventKey string //事件KEY值,qrscene_为前缀,后面为二维码的参数值
Ticket string //二维码的ticket,可用来换取二维码图片
Event string // 事件类型,subscribe
EventKey string // 事件KEY值,qrscene_为前缀,后面为二维码的参数值
Ticket string // 二维码的ticket,可用来换取二维码图片
}

// WXTextMsg 微信文本消息结构体
@@ -68,31 +68,31 @@ type WXTextMsg struct {

// WXEventForSubscribeMsg 扫描带参数二维码事件消息结构体(用户未关注时,进行关注后的事件推送)
type WXEventForSubscribeMsg struct {
ToUserName string //开发者微信号
FromUserName string //发送方帐号(一个OpenID)
CreateTime int64 //消息创建时间 (整型)
MsgType string //消息类型,event
Event string //事件类型,subscribe
EventKey string //事件KEY值,qrscene_为前缀,后面为二维码的参数值
Ticket string //二维码的ticket,可用来换取二维码图片
ToUserName string // 开发者微信号
FromUserName string // 发送方帐号(一个OpenID)
CreateTime int64 // 消息创建时间 (整型)
MsgType string // 消息类型,event
Event string // 事件类型,subscribe
EventKey string // 事件KEY值,qrscene_为前缀,后面为二维码的参数值
Ticket string // 二维码的ticket,可用来换取二维码图片
}

// WXEventForScanMsg 扫描带参数二维码事件消息结构体(用户已关注时的事件推送)
type WXEventForScanMsg struct {
ToUserName string //开发者微信号
FromUserName string //发送方帐号(一个OpenID)
CreateTime int64 //消息创建时间 (整型)
MsgType string //消息类型,event
Event string //事件类型,subscribe
EventKey string //事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id
Ticket string //二维码的ticket,可用来换取二维码图片
ToUserName string // 开发者微信号
FromUserName string // 发送方帐号(一个OpenID)
CreateTime int64 // 消息创建时间 (整型)
MsgType string // 消息类型,event
Event string // 事件类型,subscribe
EventKey string // 事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id
Ticket string // 二维码的ticket,可用来换取二维码图片
}

// WXMsgReceive 微信消息接收
func WXMsgReceive(c *gin.Context) {
log.Printf("[消息接收] - 收到新消息")
var msg WXMsg
err := c.ShouldBindXML(&msg)
err := c.ShouldBindJSON(&msg)
if err != nil {
log.Printf("[消息接收] - XML数据包解析失败: %v\n", err)
return
@@ -100,24 +100,24 @@ func WXMsgReceive(c *gin.Context) {
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 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
@@ -145,7 +145,7 @@ func WXMsgReceive(c *gin.Context) {
}
}
if msg.MsgType == "text" {
//文本类型消息
// 文本类型消息
textMsg := msg
log.Printf("[文本消息]-收到消息, 消息内容为: %s", textMsg.Content)
WXMsgReply(c, textMsg.ToUserName, textMsg.FromUserName, textMsg.Content)
@@ -182,7 +182,7 @@ func WXMsgReply(c *gin.Context, fromUser, toUser, content string) {
}

func DealCallBack(openId, ticket string) error {
//1、查找对应的二维码记录
// 1、查找对应的二维码记录
qrcodeDb := db.QrcodeDb{}
qrcodeDb.Set()
qrcode, err := qrcodeDb.GetQrcodeByIndex(ticket)
@@ -193,7 +193,7 @@ func DealCallBack(openId, ticket string) error {
return errors.New("未查询到对应二维码记录")
}

//2、查找当前二维码是否可用
// 2、查找当前二维码是否可用
qrcodeWithBatchRecordsDb := db.QrcodeWithBatchRecordsDb{}
qrcodeWithBatchRecordsDb.Set()
qrcodeWithBatchRecord, err := qrcodeWithBatchRecordsDb.GetQrcodeWithBatchRecordsByQrcodeId(qrcode.Id)
@@ -204,7 +204,7 @@ func DealCallBack(openId, ticket string) error {
return errors.New("当前二维码不可使用!")
}

//3、查找当前用户是否使用过当前二维码
// 3、查找当前用户是否使用过当前二维码
userUseQrcodeRecordsDb := db.UserUseQrcodeRecordsDb{}
userUseQrcodeRecordsDb.Set()

@@ -216,8 +216,8 @@ func DealCallBack(openId, ticket string) error {
return errors.New("请勿重复使用二维码!")
}

//4、发送微信红包
post, err := utils.CurlPost("http://pay.izhyin.com/wx/redPackage/index", utils.SerializeStr(map[string]string{
// 4、发送微信红包
post, err := utils.CurlPost("http://pay.zhios.cn/wx/redPackage/index", utils.SerializeStr(map[string]string{
"openid": openId,
"amount": utils.Float64ToStr(utils.StrToFloat64(qrcodeWithBatchRecord.Amount) * 100),
}), nil)
@@ -256,21 +256,21 @@ func DealCallBack(openId, ticket string) error {
return errors.New(data.ReturnMsg)
}

//5、将当前二维码状态修改为“可用”
// 5、将当前二维码状态修改为“可用”
qrcode.State = enum.QrcodeSateAllowUse
_, err = qrcodeDb.BatchUpdateQrcode(qrcode, "state")
if err != nil {
return err
}

//6、将当前二维码记录修改为“已使用”
// 6、将当前二维码记录修改为“已使用”
qrcodeWithBatchRecord.State = enum.QrcodeWithBatchRecordsStateForAlready
_, err = qrcodeWithBatchRecordsDb.UpdateQrcodeWithBatchRecord(qrcodeWithBatchRecord)
if err != nil {
return err
}

//7、新增用户使用记录
// 7、新增用户使用记录
_, err = userUseQrcodeRecordsDb.InsertUserUseQrcodeRecords(&model.UserUseQrcodeRecords{
UserWxOpenId: openId,
RecordsId: qrcodeWithBatchRecord.Id,


Ladataan…
Peruuta
Tallenna