This commit is contained in:
richboo111
2023-05-06 12:04:30 +08:00
parent ca1cf10632
commit 76ce507f61
7 changed files with 187 additions and 126 deletions

View File

@@ -7,6 +7,8 @@ import (
"github.com/gazeboxu/mapstructure" "github.com/gazeboxu/mapstructure"
"github.com/go-redis/redis" "github.com/go-redis/redis"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"io"
"net/http/httptest"
"sync" "sync"
"testing" "testing"
"time" "time"
@@ -17,9 +19,10 @@ const (
TestAppID = "589_WMOPEN" TestAppID = "589_WMOPEN"
TestToken = "wo589i4VsZHFH2fh4uVsr6Dtc3k6vG8Xu0vxpreBQFy6QAvg" TestToken = "wo589i4VsZHFH2fh4uVsr6Dtc3k6vG8Xu0vxpreBQFy6QAvg"
TestMTIMPushUrl = "wss://wpush.meituan.com/websocket/589_WMOPEN/wo589i4VsZHFH2fh4uVsr6Dtc3k6vG8Xu0vxpreBQFy6QAvg" TestMTIM589 = "wss://wpush.meituan.com/websocket/589_WMOPEN/wo589i4VsZHFH2fh4uVsr6Dtc3k6vG8Xu0vxpreBQFy6QAvg"
TestWssUrl = "wss://www.jxc4.com:443/v2/event/TestWebsocket" TestMTIM4123 = "wss://wpush.meituan.com/websocket/4123_WMOPEN/wo4123aAVXDUkZDYucMoTDAZgsMzjrR_porZcLGv2GmWRNOiw"
TestWssUrl1 = "wss://www-jxgy.jxc4.com:443/v2/im/StartWebSocket" TestWssUrl = "wss://www.jxc4.com:443/v2/event/TestWebsocket"
TestWssUrl1 = "wss://www-jxgy.jxc4.com:443/v2/im/StartWebSocket"
) )
type ClientManager struct { type ClientManager struct {
@@ -70,29 +73,81 @@ var rdb = redis.NewClient(&redis.Options{
DB: 0, DB: 0,
}) })
type TestStr 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 TestCacher_RPush(t *testing.T) {
//ans := TestStr{
// VendorID: 22,
// UserID: 2222222222,
// NewMessageNum: 222,
// LatestMsg: "22222222222",
// LatestTime: 22222222222,
//}
//str, _ := json.Marshal(ans)
//err := rdb.RPush("test", string(str))
keys := []string{"589:7954977:10", "test"}
retVal := make(map[string][]interface{}, 0)
for _, key := range keys {
temp := rdb.LRange(key, 0, -1).Val()
for _, v := range temp {
retVal[key] = append(retVal[key], v)
}
}
fmt.Printf("%s", utils.Format4Output(retVal, false))
//if err != nil {
// fmt.Print(err)
//}
}
//测试心跳 //测试心跳
func TestHeartCheck(t *testing.T) { func TestHeartCheck(t *testing.T) {
//go func() { var clientID = make(map[string]*websocket.Conn)
// ticker := time.NewTicker(5 * time.Second)
// defer ticker.Stop()
// for {
// <-ticker.C
//发送心跳
//conn, resp, err := websocket.DefaultDialer.Dial(TestMTIMPushUrl, nil) //conn, resp, err := websocket.DefaultDialer.Dial(TestMTIMPushUrl, nil)
//conn, resp, err := websocket.DefaultDialer.Dial(TestWssUrl, nil)
conn, resp, err := websocket.DefaultDialer.Dial(TestWssUrl1, nil) //str := "~#HHhehHBBB#~"
fmt.Println(resp, err) //data := []byte(str)
err1 := conn.WriteControl(websocket.PingMessage, []byte{}, time.Now().Add(time.Second)) 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 { for {
_, msg, err := conn.ReadMessage() _, msg, err := conn.ReadMessage()
if err != nil { temp := string(msg)
if err != nil || temp != "HB" {
break break
} }
fmt.Printf("%s receive: %s\n", conn.RemoteAddr(), string(msg)) fmt.Printf("%s receive: %s\n", conn.RemoteAddr(), string(msg))
} }
fmt.Println(err1)
//}
//}()
} }
func TestGetConnectionToken(t *testing.T) { func TestGetConnectionToken(t *testing.T) {
@@ -120,81 +175,34 @@ func TestAesCBCDecrypt(t *testing.T) {
var wsList []*websocket.Conn var wsList []*websocket.Conn
func sendmsg() { type RetData struct {
for _, conn := range wsList { Code int `json:"code"` //响应code
if err := conn.WriteMessage(websocket.TextMessage, []byte("~#HHHBBB#~")); err != nil { Msg string `json:"msg"` //响应msg success/fail
fmt.Printf("%s", err) //"use of closed network connection" Data interface{} `json:"data"` //信息
}
}
}
func TestPut(t *testing.T) {
fmt.Println(wsList)
} }
func TestWebSocketClient(t *testing.T) { func TestWebSocketClient(t *testing.T) {
//发送webSocket请求 var retData RetData
conn, resp, err := websocket.DefaultDialer.Dial(TestMTIMPushUrl, nil)
if err != nil {
fmt.Printf("连接失败:%v", err)
}
fmt.Printf("响应:%s", fmt.Sprint(resp))
//wsList = append(wsList, conn)
//关闭
conn.SetCloseHandler(func(code int, text string) error {
fmt.Printf("WebSocket connection closed with code %d and text: %s\n", code, text)
return nil
})
defer func(conn *websocket.Conn) {
err := conn.Close()
if err != nil {
return
}
}(conn)
//赋入全局变量 retData.Code = 0
//Default(conn) retData.Msg = "success"
//生成clientID retData.Data = "发送信息成功"
clientID := GenClientId()
//创建实例连接 retJson, _ := json.Marshal(retData)
client := &Client{ str := string(retJson)
ID: clientID,
//AccountId:conn. ,
Socket: conn,
HeartbeatTime: time.Now().Unix(),
}
//rdb.Set("testPush", client, 0)
//注册到连接管理
RegisterChan <- client
//todo 暂时不确定放哪
//go Start()
done := make(chan SingleChat)
//err = conn.WriteControl(websocket.PingMessage, []byte{}, time.Now().Add(time.Second))
err = conn.WriteMessage(websocket.TextMessage, []byte("~#HHHBBB#~"))
if err != nil {
fmt.Println(err)
}
for {
_, msg, err := conn.ReadMessage()
if err != nil {
//log.Fatal(err)
break
}
fmt.Printf("%s receive: %s\n", conn.RemoteAddr(), string(msg))
}
<-done
w := httptest.NewRecorder()
w.Header().Set("Content-Type", "application/json; charset=utf-8")
_, _ = io.WriteString(w, str)
return
} }
func TestPUSH(t *testing.T) { func TestPUSH(t *testing.T) {
key := "589:7954977:10" key := "589:7954977:10"
//rdb.RPush(key, "1111111111") 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\":\"hhhhhhhhhhh\",\"latestTime\":1681983980}")
//rdb.RPush(key, "{\"vendorID\":10,\"userID\":11158569333,\"NewMessageNum\":3,\"latestMsg\":\"oooooooooo\",\"latestTime\":1681983980}") rdb.RPush(key, "{\"vendorID\":10,\"userID\":11158569333,\"NewMessageNum\":3,\"latestMsg\":\"oooooooooo\",\"latestTime\":1681983980}")
//rdb.RPush(key, "2222222222222") 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\":4,\"latestMsg\":\"成功插入新数据看下cnt\",\"latestTime\":1681983980}")
rdb.RPush(key, "{\"vendorID\":10,\"userID\":11158569333,\"NewMessageNum\":5,\"latestMsg\":\"成功插入新数据看下cnt\",\"latestTime\":1681983980}") rdb.RPush(key, "{\"vendorID\":10,\"userID\":11158569333,\"NewMessageNum\":5,\"latestMsg\":\"成功插入新数据看下cnt\",\"latestTime\":1681983980}")
} }
@@ -209,43 +217,72 @@ type UserMessageList struct {
} }
func TestNewRedis(t *testing.T) { func TestNewRedis(t *testing.T) {
var flag = 11158569333 var (
var key = "589:7954977:10" err error
s2 := rdb.LRange(key, 0, -1).Val() flag = 11158569333
fmt.Printf("before len %d\n", len(s2)) key = "589:7954977:10"
fmt.Printf("before ans %s\n", s2) temp = UserMessageList{}
cnt := 0 )
n := rdb.Exists(key).Val() if n := rdb.Exists(key).Val(); n > 0 {
if n > 0 { s2 := rdb.LRange(key, 0, -1).Val()
for i := 0; i < len(s2); i++ { for i := 0; i < len(s2); i++ {
v := UserMessageList{} v := UserMessageList{}
_ = json.Unmarshal([]byte(s2[i]), &v) _ = json.Unmarshal([]byte(s2[i]), &v)
if v.UserID == flag { if v.UserID == flag {
rdb.LSet(key, int64(i), "del") //删除此条数据
rdb.LRem(key, 0, "del") err = rdb.LSet(key, int64(i), "del").Err()
err = rdb.LRem(key, 0, "del").Err()
s2 = append(s2[:i], s2[i+1:]...) s2 = append(s2[:i], s2[i+1:]...)
i-- i--
if v.NewMessageNum == 0 { //目前为首条 //cnt=0 重新赋值
cnt++ //赋值1 temp = UserMessageList{
} else { VendorID: v.VendorID,
cnt = v.NewMessageNum UserID: v.UserID,
NewMessageNum: 0,
LatestMsg: v.LatestMsg,
LatestTime: v.LatestTime,
} }
} }
} }
str, _ := json.Marshal(temp)
err = rdb.RPush(key, str).Err()
} }
fmt.Printf("after cnt %d\n", cnt) fmt.Print(err)
fmt.Printf("after len %d\n", len(s2)) //s2 := rdb.LRange(key, 0, -1).Val()
fmt.Printf("after ans %s\n", s2) //fmt.Printf("before len %d\n", len(s2))
//存入flag数据 //fmt.Printf("before ans %s\n", s2)
ans := UserMessageList{ //cnt := 0
VendorID: 10, //n := rdb.Exists(key).Val()
UserID: 11158569333, //if n > 0 {
NewMessageNum: cnt, // for i := 0; i < len(s2); i++ {
LatestMsg: "成功插入新数据看下cnt", // v := UserMessageList{}
LatestTime: 1681983980, // _ = json.Unmarshal([]byte(s2[i]), &v)
} // if v.UserID == flag {
param, _ := json.Marshal(ans) // rdb.LSet(key, int64(i), "del")
rdb.RPush(key, param) // 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)
} }
// 根据账号获取连接 // 根据账号获取连接

View File

@@ -20,10 +20,10 @@ func init() {
baseapi.Init(sugarLogger) baseapi.Init(sugarLogger)
// 菜市 // 菜市
api = New("589", "a81eb3df418d83d6a1a4b7c572156d2f", "", "") //api = New("589", "a81eb3df418d83d6a1a4b7c572156d2f", "", "")
// 果园 // 果园
//api = New("4123", "df2c88338b85f830cebce2a9eab56628", "", "") api = New("4123", "df2c88338b85f830cebce2a9eab56628", "", "")
//商超 //商超
//api = New("5873", "41c479790a76f86326f89e8048964739", "", "token_n4TwqCntWWuvQwAawzxC0w") //token_n4TwqCntWWuvQwAawzxC0w //api = New("5873", "41c479790a76f86326f89e8048964739", "", "token_n4TwqCntWWuvQwAawzxC0w") //token_n4TwqCntWWuvQwAawzxC0w

View File

@@ -18,7 +18,7 @@ import (
// "authority_id": "" // "authority_id": ""
//}` //}`
var token = `{"access_token":"c2c6e258-847d-4e8f-a695-b20488a5a667","expires_in":1682270239,"scope":"SCOPE","shop_id":57939570,"shop_name":"京西菜市速食","refresh_token":"ebf0e9f1-b200-47c2-a2bb-bafefbdaed47","authority_id":""}` var token = `{"access_token":"71896365-cec7-4982-a686-0d8f3044cc1e","expires_in":1682872676,"scope":"SCOPE","shop_id":57939570,"shop_name":"京西菜市速食","refresh_token":"76d410d2-e869-4ddc-b8ad-0ae652114e13","authority_id":""}`
//var token = `{"access_token":"e3173e9f-266f-4d87-88e7-e7cd837bc9d9","expires_in":1672882632,"scope":"SCOPE","shop_id":68023619,"shop_name":"京西到家","refresh_token":"5070aae2-493f-46bd-b5d6-6ea0cd64729f","authority_id":""}` //var token = `{"access_token":"e3173e9f-266f-4d87-88e7-e7cd837bc9d9","expires_in":1672882632,"scope":"SCOPE","shop_id":68023619,"shop_name":"京西到家","refresh_token":"5070aae2-493f-46bd-b5d6-6ea0cd64729f","authority_id":""}`

View File

@@ -303,7 +303,7 @@ func TestUtilsTime2Date(t *testing.T) {
//设置门店打包费 //设置门店打包费
func TestSetStorePackageFee(t *testing.T) { func TestSetStorePackageFee(t *testing.T) {
err := a.SetStorePackageFee(62490423, 5) //单位 分 err := a.SetStorePackageFee(94979567, 5) //单位 分
fmt.Println(err) fmt.Println(err)
} }

View File

@@ -2,7 +2,9 @@ package trenditapi
import ( import (
"fmt" "fmt"
"git.rosy.net.cn/baseapi/utils"
"testing" "testing"
"time"
) )
var api = New(TiAppID, TiAppSecret) var api = New(TiAppID, TiAppSecret)
@@ -40,10 +42,7 @@ func TestAPI_Print(t *testing.T) {
} }
func TestCal(t *testing.T) { func TestCal(t *testing.T) {
str := "豌豆米-手工剥豆约100g/份" fmt.Println(utils.Time2Str(time.Now()))
//ans := "--------------------------------"
cnt := CalWidth(str)
fmt.Println(cnt)
} }
//打印取消/退货模板 //打印取消/退货模板

View File

@@ -23,16 +23,41 @@ func TestCBMessageTemplateSend(t *testing.T) {
// "oYN_usk0AeGc_C6VEZfmFQP5VHMQ": 1, // 周小扬 // "oYN_usk0AeGc_C6VEZfmFQP5VHMQ": 1, // 周小扬
// "oYN_ust9hXKEvEv0X6Mq6nlAWs_E": 1, // me // "oYN_ust9hXKEvEv0X6Mq6nlAWs_E": 1, // me
// "oYN_usvnObzrPweIgHTad9-uMf78": 1, // 老赵 // "oYN_usvnObzrPweIgHTad9-uMf78": 1, // 老赵
err := api.CBMessageTemplateSend("oYN_ust9hXKEvEv0X6Mq6nlAWs_E", "_DtNGwmOeR6TkkTVUblxLIlkV2MAPOX57TkvfdqG6nY", "", map[string]interface{}{ err := api.CBMessageTemplateSend("oYN_uskWlggFxGNZtagNh-cqfTQs", "b8-tLyWwAmK-1tEU1eGqp_YAAqQtSzoVDZkHuyUe9lk", "", map[string]interface{}{
"appid": "wx4b5930c13f8b1170", "appid": "wx4b5930c13f8b1170",
"pagepath": "pages/order-manager/main", //"pagepath": "pages/order-manager/main",
}, map[string]interface{}{ }, map[string]interface{}{
"first": "first", "first": map[string]interface{}{
"Day": "Day", "value": "这是一个测试头",
"orderId": "orderId", "color": "#0191EA",
"orderType": "orderType", },
"customerName": "customerName", "keyword1": map[string]interface{}{
"customerPhone": "customerPhone", "value": "美团#1",
"color": "#173177",
},
"keyword2": map[string]interface{}{
"value": "好菜鲜生(清水塘生鲜农贸市场2店)",
"color": "#173177",
},
//"orderId": "orderId",
"keyword3": map[string]interface{}{
//"value": "吴廷琦吴吴廷琦吴吴廷琦吴吴廷琦吴吴廷琦吴吴廷琦吴 18727362534,0987",
"value": "1234567891234567891234567891234 18727362534,0987",
"color": "#173177",
},
"keyword4": map[string]interface{}{
"value": "2023:05:05 14:30:18",
"color": "#173177",
},
//"keyword5": map[string]interface{}{
// "value": "立即配送",
// "color": "#173177",
//},
//"customerPhone": map[string]interface{}{
// "value": "1234567891234567891234567891234",
// "color": "#173177",
//},
}) })
if err != nil { if err != nil {
t.Fatal(err.Error()) t.Fatal(err.Error())

View File

@@ -27,7 +27,7 @@ func init() {
//weixinapp //weixinapp
//api = New("wx18111a41fd17f24f", "c79ac6e1b2d6d7968e72a9658a8b6715") //api = New("wx18111a41fd17f24f", "c79ac6e1b2d6d7968e72a9658a8b6715")
api.CBSetToken("46_sKrKhgoeh0Om1V2_IcTERUux4-pLL5CplvhOh7civG51UCSUTt6g3WkTutvk107i2SMhdcU5q9MYGbciZ4PHyPzhlzx34yBPblf8dpRHx3VYE_a9JbE2wbtjJY93GmXc4KcRHxlEa8s_QWFVOLCgADAKHY") api.CBSetToken("68_McFYD4DjMiawiqWvGstXuxBq5IKTt9xMHRnwqE4nW8c6YVYhPV7cYEpyf0y0nh0m8qiHKCYbzS6Oc3DN-Wu74_WoNXi7PDzjkZWG2dziBqzsGYE8UVZlpi2ezO0NBKeAEAQEN")
} }
func handleError(t *testing.T, err error) { func handleError(t *testing.T, err error) {