1
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -311,9 +312,31 @@ func TestShopAptitudeUpload(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestShopDeliveryinfoGet(t *testing.T) {
|
||||
result, err := api.ShopDeliveryinfoGet("", 2233065959)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
vendorStoreID := "1128314567"
|
||||
store, err := api.ShopGet2("", utils.Str2Int64(vendorStoreID))
|
||||
globals.SugarLogger.Debugf("-:=%s", utils.Format4Output(store, false))
|
||||
globals.SugarLogger.Debugf("-:=%v", err)
|
||||
|
||||
list, err := api.ShopDeliveryinfoGet("", utils.Str2Int64(vendorStoreID))
|
||||
if err == nil && len(list) > 0 {
|
||||
deliveryRange := EbaiDeliveryRegion2Jx2(list[0])
|
||||
globals.SugarLogger.Debugf("-:=%s", deliveryRange)
|
||||
}
|
||||
t.Log(utils.Format4Output(result, false))
|
||||
|
||||
}
|
||||
|
||||
func EbaiDeliveryRegion2Jx2(deliveryRegion map[string]interface{}) string {
|
||||
if len(deliveryRegion) > 0 {
|
||||
if deliveryRegion["delivery_areas"] == nil {
|
||||
return ""
|
||||
}
|
||||
region := deliveryRegion["delivery_areas"].([]interface{})[0].(map[string]interface{})["coordinates"].([]interface{})
|
||||
coords := make([]string, len(region))
|
||||
for k, v := range region {
|
||||
mapV := v.(map[string]interface{})
|
||||
coords[k] = fmt.Sprintf("%.6f,%.6f", utils.MustInterface2Float64(mapV["longitude"]), utils.MustInterface2Float64(mapV["latitude"]))
|
||||
}
|
||||
return strings.Join(coords, ";")
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
@@ -140,63 +140,80 @@ const (
|
||||
)
|
||||
|
||||
// HttpToGuoYuanFN 订单消息推送果园
|
||||
func HttpToGuoYuanFN(param map[string]interface{}, requestType string) (*http.Response, error) {
|
||||
var paramData []byte
|
||||
var err error
|
||||
paramData, err = json.Marshal(param)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
body := strings.NewReader(string(paramData))
|
||||
func HttpToGuoYuanFN(param map[string]interface{}, requestType string, serverType string) (*http.Response, error) {
|
||||
//var paramData []byte
|
||||
//var err error
|
||||
//paramData, err = json.Marshal(param)
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
//body := strings.NewReader(string(paramData))
|
||||
url := ""
|
||||
switch requestType {
|
||||
case FengNiaoCallbackTypeStore:
|
||||
url = "http://callback-jxgy.jxc4.com/fn/fnStore"
|
||||
case FengNiaoCallbackTypeOrder:
|
||||
url = "http://callback-jxgy.jxc4.com/fn/fnOrder"
|
||||
case FengNiaoCallbackTypeAbnormal:
|
||||
url = "http://callback-jxgy.jxc4.com/fn/fnAbnormal"
|
||||
case FengNiaoCallbackTypeToken:
|
||||
url = "http://callback-jxgy.jxc4.com/fn/fnToken"
|
||||
if serverType == "prod" {
|
||||
switch requestType {
|
||||
case FengNiaoCallbackTypeStore:
|
||||
url = "http://callback-jxgy.jxc4.com/fn/fnStore"
|
||||
case FengNiaoCallbackTypeOrder:
|
||||
url = "http://callback-jxgy.jxc4.com/fn/fnOrder"
|
||||
case FengNiaoCallbackTypeAbnormal:
|
||||
url = "http://callback-jxgy.jxc4.com/fn/fnAbnormal"
|
||||
case FengNiaoCallbackTypeToken:
|
||||
url = "http://callback-jxgy.jxc4.com/fn/fnToken"
|
||||
}
|
||||
} else if serverType == "jxgy" {
|
||||
switch requestType {
|
||||
case FengNiaoCallbackTypeStore:
|
||||
url = "http://callback-gblm.jxc4.com/fn/fnStore"
|
||||
case FengNiaoCallbackTypeOrder:
|
||||
url = "http://callback-gblm.jxc4.com/fn/fnOrder"
|
||||
case FengNiaoCallbackTypeAbnormal:
|
||||
url = "http://callback-gblm.jxc4.com/fn/fnAbnormal"
|
||||
case FengNiaoCallbackTypeToken:
|
||||
url = "http://callback-gblm.jxc4.com/fn/fnToken"
|
||||
}
|
||||
} else {
|
||||
return nil, nil
|
||||
}
|
||||
httpReq, err := http.NewRequest(http.MethodPost, url, body)
|
||||
|
||||
httpReq, err := http.NewRequest(http.MethodPost, url, strings.NewReader(utils.Map2URLValues(param).Encode()))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
httpReq.Header.Set("accept", "application/json, text/plain, */*")
|
||||
|
||||
httpRes, err := http.DefaultClient.Do(httpReq)
|
||||
return httpRes, err
|
||||
}
|
||||
|
||||
// HttpToPetFN 订单消息推送宠物
|
||||
func HttpToPetFN(param map[string]interface{}, requestType string) (*http.Response, error) {
|
||||
var paramData []byte
|
||||
var err error
|
||||
paramData, err = json.Marshal(param)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
body := strings.NewReader(string(paramData))
|
||||
url := ""
|
||||
switch requestType {
|
||||
case FengNiaoCallbackTypeStore:
|
||||
url = "http://callback-gblm.jxc4.com/fn/fnStore"
|
||||
case FengNiaoCallbackTypeOrder:
|
||||
url = "http://callback-gblm.jxc4.com/fn/fnOrder"
|
||||
case FengNiaoCallbackTypeAbnormal:
|
||||
url = "http://callback-gblm.jxc4.com/fn/fnAbnormal"
|
||||
case FengNiaoCallbackTypeToken:
|
||||
url = "http://callback-gblm.jxc4.com/fn/fnToken"
|
||||
}
|
||||
httpReq, err := http.NewRequest(http.MethodPost, url, body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
httpRes, err := http.DefaultClient.Do(httpReq)
|
||||
return httpRes, err
|
||||
}
|
||||
//func HttpToPetFN(param map[string]interface{}, requestType string) (*http.Response, error) {
|
||||
// var paramData []byte
|
||||
// var err error
|
||||
// paramData, err = json.Marshal(param)
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
// body := strings.NewReader(string(paramData))
|
||||
// url := ""
|
||||
// switch requestType {
|
||||
// case FengNiaoCallbackTypeStore:
|
||||
// url = "http://callback-gblm.jxc4.com/fn/fnStore"
|
||||
// case FengNiaoCallbackTypeOrder:
|
||||
// url = "http://callback-gblm.jxc4.com/fn/fnOrder"
|
||||
// case FengNiaoCallbackTypeAbnormal:
|
||||
// url = "http://callback-gblm.jxc4.com/fn/fnAbnormal"
|
||||
// case FengNiaoCallbackTypeToken:
|
||||
// url = "http://callback-gblm.jxc4.com/fn/fnToken"
|
||||
// }
|
||||
// httpReq, err := http.NewRequest(http.MethodPost, url, body)
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
//
|
||||
// httpReq.Header.Set("Content-Type", "application/json")
|
||||
//
|
||||
// httpRes, err := http.DefaultClient.Do(httpReq)
|
||||
// return httpRes, err
|
||||
//}
|
||||
|
||||
@@ -32,11 +32,11 @@ func init() {
|
||||
// 京东果园 320406
|
||||
//api = New("1e87595b-e850-4ba4-9ee0-53bcfe383a4f", "1dba76d40cac446ca500c0391a0b6c9d", "a88d031a1e7b462cb1579f12e97fe7f4")
|
||||
// 京东白货
|
||||
api = New("9053e4fd-4e0e-4e9e-8ab1-f348e5cbf3e7", "4602bd4b84984186815dbc03299c7094", "386ab19719d9470487011217d0c57349")
|
||||
//api = New("9053e4fd-4e0e-4e9e-8ab1-f348e5cbf3e7", "4602bd4b84984186815dbc03299c7094", "386ab19719d9470487011217d0c57349")
|
||||
// 果切 379599
|
||||
//api = New("ad4061a1-6a5c-43f9-bf51-b1232fd9499d", "f2ed33075faf4773a47e065acd79532b", "aed14cbbecac4456843570e90c5f46ec")
|
||||
// 381564
|
||||
//api = New("8d9e4443-3536-41ae-b6c7-677f90f1978b", "d2d1e2e3213d4320bc2712a684307831", "1750f5b9848d4a6492c1c20b487074da")
|
||||
api = New("4d0c707a-54eb-4f05-8187-6cedf95827c7", "d2d1e2e3213d4320bc2712a684307831", "1750f5b9848d4a6492c1c20b487074da")
|
||||
// 384633
|
||||
///api = New("02a3f772-89f3-46f1-bbd5-74be346cba54", "e496a0f9b88a407297fea283b8dc9e29", "9bb82ffbec144c4b8fc8d627e5ca6a35")
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ func TestGetStationsByVenderId(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetStoreInfoByStationNo(t *testing.T) {
|
||||
result, err := api.GetStoreInfoByStationNo2("11918839")
|
||||
result, err := api.GetStoreInfoByStationNo2("12691999")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ func TestAPI_GetPoiIMStatus(t *testing.T) {
|
||||
// ans += v + ":" + utils.Int2Str(retrieval.ImStatus) + ","
|
||||
//}
|
||||
//fmt.Println(ans)
|
||||
retrieval, _ := api.GetPoiIMStatus("18003191")
|
||||
retrieval, _ := api.GetPoiIMStatus("18008153")
|
||||
fmt.Println(retrieval)
|
||||
}
|
||||
|
||||
|
||||
@@ -20,13 +20,13 @@ func init() {
|
||||
baseapi.Init(sugarLogger)
|
||||
|
||||
// 菜市
|
||||
api = New("589", "a81eb3df418d83d6a1a4b7c572156d2f", "", "")
|
||||
//api = New("589", "a81eb3df418d83d6a1a4b7c572156d2f", "", "")
|
||||
|
||||
// 果园
|
||||
//api = New("4123", "df2c88338b85f830cebce2a9eab56628", "", "")
|
||||
|
||||
//商超
|
||||
//api = New("5873", "41c479790a76f86326f89e8048964739", "", "token_qR5Et61N9S000vcr7q1PZQ")
|
||||
api = New("5873", "41c479790a76f86326f89e8048964739", "", "token_sinaAnZgfFZJkRIrdbJKBA")
|
||||
//cookieStr := `
|
||||
// acctId=57396785; token=0bWbK5VbK50E2BmIhIH2zHB-am_y7mB37yXHm6RLZWx4*; wmPoiId=-1;
|
||||
//`
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package pddapi
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestGoodsCatsGet(t *testing.T) {
|
||||
@@ -39,3 +41,11 @@ func TestGoodsRecommendGet(t *testing.T) {
|
||||
}
|
||||
t.Log(utils.Format4Output(result, false))
|
||||
}
|
||||
|
||||
func TestName(t *testing.T) {
|
||||
cc := time.Now().Add(-2 * time.Minute)
|
||||
aa := cc.Sub(time.Now()).Seconds()
|
||||
bb := time.Now().Sub(cc).Seconds()
|
||||
fmt.Println(aa)
|
||||
fmt.Println(bb)
|
||||
}
|
||||
|
||||
89
platformapi/pddapi/tcp_test.go
Normal file
89
platformapi/pddapi/tcp_test.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package pddapi
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"net"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 定义一个客户端结构体,保存每个客户端的信息
|
||||
type Client struct {
|
||||
conn net.Conn
|
||||
lastActive time.Time // 记录最后活跃时间,用于心跳检测
|
||||
}
|
||||
|
||||
// 处理客户端消息的函数
|
||||
func (c *Client) handleConnection() {
|
||||
defer c.conn.Close()
|
||||
|
||||
reader := bufio.NewReader(c.conn)
|
||||
for {
|
||||
// 检查是否超时
|
||||
if time.Since(c.lastActive) > 30*time.Second {
|
||||
fmt.Printf("Client %s timed out\n", c.conn.RemoteAddr())
|
||||
return
|
||||
}
|
||||
|
||||
message, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
fmt.Printf("Error reading from %s: %v\n", c.conn.RemoteAddr(), err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("Received from %s: %s", c.conn.RemoteAddr(), message)
|
||||
|
||||
// 更新最后活跃时间
|
||||
c.lastActive = time.Now()
|
||||
|
||||
// 发送响应给客户端
|
||||
c.conn.Write([]byte("Message received\n"))
|
||||
}
|
||||
}
|
||||
|
||||
// 心跳检测函数
|
||||
func (c *Client) heartbeat() {
|
||||
ticker := time.NewTicker(10 * time.Second)
|
||||
defer ticker.Stop()
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
// 发送心跳包
|
||||
_, err := c.conn.Write([]byte("heartbeat\n"))
|
||||
if err != nil {
|
||||
fmt.Printf("Error sending heartbeat to %s: %v\n", c.conn.RemoteAddr(), err)
|
||||
return
|
||||
}
|
||||
// 更新最后活跃时间
|
||||
c.lastActive = time.Now()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
listener, err := net.Listen("tcp", ":8080")
|
||||
if err != nil {
|
||||
fmt.Println("Error starting server:", err)
|
||||
return
|
||||
}
|
||||
defer listener.Close()
|
||||
fmt.Println("Server listening on :8080")
|
||||
|
||||
for {
|
||||
conn, err := listener.Accept()
|
||||
if err != nil {
|
||||
fmt.Println("Error accepting connection:", err)
|
||||
continue
|
||||
}
|
||||
|
||||
client := &Client{
|
||||
conn: conn,
|
||||
lastActive: time.Now(),
|
||||
}
|
||||
|
||||
// 启动一个新的goroutine处理每个连接
|
||||
go client.handleConnection()
|
||||
|
||||
// 启动心跳检测goroutine
|
||||
go client.heartbeat()
|
||||
}
|
||||
}
|
||||
@@ -8,13 +8,14 @@ import (
|
||||
)
|
||||
|
||||
// 京西速食(蔬菜)
|
||||
var token1 = `{"access_token":"97a511yhugi-1j7t4nq1hehos0000sn6spy","expires_in":1732606054,"scope":"SCOPE","shop_id":57939570,"shop_name":"京西菜市","refresh_token":"zuxb12yhugi-1j7t4nq1hehos0000sn6spy","authority_id":""}`
|
||||
//var token1 = `{"access_token":"97a511yhugi-1j7t4nq1hehos0000sn6spy","expires_in":1732606054,"scope":"SCOPE","shop_id":57939570,"shop_name":"京西菜市","refresh_token":"zuxb12yhugi-1j7t4nq1hehos0000sn6spy","authority_id":""}`
|
||||
|
||||
// 美好菜市
|
||||
//var token1 = `{"access_token":"9a315a03-c737-4a82-ae52-c9a6ce827007","expires_in":1699490747,"scope":"SCOPE","shop_id":68032645,"shop_name":"美好菜市","refresh_token":"8334c006-5301-4d25-911b-4d8cc7b70ebb","authority_id":""}`
|
||||
|
||||
// 京西到家(商超)
|
||||
//var token2 = `{"access_token":"7e3853fa-24d4-4649-938b-46947da04c92","expires_in":1698887957,"scope":"SCOPE","shop_id":68023619,"shop_name":"京西到家","refresh_token":"1dd634e9-9f9e-459b-a770-341fb64e4f88","authority_id":""}`
|
||||
// 京西到家
|
||||
var token1 = `{"access_token":"3d290106-d462-4201-80cc-b7b7aa823ae5","expires_in":1723882281,"scope":"SCOPE","shop_id":68023619,"shop_name":"京西到家","refresh_token":"d5ae3365-18f6-4c5f-883f-968830ec7bed","authority_id":""}`
|
||||
|
||||
var a = New("7267745202649957900", "51998fcf-d521-4553-8c0c-fa662c8dbd6e", token1)
|
||||
|
||||
// 查询售后单详情
|
||||
|
||||
@@ -95,7 +95,7 @@ func TestGetStoreList2(t *testing.T) {
|
||||
//获取门店详细信息
|
||||
func TestGetStoreDetail(t *testing.T) {
|
||||
data, err := a.GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{
|
||||
StoreId: "64250739",
|
||||
StoreId: "199514645",
|
||||
})
|
||||
fmt.Println(utils.Format4Output(data, false))
|
||||
fmt.Println(err)
|
||||
|
||||
Reference in New Issue
Block a user