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"
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||
"math"
|
||||
"strings"
|
||||
"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) {
|
||||
// 有些平台(比如美团外卖),在新订单事件没有成功返回,但在重发订单消息前,订单状态转换,则不会再重发新订单事件,特殊处理一下
|
||||
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()
|
||||
txDB, _ := dao.Begin(db)
|
||||
defer func() {
|
||||
@@ -182,6 +170,28 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m
|
||||
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)
|
||||
if err == nil {
|
||||
dao.Commit(db, txDB)
|
||||
|
||||
@@ -411,8 +411,9 @@ func (c *OrderManager) CreateAfsOrderFromOrder(vendorOrderID string, vendorID in
|
||||
|
||||
for _, sku := range order.Skus {
|
||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||
VendorID: sku.VendorID,
|
||||
VendorOrderID: sku.VendorOrderID,
|
||||
VendorID: sku.VendorID,
|
||||
VendorOrderID: sku.VendorOrderID,
|
||||
VendorSubOrderID: sku.VendorSubOrderID,
|
||||
// OrderFinancialID: sku.VendorOrderID,
|
||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||
VendorStoreID: afsOrder.VendorStoreID,
|
||||
|
||||
@@ -698,7 +698,13 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
||||
// 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,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
step := batchItemList[0].(int)
|
||||
|
||||
@@ -2,7 +2,6 @@ package dao
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"time"
|
||||
@@ -1156,8 +1155,6 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
|
||||
sqlParams = append(sqlParams, pageSize, offset)
|
||||
txDB, _ := Begin(db)
|
||||
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 {
|
||||
totalCount = GetLastTotalRowCount2(db, txDB)
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ type AfsOrder struct {
|
||||
ReasonImgList string `orm:"size(1024)" json:"reasonImgList"` // 售后描述图片
|
||||
AppealType int8 `json:"appealType"` // 售后方式(本地)
|
||||
VendorAppealType string `orm:"size(255)" json:"vendorAppealType"` // 原始售后方式(第三方平台)
|
||||
Flag int `json:"flag"`
|
||||
Flag int `json:"flag"` // 0 未操作/1同意/3驳回
|
||||
RefundType int8 `json:"refundType"`
|
||||
RefuseReason string `orm:"size(1024)" json:"refuseReason"`
|
||||
|
||||
@@ -119,10 +119,11 @@ func (o *AfsOrder) TableUnique() [][]string {
|
||||
type OrderSkuFinancial struct {
|
||||
ModelIDCUL
|
||||
|
||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"` // 平台id
|
||||
VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` // 关联原始订单ID
|
||||
AfsOrderID string `orm:"column(afs_order_id);size(48)" json:"afsOrderID"` // 售后单ID
|
||||
IsAfsOrder int8 `json:"isAfsOrder"` // 0--正向单, 1--售后单
|
||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"` // 平台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
|
||||
IsAfsOrder int8 `json:"isAfsOrder"` // 0--正向单, 1--售后单
|
||||
|
||||
// ConfirmTime time.Time `orm:"type(datetime)" json:"confirmTime"` // 订单生成/完成时间
|
||||
VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"` // 外部系统里记录的storeid
|
||||
|
||||
@@ -88,9 +88,10 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
|
||||
}
|
||||
for _, sku := range orderFinancial.Skus {
|
||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||
VendorID: sku.VendorID,
|
||||
VendorOrderID: sku.VendorOrderID,
|
||||
AfsOrderID: sku.VendorOrderID,
|
||||
VendorID: sku.VendorID,
|
||||
VendorOrderID: sku.VendorOrderID,
|
||||
VendorSubOrderID: sku.VendorSubOrderID,
|
||||
AfsOrderID: sku.VendorOrderID,
|
||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||
VendorStoreID: afsOrder.VendorStoreID,
|
||||
StoreID: afsOrder.StoreID,
|
||||
@@ -141,9 +142,10 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interfac
|
||||
for _, refundInfo := range refundDetail {
|
||||
xMap := refundInfo.(map[string]interface{})
|
||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||
VendorID: model.VendorIDEBAI,
|
||||
AfsOrderID: afsOrder.AfsOrderID,
|
||||
VendorOrderID: afsOrder.VendorOrderID,
|
||||
VendorID: model.VendorIDEBAI,
|
||||
AfsOrderID: afsOrder.AfsOrderID,
|
||||
VendorOrderID: afsOrder.VendorOrderID,
|
||||
VendorSubOrderID: afsOrder.VendorOrderID2,
|
||||
// ConfirmTime: getTimeFromInterface(xMap["apply_time"]),
|
||||
VendorSkuID: utils.Interface2String(xMap["sku_id"]),
|
||||
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["custom_sku_id"]), 0)),
|
||||
|
||||
@@ -3,6 +3,7 @@ package tao_vegetable
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
"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/model"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
@@ -15,6 +16,7 @@ func OnCallbackMsg(orderStatus, orderId string, msg interface{}) (response *tao_
|
||||
if CurPurchaseHandler != nil {
|
||||
jxutils.CallMsgHandler(func() {
|
||||
response = CurPurchaseHandler.onOrderMsg(orderStatus, orderId, msg)
|
||||
globals.SugarLogger.Debugf("OnCallbackMsg response : %s", utils.Format4Output(response, false))
|
||||
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
|
||||
}
|
||||
return response
|
||||
|
||||
@@ -29,7 +29,7 @@ func OnFinancialMsg(msg *mtwmapi.CallbackMsg) (err error) {
|
||||
orderData := msg.FormData
|
||||
if orderData.Get("notify_type") == mtwmapi.NotifyTypeSuccess {
|
||||
afsOrderID := orderData.Get("order_id")
|
||||
orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrderID, model.VendorIDMTWM)
|
||||
orderFinancial, err := partner.CurOrderManager.LoadOrderFinancial(afsOrderID, model.VendorIDTaoVegetable)
|
||||
if err == nil {
|
||||
err = partner.CurOrderManager.SaveAfsOrderFinancialInfo(CurPurchaseHandler.OrderFinancialDetail2Refund(orderFinancial, orderData))
|
||||
} 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) {
|
||||
afsOrder = &model.AfsOrder{
|
||||
VendorID: model.VendorIDMTWM,
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
AfsOrderID: orderData.Get("refund_id"),
|
||||
VendorOrderID: orderData.Get("order_id"),
|
||||
AfsCreatedAt: utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp"))),
|
||||
@@ -63,8 +63,9 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
|
||||
}
|
||||
for _, sku := range orderFinancial.Skus {
|
||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||
VendorID: sku.VendorID,
|
||||
VendorOrderID: sku.VendorOrderID,
|
||||
VendorID: sku.VendorID,
|
||||
VendorOrderID: sku.VendorOrderID,
|
||||
VendorSubOrderID: sku.VendorSubOrderID,
|
||||
// OrderFinancialID: sku.VendorOrderID,
|
||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||
VendorStoreID: afsOrder.VendorStoreID,
|
||||
@@ -88,7 +89,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
|
||||
|
||||
func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrder *model.AfsOrder) {
|
||||
afsOrder = &model.AfsOrder{
|
||||
VendorID: model.VendorIDMTWM,
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
AfsOrderID: orderData.Get("order_id"),
|
||||
VendorOrderID: orderData.Get("order_id"),
|
||||
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)
|
||||
for _, xMap := range refundDetail {
|
||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||
VendorID: model.VendorIDMTWM,
|
||||
AfsOrderID: afsOrder.AfsOrderID,
|
||||
VendorOrderID: afsOrder.VendorOrderID,
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
AfsOrderID: afsOrder.AfsOrderID,
|
||||
VendorOrderID: afsOrder.VendorOrderID,
|
||||
VendorSubOrderID: afsOrder.VendorOrderID2,
|
||||
// ConfirmTime: afsOrder.AfsCreateAt,
|
||||
VendorSkuID: utils.Interface2String(xMap["app_food_code"]),
|
||||
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(xMap["sku_id"]), 0)),
|
||||
@@ -159,18 +161,19 @@ func (p *PurchaseHandler) OrderDetail2Financial(result *domain591.AlibabaAelophy
|
||||
// 订单
|
||||
for _, x := range *result.SubOrderResponseList {
|
||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||
VendorID: orderFinancial.VendorID,
|
||||
VendorOrderID: orderFinancial.VendorOrderID,
|
||||
VendorStoreID: *result.StoreId,
|
||||
StoreID: 0,
|
||||
JxStoreID: jxStoreID,
|
||||
VendorSkuID: *x.SkuCode,
|
||||
SkuID: utils.Str2Int(*x.SkuCode),
|
||||
Name: *x.SkuName,
|
||||
SalePrice: *x.Price,
|
||||
Count: utils.Float64TwoInt(*x.BuySaleQuantity),
|
||||
SkuBoxMoney: 0,
|
||||
IsAfsOrder: 0,
|
||||
VendorID: orderFinancial.VendorID,
|
||||
VendorOrderID: orderFinancial.VendorOrderID,
|
||||
VendorSubOrderID: orderFinancial.VendorOrderID2,
|
||||
VendorStoreID: *result.StoreId,
|
||||
StoreID: 0,
|
||||
JxStoreID: jxStoreID,
|
||||
VendorSkuID: *x.SkuCode,
|
||||
SkuID: utils.Str2Int(*x.SkuCode),
|
||||
Name: *x.SkuName,
|
||||
SalePrice: *x.Price,
|
||||
Count: utils.Float64TwoInt(*x.BuySaleQuantity),
|
||||
SkuBoxMoney: 0,
|
||||
IsAfsOrder: 0,
|
||||
}
|
||||
orderFinancial.Skus = append(orderFinancial.Skus, orderSkuFinancial)
|
||||
orderFinancial.SalePriceMoney += orderSkuFinancial.SalePrice * int64(orderSkuFinancial.Count)
|
||||
@@ -180,8 +183,9 @@ func (p *PurchaseHandler) OrderDetail2Financial(result *domain591.AlibabaAelophy
|
||||
if x.Activitys != nil {
|
||||
for _, v := range *x.Activitys {
|
||||
activity := &model.OrderDiscountFinancial{
|
||||
VendorID: orderFinancial.VendorID,
|
||||
VendorOrderID: orderFinancial.VendorOrderID,
|
||||
VendorID: orderFinancial.VendorID,
|
||||
VendorOrderID: orderFinancial.VendorOrderID,
|
||||
VendorOrderID2: orderFinancial.VendorOrderID2,
|
||||
}
|
||||
if v.ChannelActivityId != nil {
|
||||
activity.VendorActivityID = *v.ChannelActivityId
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
"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"
|
||||
@@ -55,8 +54,8 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
||||
StoreId: utils.String2Pointer(vendorStoreID),
|
||||
BizOrderId: utils.Int64ToPointer(vendorOrderID),
|
||||
}}
|
||||
|
||||
orderDetail, err := getAPI(vendorOrgCode, 0, vendorStoreID).QueryOrderDetail(requestParam)
|
||||
api := getAPI(vendorOrgCode, 0, vendorStoreID)
|
||||
orderDetail, err := api.QueryOrderDetail(requestParam)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -65,6 +64,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
||||
VendorOrderID: utils.Int64ToStr(vendorOrderID),
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
VendorStoreID: vendorStoreID,
|
||||
VendorOrderID2: *orderDetail.OutOrderId,
|
||||
StoreID: utils.Str2Int(*orderDetail.StoreId),
|
||||
JxStoreID: utils.Str2Int(*orderDetail.StoreId),
|
||||
CoordinateType: model.CoordinateTypeMars,
|
||||
@@ -79,7 +79,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
||||
InvoiceTitle: "",
|
||||
InvoiceTaxerID: "",
|
||||
InvoiceEmail: "",
|
||||
VendorOrgCode: vendorOrgCode,
|
||||
VendorOrgCode: api.GetVendorOrgCode(),
|
||||
UserID: *orderDetail.OpenUid,
|
||||
}
|
||||
|
||||
@@ -104,6 +104,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
||||
for _, extra := range *orderDetail.SubOrderResponseList {
|
||||
sku := &model.OrderSku{
|
||||
VendorOrderID: order.VendorOrderID,
|
||||
VendorSubOrderID: *extra.OutSubOrderId,
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
StoreSubID: 0,
|
||||
StoreSubName: "",
|
||||
@@ -122,7 +123,6 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
||||
OrderCreatedAt: order.OrderCreatedAt,
|
||||
IsVendorAct: 0,
|
||||
Upc: *extra.Barcode,
|
||||
VendorSubOrderID: utils.Int64ToStr(*extra.BizSubOrderId),
|
||||
}
|
||||
|
||||
activityId := make([]int64, 0)
|
||||
@@ -333,22 +333,19 @@ func (c *PurchaseHandler) onOrderMsg(orderStatus, orderId string, orderCallback
|
||||
msg.OrderStatus = tao_vegetable.OrderStatusOnSaleCancel
|
||||
}
|
||||
status := c.callbackOrderMsg2Status(msg)
|
||||
if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 {
|
||||
return nil
|
||||
}
|
||||
// 校验重复消息
|
||||
if partner.CurOrderManager.GetStatusDuplicatedCount(status) > 0 {
|
||||
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)
|
||||
if err = err2; err == nil {
|
||||
err = partner.CurOrderManager.OnOrderNew(order, status)
|
||||
if err == nil {
|
||||
utils.CallFuncAsync(func() {
|
||||
if msg.OrderStatus == mtwmapi.MsgTypeNewOrder {
|
||||
if msg.OrderStatus == tao_vegetable.OrderStatusPayFinsh {
|
||||
c.OnOrderDetail(orderMap, partner.CreatedPeration)
|
||||
} else {
|
||||
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 部分发货
|
||||
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{
|
||||
StoreId: utils.String2Pointer(msg.StoreId),
|
||||
BizOrderId: utils.Int64ToPointer(msg.BizOrderId),
|
||||
@@ -439,6 +436,9 @@ func (c *PurchaseHandler) callbackOrderMsg2Status(msg *tao_vegetable.CallbackOrd
|
||||
case tao_vegetable.OrderStatusOnSaleCancel:
|
||||
orderStatus.Status = model.OrderStatusCanceled
|
||||
orderStatus.Remark = "用户售中取消"
|
||||
case tao_vegetable.OrderStatusSuccess: // 送达
|
||||
orderStatus.Status = model.OrderStatusFinished
|
||||
orderStatus.Remark = "订单送达"
|
||||
}
|
||||
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) {
|
||||
|
||||
db := dao.GetDB()
|
||||
afsOrder, err := partner.CurOrderManager.LoadAfsOrder(order.VendorOrderID, order.VendorID)
|
||||
if err != nil {
|
||||
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(order.VendorOrderID),
|
||||
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.GetSaleStoreIDFromOrder(order), "").AgreeUserCancel(param)
|
||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(afsOrder), order.VendorStoreID).AgreeUserCancel(param)
|
||||
} else {
|
||||
afsOrder, err := partner.CurOrderManager.LoadAfsOrder(order.VendorOrderID, order.VendorID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{
|
||||
RefundId: utils.String2Pointer(afsOrder.AfsOrderID),
|
||||
RejectReason: utils.String2Pointer(reason),
|
||||
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 {
|
||||
afsOrder.Status = model.AfsOrderStatusFailed
|
||||
afsOrder.VendorStatus = "老板拒绝"
|
||||
afsOrder.ReasonDesc += reason + ","
|
||||
afsOrder.ReasonDesc += "," + reason
|
||||
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{
|
||||
RefundCsApplyDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyRefundCsApplyDto{
|
||||
ReasonId: utils.Int64ToPointer(1111),
|
||||
OutOrderId: utils.String2Pointer(order.VendorOrderID),
|
||||
ReasonId: reasonId[0].ReasonId,
|
||||
OutOrderId: utils.String2Pointer(order.VendorOrderID2),
|
||||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||||
RequestId: utils.String2Pointer(fmt.Sprintf("%s%d", order.VendorStoreID, time.Now().UnixNano())),
|
||||
OutSubOrderIds: &outSubOrderIds,
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"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"
|
||||
domain591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/domain"
|
||||
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 {
|
||||
if orderStatus == tao_vegetable.OrderStatusApplyAfs || orderStatus == tao_vegetable.OrderStatusCancelAfs || orderStatus == tao_vegetable.OrderStatusRefundSuccess {
|
||||
order, _ := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDTaoVegetable)
|
||||
if order != nil {
|
||||
return true
|
||||
switch orderStatus {
|
||||
case tao_vegetable.OrderStatusApplyAfs, tao_vegetable.OrderStatusCancelAfs:
|
||||
order, _ := partner.CurOrderManager.LoadOrder2(orderId, model.VendorIDTaoVegetable)
|
||||
if order != nil {
|
||||
return true
|
||||
}
|
||||
case tao_vegetable.OrderStatusRefundSuccess:
|
||||
afsOrder, _ := partner.CurOrderManager.LoadAfsOrder(orderId, model.VendorIDTaoVegetable)
|
||||
if afsOrder != nil {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) OnAfsOrderMsg(orderId, status string, msg interface{}) (retVal *tao_vegetable.CallBackResult) {
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
retVal = c.onAfsOrderMsg(status, msg)
|
||||
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
|
||||
// 取消线程池执行代码,异步返回
|
||||
//jxutils.CallMsgHandlerAsync(func() {
|
||||
retVal = c.onAfsOrderMsg(status, msg)
|
||||
//}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
|
||||
return retVal
|
||||
}
|
||||
|
||||
@@ -63,6 +73,8 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
||||
if needCallNew {
|
||||
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
|
||||
var afsOrder *model.AfsOrder
|
||||
var api = getAPI("", 0, refundData.StoreId)
|
||||
|
||||
afsOrder = &model.AfsOrder{
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
AfsOrderID: orderStatus.VendorOrderID,
|
||||
@@ -77,8 +89,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
||||
ReasonType: 0,
|
||||
ReasonDesc: refundData.RefundReason,
|
||||
ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024),
|
||||
RefundType: model.AfsTypeFullRefund,
|
||||
VendorOrgCode: refundData.MerchantCode,
|
||||
VendorOrgCode: api.GetVendorOrgCode(),
|
||||
}
|
||||
|
||||
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))
|
||||
|
||||
taoAfsOrderDetail, err := getAPI(refundData.MerchantCode, 0, "").QueryAfsOrderDetail(&request591.AlibabaWdkOrderRefundGetRequest{
|
||||
BizOrderIds: &bizOrderIds,
|
||||
RefundIds: &refundIds,
|
||||
OrderFrom: nil,
|
||||
ShopId: nil,
|
||||
StoreId: &refundData.StoreId,
|
||||
})
|
||||
if err != nil {
|
||||
return tao_vegetable.CallBackResultInfo(err)
|
||||
}
|
||||
//taoAfsOrderDetail, err := getAPI(refundData.MerchantCode, 0, "").QueryAfsOrderDetail(&request591.AlibabaWdkOrderRefundGetRequest{
|
||||
// BizOrderIds: &bizOrderIds,
|
||||
// RefundIds: &refundIds,
|
||||
// OrderFrom: nil,
|
||||
// ShopId: nil,
|
||||
// StoreId: &refundData.StoreId,
|
||||
//})
|
||||
//if err != nil {
|
||||
// return tao_vegetable.CallBackResultInfo(err)
|
||||
//}
|
||||
//
|
||||
//taoAfsOrder := *taoAfsOrderDetail.Orders
|
||||
|
||||
taoAfsOrder := *taoAfsOrderDetail.Orders
|
||||
|
||||
afsOrder.FreightUserMoney = *taoAfsOrder[0].RefundPostFee
|
||||
afsOrder.AfsFreightMoney = *taoAfsOrder[0].RefundPostFee // 暂时未发现退货取件费用
|
||||
afsOrder.BoxMoney = 0 // 餐盒费
|
||||
afsOrder.TongchengFreightMoney = 0 // 同城配送费
|
||||
afsOrder.SkuBoxMoney = 0 // 商品包装费
|
||||
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
|
||||
afsOrder.FreightUserMoney = 0 // 订单运费
|
||||
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
|
||||
afsOrder.BoxMoney = 0 // 餐盒费
|
||||
afsOrder.TongchengFreightMoney = 0 // 同城配送费
|
||||
afsOrder.SkuBoxMoney = 0 // 商品包装费
|
||||
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
|
||||
|
||||
// 订单商品详细信息
|
||||
skuList, err := getAPI(refundData.MerchantCode, 0, "").QueryOrderDetail(&request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
||||
StoreId: utils.String2Pointer(refundData.StoreId),
|
||||
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(refundData.OutOrderId)),
|
||||
}})
|
||||
queryOrderDetailParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
||||
StoreId: utils.String2Pointer(refundData.StoreId),
|
||||
}}
|
||||
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 {
|
||||
return tao_vegetable.CallBackResultInfo(err)
|
||||
}
|
||||
for _, sku := range *skuList.SubOrderResponseList {
|
||||
orderSku := &model.OrderSkuFinancial{
|
||||
Count: utils.Float64TwoInt(*sku.BuySaleQuantity),
|
||||
VendorSkuID: *sku.SkuCode,
|
||||
SkuID: utils.Str2Int(*sku.SkuCode),
|
||||
Name: *sku.SkuName,
|
||||
UserMoney: *sku.OriginalFee - *sku.DiscountFee,
|
||||
PmSkuSubsidyMoney: *sku.DiscountPlatformFee, // 平台补贴商品
|
||||
}
|
||||
|
||||
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
||||
afsOrder.SkuUserMoney += orderSku.UserMoney
|
||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||
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{
|
||||
Count: utils.Float64TwoInt(*sku.BuySaleQuantity),
|
||||
VendorSkuID: *sku.SkuCode,
|
||||
SkuID: utils.Str2Int(*sku.SkuCode),
|
||||
Name: *sku.SkuName,
|
||||
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.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 orderStatus.Status == model.AfsOrderStatusFinished {
|
||||
@@ -147,33 +191,51 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
||||
return tao_vegetable.CallBackResultInfo(err)
|
||||
}
|
||||
|
||||
if err = utils.CallFuncLogError(func() error {
|
||||
_, err = dao.DeleteEntity(db, afsOrder[0], "VendorOrderID", "VendorID")
|
||||
return err
|
||||
}, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", afsOrder[0].AfsOrderID); err != nil {
|
||||
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 err = utils.CallFuncLogError(func() error {
|
||||
_, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{
|
||||
VendorOrderID: afsOrder[0].VendorOrderID,
|
||||
VendorID: afsOrder[0].VendorID,
|
||||
IsAfsOrder: 1,
|
||||
}, "VendorOrderID", "VendorID", "IsAfsOrder")
|
||||
return err
|
||||
}, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", afsOrder[0].AfsOrderID); err != nil {
|
||||
return tao_vegetable.CallBackResultInfo(err)
|
||||
// 用户撤销未处理的售后订单
|
||||
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == 0 {
|
||||
// 下面处理用户撤销售后
|
||||
if err = utils.CallFuncLogError(func() error {
|
||||
_, err = dao.DeleteEntity(db, v, "VendorOrderID", "VendorID")
|
||||
return err
|
||||
}, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", v.AfsOrderID); err != nil {
|
||||
return tao_vegetable.CallBackResultInfo(err)
|
||||
}
|
||||
|
||||
// 删除售后商品
|
||||
if err = utils.CallFuncLogError(func() error {
|
||||
_, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{
|
||||
VendorOrderID: v.VendorOrderID,
|
||||
VendorID: v.VendorID,
|
||||
IsAfsOrder: 1,
|
||||
}, "VendorOrderID", "VendorID", "IsAfsOrder")
|
||||
return err
|
||||
}, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", v.AfsOrderID); err != nil {
|
||||
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 == 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.Status = model.OrderStatusCanceled
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -192,35 +255,45 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{})
|
||||
}
|
||||
|
||||
switch status {
|
||||
case tao_vegetable.OrderStatusApplyAfs:
|
||||
case tao_vegetable.OrderStatusApplyAfs: // 用户申请售后
|
||||
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
|
||||
orderStatus.RefVendorOrderID = refundData.OutOrderId
|
||||
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusApplyAfs, "用户申请取消")
|
||||
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusApplyAfs)
|
||||
orderStatus.StatusTime = time.Now()
|
||||
orderStatus.Remark = refundData.Remarks
|
||||
orderStatus.VendorOrderID = refundData.BizRefundId
|
||||
case tao_vegetable.OrderStatusCancelAfs:
|
||||
orderStatus.VendorOrderID = refundData.RefundId
|
||||
order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable)
|
||||
if order != nil {
|
||||
orderStatus.RefVendorOrderID = order.VendorOrderID
|
||||
}
|
||||
case tao_vegetable.OrderStatusCancelAfs: // 用户取消售后
|
||||
refundData := msg.(*tao_vegetable.UserCancelRefundApply)
|
||||
orderStatus.RefVendorOrderID = refundData.OutOrderId
|
||||
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusCancelAfs, "用户取消售后申请")
|
||||
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusCancelAfs)
|
||||
orderStatus.StatusTime = time.Now()
|
||||
orderStatus.VendorOrderID = refundData.BizRefundId
|
||||
//case tao_vegetable.OrderStatusOnSaleCancel:
|
||||
orderStatus.VendorOrderID = refundData.RefundId
|
||||
order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable)
|
||||
if order != nil {
|
||||
orderStatus.RefVendorOrderID = order.VendorOrderID
|
||||
}
|
||||
//case tao_vegetable.OrderStatusOnSaleCancel:
|
||||
// refundData := msg.(*tao_vegetable.OnSaleCancel)
|
||||
// orderStatus.RefVendorOrderID = utils.Int64ToStr(refundData.BizOrderId)
|
||||
// orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusOnSaleCancel, "用户售中取消")
|
||||
// orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusOnSaleCancel)
|
||||
// orderStatus.StatusTime = utils.Str2Time(refundData.Timestamp)
|
||||
// orderStatus.VendorOrderID = refundData.IdempotentId
|
||||
case tao_vegetable.OrderStatusRefundSuccess:
|
||||
case tao_vegetable.OrderStatusRefundSuccess: // 售后成功
|
||||
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.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
|
||||
orderStatus.StatusTime = time.Now()
|
||||
orderStatus.VendorOrderID = refundData.BizSubRefundId
|
||||
orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId)
|
||||
orderStatus.VendorOrderID = refundData.OutMainRefundId
|
||||
}
|
||||
|
||||
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) {
|
||||
db := dao.GetDB()
|
||||
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{
|
||||
RefundId: utils.String2Pointer(order.AfsOrderID),
|
||||
RejectReason: utils.String2Pointer(reason),
|
||||
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
||||
}
|
||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).DisAgreeUserCancel(param)
|
||||
if err != nil {
|
||||
order.Status = model.AfsOrderStatusFailed
|
||||
order.VendorStatus = "老板拒绝"
|
||||
order.ReasonDesc += reason + ","
|
||||
dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus")
|
||||
//if err == nil {
|
||||
// order.Status = model.AfsOrderStatusFailed
|
||||
// order.VendorStatus = "老板拒绝"
|
||||
// order.ReasonDesc += "," + reason
|
||||
// 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
|
||||
}
|
||||
@@ -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) {
|
||||
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
|
||||
}
|
||||
return orderAfsInfo, err
|
||||
|
||||
@@ -31,12 +31,19 @@ func orderStatusChangeNotice(order *model.GoodsOrder, orderStatus string) (*requ
|
||||
if len(skuList) == model.NO {
|
||||
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{
|
||||
BizSubOrderId: utils.Int64ToPointer(utils.Str2Int64(v.VendorSubOrderID)),
|
||||
SkuCode: utils.String2Pointer(v.VendorSkuID),
|
||||
PickSaleQuantity: utils.String2Pointer(utils.Int2Str(v.Count)),
|
||||
PickStockQuantity: utils.String2Pointer(utils.Int2Str(v.Count)),
|
||||
BizSubOrderId: v.BizSubOrderId,
|
||||
SkuCode: v.SkuCode,
|
||||
PickSaleQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuySaleQuantity)),
|
||||
PickStockQuantity: utils.String2Pointer(utils.Float64ToStr(*v.BuyStockQuantity)),
|
||||
}
|
||||
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) {
|
||||
param := &request3156.AlibabaTclsAelophyRefundCsapplyrenderRequest{
|
||||
RefundCsApplyRenderDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderDto{
|
||||
OutOrderId: utils.String2Pointer(order.VendorOrderID),
|
||||
OutOrderId: utils.String2Pointer(order.VendorOrderID2),
|
||||
StoreId: utils.String2Pointer(order.VendorStoreID),
|
||||
OutSubOrderIds: nil,
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
@@ -440,7 +440,7 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDMTWM, storeStatus)
|
||||
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDTaoVegetable, storeStatus)
|
||||
}
|
||||
response = mtwmapi.Err2CallbackResponse(err, "")
|
||||
// 操作日志(美团外卖)
|
||||
|
||||
@@ -225,7 +225,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
||||
|
||||
api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)
|
||||
if isCreate {
|
||||
failedList, err = createTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType)
|
||||
failedList, err = createTaoVegetable(ctx, api, storeSkuList, vendorStoreID, storeID, syncType)
|
||||
globals.SugarLogger.Debugf("创建淘鲜达商品异常:%v", err)
|
||||
} else {
|
||||
failedList, err = UpdateTaoVegetable(api, storeSkuList, vendorStoreID, storeID, syncType)
|
||||
@@ -278,7 +278,7 @@ func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync
|
||||
}
|
||||
|
||||
// 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{}
|
||||
param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
|
||||
totalCount := len(storeSkuList)
|
||||
@@ -376,22 +376,30 @@ func createTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync
|
||||
createPram.ParamList = ¶m
|
||||
result, err := api.AddStoreSku(createPram)
|
||||
globals.SugarLogger.Debugf("创建淘鲜达商品异常 result :%s", utils.Format4Output(result, false))
|
||||
|
||||
if err != nil {
|
||||
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
|
||||
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 {
|
||||
if k, ok := vendorSkuIdMap[utils.Int2Str(v.SkuID)]; ok {
|
||||
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("createTaoVegetable=====err := %v", err)
|
||||
@@ -543,6 +551,41 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
|
||||
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) {
|
||||
api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)
|
||||
|
||||
|
||||
@@ -210,9 +210,6 @@ func (p *PurchaseHandler) getUploadImgPoiCode() (poiCode string) {
|
||||
|
||||
// getAPI 包含门店token
|
||||
func getAPI(appOrgCode string, storeID int, vendorStoreID string) (apiObj *tao_vegetable.API) {
|
||||
if appOrgCode == "" {
|
||||
globals.SugarLogger.Debugf("getAPI appOrgCode is empty")
|
||||
}
|
||||
if appOrgCode != "" {
|
||||
apiObj = partner.CurAPIManager.GetAPI(model.VendorIDTaoVegetable, appOrgCode).(*tao_vegetable.API)
|
||||
} else if appOrgCode == "" && vendorStoreID != "" {
|
||||
|
||||
@@ -699,7 +699,7 @@ func (c *OrderController) ConfirmReceiveGoods() {
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 同意或拒绝用户取消订单申请
|
||||
// @Title 同意或拒绝用户取消订单申请 (饿百)
|
||||
// @Description 同意或拒绝用户取消订单申请
|
||||
// @Param token header string true "认证token"
|
||||
// @Param vendorOrderID formData string true "订单ID"
|
||||
|
||||
@@ -89,7 +89,7 @@ func (c *TaoBaoVegetableController) OrderStatus() {
|
||||
}
|
||||
|
||||
// 获取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))
|
||||
if err != nil {
|
||||
@@ -99,21 +99,24 @@ func (c *TaoBaoVegetableController) OrderStatus() {
|
||||
}
|
||||
|
||||
// 验签
|
||||
sign := Sign(values, utils.Format4Output(order, false), api.TaoVegetableApi.GetAppSecret())
|
||||
if sign != values.Get("sign") {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||
switch order.MerchantCode {
|
||||
case "CSSJ": // 淘宝回调地址检测
|
||||
if sign != values.Get("sign") {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
c.ServeJSON()
|
||||
return
|
||||
} else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
default:
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusChange, utils.Int64ToStr(order.BizOrderId), order)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
} /*else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}*/
|
||||
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusChange, utils.Int64ToStr(order.BizOrderId), order)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// ApplyCancelOrder 用户发起售后申请
|
||||
@@ -130,7 +133,7 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() {
|
||||
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 err := %s", utils.Format4Output(err, false))
|
||||
if err != nil {
|
||||
@@ -141,21 +144,25 @@ func (c *TaoBaoVegetableController) ApplyCancelOrder() {
|
||||
}
|
||||
|
||||
// 验签 FFF779F16365992BD721C9C1A027F03C
|
||||
sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret())
|
||||
if sign != values.Get("sign") { // 76626F983F0F7E4A159AD64F9B13B332
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
c.ServeJSON()
|
||||
return
|
||||
} else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||
switch afsOrder.MerchantCode {
|
||||
case "CSSJ":
|
||||
if sign != values.Get("sign") { // E8C3B7D19ECCB6618CB0F2C30BB086EC
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
c.ServeJSON()
|
||||
return
|
||||
} else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
default:
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusApplyAfs, afsOrder.OutOrderId, afsOrder)
|
||||
globals.SugarLogger.Debugf("callbackResponse response : %s", utils.Format4Output(callbackResponse, false))
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusApplyAfs, afsOrder.OutOrderId, afsOrder)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
// UserCancelRefund 用户取消售后
|
||||
@@ -172,7 +179,7 @@ func (c *TaoBaoVegetableController) UserCancelRefund() {
|
||||
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 err := %s", utils.Format4Output(err, false))
|
||||
if err != nil {
|
||||
@@ -183,21 +190,25 @@ func (c *TaoBaoVegetableController) UserCancelRefund() {
|
||||
}
|
||||
|
||||
// 验签
|
||||
sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret())
|
||||
if sign != values.Get("sign") {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||
switch afsOrder.MerchantCode {
|
||||
case "CSSJ":
|
||||
if sign != values.Get("sign") {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
c.ServeJSON()
|
||||
return
|
||||
} else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
default:
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusCancelAfs, afsOrder.OutOrderId, afsOrder)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
} /*else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}*/
|
||||
}
|
||||
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusCancelAfs, afsOrder.OutOrderId, afsOrder)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
// CancelOnSaleRefundOrder 用户售中取消(走订单取消流程)
|
||||
@@ -214,7 +225,7 @@ func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() {
|
||||
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 err := %s", utils.Format4Output(err, false))
|
||||
if err != nil {
|
||||
@@ -225,21 +236,24 @@ func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() {
|
||||
}
|
||||
|
||||
// 验签
|
||||
sign := Sign(values, utils.Format4Output(afsOrder, false), api.TaoVegetableApi.GetAppSecret())
|
||||
if sign != values.Get("sign") {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||
switch afsOrder.PartCancelRequest.MerchantCode {
|
||||
case "CSSJ":
|
||||
if sign != values.Get("sign") {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
c.ServeJSON()
|
||||
return
|
||||
} else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
default:
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), afsOrder)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
} /*else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}*/
|
||||
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.PartCancelRequest.BizOrderId), afsOrder)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// RefundOrderSuccess 用户售后成功通知,只有退款成功了才会通知(商户拒绝退款,不会通知)
|
||||
@@ -256,7 +270,7 @@ func (c *TaoBaoVegetableController) RefundOrderSuccess() {
|
||||
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 err := %s", utils.Format4Output(err, false))
|
||||
if err != nil {
|
||||
@@ -266,21 +280,24 @@ func (c *TaoBaoVegetableController) RefundOrderSuccess() {
|
||||
return
|
||||
}
|
||||
// 验签
|
||||
sign := Sign(values, utils.Format4Output(refundSuccess, false), api.TaoVegetableApi.GetAppSecret())
|
||||
if sign != values.Get("sign") {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
sign := Sign(values, body, api.TaoVegetableApi.GetAppSecret())
|
||||
switch refundSuccess.MerchantCode {
|
||||
case "CSSJ":
|
||||
if sign != values.Get("sign") {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(fmt.Errorf("非法签名"))
|
||||
c.ServeJSON()
|
||||
return
|
||||
} else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
default:
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutMainRefundId, refundSuccess)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
} /*else {
|
||||
c.Data["json"] = tao_vegetable.CallBackResultSign(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}*/
|
||||
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutSubOrderId, refundSuccess)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
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`) {
|
||||
resultParam = strings.ReplaceAll(resultParam, `\u0026`, "&")
|
||||
}
|
||||
cc := secret + strings.Join(publicParam, "") + resultParam + secret
|
||||
|
||||
return fmt.Sprintf("%X", md5.Sum([]byte(cc)))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user