1
This commit is contained in:
@@ -31,6 +31,13 @@ const (
|
|||||||
OrderStatusRefund = "15" // 订单退款,这个是售后之后的事件,不应该当成正常订单事件处理
|
OrderStatusRefund = "15" // 订单退款,这个是售后之后的事件,不应该当成正常订单事件处理
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
RefundTypeAgree = "1" // 同意全单/部分退款申请
|
||||||
|
RefundTypeRefuse = "2" // 拒绝全单/部分退款申请
|
||||||
|
RefundTypeAgreeGoods = "3" // 同意退货申请
|
||||||
|
RefundTypeRefuseGoods = "4" // 拒绝退货申请
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
WaybillStatusEvent = "1" // 一般事件
|
WaybillStatusEvent = "1" // 一般事件
|
||||||
WaybillStatusNew = "2" // 生成运单
|
WaybillStatusNew = "2" // 生成运单
|
||||||
@@ -560,14 +567,6 @@ func (a *API) OrderPartRefundGet(orderID string) (orderMap map[string]interface{
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (a *API) OrderPartRefundGet2(orderID string) (partRefundInfo *CBPartRefundInfo, err error) {
|
|
||||||
// result, err := a.OrderPartRefundGet(orderID)
|
|
||||||
// if err == nil {
|
|
||||||
// err = utils.Map2StructByJson(result, &partRefundInfo, true)
|
|
||||||
// }
|
|
||||||
// return partRefundInfo, err
|
|
||||||
// }
|
|
||||||
|
|
||||||
func (a *API) SmartOrderIdConvert(orderID string) (convertedOrderID string, err error) {
|
func (a *API) SmartOrderIdConvert(orderID string) (convertedOrderID string, err error) {
|
||||||
return a.OrderIdConvert(orderID, isOrderIDEleme(orderID))
|
return a.OrderIdConvert(orderID, isOrderIDEleme(orderID))
|
||||||
}
|
}
|
||||||
@@ -576,23 +575,27 @@ func isOrderIDEleme(orderID string) bool {
|
|||||||
return len(orderID) == len("3026328756122155111")
|
return len(orderID) == len("3026328756122155111")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) OrderAgreeRefund(orderID string) (err error) {
|
func (a *API) OrderAgreeRefund(param *RefundOrderExamine) (err error) {
|
||||||
_, err = a.AccessAPI("order.agreerefund", map[string]interface{}{
|
return a.EbaiRefundOrder(param)
|
||||||
"order_id": orderID,
|
//_, err = a.AccessAPI("order.agreerefund", map[string]interface{}{
|
||||||
})
|
// "order_id": orderID,
|
||||||
return err
|
//})
|
||||||
|
//return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) OrderDisagreeRefund(orderID, refuseReason string) (err error) {
|
func (a *API) OrderDisagreeRefund(param *RefundOrderExamine) (err error) {
|
||||||
_, err = a.AccessAPI("order.disagreerefund", map[string]interface{}{
|
return a.EbaiRefundOrder(param)
|
||||||
"order_id": orderID,
|
//_, err = a.AccessAPI("order.disagreerefund", map[string]interface{}{
|
||||||
"refuse_reason": refuseReason,
|
// "order_id": orderID,
|
||||||
})
|
// "refuse_reason": refuseReason,
|
||||||
return err
|
//})
|
||||||
|
//return err
|
||||||
}
|
}
|
||||||
|
|
||||||
//售后 同意用户多次部分取消
|
//售后 同意用户多次部分取消
|
||||||
func (a *API) OrderPartRefund(orderID string, removeSkuList []*RefundSku) (err error) {
|
func (a *API) OrderPartRefund(orderID string, removeSkuList []*RefundSku) (err error) {
|
||||||
|
//return a.EbaiRefundOrder(param)
|
||||||
|
|
||||||
_, err = a.AccessAPI("order.manyTimesPartrefund", map[string]interface{}{
|
_, err = a.AccessAPI("order.manyTimesPartrefund", map[string]interface{}{
|
||||||
"order_id": orderID,
|
"order_id": orderID,
|
||||||
"products": removeSkuList,
|
"products": removeSkuList,
|
||||||
@@ -601,34 +604,38 @@ func (a *API) OrderPartRefund(orderID string, removeSkuList []*RefundSku) (err e
|
|||||||
}
|
}
|
||||||
|
|
||||||
//售后 同意用户多次部分取消
|
//售后 同意用户多次部分取消
|
||||||
func (a *API) OrderAgreePartRefund(orderID string, removeSkuList []*RefundSku, refundID string) (err error) {
|
func (a *API) OrderAgreePartRefund(param *RefundOrderExamine) (err error) {
|
||||||
_, err = a.AccessAPI("order.agreepartrefund", map[string]interface{}{
|
return a.EbaiRefundOrder(param)
|
||||||
"order_id": orderID,
|
|
||||||
"products": removeSkuList,
|
//_, err = a.AccessAPI("order.agreepartrefund", map[string]interface{}{
|
||||||
"refund_id": refundID,
|
// "order_id": orderID,
|
||||||
})
|
// "products": removeSkuList,
|
||||||
return err
|
// "refund_id": refundID,
|
||||||
|
//})
|
||||||
|
//return err
|
||||||
}
|
}
|
||||||
|
|
||||||
//售后 同意退货退款
|
//售后 同意退货退款
|
||||||
func (a *API) OrderAgreeReturnGoods(orderID, refundOrderID string) (err error) {
|
func (a *API) OrderAgreeReturnGoods(param *RefundOrderExamine) (err error) {
|
||||||
_, err = a.AccessAPI("order.agreereturngoods", map[string]interface{}{
|
return a.EbaiRefundOrder(param)
|
||||||
"order_id": orderID,
|
//_, err = a.AccessAPI("order.agreereturngoods", map[string]interface{}{
|
||||||
"refund_order_id": refundOrderID,
|
// "order_id": orderID,
|
||||||
})
|
// "refund_order_id": refundOrderID,
|
||||||
return err
|
//})
|
||||||
|
//return err
|
||||||
}
|
}
|
||||||
|
|
||||||
//售后 拒绝退货退款
|
//售后 拒绝退货退款
|
||||||
func (a *API) OrderDisagreeReturnGoods(orderID, refundOrderID, reason string) (err error) {
|
func (a *API) OrderDisagreeReturnGoods(param *RefundOrderExamine) (err error) {
|
||||||
data, err := a.AccessAPI("order.disagreereturngoods", map[string]interface{}{
|
return a.EbaiRefundOrder(param)
|
||||||
"order_id": orderID,
|
//data, err := a.AccessAPI("order.disagreereturngoods", map[string]interface{}{
|
||||||
"refund_order_id": refundOrderID,
|
// "order_id": orderID,
|
||||||
"refuse_code": "5",
|
// "refund_order_id": refundOrderID,
|
||||||
"refuse_reason": reason,
|
// "refuse_code": "5",
|
||||||
})
|
// "refuse_reason": reason,
|
||||||
fmt.Println(data)
|
//})
|
||||||
return err
|
//fmt.Println(data)
|
||||||
|
//return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) OrderCheckout(orderID, pickUpCode string) (err error) {
|
func (a *API) OrderCheckout(orderID, pickUpCode string) (err error) {
|
||||||
@@ -645,3 +652,31 @@ func (a *API) OrderQueryAcceptancecode(orderID string) (err error) {
|
|||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EbaiRefundOrder 同意退款V2.0 上面的舍弃使用2.0
|
||||||
|
func (a *API) EbaiRefundOrder(param *RefundOrderExamine) error {
|
||||||
|
if (param.ActionType == RefundTypeRefuse || param.ActionType == RefundTypeRefuseGoods) && param.ReasonCode == "" {
|
||||||
|
param.ReasonCode = "7001"
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := a.AccessAPI("order.reverse.process", utils.Struct2MapByJson(param))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// RefundOrderExamine 商家审核是售后单
|
||||||
|
type RefundOrderExamine struct {
|
||||||
|
ReverseOrderId string `json:"reverse_order_id" required:"true"` // 逆向单ID
|
||||||
|
OrderId string `json:"order_id" required:"true"` // 订单id
|
||||||
|
IdempotentId string `json:"idempotent_id" required:"true"` // 请求唯一标示
|
||||||
|
ActionType string `json:"action_type" required:"true"` // 逆向单审批操作类型,枚举值:【1-同意全单/部分退款申请 、 2-拒绝全单/部分退款申请、 3-同意退货申请 、 4-拒绝退货申请】
|
||||||
|
ReasonCode string `json:"reason_code" required:"false"` // 当拒绝场景必填,即action_type = 2 or action_type =4 时 必填,枚举值: 7019-双方协商一致不再取消订单、 7020-商品已经备货完成、 7021-商品已送出、 7802-商品发出时完好、 7803-用户未举证/举证无效、 7804-商品影响二次销售、 7805-商品不符合7天无理由退款、 7302-未收到退货(仅退货单支持传入该code)、 7001-其他原因
|
||||||
|
ReasonRemarks string `json:"reason_remarks" required:"false"` // 原因备注说明信息
|
||||||
|
RefundProductList string `json:"refund_product_list" required:"false"` // 订单id
|
||||||
|
}
|
||||||
|
|
||||||
|
type RefundProductList struct {
|
||||||
|
SubBizOrderId string `json:"sub_biz_order_id" required:"false"` // 商品子单ID
|
||||||
|
PlatformSkuId string `json:"platform_sku_id" required:"false"` // 平台商品ID
|
||||||
|
Number string `json:"number"`
|
||||||
|
RefundAmount string `json:"refund_amount"`
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package ebaiapi
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -21,6 +22,16 @@ func TestOrderGet(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestOrderAgreePartRefund(t *testing.T) {
|
||||||
|
data := make([]*RefundSku, 0, 0)
|
||||||
|
data = append(data, &RefundSku{
|
||||||
|
SkuID: "22891",
|
||||||
|
Number: "1",
|
||||||
|
})
|
||||||
|
err := api.OrderAgreePartRefund("4045250124015619672", data, "2308258682813174525")
|
||||||
|
globals.SugarLogger.Debugf("err := %s", utils.Format4Output(err, false))
|
||||||
|
}
|
||||||
|
|
||||||
func TestOrderGet2(t *testing.T) {
|
func TestOrderGet2(t *testing.T) {
|
||||||
result, err := api.OrderGet2("2147234624018417846")
|
result, err := api.OrderGet2("2147234624018417846")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -112,21 +112,47 @@ func TestAddStoreSku(t *testing.T) {
|
|||||||
globals.SugarLogger.Debugf("err = %s", utils.Format4Output(err, false))
|
globals.SugarLogger.Debugf("err = %s", utils.Format4Output(err, false))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var skucodeMap = []string{
|
||||||
|
"JX100829:25278",
|
||||||
|
}
|
||||||
|
|
||||||
func TestUpdateSku(t *testing.T) {
|
func TestUpdateSku(t *testing.T) {
|
||||||
param := &request585.AlibabaWdkSkuUpdateRequest{}
|
data2 := make([]string, 0, 0)
|
||||||
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
|
for _, v := range skucodeMap {
|
||||||
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
|
storeCodeAndSkuCode := strings.Split(v, ":")
|
||||||
OuCode: utils.String2Pointer("JX101870"),
|
skuCode := []string{storeCodeAndSkuCode[1]}
|
||||||
SkuCode: utils.String2Pointer("6045426"),
|
storeCode1 := utils.String2Pointer(storeCodeAndSkuCode[0])
|
||||||
CleanSkuMemberPrice: utils.Int64ToPointer(1),
|
result, err := apiTao.QueryStoreSKu(&request585.AlibabaWdkSkuQueryRequest{Param: &domain585.AlibabaWdkSkuQuerySkuQueryDo{
|
||||||
AllowAppSale: utils.Int64ToPointer(1),
|
OuCode: storeCode1,
|
||||||
OnlineSaleFlag: utils.Int64ToPointer(1),
|
SkuCodes: &skuCode,
|
||||||
|
}})
|
||||||
|
if err != nil {
|
||||||
|
data2 = append(data2, v)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
storeCode := *result
|
||||||
|
if len(storeCode) > 0 && utils.Str2Float64WithDefault(*storeCode[0].Model.SalePrice, 0) < 5 {
|
||||||
|
param := &request585.AlibabaWdkSkuUpdateRequest{}
|
||||||
|
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
|
||||||
|
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
|
||||||
|
OuCode: storeCode1,
|
||||||
|
SkuCode: utils.String2Pointer(skuCode[0]),
|
||||||
|
SkuPrice: utils.String2Pointer(utils.Float64ToStr(utils.Str2Float64WithDefault(*storeCode[0].Model.SalePrice, 0) + 2)), // 优先使用skuPrice 靠后SalePrice
|
||||||
|
}
|
||||||
|
updateSkuList = append(updateSkuList, updateSku)
|
||||||
|
param.ParamList = &updateSkuList
|
||||||
|
_, err := apiTao.UpdateStoreSku(param)
|
||||||
|
if err != nil {
|
||||||
|
data2 = append(data2, v)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
updateSkuList = append(updateSkuList, updateSku)
|
|
||||||
param.ParamList = &updateSkuList
|
globals.SugarLogger.Debugf("data2 :============ %s", utils.Format4Output(data2, false))
|
||||||
data, err := apiTao.UpdateStoreSku(param)
|
|
||||||
globals.SugarLogger.Debugf("data = %s", utils.Format4Output(data, false))
|
|
||||||
globals.SugarLogger.Debugf("err = %s", utils.Format4Output(err, false))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 商品上下架
|
// 商品上下架
|
||||||
|
|||||||
Reference in New Issue
Block a user