1
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -311,9 +312,31 @@ func TestShopAptitudeUpload(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestShopDeliveryinfoGet(t *testing.T) {
|
func TestShopDeliveryinfoGet(t *testing.T) {
|
||||||
result, err := api.ShopDeliveryinfoGet("", 2233065959)
|
vendorStoreID := "1128314567"
|
||||||
if err != nil {
|
store, err := api.ShopGet2("", utils.Str2Int64(vendorStoreID))
|
||||||
t.Fatal(err)
|
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 订单消息推送果园
|
// HttpToGuoYuanFN 订单消息推送果园
|
||||||
func HttpToGuoYuanFN(param map[string]interface{}, requestType string) (*http.Response, error) {
|
func HttpToGuoYuanFN(param map[string]interface{}, requestType string, serverType string) (*http.Response, error) {
|
||||||
var paramData []byte
|
//var paramData []byte
|
||||||
var err error
|
//var err error
|
||||||
paramData, err = json.Marshal(param)
|
//paramData, err = json.Marshal(param)
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
return nil, err
|
// return nil, err
|
||||||
}
|
//}
|
||||||
body := strings.NewReader(string(paramData))
|
//body := strings.NewReader(string(paramData))
|
||||||
url := ""
|
url := ""
|
||||||
switch requestType {
|
if serverType == "prod" {
|
||||||
case FengNiaoCallbackTypeStore:
|
switch requestType {
|
||||||
url = "http://callback-jxgy.jxc4.com/fn/fnStore"
|
case FengNiaoCallbackTypeStore:
|
||||||
case FengNiaoCallbackTypeOrder:
|
url = "http://callback-jxgy.jxc4.com/fn/fnStore"
|
||||||
url = "http://callback-jxgy.jxc4.com/fn/fnOrder"
|
case FengNiaoCallbackTypeOrder:
|
||||||
case FengNiaoCallbackTypeAbnormal:
|
url = "http://callback-jxgy.jxc4.com/fn/fnOrder"
|
||||||
url = "http://callback-jxgy.jxc4.com/fn/fnAbnormal"
|
case FengNiaoCallbackTypeAbnormal:
|
||||||
case FengNiaoCallbackTypeToken:
|
url = "http://callback-jxgy.jxc4.com/fn/fnAbnormal"
|
||||||
url = "http://callback-jxgy.jxc4.com/fn/fnToken"
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
httpReq.Header.Set("Content-Type", "application/json")
|
httpReq.Header.Set("Content-Type", "application/json")
|
||||||
|
httpReq.Header.Set("accept", "application/json, text/plain, */*")
|
||||||
|
|
||||||
httpRes, err := http.DefaultClient.Do(httpReq)
|
httpRes, err := http.DefaultClient.Do(httpReq)
|
||||||
return httpRes, err
|
return httpRes, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// HttpToPetFN 订单消息推送宠物
|
// HttpToPetFN 订单消息推送宠物
|
||||||
func HttpToPetFN(param map[string]interface{}, requestType string) (*http.Response, error) {
|
//func HttpToPetFN(param map[string]interface{}, requestType string) (*http.Response, error) {
|
||||||
var paramData []byte
|
// var paramData []byte
|
||||||
var err error
|
// var err error
|
||||||
paramData, err = json.Marshal(param)
|
// paramData, err = json.Marshal(param)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return nil, err
|
// return nil, err
|
||||||
}
|
// }
|
||||||
body := strings.NewReader(string(paramData))
|
// body := strings.NewReader(string(paramData))
|
||||||
url := ""
|
// url := ""
|
||||||
switch requestType {
|
// switch requestType {
|
||||||
case FengNiaoCallbackTypeStore:
|
// case FengNiaoCallbackTypeStore:
|
||||||
url = "http://callback-gblm.jxc4.com/fn/fnStore"
|
// url = "http://callback-gblm.jxc4.com/fn/fnStore"
|
||||||
case FengNiaoCallbackTypeOrder:
|
// case FengNiaoCallbackTypeOrder:
|
||||||
url = "http://callback-gblm.jxc4.com/fn/fnOrder"
|
// url = "http://callback-gblm.jxc4.com/fn/fnOrder"
|
||||||
case FengNiaoCallbackTypeAbnormal:
|
// case FengNiaoCallbackTypeAbnormal:
|
||||||
url = "http://callback-gblm.jxc4.com/fn/fnAbnormal"
|
// url = "http://callback-gblm.jxc4.com/fn/fnAbnormal"
|
||||||
case FengNiaoCallbackTypeToken:
|
// case FengNiaoCallbackTypeToken:
|
||||||
url = "http://callback-gblm.jxc4.com/fn/fnToken"
|
// url = "http://callback-gblm.jxc4.com/fn/fnToken"
|
||||||
}
|
// }
|
||||||
httpReq, err := http.NewRequest(http.MethodPost, url, body)
|
// httpReq, err := http.NewRequest(http.MethodPost, url, body)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
return nil, err
|
// return nil, err
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
httpReq.Header.Set("Content-Type", "application/json")
|
// httpReq.Header.Set("Content-Type", "application/json")
|
||||||
|
//
|
||||||
httpRes, err := http.DefaultClient.Do(httpReq)
|
// httpRes, err := http.DefaultClient.Do(httpReq)
|
||||||
return httpRes, err
|
// return httpRes, err
|
||||||
}
|
//}
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ func init() {
|
|||||||
// 京东果园 320406
|
// 京东果园 320406
|
||||||
//api = New("1e87595b-e850-4ba4-9ee0-53bcfe383a4f", "1dba76d40cac446ca500c0391a0b6c9d", "a88d031a1e7b462cb1579f12e97fe7f4")
|
//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
|
// 果切 379599
|
||||||
//api = New("ad4061a1-6a5c-43f9-bf51-b1232fd9499d", "f2ed33075faf4773a47e065acd79532b", "aed14cbbecac4456843570e90c5f46ec")
|
//api = New("ad4061a1-6a5c-43f9-bf51-b1232fd9499d", "f2ed33075faf4773a47e065acd79532b", "aed14cbbecac4456843570e90c5f46ec")
|
||||||
// 381564
|
// 381564
|
||||||
//api = New("8d9e4443-3536-41ae-b6c7-677f90f1978b", "d2d1e2e3213d4320bc2712a684307831", "1750f5b9848d4a6492c1c20b487074da")
|
api = New("4d0c707a-54eb-4f05-8187-6cedf95827c7", "d2d1e2e3213d4320bc2712a684307831", "1750f5b9848d4a6492c1c20b487074da")
|
||||||
// 384633
|
// 384633
|
||||||
///api = New("02a3f772-89f3-46f1-bbd5-74be346cba54", "e496a0f9b88a407297fea283b8dc9e29", "9bb82ffbec144c4b8fc8d627e5ca6a35")
|
///api = New("02a3f772-89f3-46f1-bbd5-74be346cba54", "e496a0f9b88a407297fea283b8dc9e29", "9bb82ffbec144c4b8fc8d627e5ca6a35")
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ func TestGetStationsByVenderId(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestGetStoreInfoByStationNo(t *testing.T) {
|
func TestGetStoreInfoByStationNo(t *testing.T) {
|
||||||
result, err := api.GetStoreInfoByStationNo2("11918839")
|
result, err := api.GetStoreInfoByStationNo2("12691999")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ func TestAPI_GetPoiIMStatus(t *testing.T) {
|
|||||||
// ans += v + ":" + utils.Int2Str(retrieval.ImStatus) + ","
|
// ans += v + ":" + utils.Int2Str(retrieval.ImStatus) + ","
|
||||||
//}
|
//}
|
||||||
//fmt.Println(ans)
|
//fmt.Println(ans)
|
||||||
retrieval, _ := api.GetPoiIMStatus("18003191")
|
retrieval, _ := api.GetPoiIMStatus("18008153")
|
||||||
fmt.Println(retrieval)
|
fmt.Println(retrieval)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ 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_qR5Et61N9S000vcr7q1PZQ")
|
api = New("5873", "41c479790a76f86326f89e8048964739", "", "token_sinaAnZgfFZJkRIrdbJKBA")
|
||||||
//cookieStr := `
|
//cookieStr := `
|
||||||
// acctId=57396785; token=0bWbK5VbK50E2BmIhIH2zHB-am_y7mB37yXHm6RLZWx4*; wmPoiId=-1;
|
// acctId=57396785; token=0bWbK5VbK50E2BmIhIH2zHB-am_y7mB37yXHm6RLZWx4*; wmPoiId=-1;
|
||||||
//`
|
//`
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package pddapi
|
package pddapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGoodsCatsGet(t *testing.T) {
|
func TestGoodsCatsGet(t *testing.T) {
|
||||||
@@ -39,3 +41,11 @@ func TestGoodsRecommendGet(t *testing.T) {
|
|||||||
}
|
}
|
||||||
t.Log(utils.Format4Output(result, false))
|
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 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)
|
var a = New("7267745202649957900", "51998fcf-d521-4553-8c0c-fa662c8dbd6e", token1)
|
||||||
|
|
||||||
// 查询售后单详情
|
// 查询售后单详情
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ func TestGetStoreList2(t *testing.T) {
|
|||||||
//获取门店详细信息
|
//获取门店详细信息
|
||||||
func TestGetStoreDetail(t *testing.T) {
|
func TestGetStoreDetail(t *testing.T) {
|
||||||
data, err := a.GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{
|
data, err := a.GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{
|
||||||
StoreId: "64250739",
|
StoreId: "199514645",
|
||||||
})
|
})
|
||||||
fmt.Println(utils.Format4Output(data, false))
|
fmt.Println(utils.Format4Output(data, false))
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user