diff --git a/platformapi/mtwmapi/callback.go b/platformapi/mtwmapi/callback.go index 5e4a40ff..f0cd9569 100644 --- a/platformapi/mtwmapi/callback.go +++ b/platformapi/mtwmapi/callback.go @@ -1,6 +1,7 @@ package mtwmapi import ( + "encoding/json" "net/http" "net/url" "strings" @@ -154,19 +155,30 @@ func (a *API) GetIMCallbackMsg(request *http.Request) (msg *ImCallbackMsg, callb var ( err = request.ParseForm() pushContent PushContentReq + tData string ) + msg = &ImCallbackMsg{} + msg.FormData = make(url.Values) if err == nil { data := utils.URLValues2Map(request.Form) if dataSign, ok := data[signKey]; ok { for k, v := range data { + if k == "push_content" { + //tData, _ = json.Marshal(v) + tData = v.(string) + continue + } msg.FormData.Set(k, v.(string)) } msg.Timestamp = utils.Str2Int(msg.FormData.Get("timestamp")) msg.Sig = dataSign.(string) msg.AppID = msg.FormData.Get("app_id") - if err = utils.Map2StructByJson(data, pushContent, true); err == nil { + if err = json.Unmarshal([]byte(tData), &pushContent); err == nil { msg.PushContent = pushContent } + //if err = utils.Map2StructByJson(tData, &pushContent, true); err == nil { + // msg.PushContent = pushContent + //} } else { callbackResponse = SuccessResponse } diff --git a/platformapi/mtwmapi/im.go b/platformapi/mtwmapi/im.go index 4a3c8207..0266902c 100644 --- a/platformapi/mtwmapi/im.go +++ b/platformapi/mtwmapi/im.go @@ -39,8 +39,8 @@ type ImCallbackMsg struct { AppID string `json:"app_id"` Sig string `json:"sig"` FormData url.Values - BizType int `json:"biz_type"` //业务类型字段:1:单聊,2:群聊 - PushContent PushContentReq `json:"push_content"` //消息体详细内容 + BizType int `json:"biz_type"` //业务类型字段:1:单聊,2:群聊 + PushContent interface{} `json:"push_content"` //消息体详细内容 } // PushContentReq msgSend商家发送IM消息 diff --git a/platformapi/mtwmapi/im_test.go b/platformapi/mtwmapi/im_test.go index 31400280..fc50bf8a 100644 --- a/platformapi/mtwmapi/im_test.go +++ b/platformapi/mtwmapi/im_test.go @@ -3,12 +3,7 @@ package mtwmapi import ( "encoding/json" "fmt" - "git.rosy.net.cn/baseapi/utils" - "github.com/gazeboxu/mapstructure" "github.com/go-redis/redis" - "github.com/gorilla/websocket" - "io" - "net/http/httptest" "testing" "time" ) @@ -44,188 +39,15 @@ func TestSendMsg(t *testing.T) { OpenUserID: 12248014636, } dataMar, err := json.Marshal(data) - + fmt.Println(string(dataMar)) ret, err := api.MsgSend(string(dataMar)) fmt.Println(ret, err) } -//测试心跳 -func TestHeartCheck(t *testing.T) { - var clientID = make(map[string]*websocket.Conn) - //conn, resp, err := websocket.DefaultDialer.Dial(TestMTIMPushUrl, nil) - - //str := "~#HHhehHBBB#~" - //data := []byte(str) - conn1, resp1, err1 := websocket.DefaultDialer.Dial(TestMTIM4123, nil) - fmt.Println(conn1, resp1, err1) - clientID["1"] = conn1 - - conn, resp, err := websocket.DefaultDialer.Dial(TestMTIM589, nil) - clientID["2"] = conn - fmt.Println(conn, resp, err) - - if err != nil || resp.StatusCode != 101 { - fmt.Printf("连接失败:%v http响应不成功", err) - } - //关闭 - defer func(conn *websocket.Conn) { - err := conn.Close() - if err != nil { - return - } - }(conn) - - if err := conn.WriteControl(websocket.PingMessage, []byte{}, time.Now().Add(time.Second)); err != nil { - fmt.Println(err) - } - - //err = conn.WriteMessage(websocket.TextMessage, data) - //if err != nil { - // fmt.Println(err) - //} - - for { - _, msg, err := conn.ReadMessage() - temp := string(msg) - if err != nil || temp != "HB" { - break - } - fmt.Printf("%s receive: %s\n", conn.RemoteAddr(), string(msg)) +func TestMashal(t *testing.T) { + var pushContent = PushContentReq{} + str := "{\"app_id\":589,\"app_poi_code\":\"8694203\",\"msg_id\":20230615,\"msg_content\":\"3/ SR3dQEf/G7nBfw1K3UN6UaYlCFaxKmbS76MPuJ9w=\",\"msg_source\":1,\"msg_type\":1,\"cts\":1686902500,\"open_user_id\":12248014636,\"order_id\":0,\"group_id\":0,\"app_spu_codes\":\"\"}" + if err := json.Unmarshal([]byte(str), &pushContent); err == nil { + fmt.Println(pushContent) } } - -func TestGetConnectionToken(t *testing.T) { - resp, err := api.GetConnectionToken() - if err != nil { - t.Fatal(err) - } - retVal := GetConnTokenResp{} - err = mapstructure.Decode(resp, &retVal) - fmt.Println(err) - fmt.Println(utils.Format4Output(retVal, false)) -} - -var wsList []*websocket.Conn - -type RetData struct { - Code int `json:"code"` //响应code - Msg string `json:"msg"` //响应msg success/fail - Data interface{} `json:"data"` //信息 -} - -func TestWebSocketClient(t *testing.T) { - var retData RetData - - retData.Code = 0 - retData.Msg = "success" - retData.Data = "发送信息成功" - - retJson, _ := json.Marshal(retData) - str := string(retJson) - - w := httptest.NewRecorder() - w.Header().Set("Content-Type", "application/json; charset=utf-8") - _, _ = io.WriteString(w, str) - return -} - -func TestPUSH(t *testing.T) { - key := "589:7954977:10" - rdb.RPush(key, "1111111111") - //rdb.RPush(key, "{\"vendorID\":10,\"userID\":11158569333,\"NewMessageNum\":3,\"latestMsg\":\"hhhhhhhhhhh\",\"latestTime\":1681983980}") - rdb.RPush(key, "{\"vendorID\":10,\"userID\":11158569333,\"NewMessageNum\":3,\"latestMsg\":\"oooooooooo\",\"latestTime\":1681983980}") - rdb.RPush(key, "2222222222222") - rdb.RPush(key, "{\"vendorID\":10,\"userID\":11158569333,\"NewMessageNum\":4,\"latestMsg\":\"成功插入新数据,看下cnt\",\"latestTime\":1681983980}") - rdb.RPush(key, "{\"vendorID\":10,\"userID\":11158569333,\"NewMessageNum\":5,\"latestMsg\":\"成功插入新数据,看下cnt\",\"latestTime\":1681983980}") -} - -//用户消息列表 -type UserMessageList struct { - VendorID int `json:"vendorID"` //平台品牌 10-美团 11-饿了么 - UserID int `json:"userID"` //用户ID - NewMessageNum int `json:"NewMessageNum"` //新消息数量 - LatestMsg string `json:"latestMsg"` //最新一条消息 - LatestTime int `json:"latestTime"` //最新一条消息发送时间 -} - -func TestNewRedis(t *testing.T) { - var ( - err error - flag = 11158569333 - key = "589:7954977:10" - temp = UserMessageList{} - ) - if n := rdb.Exists(key).Val(); n > 0 { - s2 := rdb.LRange(key, 0, -1).Val() - for i := 0; i < len(s2); i++ { - v := UserMessageList{} - _ = json.Unmarshal([]byte(s2[i]), &v) - if v.UserID == flag { - //删除此条数据 - err = rdb.LSet(key, int64(i), "del").Err() - err = rdb.LRem(key, 0, "del").Err() - s2 = append(s2[:i], s2[i+1:]...) - i-- - //cnt=0 重新赋值 - temp = UserMessageList{ - VendorID: v.VendorID, - UserID: v.UserID, - NewMessageNum: 0, - LatestMsg: v.LatestMsg, - LatestTime: v.LatestTime, - } - } - } - str, _ := json.Marshal(temp) - err = rdb.RPush(key, str).Err() - } - fmt.Print(err) - //s2 := rdb.LRange(key, 0, -1).Val() - //fmt.Printf("before len %d\n", len(s2)) - //fmt.Printf("before ans %s\n", s2) - //cnt := 0 - //n := rdb.Exists(key).Val() - //if n > 0 { - // for i := 0; i < len(s2); i++ { - // v := UserMessageList{} - // _ = json.Unmarshal([]byte(s2[i]), &v) - // if v.UserID == flag { - // rdb.LSet(key, int64(i), "del") - // rdb.LRem(key, 0, "del") - // s2 = append(s2[:i], s2[i+1:]...) - // i-- - // if v.NewMessageNum == 0 { //目前为首条 - // cnt++ //赋值1 - // } else { - // cnt = v.NewMessageNum - // } - // } - // } - //} - //fmt.Printf("after cnt %d\n", cnt) - //fmt.Printf("after len %d\n", len(s2)) - //fmt.Printf("after ans %s\n", s2) - ////存入flag数据 - //ans := UserMessageList{ - // VendorID: 10, - // UserID: 11158569333, - // NewMessageNum: cnt, - // LatestMsg: "成功插入新数据,看下cnt", - // LatestTime: 1681983980, - //} - //param, _ := json.Marshal(ans) - //rdb.RPush(key, param) -} - -func TestGetWayBillFee(t *testing.T) { - //order, _ := api.OrderGetOrderDetail(1100486451772280163, false) - //globals.SugarLogger.Debugf("order:==%s", utils.Format4Output(order, false)) 2002 - api.GetWayBillFee("1100486451772280163", 2) - api.GetWayBillFee("1100486451772280163", 1) -} - -// 商家没有接入众包配送,无法进行众包配送相关操作 -func TestGetShippingFeeList(t *testing.T) { - api.GetShippingFeeList("1300486314174032613,1100487300210228389", 1) - api.GetShippingFeeList("1300486314174032613,1100487300210228389", 2) -}