Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -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 != "" {
|
||||
|
||||
Reference in New Issue
Block a user