Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||||
"math"
|
"math"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -161,19 +162,6 @@ func (c *OrderManager) OnOrderAdjust(order *model.GoodsOrder, orderStatus *model
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *model.OrderStatus) (err error) {
|
func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *model.OrderStatus) (err error) {
|
||||||
// 有些平台(比如美团外卖),在新订单事件没有成功返回,但在重发订单消息前,订单状态转换,则不会再重发新订单事件,特殊处理一下
|
|
||||||
if orderStatus != nil {
|
|
||||||
if orderStatus.Status == model.OrderStatusAccepted {
|
|
||||||
if _, err2 := c.LoadOrder(orderStatus.VendorOrderID, orderStatus.VendorID); err2 == ErrCanNotFindOrder {
|
|
||||||
if handler := partner.GetPurchaseOrderHandlerFromVendorID(orderStatus.VendorID); handler != nil {
|
|
||||||
if order, err2 := handler.GetOrder(vendorOrgCode, orderStatus.VendorOrderID, ""); err2 == nil && order != nil {
|
|
||||||
c.OnOrderNew(order, orderStatus)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
txDB, _ := dao.Begin(db)
|
txDB, _ := dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
@@ -182,6 +170,28 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m
|
|||||||
panic(r)
|
panic(r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
globals.SugarLogger.Debugf("========OnOrderStatusChanged : %s", vendorOrgCode)
|
||||||
|
globals.SugarLogger.Debugf("========OnOrderStatusChanged : %s", utils.Format4Output(orderStatus, false))
|
||||||
|
// 有些平台(比如美团外卖),在新订单事件没有成功返回,但在重发订单消息前,订单状态转换,则不会再重发新订单事件,特殊处理一下
|
||||||
|
if orderStatus != nil {
|
||||||
|
if orderStatus.Status == model.OrderStatusAccepted {
|
||||||
|
if loadOrder, err2 := c.LoadOrder(orderStatus.VendorOrderID, orderStatus.VendorID); err2 == ErrCanNotFindOrder {
|
||||||
|
if handler := partner.GetPurchaseOrderHandlerFromVendorID(orderStatus.VendorID); handler != nil {
|
||||||
|
if order, err2 := handler.GetOrder(vendorOrgCode, orderStatus.VendorOrderID, ""); err2 == nil && order != nil {
|
||||||
|
c.OnOrderNew(order, orderStatus)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Debugf("========loadOrder : %s", utils.Format4Output(loadOrder, false))
|
||||||
|
loadOrder.Status = model.OrderStatusAccepted
|
||||||
|
loadOrder.VendorStatus = tao_vegetable.OrderStatusNew
|
||||||
|
c.UpdateOrderFields(loadOrder, []string{"Status", "VendorStatus"})
|
||||||
|
globals.SugarLogger.Debugf("========loadOrder : %s", utils.Format4Output(loadOrder, false))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
isDuplicated, order, err := c.addOrderStatus(orderStatus, db)
|
isDuplicated, order, err := c.addOrderStatus(orderStatus, db)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
dao.Commit(db, txDB)
|
dao.Commit(db, txDB)
|
||||||
|
|||||||
@@ -413,6 +413,7 @@ func (c *OrderManager) CreateAfsOrderFromOrder(vendorOrderID string, vendorID in
|
|||||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||||
VendorID: sku.VendorID,
|
VendorID: sku.VendorID,
|
||||||
VendorOrderID: sku.VendorOrderID,
|
VendorOrderID: sku.VendorOrderID,
|
||||||
|
VendorSubOrderID: sku.VendorSubOrderID,
|
||||||
// OrderFinancialID: sku.VendorOrderID,
|
// OrderFinancialID: sku.VendorOrderID,
|
||||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||||
VendorStoreID: afsOrder.VendorStoreID,
|
VendorStoreID: afsOrder.VendorStoreID,
|
||||||
|
|||||||
@@ -698,7 +698,13 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
// api.JdShop2API.SetCookieWithStr(configs[0].Value)
|
// api.JdShop2API.SetCookieWithStr(configs[0].Value)
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
globals.SugarLogger.Debugf("createList ==== := %s", utils.Format4Output(createList, false))
|
||||||
|
globals.SugarLogger.Debugf("updateList ==== := %s", utils.Format4Output(updateList, false))
|
||||||
|
globals.SugarLogger.Debugf("deleteList ==== := %s", utils.Format4Output(deleteList, false))
|
||||||
|
globals.SugarLogger.Debugf("stockList ==== := %s", utils.Format4Output(stockList, false))
|
||||||
|
globals.SugarLogger.Debugf("onlineList ==== := %s", utils.Format4Output(onlineList, false))
|
||||||
|
globals.SugarLogger.Debugf("offlineList ==== := %s", utils.Format4Output(offlineList, false))
|
||||||
|
globals.SugarLogger.Debugf("priceList ==== := %s", utils.Format4Output(priceList, false))
|
||||||
task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx,
|
task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
step := batchItemList[0].(int)
|
step := batchItemList[0].(int)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package dao
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
@@ -1156,8 +1155,6 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
|
|||||||
sqlParams = append(sqlParams, pageSize, offset)
|
sqlParams = append(sqlParams, pageSize, offset)
|
||||||
txDB, _ := Begin(db)
|
txDB, _ := Begin(db)
|
||||||
defer Commit(db, txDB)
|
defer Commit(db, txDB)
|
||||||
globals.SugarLogger.Debugf("===============sql2 := %s", sql)
|
|
||||||
globals.SugarLogger.Debugf("===============sql2 := %s", utils.Format4Output(sqlParams, false))
|
|
||||||
if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil {
|
if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil {
|
||||||
totalCount = GetLastTotalRowCount2(db, txDB)
|
totalCount = GetLastTotalRowCount2(db, txDB)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ type AfsOrder struct {
|
|||||||
ReasonImgList string `orm:"size(1024)" json:"reasonImgList"` // 售后描述图片
|
ReasonImgList string `orm:"size(1024)" json:"reasonImgList"` // 售后描述图片
|
||||||
AppealType int8 `json:"appealType"` // 售后方式(本地)
|
AppealType int8 `json:"appealType"` // 售后方式(本地)
|
||||||
VendorAppealType string `orm:"size(255)" json:"vendorAppealType"` // 原始售后方式(第三方平台)
|
VendorAppealType string `orm:"size(255)" json:"vendorAppealType"` // 原始售后方式(第三方平台)
|
||||||
Flag int `json:"flag"`
|
Flag int `json:"flag"` // 0 未操作/1同意/3驳回
|
||||||
RefundType int8 `json:"refundType"`
|
RefundType int8 `json:"refundType"`
|
||||||
RefuseReason string `orm:"size(1024)" json:"refuseReason"`
|
RefuseReason string `orm:"size(1024)" json:"refuseReason"`
|
||||||
|
|
||||||
@@ -121,6 +121,7 @@ type OrderSkuFinancial struct {
|
|||||||
|
|
||||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"` // 平台id
|
VendorID int `orm:"column(vendor_id)" json:"vendorID"` // 平台id
|
||||||
VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` // 关联原始订单ID
|
VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` // 关联原始订单ID
|
||||||
|
VendorSubOrderID string `orm:"column(vendor_sub_order_id);size(48)" json:"vendorSubOrderID"` // 关联原始订单ID
|
||||||
AfsOrderID string `orm:"column(afs_order_id);size(48)" json:"afsOrderID"` // 售后单ID
|
AfsOrderID string `orm:"column(afs_order_id);size(48)" json:"afsOrderID"` // 售后单ID
|
||||||
IsAfsOrder int8 `json:"isAfsOrder"` // 0--正向单, 1--售后单
|
IsAfsOrder int8 `json:"isAfsOrder"` // 0--正向单, 1--售后单
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
|
|||||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||||
VendorID: sku.VendorID,
|
VendorID: sku.VendorID,
|
||||||
VendorOrderID: sku.VendorOrderID,
|
VendorOrderID: sku.VendorOrderID,
|
||||||
|
VendorSubOrderID: sku.VendorSubOrderID,
|
||||||
AfsOrderID: sku.VendorOrderID,
|
AfsOrderID: sku.VendorOrderID,
|
||||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||||
VendorStoreID: afsOrder.VendorStoreID,
|
VendorStoreID: afsOrder.VendorStoreID,
|
||||||
@@ -144,6 +145,7 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac
|
|||||||
VendorID: model.VendorIDEBAI,
|
VendorID: model.VendorIDEBAI,
|
||||||
AfsOrderID: afsOrder.AfsOrderID,
|
AfsOrderID: afsOrder.AfsOrderID,
|
||||||
VendorOrderID: afsOrder.VendorOrderID,
|
VendorOrderID: afsOrder.VendorOrderID,
|
||||||
|
VendorSubOrderID: afsOrder.VendorOrderID2,
|
||||||
// ConfirmTime: getTimeFromInterface(xMap["apply_time"]),
|
// ConfirmTime: getTimeFromInterface(xMap["apply_time"]),
|
||||||
VendorSkuID: utils.Interface2String(xMap["sku_id"]),
|
VendorSkuID: utils.Interface2String(xMap["sku_id"]),
|
||||||
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["custom_sku_id"]), 0)),
|
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["custom_sku_id"]), 0)),
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package tao_vegetable
|
|||||||
import (
|
import (
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||||
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
@@ -15,6 +16,7 @@ func OnCallbackMsg(orderStatus, orderId string, msg interface{}) (response *tao_
|
|||||||
if CurPurchaseHandler != nil {
|
if CurPurchaseHandler != nil {
|
||||||
jxutils.CallMsgHandler(func() {
|
jxutils.CallMsgHandler(func() {
|
||||||
response = CurPurchaseHandler.onOrderMsg(orderStatus, orderId, msg)
|
response = CurPurchaseHandler.onOrderMsg(orderStatus, orderId, msg)
|
||||||
|
globals.SugarLogger.Debugf("OnCallbackMsg response : %s", utils.Format4Output(response, false))
|
||||||
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
|
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
|
||||||
}
|
}
|
||||||
return response
|
return response
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ func OnFinancialMsg(msg *mtwmapi.CallbackMsg) (err error) {
|
|||||||
orderData := msg.FormData
|
orderData := msg.FormData
|
||||||
if orderData.Get("notify_type") == mtwmapi.NotifyTypeSuccess {
|
if orderData.Get("notify_type") == mtwmapi.NotifyTypeSuccess {
|
||||||
afsOrderID := orderData.Get("order_id")
|
afsOrderID := orderData.Get("order_id")
|
||||||
orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrderID, model.VendorIDMTWM)
|
orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrderID, model.VendorIDTaoVegetable)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = partner.CurOrderManager.SaveAfsOrderFinancialInfo(CurPurchaseHandler.OrderFinancialDetail2Refund(orderFinancial, orderData))
|
err = partner.CurOrderManager.SaveAfsOrderFinancialInfo(CurPurchaseHandler.OrderFinancialDetail2Refund(orderFinancial, orderData))
|
||||||
} else {
|
} else {
|
||||||
@@ -42,7 +42,7 @@ func OnFinancialMsg(msg *mtwmapi.CallbackMsg) (err error) {
|
|||||||
|
|
||||||
func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.OrderFinancial, orderData url.Values) (afsOrder *model.AfsOrder) {
|
func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.OrderFinancial, orderData url.Values) (afsOrder *model.AfsOrder) {
|
||||||
afsOrder = &model.AfsOrder{
|
afsOrder = &model.AfsOrder{
|
||||||
VendorID: model.VendorIDMTWM,
|
VendorID: model.VendorIDTaoVegetable,
|
||||||
AfsOrderID: orderData.Get("refund_id"),
|
AfsOrderID: orderData.Get("refund_id"),
|
||||||
VendorOrderID: orderData.Get("order_id"),
|
VendorOrderID: orderData.Get("order_id"),
|
||||||
AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
|
AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
|
||||||
@@ -65,6 +65,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
|
|||||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||||
VendorID: sku.VendorID,
|
VendorID: sku.VendorID,
|
||||||
VendorOrderID: sku.VendorOrderID,
|
VendorOrderID: sku.VendorOrderID,
|
||||||
|
VendorSubOrderID: sku.VendorSubOrderID,
|
||||||
// OrderFinancialID: sku.VendorOrderID,
|
// OrderFinancialID: sku.VendorOrderID,
|
||||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||||
VendorStoreID: afsOrder.VendorStoreID,
|
VendorStoreID: afsOrder.VendorStoreID,
|
||||||
@@ -88,7 +89,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
|
|||||||
|
|
||||||
func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrder *model.AfsOrder) {
|
func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrder *model.AfsOrder) {
|
||||||
afsOrder = &model.AfsOrder{
|
afsOrder = &model.AfsOrder{
|
||||||
VendorID: model.VendorIDMTWM,
|
VendorID: model.VendorIDTaoVegetable,
|
||||||
AfsOrderID: orderData.Get("order_id"),
|
AfsOrderID: orderData.Get("order_id"),
|
||||||
VendorOrderID: orderData.Get("order_id"),
|
VendorOrderID: orderData.Get("order_id"),
|
||||||
AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
|
AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
|
||||||
@@ -111,9 +112,10 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrd
|
|||||||
utils.UnmarshalUseNumber([]byte(food), &refundDetail)
|
utils.UnmarshalUseNumber([]byte(food), &refundDetail)
|
||||||
for _, xMap := range refundDetail {
|
for _, xMap := range refundDetail {
|
||||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||||
VendorID: model.VendorIDMTWM,
|
VendorID: model.VendorIDTaoVegetable,
|
||||||
AfsOrderID: afsOrder.AfsOrderID,
|
AfsOrderID: afsOrder.AfsOrderID,
|
||||||
VendorOrderID: afsOrder.VendorOrderID,
|
VendorOrderID: afsOrder.VendorOrderID,
|
||||||
|
VendorSubOrderID: afsOrder.VendorOrderID2,
|
||||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||||
VendorSkuID: utils.Interface2String(xMap["app_food_code"]),
|
VendorSkuID: utils.Interface2String(xMap["app_food_code"]),
|
||||||
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["sku_id"]), 0)),
|
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["sku_id"]), 0)),
|
||||||
@@ -161,6 +163,7 @@ func (p *PurchaseHandler) OrderDetail2Financial(result *domain591.AlibabaAelophy
|
|||||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||||
VendorID: orderFinancial.VendorID,
|
VendorID: orderFinancial.VendorID,
|
||||||
VendorOrderID: orderFinancial.VendorOrderID,
|
VendorOrderID: orderFinancial.VendorOrderID,
|
||||||
|
VendorSubOrderID: orderFinancial.VendorOrderID2,
|
||||||
VendorStoreID: *result.StoreId,
|
VendorStoreID: *result.StoreId,
|
||||||
StoreID: 0,
|
StoreID: 0,
|
||||||
JxStoreID: jxStoreID,
|
JxStoreID: jxStoreID,
|
||||||
@@ -182,6 +185,7 @@ func (p *PurchaseHandler) OrderDetail2Financial(result *domain591.AlibabaAelophy
|
|||||||
activity := &model.OrderDiscountFinancial{
|
activity := &model.OrderDiscountFinancial{
|
||||||
VendorID: orderFinancial.VendorID,
|
VendorID: orderFinancial.VendorID,
|
||||||
VendorOrderID: orderFinancial.VendorOrderID,
|
VendorOrderID: orderFinancial.VendorOrderID,
|
||||||
|
VendorOrderID2: orderFinancial.VendorOrderID2,
|
||||||
}
|
}
|
||||||
if v.ChannelActivityId != nil {
|
if v.ChannelActivityId != nil {
|
||||||
activity.VendorActivityID = *v.ChannelActivityId
|
activity.VendorActivityID = *v.ChannelActivityId
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||||
domain3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/domain"
|
domain3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/domain"
|
||||||
request3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/request"
|
request3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/request"
|
||||||
@@ -55,8 +54,8 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
|||||||
StoreId: utils.String2Pointer(vendorStoreID),
|
StoreId: utils.String2Pointer(vendorStoreID),
|
||||||
BizOrderId: utils.Int64ToPointer(vendorOrderID),
|
BizOrderId: utils.Int64ToPointer(vendorOrderID),
|
||||||
}}
|
}}
|
||||||
|
api := getAPI(vendorOrgCode, 0, vendorStoreID)
|
||||||
orderDetail, err := getAPI(vendorOrgCode, 0, vendorStoreID).QueryOrderDetail(requestParam)
|
orderDetail, err := api.QueryOrderDetail(requestParam)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
@@ -65,6 +64,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
|||||||
VendorOrderID: utils.Int64ToStr(vendorOrderID),
|
VendorOrderID: utils.Int64ToStr(vendorOrderID),
|
||||||
VendorID: model.VendorIDTaoVegetable,
|
VendorID: model.VendorIDTaoVegetable,
|
||||||
VendorStoreID: vendorStoreID,
|
VendorStoreID: vendorStoreID,
|
||||||
|
VendorOrderID2: *orderDetail.OutOrderId,
|
||||||
StoreID: utils.Str2Int(*orderDetail.StoreId),
|
StoreID: utils.Str2Int(*orderDetail.StoreId),
|
||||||
JxStoreID: utils.Str2Int(*orderDetail.StoreId),
|
JxStoreID: utils.Str2Int(*orderDetail.StoreId),
|
||||||
CoordinateType: model.CoordinateTypeMars,
|
CoordinateType: model.CoordinateTypeMars,
|
||||||
@@ -79,7 +79,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
|||||||
InvoiceTitle: "",
|
InvoiceTitle: "",
|
||||||
InvoiceTaxerID: "",
|
InvoiceTaxerID: "",
|
||||||
InvoiceEmail: "",
|
InvoiceEmail: "",
|
||||||
VendorOrgCode: vendorOrgCode,
|
VendorOrgCode: api.GetVendorOrgCode(),
|
||||||
UserID: *orderDetail.OpenUid,
|
UserID: *orderDetail.OpenUid,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,6 +104,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
|||||||
for _, extra := range *orderDetail.SubOrderResponseList {
|
for _, extra := range *orderDetail.SubOrderResponseList {
|
||||||
sku := &model.OrderSku{
|
sku := &model.OrderSku{
|
||||||
VendorOrderID: order.VendorOrderID,
|
VendorOrderID: order.VendorOrderID,
|
||||||
|
VendorSubOrderID: *extra.OutSubOrderId,
|
||||||
VendorID: model.VendorIDTaoVegetable,
|
VendorID: model.VendorIDTaoVegetable,
|
||||||
StoreSubID: 0,
|
StoreSubID: 0,
|
||||||
StoreSubName: "",
|
StoreSubName: "",
|
||||||
@@ -122,7 +123,6 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
|||||||
OrderCreatedAt: order.OrderCreatedAt,
|
OrderCreatedAt: order.OrderCreatedAt,
|
||||||
IsVendorAct: 0,
|
IsVendorAct: 0,
|
||||||
Upc: *extra.Barcode,
|
Upc: *extra.Barcode,
|
||||||
VendorSubOrderID: utils.Int64ToStr(*extra.BizSubOrderId),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
activityId := make([]int64, 0)
|
activityId := make([]int64, 0)
|
||||||
@@ -333,22 +333,19 @@ func (c *PurchaseHandler) onOrderMsg(orderStatus, orderId string, orderCallback
|
|||||||
msg.OrderStatus = tao_vegetable.OrderStatusOnSaleCancel
|
msg.OrderStatus = tao_vegetable.OrderStatusOnSaleCancel
|
||||||
}
|
}
|
||||||
status := c.callbackOrderMsg2Status(msg)
|
status := c.callbackOrderMsg2Status(msg)
|
||||||
if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
// 校验重复消息
|
// 校验重复消息
|
||||||
if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 {
|
if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 {
|
||||||
return tao_vegetable.CallBackResultInfo(nil)
|
return tao_vegetable.CallBackResultInfo(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 商户接单/支付完成代表新订单
|
// 商户接单/支付完成代表新订单
|
||||||
if msg.OrderStatus == tao_vegetable.OrderStatusNew || msg.OrderStatus == tao_vegetable.OrderStatusPayFinsh {
|
if msg.OrderStatus == tao_vegetable.OrderStatusPayFinsh {
|
||||||
order, orderMap, err2 := c.getOrder("", msg.BizOrderId, msg.StoreId)
|
order, orderMap, err2 := c.getOrder("", msg.BizOrderId, msg.StoreId)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
err = partner.CurOrderManager.OnOrderNew(order, status)
|
err = partner.CurOrderManager.OnOrderNew(order, status)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
if msg.OrderStatus == mtwmapi.MsgTypeNewOrder {
|
if msg.OrderStatus == tao_vegetable.OrderStatusPayFinsh {
|
||||||
c.OnOrderDetail(orderMap, partner.CreatedPeration)
|
c.OnOrderDetail(orderMap, partner.CreatedPeration)
|
||||||
} else {
|
} else {
|
||||||
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
|
c.OnOrderDetail(orderMap, partner.UpdatedPeration)
|
||||||
@@ -380,7 +377,7 @@ func (c *PurchaseHandler) onOrderMsg(orderStatus, orderId string, orderCallback
|
|||||||
// 发货完成
|
// 发货完成
|
||||||
if msg.OrderStatus == tao_vegetable.OrderStatusCallRider { // || msgId == tiktokShop.CallbackPartGoodsMsgTagId 部分发货
|
if msg.OrderStatus == tao_vegetable.OrderStatusCallRider { // || msgId == tiktokShop.CallbackPartGoodsMsgTagId 部分发货
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
orderMap, _ := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{
|
orderMap, _ := getAPI("", jxutils.GetSaleStoreIDFromOrder(order), order.VendorStoreID).QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{
|
||||||
OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
||||||
StoreId: utils.String2Pointer(msg.StoreId),
|
StoreId: utils.String2Pointer(msg.StoreId),
|
||||||
BizOrderId: utils.Int64ToPointer(msg.BizOrderId),
|
BizOrderId: utils.Int64ToPointer(msg.BizOrderId),
|
||||||
@@ -439,6 +436,9 @@ func (c *PurchaseHandler) callbackOrderMsg2Status(msg *tao_vegetable.CallbackOrd
|
|||||||
case tao_vegetable.OrderStatusOnSaleCancel:
|
case tao_vegetable.OrderStatusOnSaleCancel:
|
||||||
orderStatus.Status = model.OrderStatusCanceled
|
orderStatus.Status = model.OrderStatusCanceled
|
||||||
orderStatus.Remark = "用户售中取消"
|
orderStatus.Remark = "用户售中取消"
|
||||||
|
case tao_vegetable.OrderStatusSuccess: // 送达
|
||||||
|
orderStatus.Status = model.OrderStatusFinished
|
||||||
|
orderStatus.Remark = "订单送达"
|
||||||
}
|
}
|
||||||
return orderStatus
|
return orderStatus
|
||||||
}
|
}
|
||||||
@@ -578,32 +578,62 @@ func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) {
|
func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) {
|
||||||
if isAgree {
|
|
||||||
param := &request3156.AlibabaTclsAelophyRefundAgreeRequest{
|
db := dao.GetDB()
|
||||||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
|
||||||
OutOrderId: utils.String2Pointer(order.VendorOrderID),
|
|
||||||
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
|
||||||
}
|
|
||||||
param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款"))
|
|
||||||
if reason != "" {
|
|
||||||
param.AuditMemo = utils.String2Pointer(*param.AuditMemo + fmt.Sprintf(",%s", reason))
|
|
||||||
}
|
|
||||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").AgreeUserCancel(param)
|
|
||||||
} else {
|
|
||||||
afsOrder, err := partner.CurOrderManager.LoadAfsOrder(order.VendorOrderID, order.VendorID)
|
afsOrder, err := partner.CurOrderManager.LoadAfsOrder(order.VendorOrderID, order.VendorID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if isAgree {
|
||||||
|
// 加载子订单号
|
||||||
|
orderDetail, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDTaoVegetable)
|
||||||
|
// 加载退款商品
|
||||||
|
afsSkuOrder, _ := dao.GetOrderRefundSkuList(db, []string{order.VendorOrderID})
|
||||||
|
param := &request3156.AlibabaTclsAelophyRefundAgreeRequest{
|
||||||
|
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||||||
|
OutOrderId: utils.String2Pointer(orderDetail.VendorOrderID2),
|
||||||
|
RefundId: utils.String2Pointer(afsOrder.AfsOrderID),
|
||||||
|
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
||||||
|
}
|
||||||
|
// 加载购买商品
|
||||||
|
sku, _ := dao.GetSimpleOrderSkus(db, order.VendorOrderID, nil)
|
||||||
|
skuCount := 0
|
||||||
|
for _, v := range sku {
|
||||||
|
skuCount += v.Count
|
||||||
|
}
|
||||||
|
|
||||||
|
refundSkuCount := 0
|
||||||
|
subRefundList := make([]domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist, 0, len(afsSkuOrder))
|
||||||
|
for _, v := range afsSkuOrder {
|
||||||
|
subRefundList = append(subRefundList, domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist{
|
||||||
|
OutSubOrderId: utils.String2Pointer(v.VendorSubOrderID),
|
||||||
|
RefundFee: utils.Int64ToPointer(v.UserMoney),
|
||||||
|
})
|
||||||
|
refundSkuCount += v.Count
|
||||||
|
}
|
||||||
|
|
||||||
|
// 全退退运费
|
||||||
|
if skuCount == refundSkuCount {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
param.SubRefundList = &subRefundList
|
||||||
|
param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款"))
|
||||||
|
if reason != "" {
|
||||||
|
param.AuditMemo = utils.String2Pointer(*param.AuditMemo + fmt.Sprintf(",%s", reason))
|
||||||
|
}
|
||||||
|
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(afsOrder), order.VendorStoreID).AgreeUserCancel(param)
|
||||||
|
} else {
|
||||||
param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{
|
param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{
|
||||||
RefundId: utils.String2Pointer(afsOrder.AfsOrderID),
|
RefundId: utils.String2Pointer(afsOrder.AfsOrderID),
|
||||||
RejectReason: utils.String2Pointer(reason),
|
RejectReason: utils.String2Pointer(reason),
|
||||||
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
||||||
}
|
}
|
||||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").DisAgreeUserCancel(param)
|
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(afsOrder), order.VendorStoreID).DisAgreeUserCancel(param)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
afsOrder.Status = model.AfsOrderStatusFailed
|
afsOrder.Status = model.AfsOrderStatusFailed
|
||||||
afsOrder.VendorStatus = "老板拒绝"
|
afsOrder.VendorStatus = "老板拒绝"
|
||||||
afsOrder.ReasonDesc += reason + ","
|
afsOrder.ReasonDesc += "," + reason
|
||||||
dao.UpdateEntity(dao.GetDB(), afsOrder, "Status", "ReasonDesc", "VendorStatus")
|
dao.UpdateEntity(dao.GetDB(), afsOrder, "Status", "ReasonDesc", "VendorStatus")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -624,10 +654,11 @@ func (c *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.Goods
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reasonId := *orderSkuList.ReasonList
|
||||||
param := &request3156.AlibabaTclsAelophyRefundCsapplyRequest{
|
param := &request3156.AlibabaTclsAelophyRefundCsapplyRequest{
|
||||||
RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyRefundCsApplyDto{
|
RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyRefundCsApplyDto{
|
||||||
ReasonId: utils.Int64ToPointer(1111),
|
ReasonId: reasonId[0].ReasonId,
|
||||||
OutOrderId: utils.String2Pointer(order.VendorOrderID),
|
OutOrderId: utils.String2Pointer(order.VendorOrderID2),
|
||||||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||||||
RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())),
|
RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())),
|
||||||
OutSubOrderIds: &outSubOrderIds,
|
OutSubOrderIds: &outSubOrderIds,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||||
|
domain3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/domain"
|
||||||
request3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/request"
|
request3156 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability3156/request"
|
||||||
domain591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/domain"
|
domain591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/domain"
|
||||||
request591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/request"
|
request591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/request"
|
||||||
@@ -28,18 +29,27 @@ var (
|
|||||||
|
|
||||||
func (c *PurchaseHandler) isAfsMsg(orderStatus string, orderId string) bool {
|
func (c *PurchaseHandler) isAfsMsg(orderStatus string, orderId string) bool {
|
||||||
if orderStatus == tao_vegetable.OrderStatusApplyAfs || orderStatus == tao_vegetable.OrderStatusCancelAfs || orderStatus == tao_vegetable.OrderStatusRefundSuccess {
|
if orderStatus == tao_vegetable.OrderStatusApplyAfs || orderStatus == tao_vegetable.OrderStatusCancelAfs || orderStatus == tao_vegetable.OrderStatusRefundSuccess {
|
||||||
order, _ := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDTaoVegetable)
|
switch orderStatus {
|
||||||
|
case tao_vegetable.OrderStatusApplyAfs, tao_vegetable.OrderStatusCancelAfs:
|
||||||
|
order, _ := partner.CurOrderManager.LoadOrder2(orderId, model.VendorIDTaoVegetable)
|
||||||
if order != nil {
|
if order != nil {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
case tao_vegetable.OrderStatusRefundSuccess:
|
||||||
|
afsOrder, _ := partner.CurOrderManager.LoadAfsOrder(orderId, model.VendorIDTaoVegetable)
|
||||||
|
if afsOrder != nil {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *PurchaseHandler) OnAfsOrderMsg(orderId, status string, msg interface{}) (retVal *tao_vegetable.CallBackResult) {
|
func (c *PurchaseHandler) OnAfsOrderMsg(orderId, status string, msg interface{}) (retVal *tao_vegetable.CallBackResult) {
|
||||||
jxutils.CallMsgHandlerAsync(func() {
|
// 取消线程池执行代码,异步返回
|
||||||
|
//jxutils.CallMsgHandlerAsync(func() {
|
||||||
retVal = c.onAfsOrderMsg(status, msg)
|
retVal = c.onAfsOrderMsg(status, msg)
|
||||||
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
|
//}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
|
||||||
return retVal
|
return retVal
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,6 +73,8 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
|||||||
if needCallNew {
|
if needCallNew {
|
||||||
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
|
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
|
||||||
var afsOrder *model.AfsOrder
|
var afsOrder *model.AfsOrder
|
||||||
|
var api = getAPI("", 0, refundData.StoreId)
|
||||||
|
|
||||||
afsOrder = &model.AfsOrder{
|
afsOrder = &model.AfsOrder{
|
||||||
VendorID: model.VendorIDTaoVegetable,
|
VendorID: model.VendorIDTaoVegetable,
|
||||||
AfsOrderID: orderStatus.VendorOrderID,
|
AfsOrderID: orderStatus.VendorOrderID,
|
||||||
@@ -77,8 +89,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
|||||||
ReasonType: 0,
|
ReasonType: 0,
|
||||||
ReasonDesc: refundData.RefundReason,
|
ReasonDesc: refundData.RefundReason,
|
||||||
ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024),
|
ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024),
|
||||||
RefundType: model.AfsTypeFullRefund,
|
VendorOrgCode: api.GetVendorOrgCode(),
|
||||||
VendorOrgCode: refundData.MerchantCode,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refundIds := make([]int64, 0, 0)
|
refundIds := make([]int64, 0, 0)
|
||||||
@@ -88,48 +99,81 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
|||||||
}
|
}
|
||||||
refundIds = append(refundIds, utils.Str2Int64(refundData.BizRefundId))
|
refundIds = append(refundIds, utils.Str2Int64(refundData.BizRefundId))
|
||||||
|
|
||||||
taoAfsOrderDetail, err := getAPI(refundData.MerchantCode, 0, "").QueryAfsOrderDetail(&request591.AlibabaWdkOrderRefundGetRequest{
|
//taoAfsOrderDetail, err := getAPI(refundData.MerchantCode, 0, "").QueryAfsOrderDetail(&request591.AlibabaWdkOrderRefundGetRequest{
|
||||||
BizOrderIds: &bizOrderIds,
|
// BizOrderIds: &bizOrderIds,
|
||||||
RefundIds: &refundIds,
|
// RefundIds: &refundIds,
|
||||||
OrderFrom: nil,
|
// OrderFrom: nil,
|
||||||
ShopId: nil,
|
// ShopId: nil,
|
||||||
StoreId: &refundData.StoreId,
|
// StoreId: &refundData.StoreId,
|
||||||
})
|
//})
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
// return tao_vegetable.CallBackResultInfo(err)
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
|
//taoAfsOrder := *taoAfsOrderDetail.Orders
|
||||||
|
|
||||||
taoAfsOrder := *taoAfsOrderDetail.Orders
|
afsOrder.FreightUserMoney = 0 // 订单运费
|
||||||
|
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
|
||||||
afsOrder.FreightUserMoney = *taoAfsOrder[0].RefundPostFee
|
|
||||||
afsOrder.AfsFreightMoney = *taoAfsOrder[0].RefundPostFee // 暂时未发现退货取件费用
|
|
||||||
afsOrder.BoxMoney = 0 // 餐盒费
|
afsOrder.BoxMoney = 0 // 餐盒费
|
||||||
afsOrder.TongchengFreightMoney = 0 // 同城配送费
|
afsOrder.TongchengFreightMoney = 0 // 同城配送费
|
||||||
afsOrder.SkuBoxMoney = 0 // 商品包装费
|
afsOrder.SkuBoxMoney = 0 // 商品包装费
|
||||||
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
|
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
|
||||||
|
|
||||||
// 订单商品详细信息
|
// 订单商品详细信息
|
||||||
skuList, err := getAPI(refundData.MerchantCode, 0, "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
queryOrderDetailParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
||||||
StoreId: utils.String2Pointer(refundData.StoreId),
|
StoreId: utils.String2Pointer(refundData.StoreId),
|
||||||
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(refundData.OutOrderId)),
|
}}
|
||||||
}})
|
order, err := partner.CurOrderManager.LoadOrder2(refundData.OutOrderId, model.VendorIDTaoVegetable)
|
||||||
|
if err != nil {
|
||||||
|
globals.SugarLogger.Debugf("用户申请售后时,通过售后外部渠道订单号获取主订单失败:%s", err.Error())
|
||||||
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
|
}
|
||||||
|
if order == nil {
|
||||||
|
globals.SugarLogger.Debugf("数据库订单查询失败,订单号异常 :%s", refundData.OutOrderId)
|
||||||
|
return tao_vegetable.CallBackResultInfo(errors.New("订单号异常"))
|
||||||
|
}
|
||||||
|
queryOrderDetailParam.OrderGetRequest.BizOrderId = utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID))
|
||||||
|
skuList, err := api.QueryOrderDetail(queryOrderDetailParam)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
}
|
}
|
||||||
for _, sku := range *skuList.SubOrderResponseList {
|
|
||||||
|
var refundSkuCount int64 = 0 // 子订单申请退款的商品数
|
||||||
|
var orderSkuCount int64 = 0 // 子订单购买的商品数
|
||||||
|
for _, refundSku := range refundData.SubRefundOrders { // 本次退款订单
|
||||||
|
refundSkuCount += refundSku.RefundAmount
|
||||||
|
for _, sku := range *skuList.SubOrderResponseList { // 总订单
|
||||||
|
if refundSku.OutSubOrderId == *sku.OutSubOrderId {
|
||||||
orderSku := &model.OrderSkuFinancial{
|
orderSku := &model.OrderSkuFinancial{
|
||||||
Count: utils.Float64TwoInt(*sku.BuySaleQuantity),
|
Count: utils.Float64TwoInt(*sku.BuySaleQuantity),
|
||||||
VendorSkuID: *sku.SkuCode,
|
VendorSkuID: *sku.SkuCode,
|
||||||
SkuID: utils.Str2Int(*sku.SkuCode),
|
SkuID: utils.Str2Int(*sku.SkuCode),
|
||||||
Name: *sku.SkuName,
|
Name: *sku.SkuName,
|
||||||
UserMoney: *sku.OriginalFee - *sku.DiscountFee,
|
|
||||||
PmSkuSubsidyMoney: *sku.DiscountPlatformFee, // 平台补贴商品
|
PmSkuSubsidyMoney: *sku.DiscountPlatformFee, // 平台补贴商品
|
||||||
|
VendorOrderID: orderStatus.VendorOrderID,
|
||||||
|
VendorSubOrderID: *sku.OutSubOrderId,
|
||||||
|
}
|
||||||
|
// 交易成功,商户取消,配送中,配送结束时!订单不退换运费
|
||||||
|
switch *sku.OrderStatus {
|
||||||
|
case tao_vegetable.OrderStatusSuccess, tao_vegetable.OrderStatusMerchantCancel, tao_vegetable.OrderStatusDelivery, tao_vegetable.OrderStatusDeliveryOver:
|
||||||
|
orderSku.UserMoney = refundSku.RefundFee
|
||||||
|
default:
|
||||||
|
orderSku.UserMoney = refundSku.MaxRefundFee
|
||||||
}
|
}
|
||||||
|
|
||||||
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
||||||
afsOrder.SkuUserMoney += orderSku.UserMoney
|
|
||||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||||
|
orderSkuCount += utils.Float64TwoInt64(*sku.BuySaleQuantity)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if refundSkuCount == orderSkuCount && refundData.RefundFee == *skuList.PayFee { // 全退
|
||||||
|
afsOrder.RefundType = model.AfsTypeFullRefund
|
||||||
|
} else {
|
||||||
|
afsOrder.RefundType = model.AfsTypePartRefund
|
||||||
|
}
|
||||||
|
afsOrder.SkuUserMoney += refundData.RefundFee
|
||||||
|
|
||||||
if afsOrder != nil {
|
if afsOrder != nil {
|
||||||
//直接就来一个新的售后单,并且还是售后完成的
|
//直接就来一个新的售后单,并且还是售后完成的
|
||||||
if orderStatus.Status == model.AfsOrderStatusFinished {
|
if orderStatus.Status == model.AfsOrderStatusFinished {
|
||||||
@@ -147,33 +191,51 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
|||||||
return tao_vegetable.CallBackResultInfo(err)
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cancelMsg := msg.(*tao_vegetable.UserCancelRefundApply)
|
||||||
|
for _, v := range afsOrder {
|
||||||
|
// 商家驳回,会发出用户撤销的回调通知,不管他
|
||||||
|
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == model.AfsOrderFlagRefuseUserRefund {
|
||||||
|
return tao_vegetable.CallBackResultInfo(nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户撤销未处理的售后订单
|
||||||
|
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == 0 {
|
||||||
|
// 下面处理用户撤销售后
|
||||||
if err = utils.CallFuncLogError(func() error {
|
if err = utils.CallFuncLogError(func() error {
|
||||||
_, err = dao.DeleteEntity(db, afsOrder[0], "VendorOrderID", "VendorID")
|
_, err = dao.DeleteEntity(db, v, "VendorOrderID", "VendorID")
|
||||||
return err
|
return err
|
||||||
}, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", afsOrder[0].AfsOrderID); err != nil {
|
}, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", v.AfsOrderID); err != nil {
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除售后商品
|
// 删除售后商品
|
||||||
if err = utils.CallFuncLogError(func() error {
|
if err = utils.CallFuncLogError(func() error {
|
||||||
_, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{
|
_, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{
|
||||||
VendorOrderID: afsOrder[0].VendorOrderID,
|
VendorOrderID: v.VendorOrderID,
|
||||||
VendorID: afsOrder[0].VendorID,
|
VendorID: v.VendorID,
|
||||||
IsAfsOrder: 1,
|
IsAfsOrder: 1,
|
||||||
}, "VendorOrderID", "VendorID", "IsAfsOrder")
|
}, "VendorOrderID", "VendorID", "IsAfsOrder")
|
||||||
return err
|
return err
|
||||||
}, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", afsOrder[0].AfsOrderID); err != nil {
|
}, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", v.AfsOrderID); err != nil {
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
}
|
}
|
||||||
// 订单更改为待配送
|
}
|
||||||
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable)
|
}
|
||||||
goodsOrder.Status = model.OrderStatusFinishedPickup
|
|
||||||
goodsOrder.VendorStatus = status
|
|
||||||
dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil {
|
if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil {
|
||||||
if err == nil && status == tao_vegetable.OrderStatusRefundSuccess {
|
skuList, _ := dao.GetSimpleOrderSkus(db, orderStatus.RefVendorOrderID, nil)
|
||||||
|
totalSkuCount := 0
|
||||||
|
for _, v := range skuList {
|
||||||
|
totalSkuCount += v.Count
|
||||||
|
}
|
||||||
|
|
||||||
|
financialSku, _ := dao.GetOrderRefundSkuList(db, []string{orderStatus.RefVendorOrderID})
|
||||||
|
refundSkuCount := 0
|
||||||
|
for _, v := range financialSku {
|
||||||
|
refundSkuCount += v.Count
|
||||||
|
}
|
||||||
|
if err == nil && status == tao_vegetable.OrderStatusRefundSuccess && totalSkuCount == refundSkuCount {
|
||||||
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, orderStatus.VendorID)
|
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, orderStatus.VendorID)
|
||||||
goodsOrder.Status = model.OrderStatusCanceled
|
goodsOrder.Status = model.OrderStatusCanceled
|
||||||
goodsOrder.VendorStatus = orderStatus.VendorStatus
|
goodsOrder.VendorStatus = orderStatus.VendorStatus
|
||||||
@@ -181,6 +243,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
globals.SugarLogger.Debugf("=============errr : %v", err)
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,21 +255,29 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{})
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch status {
|
switch status {
|
||||||
case tao_vegetable.OrderStatusApplyAfs:
|
case tao_vegetable.OrderStatusApplyAfs: // 用户申请售后
|
||||||
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
|
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
|
||||||
orderStatus.RefVendorOrderID = refundData.OutOrderId
|
orderStatus.RefVendorOrderID = refundData.OutOrderId
|
||||||
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusApplyAfs, "用户申请取消")
|
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusApplyAfs, "用户申请取消")
|
||||||
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusApplyAfs)
|
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusApplyAfs)
|
||||||
orderStatus.StatusTime = time.Now()
|
orderStatus.StatusTime = time.Now()
|
||||||
orderStatus.Remark = refundData.Remarks
|
orderStatus.Remark = refundData.Remarks
|
||||||
orderStatus.VendorOrderID = refundData.BizRefundId
|
orderStatus.VendorOrderID = refundData.RefundId
|
||||||
case tao_vegetable.OrderStatusCancelAfs:
|
order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable)
|
||||||
|
if order != nil {
|
||||||
|
orderStatus.RefVendorOrderID = order.VendorOrderID
|
||||||
|
}
|
||||||
|
case tao_vegetable.OrderStatusCancelAfs: // 用户取消售后
|
||||||
refundData := msg.(*tao_vegetable.UserCancelRefundApply)
|
refundData := msg.(*tao_vegetable.UserCancelRefundApply)
|
||||||
orderStatus.RefVendorOrderID = refundData.OutOrderId
|
orderStatus.RefVendorOrderID = refundData.OutOrderId
|
||||||
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusCancelAfs, "用户取消售后申请")
|
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusCancelAfs, "用户取消售后申请")
|
||||||
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusCancelAfs)
|
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusCancelAfs)
|
||||||
orderStatus.StatusTime = time.Now()
|
orderStatus.StatusTime = time.Now()
|
||||||
orderStatus.VendorOrderID = refundData.BizRefundId
|
orderStatus.VendorOrderID = refundData.RefundId
|
||||||
|
order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable)
|
||||||
|
if order != nil {
|
||||||
|
orderStatus.RefVendorOrderID = order.VendorOrderID
|
||||||
|
}
|
||||||
//case tao_vegetable.OrderStatusOnSaleCancel:
|
//case tao_vegetable.OrderStatusOnSaleCancel:
|
||||||
// refundData := msg.(*tao_vegetable.OnSaleCancel)
|
// refundData := msg.(*tao_vegetable.OnSaleCancel)
|
||||||
// orderStatus.RefVendorOrderID = utils.Int64ToStr(refundData.BizOrderId)
|
// orderStatus.RefVendorOrderID = utils.Int64ToStr(refundData.BizOrderId)
|
||||||
@@ -214,13 +285,15 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{})
|
|||||||
// orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusOnSaleCancel)
|
// orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusOnSaleCancel)
|
||||||
// orderStatus.StatusTime = utils.Str2Time(refundData.Timestamp)
|
// orderStatus.StatusTime = utils.Str2Time(refundData.Timestamp)
|
||||||
// orderStatus.VendorOrderID = refundData.IdempotentId
|
// orderStatus.VendorOrderID = refundData.IdempotentId
|
||||||
case tao_vegetable.OrderStatusRefundSuccess:
|
case tao_vegetable.OrderStatusRefundSuccess: // 售后成功
|
||||||
refundData := msg.(*tao_vegetable.RefundOrderFinish)
|
refundData := msg.(*tao_vegetable.RefundOrderFinish)
|
||||||
orderStatus.RefVendorOrderID = refundData.OutMainRefundId
|
afsOrder, _ := partner.CurOrderManager.LoadAfsOrder(refundData.OutMainRefundId, model.VendorIDTaoVegetable)
|
||||||
|
orderStatus.RefVendorOrderID = afsOrder.VendorOrderID
|
||||||
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售后退款成功")
|
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售后退款成功")
|
||||||
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
|
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
|
||||||
orderStatus.StatusTime = time.Now()
|
orderStatus.StatusTime = time.Now()
|
||||||
orderStatus.VendorOrderID = refundData.BizSubRefundId
|
orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId)
|
||||||
|
orderStatus.VendorOrderID = refundData.OutMainRefundId
|
||||||
}
|
}
|
||||||
|
|
||||||
if orderStatus.VendorOrderID == "" {
|
if orderStatus.VendorOrderID == "" {
|
||||||
@@ -239,32 +312,62 @@ func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(notifyType string) int {
|
|||||||
|
|
||||||
// 审核售后单申请
|
// 审核售后单申请
|
||||||
func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) {
|
func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
if approveType == partner.AfsApproveTypeRefused {
|
if approveType == partner.AfsApproveTypeRefused {
|
||||||
param := &request3156.AlibabaTclsAelophyRefundAgreeRequest{
|
|
||||||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
|
||||||
OutOrderId: utils.String2Pointer(order.VendorOrderID),
|
|
||||||
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
|
||||||
}
|
|
||||||
param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款"))
|
|
||||||
if reason != "" {
|
|
||||||
param.AuditMemo = utils.String2Pointer(*param.AuditMemo + fmt.Sprintf(",%s", reason))
|
|
||||||
}
|
|
||||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).AgreeUserCancel(param)
|
|
||||||
} else if approveType == partner.AfsApproveTypeRefusedToRefundMoney {
|
|
||||||
return errors.New("此平台暂时不支持")
|
|
||||||
} else {
|
|
||||||
param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{
|
param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{
|
||||||
RefundId: utils.String2Pointer(order.AfsOrderID),
|
RefundId: utils.String2Pointer(order.AfsOrderID),
|
||||||
RejectReason: utils.String2Pointer(reason),
|
RejectReason: utils.String2Pointer(reason),
|
||||||
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
||||||
}
|
}
|
||||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).DisAgreeUserCancel(param)
|
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).DisAgreeUserCancel(param)
|
||||||
if err != nil {
|
//if err == nil {
|
||||||
order.Status = model.AfsOrderStatusFailed
|
// order.Status = model.AfsOrderStatusFailed
|
||||||
order.VendorStatus = "老板拒绝"
|
// order.VendorStatus = "老板拒绝"
|
||||||
order.ReasonDesc += reason + ","
|
// order.ReasonDesc += "," + reason
|
||||||
dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus")
|
// dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus")
|
||||||
|
//}
|
||||||
|
} else if approveType == partner.AfsApproveTypeRefusedToRefundMoney {
|
||||||
|
return errors.New("此平台暂时不支持")
|
||||||
|
} else {
|
||||||
|
// 加载子订单号
|
||||||
|
orderDetail, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, model.VendorIDTaoVegetable)
|
||||||
|
// 加载退款商品
|
||||||
|
afsSkuOrder, _ := dao.GetOrderRefundSkuList(db, []string{order.VendorOrderID})
|
||||||
|
param := &request3156.AlibabaTclsAelophyRefundAgreeRequest{
|
||||||
|
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||||||
|
OutOrderId: utils.String2Pointer(orderDetail.VendorOrderID2),
|
||||||
|
RefundId: utils.String2Pointer(order.AfsOrderID),
|
||||||
|
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
||||||
}
|
}
|
||||||
|
// 加载购买商品
|
||||||
|
//sku, _ := dao.GetSimpleOrderSkus(db, order.VendorOrderID, nil)
|
||||||
|
//skuCount := 0
|
||||||
|
//for _, v := range sku {
|
||||||
|
// skuCount += v.Count
|
||||||
|
//}
|
||||||
|
|
||||||
|
//refundSkuCount := 0
|
||||||
|
subRefundList := make([]domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist, 0, len(afsSkuOrder))
|
||||||
|
for _, v := range afsSkuOrder {
|
||||||
|
subRefundList = append(subRefundList, domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist{
|
||||||
|
OutSubOrderId: utils.String2Pointer(v.VendorSubOrderID),
|
||||||
|
RefundFee: utils.Int64ToPointer(v.UserMoney),
|
||||||
|
})
|
||||||
|
//refundSkuCount += v.Count
|
||||||
|
}
|
||||||
|
|
||||||
|
// 全退退运费
|
||||||
|
//if skuCount == refundSkuCount {
|
||||||
|
// subRefundList[len(subRefundList)-1].RefundFee = utils.Int64ToPointer(*subRefundList[len(subRefundList)-1].RefundFee + orderDetail.BaseFreightMoney)
|
||||||
|
//}
|
||||||
|
|
||||||
|
param.SubRefundList = &subRefundList
|
||||||
|
param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款"))
|
||||||
|
if reason != "" {
|
||||||
|
param.AuditMemo = utils.String2Pointer(*param.AuditMemo + fmt.Sprintf(",%s", reason))
|
||||||
|
}
|
||||||
|
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).AgreeUserCancel(param)
|
||||||
|
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -277,7 +380,7 @@ func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord
|
|||||||
|
|
||||||
// 发起全款退款
|
// 发起全款退款
|
||||||
func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
||||||
return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDMTWM])
|
return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDTaoVegetable])
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发起部分退款
|
// 发起部分退款
|
||||||
@@ -295,7 +398,7 @@ func (c *PurchaseHandler) GetOrderAfsInfo(ctx *jxcontext.Context, vendorOrderID,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDMTWM); err == nil {
|
if order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDTaoVegetable); err == nil {
|
||||||
orderAfsInfo.AfsTotalShopMoney = order.TotalShopMoney + afsTotalShopMoney
|
orderAfsInfo.AfsTotalShopMoney = order.TotalShopMoney + afsTotalShopMoney
|
||||||
}
|
}
|
||||||
return orderAfsInfo, err
|
return orderAfsInfo, err
|
||||||
|
|||||||
@@ -31,12 +31,19 @@ func orderStatusChangeNotice(order *model.GoodsOrder, orderStatus string) (*requ
|
|||||||
if len(skuList) == model.NO {
|
if len(skuList) == model.NO {
|
||||||
return nil, fmt.Errorf("订单商品列表为零,请管理员检查")
|
return nil, fmt.Errorf("订单商品列表为零,请管理员检查")
|
||||||
}
|
}
|
||||||
for _, v := range skuList {
|
orderDetail, err := getAPI(order.VendorOrgCode, 0, "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
||||||
|
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||||||
|
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)),
|
||||||
|
}})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, v := range *orderDetail.SubOrderResponseList {
|
||||||
workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{
|
workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{
|
||||||
BizSubOrderId: utils.Int64ToPointer(utils.Str2Int64(v.VendorSubOrderID)),
|
BizSubOrderId: v.BizSubOrderId,
|
||||||
SkuCode: utils.String2Pointer(v.VendorSkuID),
|
SkuCode: v.SkuCode,
|
||||||
PickSaleQuantity: utils.String2Pointer(utils.Int2Str(v.Count)),
|
PickSaleQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuySaleQuantity)),
|
||||||
PickStockQuantity: utils.String2Pointer(utils.Int2Str(v.Count)),
|
PickStockQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuyStockQuantity)),
|
||||||
}
|
}
|
||||||
workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo)
|
workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo)
|
||||||
}
|
}
|
||||||
@@ -79,12 +86,24 @@ func OrderStatusChangeDelivery(order *model.GoodsOrder, orderStatus string) *req
|
|||||||
func getOrderCancelList(api *tao_vegetable.API, order *model.GoodsOrder) (*domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderResponseDto, error) {
|
func getOrderCancelList(api *tao_vegetable.API, order *model.GoodsOrder) (*domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderResponseDto, error) {
|
||||||
param := &request3156.AlibabaTclsAelophyRefundCsapplyrenderRequest{
|
param := &request3156.AlibabaTclsAelophyRefundCsapplyrenderRequest{
|
||||||
RefundCsApplyRenderDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderDto{
|
RefundCsApplyRenderDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderDto{
|
||||||
OutOrderId: utils.String2Pointer(order.VendorOrderID),
|
OutOrderId: utils.String2Pointer(order.VendorOrderID2),
|
||||||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||||||
OutSubOrderIds: nil,
|
OutSubOrderIds: nil,
|
||||||
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
skuList, err := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
outSubOrderIds := make([]string, 0, len(skuList))
|
||||||
|
for _, v := range skuList {
|
||||||
|
outSubOrderIds = append(outSubOrderIds, v.VendorSubOrderID)
|
||||||
|
}
|
||||||
|
param.RefundCsApplyRenderDTO.OutSubOrderIds = &outSubOrderIds
|
||||||
|
|
||||||
return api.PartialRefundReason(param)
|
return api.PartialRefundReason(param)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -440,7 +440,7 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDMTWM, storeStatus)
|
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDTaoVegetable, storeStatus)
|
||||||
}
|
}
|
||||||
response = mtwmapi.Err2CallbackResponse(err, "")
|
response = mtwmapi.Err2CallbackResponse(err, "")
|
||||||
// 操作日志(美团外卖)
|
// 操作日志(美团外卖)
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
|
|
||||||
api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)
|
api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)
|
||||||
if isCreate {
|
if isCreate {
|
||||||
failedList, err = createTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType)
|
failedList, err = createTaoVegetable(ctx, api, storeSkuList, vendorStoreID, storeID, syncType)
|
||||||
globals.SugarLogger.Debugf("创建淘鲜达商品异常:%v", err)
|
globals.SugarLogger.Debugf("创建淘鲜达商品异常:%v", err)
|
||||||
} else {
|
} else {
|
||||||
failedList, err = UpdateTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType)
|
failedList, err = UpdateTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType)
|
||||||
@@ -278,7 +278,7 @@ func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync
|
|||||||
}
|
}
|
||||||
|
|
||||||
// createTaoVegetable 创建淘鲜达商品
|
// createTaoVegetable 创建淘鲜达商品
|
||||||
func createTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
createPram := &request585.AlibabaWdkSkuAddRequest{}
|
createPram := &request585.AlibabaWdkSkuAddRequest{}
|
||||||
param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
|
param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
|
||||||
totalCount := len(storeSkuList)
|
totalCount := len(storeSkuList)
|
||||||
@@ -376,22 +376,30 @@ func createTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync
|
|||||||
createPram.ParamList = ¶m
|
createPram.ParamList = ¶m
|
||||||
result, err := api.AddStoreSku(createPram)
|
result, err := api.AddStoreSku(createPram)
|
||||||
globals.SugarLogger.Debugf("创建淘鲜达商品异常 result :%s", utils.Format4Output(result, false))
|
globals.SugarLogger.Debugf("创建淘鲜达商品异常 result :%s", utils.Format4Output(result, false))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
globals.SugarLogger.Debugf("创建淘鲜达商品异常:%s", err.Error())
|
globals.SugarLogger.Debugf("创建淘鲜达商品异常:%s", err.Error())
|
||||||
}
|
}
|
||||||
// 记录失败的同步数据
|
// 记录失败的同步数据
|
||||||
failedList, vendorSkuIdMap = SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType)
|
failedList2, vendorSkuIdMap2 := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType)
|
||||||
|
failedList = append(failedList, failedList2...)
|
||||||
|
for k, v := range vendorSkuIdMap2 {
|
||||||
|
vendorSkuIdMap[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
createPram.ParamList = nil
|
createPram.ParamList = nil
|
||||||
param = make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
|
param = make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("vendorSkuIdMap=====err := %v", utils.Format4Output(vendorSkuIdMap, false))
|
|
||||||
|
var successSku = make([]int, 0, len(vendorSkuIdMap))
|
||||||
for _, v := range storeSkuList {
|
for _, v := range storeSkuList {
|
||||||
if k, ok := vendorSkuIdMap[utils.Int2Str(v.SkuID)]; ok {
|
if k, ok := vendorSkuIdMap[utils.Int2Str(v.SkuID)]; ok {
|
||||||
v.VendorSkuID = k
|
v.VendorSkuID = k
|
||||||
|
successSku = append(successSku, v.SkuID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
failedListStock := updateStoreSkusStockByCreate(ctx, api, storeID, vendorStoreID, successSku)
|
||||||
|
failedList = append(failedList, failedListStock...)
|
||||||
globals.SugarLogger.Debugf("storeSkuList=====err := %s", utils.Format4Output(storeSkuList, false))
|
globals.SugarLogger.Debugf("storeSkuList=====err := %s", utils.Format4Output(storeSkuList, false))
|
||||||
|
|
||||||
globals.SugarLogger.Debugf("createTaoVegetable=====err := %v", err)
|
globals.SugarLogger.Debugf("createTaoVegetable=====err := %v", err)
|
||||||
@@ -543,6 +551,41 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
|
|||||||
return failedList, err
|
return failedList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// updateStoreSkusStockByCreate 创建时更新库存数量
|
||||||
|
func updateStoreSkusStockByCreate(ctx *jxcontext.Context, api *tao_vegetable.API, storeID int, vendorStoreID string, storeSkuList []int) (failedList []*partner.StoreSkuInfoWithErr) {
|
||||||
|
param := request589.AlibabaWdkStockPublishRequest{}
|
||||||
|
batchStockPublishDto := &domain589.AlibabaWdkStockPublishBatchStockPublishDto{
|
||||||
|
UpdateType: utils.Int64ToPointer(tao_vegetable.UpdateTypeStoke),
|
||||||
|
BillNo: utils.String2Pointer(utils.Int64ToStr(time.Now().UnixNano())),
|
||||||
|
BillType: utils.Int64ToPointer(tao_vegetable.UpdateTypeStokeBillType),
|
||||||
|
PublishSource: utils.String2Pointer(vendorStoreID),
|
||||||
|
ShopCode: utils.String2Pointer(vendorStoreID),
|
||||||
|
Operator: utils.String2Pointer(ctx.GetUserName()),
|
||||||
|
StockPublishDtos: nil,
|
||||||
|
}
|
||||||
|
stockPublishDtos := make([]domain589.AlibabaWdkStockPublishStockPublishDto, 0, 0)
|
||||||
|
for index, v := range storeSkuList {
|
||||||
|
stockPublishDtos = append(stockPublishDtos, domain589.AlibabaWdkStockPublishStockPublishDto{
|
||||||
|
SkuCode: utils.String2Pointer(utils.Int2Str(v)),
|
||||||
|
Quantity: utils.String2Pointer("9999"),
|
||||||
|
OrderNo: utils.String2Pointer(fmt.Sprintf("%s_%d_%d", vendorStoreID, time.Now().UnixNano(), 84671)),
|
||||||
|
OrderType: utils.String2Pointer("10006800"), // 这个不太确定
|
||||||
|
})
|
||||||
|
if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || (index+1) == len(storeSkuList) {
|
||||||
|
batchStockPublishDto.StockPublishDtos = &stockPublishDtos
|
||||||
|
param.BatchStockPublishDto = batchStockPublishDto
|
||||||
|
if err := api.StoreSkuStock(¶m); err != nil {
|
||||||
|
failedList = append(failedList, putils.GetErrMsg2FailedSingleList(v, err, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "更新库存错误")...)
|
||||||
|
}
|
||||||
|
stockPublishDtos = make([]domain589.AlibabaWdkStockPublishStockPublishDto, 0, 0)
|
||||||
|
param.BatchStockPublishDto = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
globals.SugarLogger.Debugf("UpdateStoreSkusStock=====err := %v", failedList)
|
||||||
|
return failedList
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStoreSkusStock 操作更新库存数量
|
||||||
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)
|
api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)
|
||||||
|
|
||||||
|
|||||||
@@ -210,9 +210,6 @@ func (p *PurchaseHandler) getUploadImgPoiCode() (poiCode string) {
|
|||||||
|
|
||||||
// getAPI 包含门店token
|
// getAPI 包含门店token
|
||||||
func getAPI(appOrgCode string, storeID int, vendorStoreID string) (apiObj *tao_vegetable.API) {
|
func getAPI(appOrgCode string, storeID int, vendorStoreID string) (apiObj *tao_vegetable.API) {
|
||||||
if appOrgCode == "" {
|
|
||||||
globals.SugarLogger.Debugf("getAPI appOrgCode is empty")
|
|
||||||
}
|
|
||||||
if appOrgCode != "" {
|
if appOrgCode != "" {
|
||||||
apiObj = partner.CurAPIManager.GetAPI(model.VendorIDTaoVegetable, appOrgCode).(*tao_vegetable.API)
|
apiObj = partner.CurAPIManager.GetAPI(model.VendorIDTaoVegetable, appOrgCode).(*tao_vegetable.API)
|
||||||
} else if appOrgCode == "" && vendorStoreID != "" {
|
} else if appOrgCode == "" && vendorStoreID != "" {
|
||||||
|
|||||||
@@ -699,7 +699,7 @@ func (c *OrderController) ConfirmReceiveGoods() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Title 同意或拒绝用户取消订单申请
|
// @Title 同意或拒绝用户取消订单申请 (饿百)
|
||||||
// @Description 同意或拒绝用户取消订单申请
|
// @Description 同意或拒绝用户取消订单申请
|
||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"
|
||||||
// @Param vendorOrderID formData string true "订单ID"
|
// @Param vendorOrderID formData string true "订单ID"
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ func (c *TaoBaoVegetableController) OrderStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取body参数
|
// 获取body参数
|
||||||
order, err := api.TaoVegetableApi.ReaderOrderInfo(c.Ctx.Request)
|
order, body, err := api.TaoVegetableApi.ReaderOrderInfo(c.Ctx.Request)
|
||||||
globals.SugarLogger.Debugf("order_status ReaderOrderInfo:= %s", utils.Format4Output(order, false))
|
globals.SugarLogger.Debugf("order_status ReaderOrderInfo:= %s", utils.Format4Output(order, false))
|
||||||
globals.SugarLogger.Debugf("order_status ReaderOrderInfo:= %s", utils.Format4Output(order, false))
|
globals.SugarLogger.Debugf("order_status ReaderOrderInfo:= %s", utils.Format4Output(order, false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -99,21 +99,24 @@ func (c *TaoBaoVegetableController) OrderStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 验签
|
// 验签
|
||||||
sign := Sign(values, utils.Format4Output(order, false), api.TaoVegetableApi.GetAppSecret())
|
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||||
|
switch order.MerchantCode {
|
||||||
|
case "CSSJ": // 淘宝回调地址检测
|
||||||
if sign != values.Get("sign") {
|
if sign != values.Get("sign") {
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
} /*else {
|
} else {
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
}*/
|
}
|
||||||
|
default:
|
||||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusChange, utils.Int64ToStr(order.BizOrderId), order)
|
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusChange, utils.Int64ToStr(order.BizOrderId), order)
|
||||||
c.Data["json"] = callbackResponse
|
c.Data["json"] = callbackResponse
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ApplyCancelOrder 用户发起售后申请
|
// ApplyCancelOrder 用户发起售后申请
|
||||||
@@ -130,7 +133,7 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
afsOrder, err := api.TaoVegetableApi.UserApplyRefund(c.Ctx.Request)
|
afsOrder, body, err := api.TaoVegetableApi.UserApplyRefund(c.Ctx.Request)
|
||||||
globals.SugarLogger.Debugf("ApplyCancelOrder := %s", utils.Format4Output(afsOrder, false))
|
globals.SugarLogger.Debugf("ApplyCancelOrder := %s", utils.Format4Output(afsOrder, false))
|
||||||
globals.SugarLogger.Debugf("ApplyCancelOrder err := %s", utils.Format4Output(err, false))
|
globals.SugarLogger.Debugf("ApplyCancelOrder err := %s", utils.Format4Output(err, false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -141,8 +144,10 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 验签 FFF779F16365992BD721C9C1A027F03C
|
// 验签 FFF779F16365992BD721C9C1A027F03C
|
||||||
sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret())
|
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||||
if sign != values.Get("sign") { // 76626F983F0F7E4A159AD64F9B13B332
|
switch afsOrder.MerchantCode {
|
||||||
|
case "CSSJ":
|
||||||
|
if sign != values.Get("sign") { // E8C3B7D19ECCB6618CB0F2C30BB086EC
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
@@ -151,11 +156,13 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() {
|
|||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusApplyAfs, afsOrder.OutOrderId, afsOrder)
|
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusApplyAfs, afsOrder.OutOrderId, afsOrder)
|
||||||
|
globals.SugarLogger.Debugf("callbackResponse response : %s", utils.Format4Output(callbackResponse, false))
|
||||||
c.Data["json"] = callbackResponse
|
c.Data["json"] = callbackResponse
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// UserCancelRefund 用户取消售后
|
// UserCancelRefund 用户取消售后
|
||||||
@@ -172,7 +179,7 @@ func (c *TaoBaoVegetableController) UserCancelRefund() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
afsOrder, err := api.TaoVegetableApi.UserCancelRefundApply(c.Ctx.Request)
|
afsOrder, body, err := api.TaoVegetableApi.UserCancelRefundApply(c.Ctx.Request)
|
||||||
globals.SugarLogger.Debugf("UserCancelRefund := %s", utils.Format4Output(afsOrder, false))
|
globals.SugarLogger.Debugf("UserCancelRefund := %s", utils.Format4Output(afsOrder, false))
|
||||||
globals.SugarLogger.Debugf("UserCancelRefund err := %s", utils.Format4Output(err, false))
|
globals.SugarLogger.Debugf("UserCancelRefund err := %s", utils.Format4Output(err, false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -183,21 +190,25 @@ func (c *TaoBaoVegetableController) UserCancelRefund() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 验签
|
// 验签
|
||||||
sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret())
|
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||||
|
switch afsOrder.MerchantCode {
|
||||||
|
case "CSSJ":
|
||||||
if sign != values.Get("sign") {
|
if sign != values.Get("sign") {
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
} /*else {
|
} else {
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
}*/
|
}
|
||||||
|
default:
|
||||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusCancelAfs, afsOrder.OutOrderId, afsOrder)
|
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusCancelAfs, afsOrder.OutOrderId, afsOrder)
|
||||||
c.Data["json"] = callbackResponse
|
c.Data["json"] = callbackResponse
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// CancelOnSaleRefundOrder 用户售中取消(走订单取消流程)
|
// CancelOnSaleRefundOrder 用户售中取消(走订单取消流程)
|
||||||
@@ -214,7 +225,7 @@ func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
afsOrder, err := api.TaoVegetableApi.OnSaleRefundOrder(c.Ctx.Request)
|
afsOrder, body, err := api.TaoVegetableApi.OnSaleRefundOrder(c.Ctx.Request)
|
||||||
globals.SugarLogger.Debugf("CancelOnSaleRefundOrder := %s", utils.Format4Output(afsOrder, false))
|
globals.SugarLogger.Debugf("CancelOnSaleRefundOrder := %s", utils.Format4Output(afsOrder, false))
|
||||||
globals.SugarLogger.Debugf("CancelOnSaleRefundOrder err := %s", utils.Format4Output(err, false))
|
globals.SugarLogger.Debugf("CancelOnSaleRefundOrder err := %s", utils.Format4Output(err, false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -225,21 +236,24 @@ func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 验签
|
// 验签
|
||||||
sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret())
|
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||||
|
switch afsOrder.PartCancelRequest.MerchantCode {
|
||||||
|
case "CSSJ":
|
||||||
if sign != values.Get("sign") {
|
if sign != values.Get("sign") {
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
} /*else {
|
} else {
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
}*/
|
}
|
||||||
|
default:
|
||||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), afsOrder)
|
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), afsOrder)
|
||||||
c.Data["json"] = callbackResponse
|
c.Data["json"] = callbackResponse
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// RefundOrderSuccess 用户售后成功通知,只有退款成功了才会通知(商户拒绝退款,不会通知)
|
// RefundOrderSuccess 用户售后成功通知,只有退款成功了才会通知(商户拒绝退款,不会通知)
|
||||||
@@ -256,7 +270,7 @@ func (c *TaoBaoVegetableController) RefundOrderSuccess() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
refundSuccess, err := api.TaoVegetableApi.RefundOrderFinish(c.Ctx.Request)
|
refundSuccess, body, err := api.TaoVegetableApi.RefundOrderFinish(c.Ctx.Request)
|
||||||
globals.SugarLogger.Debugf("RefundOrderSuccess := %s", utils.Format4Output(refundSuccess, false))
|
globals.SugarLogger.Debugf("RefundOrderSuccess := %s", utils.Format4Output(refundSuccess, false))
|
||||||
globals.SugarLogger.Debugf("RefundOrderSuccess err := %s", utils.Format4Output(err, false))
|
globals.SugarLogger.Debugf("RefundOrderSuccess err := %s", utils.Format4Output(err, false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -266,21 +280,24 @@ func (c *TaoBaoVegetableController) RefundOrderSuccess() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 验签
|
// 验签
|
||||||
sign := Sign(values, utils.Format4Output(refundSuccess, false), api.TaoVegetableApi.GetAppSecret())
|
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||||
|
switch refundSuccess.MerchantCode {
|
||||||
|
case "CSSJ":
|
||||||
if sign != values.Get("sign") {
|
if sign != values.Get("sign") {
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
} /*else {
|
} else {
|
||||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
}*/
|
}
|
||||||
|
default:
|
||||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutSubOrderId, refundSuccess)
|
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutMainRefundId, refundSuccess)
|
||||||
c.Data["json"] = callbackResponse
|
c.Data["json"] = callbackResponse
|
||||||
c.ServeJSON()
|
c.ServeJSON()
|
||||||
return
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Sign(param url.Values, data, secret string) string {
|
func Sign(param url.Values, data, secret string) string {
|
||||||
@@ -293,10 +310,11 @@ func Sign(param url.Values, data, secret string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sort.Strings(publicParam)
|
sort.Strings(publicParam)
|
||||||
resultParam := strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(data, "\n", ""), "\t", ""), " ", "")
|
resultParam := strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(data, "\n", ""), "\t", ""), " ", ""), "\r", "")
|
||||||
if strings.Contains(resultParam, `\u0026`) {
|
if strings.Contains(resultParam, `\u0026`) {
|
||||||
resultParam = strings.ReplaceAll(resultParam, `\u0026`, "&")
|
resultParam = strings.ReplaceAll(resultParam, `\u0026`, "&")
|
||||||
}
|
}
|
||||||
cc := secret + strings.Join(publicParam, "") + resultParam + secret
|
cc := secret + strings.Join(publicParam, "") + resultParam + secret
|
||||||
|
|
||||||
return fmt.Sprintf("%X", md5.Sum([]byte(cc)))
|
return fmt.Sprintf("%X", md5.Sum([]byte(cc)))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user