This commit is contained in:
邹宗楠
2026-07-31 09:06:38 +08:00
parent 48c5f00a2d
commit 3607e83ece
12 changed files with 136 additions and 68 deletions

View File

@@ -28,17 +28,6 @@ func TestImWaiterStatusModify(t *testing.T) {
api.ImWaiterStatusModify(1, "19854102", 1)
}
func TestImMsgChange(t *testing.T) {
data := &JdParamJsonObj{
StatusId: "",
BillId: "320406",
ExtendJsonData: "{\"ver\":\"4.2\",\"fromChannelId\":-1,\"mid\":376841421,\"body\":{\"chatinfo\":{\"venderId\":\"store_10352814_1000051632\",\"firstMsg\":true,\"source\":\"jimitwo_service_smart_sdk\",\"IMService\":false,\"repeatConsult\":1,\"sid\":\"8b457541accd5e63eb4845f94c4852e8\",\"oGroupId\":113057083,\"askType\":\"o2o\",\"appId\":\"im.waiter\",\"verification\":\"slide\",\"repeatHuman\":1,\"isJdSuperMarket\":\"0\",\"deviceNo\":\"dd_dvc_aes_73FF2098F02392E999FE00A26817AE212E55DF89C9D405370B4B09A908F3A355\",\"label\":1,\"storeId\":\"1000051632\",\"oSid\":\"9ec16e789610328114db937025384666\",\"distinguishPersonJimi\":2,\"proVer\":\"smart_android_15.2.90\",\"entry\":\"sdk_recent\",\"askAllocateType\":\"multiChat\",\"leaveMsgTable\":1,\"venderName\":\"京西菜市-新都三河店\",\"disputeId\":-1,\"ddSessionType\":\"1\",\"systemVer\":\"android_12_BRA-AL00\",\"eidtoken\":\"jdd01SVZE72NCBZ6AXTRFHLIRLNUSF25PCOYF4OPNU3BOITK5SR62TUHMBIDGFBOYGQ7TWY7WRDPLHA3LP6NME42NE5IQNXASKIGJA6ULRAI01234567\",\"region\":\"CN\"},\"llmStream\":0,\"thumbnail\":\"\",\"param\":{\"$ref\":\"$.body.chatinfo\"},\"type\":\"text\",\"requestData\":{\"entry\":\"sdk_recent\",\"venderId\":\"store_10352814_1000051632\"},\"content\":\"低处不胜暖\",\"sid\":\"8b457541accd5e63eb4845f94c4852e8\"},\"type\":\"chat_message\",\"clientTime\":1765873013013,\"datetime\":1765873013299,\"len\":0,\"from\":{\"app\":\"im.customer\",\"art\":\"\",\"clientType\":\"android\",\"pin\":\"jd_52db6569f724f\"},\"subType\":\"text\",\"id\":\"bdf9475389e94265835d90c41912629c\",\"to\":{\"app\":\"im.waiter\",\"pin\":\"liyang12345ly\"},\"lang\":\"zh_CN\",\"timestamp\":1765873013299}",
StoreId: "11998833",
Timestamp: "2025-12-16 16:16:53",
}
ImMsgChange(data, "msChatMessage")
}
func Test(t *testing.T) {
api.MessagePushService(&ContextMsg{
Id: "1766037788592184572_Q12",

View File

@@ -179,11 +179,11 @@ func TestProcessQuestionPic(t *testing.T) {
for _, v := range [][]string{
[]string{
"http://img10.360buyimg.com/o2o/jfs/a.jpg",
",,,jfs/a.jpg",
",jfs/a.jpg",
},
[]string{
"http://img10.360buyimg.com/o2o/jfs/a.jpg,https://img10.360buyimg.com/o2o/jfs/b.jpg",
" , ,, jfs/a.jpg,https:jfs/b.jpg",
" , , jfs/a.jpg,https:jfs/b.jpg",
},
[]string{
"https://img10.360buyimg.com/o2o/jfs/a.jpg",

View File

@@ -129,6 +129,11 @@ func TestNewAddSku(t *testing.T) {
globals.SugarLogger.Debugf("--------result := %v", err)
}
func TestUpdateCurrentQty(t *testing.T) {
err1 := api.UpdateCurrentQty(utils.Int64ToStr(time.Now().Unix()), "23988364", 2023436550, 9999)
fmt.Println(err1)
}
func TestNewAddSku2(t *testing.T) {
param := map[string]interface{}{
"traceId": "33F7CD45502711F190B1525400E86DC0,18981810340",

View File

@@ -410,12 +410,11 @@ type JDSkuList struct {
func (a *API) UnBindStoreGoods(skuId int64) {
jdParams := map[string]interface{}{
"skuId": skuId,
"stationNo": "14986394",
"stationNo": "23988364",
"opPin": "liulei",
}
data, err := a.AccessAPINoPage("StoreGoodsPlatformService/unBindStoreGoods", jdParams, nil, nil, genNoPageResultParser("code", "msg", "data", "0"))
_, err := a.AccessAPINoPage("StoreGoodsPlatformService/unBindStoreGoods", jdParams, nil, nil, genNoPageResultParser("code", "msg", "data", "0"))
if err != nil {
return
}
fmt.Println(data)
}

View File

@@ -2,10 +2,9 @@ package jdapi
import (
"fmt"
"sync"
"testing"
"git.rosy.net.cn/baseapi/utils"
"testing"
"time"
)
const (
@@ -126,47 +125,38 @@ func TestBatchUpdateCurrentQtys(t *testing.T) {
//baseapi.SugarLogger.Debug(utils.Format4Output(result, false))
}
type Object2222 struct {
Clients map[string]int
*sync.RWMutex
}
var data = []int64{}
func NewTcpClient222() *Object2222 {
t := &Object2222{
Clients: make(map[string]int),
}
t.RWMutex = new(sync.RWMutex)
return t
}
func TestLock(t *testing.T) {
obj := NewTcpClient222()
go func() {
fmt.Println("1")
for i := 0; i < 100000; i++ {
obj.setParam(utils.Int2Str(i), i)
}
}()
go func() {
fmt.Println("2")
for i := 0; i < 100000; i++ {
fmt.Println(obj.getParam(utils.Int2Str(i)))
}
}()
for i := 0; i < 100000; i++ {
fmt.Println(obj.Clients[utils.Int2Str(i)])
func TestUnBindStoreGoods(t *testing.T) {
for _, v := range data {
api.UnBindStoreGoods(v)
fmt.Println(v)
time.Sleep(200 * time.Microsecond)
}
}
func (t *Object2222) setParam(key string, v int) {
t.Lock()
defer t.Unlock()
t.Clients[key] = v
}
var data2 = []int64{}
func (t *Object2222) getParam(key string) int {
t.RLock()
defer t.RUnlock()
return t.Clients[key]
func TestUpdateSku2(t *testing.T) {
i2 := len(data2) % 50
if i2 != 0 {
i2 = len(data2)/50 + 1
} else {
i2 = len(data2) / 50
}
for i := 0; i < i2; i++ {
bility := make([]*StockVendibility, 0, 50)
for _, v := range data2 {
bility = append(bility, &StockVendibility{OutSkuId: utils.Int64ToStr(v), DoSale: false})
fmt.Println(v)
}
_, err := api.BatchUpdateVendibility("liulei", "", "23988364", bility, "test")
if err != nil {
fmt.Println(err.Error())
}
time.Sleep(200 * time.Microsecond)
}
}

View File

@@ -95,6 +95,51 @@ func (a *API) GetStoreBillList(param *Bill) (map[string]*SettleOrderList, []*Bil
return nil, fineList, settleID, nil
}
//京西菜市(高攀店) 33797914 成都市 17508251223 0.00 10.00 10.00 100.0 4.0 0 0 6214862811223223 实时
//0.00 0.00 0.00 0.00 7030017.00 席伟 17508251223 席伟 17508251223 0.00 0.00 40.87 0.00 0.00 0.00
//0.00 0.00 0.00 0.00 0.4 1.5 6.00 0.00 28.26 684.0 0.0 40.87 34.87 -692.21 -692.21 0.00
func (a *API) GetStoreBillList2(param *Bill) (map[string]*SettleOrderList, []*BillListData, int64, error) {
var settleAmount int64 = 0 // 平台实际结算
var promotionServiceFee int64 = 0
var activityPoiAmount int64 = 0
var activityAgentAmount int64 = 0
var platformChargeFee int64 = 0
var performanceServiceFee int64 = 0
for {
result, err := a.AccessAPI3("bill/list", true, utils.Struct2Map(param, "", false))
if err != nil {
return nil, nil, 0, err
}
var data *StoreBillListRes
if err := utils.Map2StructByJson(result, &data, false); err != nil {
return nil, nil, 0, err
}
for i := 0; i < len(data.Data); i++ {
settleAmount += data.Data[i].SettleAmount
promotionServiceFee += data.Data[i].PromotionServiceFee
activityPoiAmount += data.Data[i].ActivityPoiAmount
activityAgentAmount += data.Data[i].ActivityAgentAmount
platformChargeFee += data.Data[i].PlatformChargeFee
performanceServiceFee += data.Data[i].PerformanceServiceFee
}
if int64(data.ExtraInfo.TotalCount) >= (param.Offset * param.Limit) {
param.Offset += param.Limit
} else {
break
}
}
fmt.Println(settleAmount)
fmt.Println(promotionServiceFee)
return nil, nil, 0, nil
}
// StoreBillListReq 门店结算查询条件
type StoreBillListReq struct {
AppPoiCode string `json:"app_poi_code"` // APP方门店id

View File

@@ -8,11 +8,10 @@ import (
)
func TestBillList(t *testing.T) {
now := time.Now()
from := time.Date(now.Year(), now.Month(), now.Day()-5, 0, 0, 0, 0, time.Local)
to := time.Date(now.Year(), now.Month(), now.Day()-1, 23, 59, 59, 59, time.Local)
from := time.Date(2026, 7, 13, 0, 0, 0, 0, time.Local)
to := time.Date(2026, 7, 19, 23, 59, 59, 59, time.Local)
param := &Bill{
AppPoiCode: "14799080",
AppPoiCode: "33797914",
StartDate: from.Unix(),
EndDate: to.Unix(),
Offset: 0,
@@ -20,7 +19,7 @@ func TestBillList(t *testing.T) {
AccessToken: api.token,
}
_, fine, _, err := api.GetStoreBillList(param)
_, fine, _, err := api.GetStoreBillList2(param)
if err != nil {
globals.SugarLogger.Debugf("err := %v", err)
return

View File

@@ -208,6 +208,16 @@ func (a *API) AccessAPI2(cmd string, isGet bool, bizParams map[string]interface{
return platformapi.ErrLevelCodeIsNotOK, newErr
}
}
} else if errObj2, ok := jsonResult1["error_list"]; ok {
errorInfo := errObj2.([]interface{})
errStr := ""
code := int64(0)
for _, v := range errorInfo {
errStr += v.(map[string]interface{})["msg"].(string)
code = utils.MustInterface2Int64(v.(map[string]interface{})["code"])
}
newErr := utils.NewErrorIntCode(errStr, int(code))
return platformapi.ErrLevelCodeIsNotOK, newErr
}
return platformapi.ErrLevelSuccess, nil
})

View File

@@ -371,6 +371,17 @@ type GetRiderDeliveryPath struct {
//} `json:"data"`
}
// ReviewAfterSalesInfo 售后参数
type ReviewAfterSalesInfo struct {
WmOrderIdView int64 `json:"wm_order_id_view"` // 订单展示ID
RefundId int64 `json:"refund_id"` // 售后单ID
ReviewType int `json:"review_type"` // 0-同意退货1-同意退款或同意仅退款无需退货2-驳回退货/退款。
RejectReasonCode int `json:"reject_reason_code"` // 驳回code,当review_type=2必填
RejectOtherReason string `json:"reject_other_reason"` // 驳回原因说明,当reject_reason_code = -1 必填
IsReturnGoods int `json:"is_return_goods"` // 是否需要返货 0-不返货/1-返货 review_type=1时选填不传默认为0
OutOfStockItemIds string `json:"out_of_stock_item_ids"` // 商品行item_id多个item_id之间用逗号隔开当订单有多个商品时
}
func (a *API) OrderReceived(orderID int64) (err error) {
_, err = a.AccessAPI("order/poi_received", true, map[string]interface{}{
KeyOrderID: orderID,
@@ -462,6 +473,7 @@ func (a *API) OrderArrived(orderID int64) (err error) {
return err
}
// OrderRefundAgree 同意售后
func (a *API) OrderRefundAgree(orderID int64, reason string) (err error) {
_, err = a.AccessAPI("order/refund/agree", true, map[string]interface{}{
KeyOrderID: orderID,
@@ -470,6 +482,7 @@ func (a *API) OrderRefundAgree(orderID int64, reason string) (err error) {
return err
}
// OrderRefundReject 拒绝售后
func (a *API) OrderRefundReject(orderID int64, reason string) (err error) {
_, err = a.AccessAPI("order/refund/reject", true, map[string]interface{}{
KeyOrderID: orderID,
@@ -478,6 +491,12 @@ func (a *API) OrderRefundReject(orderID int64, reason string) (err error) {
return err
}
// ReviewAfterSales 新版售后要求
func (a *API) ReviewAfterSales(param *ReviewAfterSalesInfo) (err error) {
_, err = a.AccessAPI("ecommerce/order/reviewAfterSales", true, utils.Struct2MapByJson(param))
return err
}
func (a *API) OrderApplyPartRefund(orderID int64, reason string, removeSkuList []*RefundSku) (err error) {
_, err = a.AccessAPI("order/applyPartRefund", false, map[string]interface{}{
KeyOrderID: orderID,
@@ -864,7 +883,7 @@ func (a *API) GetOrderAddress(orderId int64, reasonType int) (address string, er
// UploadMediaToOrder 订单上传图片,订单在骑手取货前且未超过订单预计送达时间时可以进行图片上传
func (a *API) UploadMediaToOrder(orderId string, images interface{}) error {
byteData := utils.MustMarshal(images)
_, err := a.AccessAPI("ecommerce/order/uploadMedia", false, map[string]interface{}{"order_id": orderId, "media_list": string(byteData)})
_, err := a.AccessAPI2("ecommerce/order/uploadMedia", false, map[string]interface{}{"order_id": orderId, "media_list": string(byteData)}, "error_list", "")
if err != nil {
return err
}

View File

@@ -50,3 +50,15 @@ func TestGetRecommendSku(t *testing.T) {
}
api.GetRecommendSku(param, "")
}
func TestReviewAfterSales(t *testing.T) {
api.ReviewAfterSales(&ReviewAfterSalesInfo{
WmOrderIdView: 2002231460826744707,
RefundId: 86155877585,
ReviewType: 0,
RejectReasonCode: 0,
RejectOtherReason: "",
IsReturnGoods: 1,
OutOfStockItemIds: "",
})
}

View File

@@ -31,7 +31,7 @@ func getTimeFromTimestamp(timeStamp int64) time.Time {
}
func TestOrderGetOrderDetail(t *testing.T) {
result, err := api.OrderGetOrderDetail(2602201502045507987, false)
result, err := api.OrderGetOrderDetail(3502231341944704147, false)
if err != nil {
t.Fatal(err)
}
@@ -487,7 +487,7 @@ func TestGetOrderAddress(t *testing.T) {
}
func TestUploadMediaToOrder(t *testing.T) {
api.UploadMediaToOrder("2202182431134417666", []string{"https://img.meituan.net/retailsp/12b8489847a14dbf128527aa2c7dfbd448308.jpg"})
api.UploadMediaToOrder("4102234401395379455", []string{"https://img.meituan.net/retailsp/12b8489847a14dbf128527aa2c7dfbd448308.jpg"})
}
func Test111(t *testing.T) {

View File

@@ -439,18 +439,18 @@ func TestRetailDelete(t *testing.T) {
// 测试删除门店分类列表
func TestDeleteCat(t *testing.T) {
result, err := api.RetailCatList("33889953")
result, err := api.RetailCatList("33998402")
fmt.Println(result, err)
for _, v := range result {
if v.Children != nil {
for _, v2 := range v.Children {
err = api.RetailCatDelete("33889953", "", v2.Name, 1)
err = api.RetailCatDelete("33998402", "", v2.Name, 1)
if err != nil {
t.Fatal(err)
}
}
} else {
err = api.RetailCatDelete("33889953", "", v.Name, 1)
err = api.RetailCatDelete("33998402", "", v.Name, 1)
if err != nil {
continue
t.Fatal(err)