添加淘鲜达

This commit is contained in:
邹宗楠
2023-06-28 10:04:08 +08:00
parent 64e4339aeb
commit c0a97b4fad
51 changed files with 2109 additions and 2007 deletions

View File

@@ -53,3 +53,13 @@ func GetOrderIDFromMap(orderMap map[string]interface{}) string {
}
return ""
}
func GetAfsIDFromMap(orderMap map[string]interface{}) string {
if orderID := orderMap["refund_order_id"]; orderID != nil {
if tryOrderID, ok := orderID.(string); ok {
return tryOrderID
}
return utils.Int64ToStr(utils.MustInterface2Int64(orderID))
}
return ""
}

View File

@@ -115,7 +115,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interface{}) (afsOrder *model.AfsOrder) {
afsOrder = &model.AfsOrder{
VendorID: model.VendorIDEBAI,
AfsOrderID: GetOrderIDFromMap(orderData),
AfsOrderID: GetAfsIDFromMap(orderData),
VendorOrderID: GetOrderIDFromMap(orderData),
}
order, err := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID)

View File

@@ -72,8 +72,6 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, payType int,
err = api.TLpayAPI.CreateH5UnitorderOrder(param2)
} else {
result, err := api.TLpayAPI.CreateUnitorderOrder(param)
globals.SugarLogger.Debugf("===============result: %s", utils.Format4Output(result, false))
globals.SugarLogger.Debugf("===============result: %s", utils.Format4Output(err, false))
if err == nil {
var result2 tonglianpayapi.PayInfo
json.Unmarshal([]byte(result.PayInfo), &result2)

View File

@@ -93,12 +93,8 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
return order, result, err
}
func (p *PurchaseHandler) getOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) {
return getAPI(vendorOrgCode, 0, vendorStoreID).OrderStatusAndPsInfo(param)
}
func (p *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) {
return p.getOrderRider(vendorOrgCode, vendorStoreID, param)
return getAPI(vendorOrgCode, 0, vendorStoreID).OrderStatusAndPsInfo(param)
}
func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, err error) {
@@ -570,6 +566,7 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam
return err
}
// SelfDeliverDelivered 自配送订单送达
func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
if globals.EnableMtwmStoreWrite {
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderArrived(utils.Str2Int64(order.VendorOrderID))

View File

@@ -744,6 +744,7 @@ func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode strin
return cancelOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(model.SyncFlagDeletedMask, vendorStoreID, storeSkuList))
}
// UpdateStoreSkusSpecTag 更新限购
func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
var foodDataList = []map[string]interface{}{}
for _, v := range storeSkuList {

View File

@@ -1,4 +1,4 @@
package mtwm
package tao_vegetable
import (
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"

View File

@@ -1,73 +1,29 @@
package mtwm
package tao_vegetable
import (
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals"
"net/http"
"strings"
)
// 美团回调接口
func OnCallbackMsg(msg *mtwmapi.CallbackMsg, msgType string) (response *mtwmapi.CallbackResponse) {
// 获取平台门店id
//_, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), GetVendorStoreIDFromMsg(msg), model.VendorIDMTWM, GetVendorAppIdFromMsg(msg))
//if err != nil && strings.Contains(err.Error(), "no row found") {
// forwardOrderToGy(msg, msgType)
// return mtwmapi.SuccessResponse
//}
// OnCallbackMsg 淘宝回调接口
func OnCallbackMsg(orderStatus, orderId string, msg interface{}) (response *tao_vegetable.CallBackResult) {
if CurPurchaseHandler != nil {
if msg.Cmd == mtwmapi.MsgTypeStoreStatusChanged || msg.Cmd == mtwmapi.MsgTypeStoreAuditStatusChanged {
response = CurPurchaseHandler.onStoreStatusChanged(msg)
} else if msg.Cmd == mtwmapi.MsgTypePrivateNumberDowngrade {
response = CurPurchaseHandler.onNumberDowngrade(msg)
} else if msg.Cmd == mtwmapi.MsgTypeStoreBind {
// 门店授权发生变化 17,失去授权
vendorStoreID := msg.FormData.Get("app_poi_code")
storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreID, model.VendorIDMTWM, "")
_, err := netprinter.PrintStoreStatus(jxcontext.AdminCtx, storeDetail, model.VendorIDMTWM, -9)
response = mtwmapi.Err2CallbackResponse(err, "")
} else {
if orderID := GetOrderIDFromMsg(msg); orderID != "" {
jxutils.CallMsgHandler(func() {
switch msg.Cmd {
case mtwmapi.MsgTypeWaybillStatus:
response = CurPurchaseHandler.onWaybillMsg(msg)
default:
response = CurPurchaseHandler.onOrderMsg(msg)
}
}, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDMTWM))
}
/*if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
utils.CallFuncAsync(func() {
OnFinancialMsg(msg)
})
} */
}
jxutils.CallMsgHandler(func() {
response = CurPurchaseHandler.onOrderMsg(orderStatus, orderId, msg)
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
}
return response
}
func GetOrderIDFromMsg(msg *mtwmapi.CallbackMsg) string {
return msg.FormData.Get(mtwmapi.KeyOrderID)
}
func GetVendorStoreIDFromMsg(msg *mtwmapi.CallbackMsg) string {
return msg.FormData.Get(mtwmapi.KeyAppPoiCode)
}
func GetVendorAppIdFromMsg(msg *mtwmapi.CallbackMsg) string {
return msg.FormData.Get(mtwmapi.KeyAppID)
}
func forwardOrderToGy(msg *mtwmapi.CallbackMsg, msgType string) {
func forwardOrderToGy(msg *mtwmapi.CallbackMsg, orderStatus string) {
cl := http.Client{}
callbackUrl := GetMsgCallBackUrl(msgType, msg.AppID)
request, err := http.NewRequest(http.MethodPost, "http://callback-jxgy.jxc4.com/mtwm/"+callbackUrl, strings.NewReader(msg.FormData.Encode()))
callbackUrl := GetMsgCallBackUrl(orderStatus, msg.AppID)
request, err := http.NewRequest(http.MethodPost, "http://callback-jxgy.jxc4.com/taoBaoVegetable/"+callbackUrl, strings.NewReader(msg.FormData.Encode()))
if err != nil {
return
}
@@ -78,40 +34,14 @@ func forwardOrderToGy(msg *mtwmapi.CallbackMsg, msgType string) {
func GetMsgCallBackUrl(msgType, appId string) string {
interfaceUrl := ""
switch msgType {
case mtwmapi.MsgTypeWaybillStatus:
interfaceUrl = "/waybillStatus"
case mtwmapi.MsgTypeNewOrder:
interfaceUrl = "/newOrder"
case mtwmapi.MsgTypeOrderAccepted:
interfaceUrl = "/orderAccepted"
case mtwmapi.MsgTypeOrderFinished:
interfaceUrl = "/orderFinished"
case mtwmapi.MsgTypeOrderFinancial:
interfaceUrl = "/orderFinancial"
case mtwmapi.MsgTypeOrderCanceled:
interfaceUrl = "/orderCanceled"
case mtwmapi.MsgTypeUserUrgeOrder:
interfaceUrl = "/userUrgeOrder"
case mtwmapi.MsgTypePrivateNumberDowngrade:
interfaceUrl = "/numberDowngrade"
case mtwmapi.MsgTypeOrderModified:
interfaceUrl = "/orderModified"
case mtwmapi.MsgTypeOrderRefund:
interfaceUrl = "/orderRefund"
case mtwmapi.MsgTypeOrderPartialRefund:
interfaceUrl = "/orderPartialRefund"
case mtwmapi.MsgTypeOrderFinishedPickup:
interfaceUrl = "/orderFinishedPickup"
case mtwmapi.MsgTypeStoreStatusChanged:
interfaceUrl = "/storeStatusChanged"
case mtwmapi.MsgTypeStoreAuditStatusChanged:
interfaceUrl = "/storeAuditStatusChanged"
case mtwmapi.MsgTypeSkuDelete:
interfaceUrl = "/skuDelete"
case mtwmapi.MsgTypeStoreBind:
interfaceUrl = "/storeBind"
case tao_vegetable.OrderStatusApplyAfs:
interfaceUrl = "/applyCancelOrder "
case tao_vegetable.OrderStatusCancelAfs:
interfaceUrl = "/userCancelRefund"
case tao_vegetable.OrderStatusOnSaleCancel:
interfaceUrl = "/cancelOnSaleRefundOrder"
default:
globals.SugarLogger.Errorf("美团超市[app_id :=%s ,callbackUrl := %s ]回调推送到果园错误,回调地址不正确", appId, msgType)
globals.SugarLogger.Errorf("淘宝[app_id :=%s ,callbackUrl := %s ]回调推送到果园错误,回调地址不正确", appId, msgType)
}
return interfaceUrl
}

View File

@@ -1,9 +1,11 @@
package mtwm
package tao_vegetable
import (
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
"net/url"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
domain591 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability591/domain"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
@@ -131,17 +133,16 @@ func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData url.Values) (afsOrd
}
// 存储美团正向订单结账信息
func (p *PurchaseHandler) OnOrderDetail(result map[string]interface{}, operation string) (err error) {
func (p *PurchaseHandler) OnOrderDetail(result *domain591.AlibabaAelophyOrderGetOrderResponse, operation string) (err error) {
err = partner.CurOrderManager.SaveOrderFinancialInfo(p.OrderDetail2Financial(result), operation)
return err
}
func (p *PurchaseHandler) OrderDetail2Financial(result map[string]interface{}) (orderFinancial *model.OrderFinancial) {
func (p *PurchaseHandler) OrderDetail2Financial(result *domain591.AlibabaAelophyOrderGetOrderResponse) (orderFinancial *model.OrderFinancial) {
orderFinancial = &model.OrderFinancial{
VendorID: model.VendorIDMTWM,
VendorOrderID: utils.Int64ToStr(utils.MustInterface2Int64(result["order_id"])),
VendorID: model.VendorIDTaoVegetable,
VendorOrderID: utils.Int64ToStr(*result.BizOrderId),
}
// orderFinancial.DeliveryConfirmTime = utils.Str2TimeWithDefault(utils.Interface2String(result["order_completed_time"]), utils.DefaultTimeValue)
order, err := partner.CurOrderManager.LoadOrder(orderFinancial.VendorOrderID, orderFinancial.VendorID)
jxStoreID := 0
if err == nil {
@@ -154,92 +155,58 @@ func (p *PurchaseHandler) OrderDetail2Financial(result map[string]interface{}) (
} else {
err = nil
}
if result["package_bag_money"] != nil {
orderFinancial.BoxMoney = utils.MustInterface2Int64(result["package_bag_money"])
}
detail := result["detail"]
if detail != nil {
var data []map[string]interface{}
utils.UnmarshalUseNumber([]byte(utils.Interface2String(detail)), &data)
for _, x := range data {
orderSkuFinancial := &model.OrderSkuFinancial{
// 订单
for _, x := range *result.SubOrderResponseList {
orderSkuFinancial := &model.OrderSkuFinancial{
VendorID: orderFinancial.VendorID,
VendorOrderID: orderFinancial.VendorOrderID,
VendorStoreID: *result.StoreId,
StoreID: 0,
JxStoreID: jxStoreID,
VendorSkuID: utils.Int64ToStr(utils.MustInterface2Int64(x.SkuCode)),
SkuID: utils.Str2Int(*x.SkuCode),
Name: utils.Interface2String(x.SkuName),
SalePrice: *x.Price,
Count: utils.Str2Int(*x.BuySaleQuantity),
SkuBoxMoney: 0,
IsAfsOrder: 0,
}
orderFinancial.Skus = append(orderFinancial.Skus, orderSkuFinancial)
orderFinancial.SalePriceMoney += orderSkuFinancial.SalePrice * int64(orderSkuFinancial.Count)
orderFinancial.SkuBoxMoney += orderSkuFinancial.SkuBoxMoney
// 活动
for _, v := range *x.Activitys {
activity := &model.OrderDiscountFinancial{
VendorID: orderFinancial.VendorID,
VendorOrderID: orderFinancial.VendorOrderID,
// OrderFinancialID: orderFinancial.VendorOrderID,
// ConfirmTime: utils.Str2TimeWithDefault(utils.Interface2String(result["ctime"]), utils.DefaultTimeValue),
VendorStoreID: result["app_poi_code"].(string),
StoreID: 0,
JxStoreID: jxStoreID,
VendorSkuID: utils.Interface2String(x["sku_id"]),
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(x["sku_id"]), 0)),
Name: utils.Interface2String(x["food_name"]),
SalePrice: jxutils.StandardPrice2Int(utils.MustInterface2Float64(x["price"])),
Count: int(utils.MustInterface2Int64(x["quantity"])),
SkuBoxMoney: jxutils.StandardPrice2Int(utils.MustInterface2Float64(x["box_price"])) * jxutils.StandardPrice2Int(utils.MustInterface2Float64(x["box_num"])),
IsAfsOrder: 0,
}
orderFinancial.Skus = append(orderFinancial.Skus, orderSkuFinancial)
orderFinancial.SalePriceMoney += orderSkuFinancial.SalePrice * int64(orderSkuFinancial.Count)
orderFinancial.SkuBoxMoney += orderSkuFinancial.SkuBoxMoney
}
} else {
globals.SugarLogger.Warnf("mtwm OrderDetail2Financial, orderID:%s have no detail", orderFinancial.VendorOrderID)
}
extras := result["extras"]
if extras != nil {
var data []map[string]interface{}
utils.UnmarshalUseNumber([]byte(utils.Interface2String(extras)), &data)
for _, x := range data {
if x["rider_fee"] == nil {
activity := &model.OrderDiscountFinancial{
VendorID: orderFinancial.VendorID,
VendorOrderID: orderFinancial.VendorOrderID,
// ActivityName: utils.Interface2String(x["remark"]),
// ActivityMoney: jxutils.StandardPrice2Int(utils.MustInterface2Float64(x["reduce_fee"])),
// VendorActivityID: utils.Int64ToStr(utils.MustInterface2Int64(x["act_detail_id"])),
}
if x["act_detail_id"] != nil { // 容错处理
activity.VendorActivityID = utils.Int64ToStr(utils.MustInterface2Int64(x["act_detail_id"]))
orderFinancial.Discounts = append(orderFinancial.Discounts, activity)
}
// 通过活动Id去取京西活动补贴
// orderFinancial.JxSubsidyMoney +=
if v.ChannelActivityId != nil {
activity.VendorActivityID = *v.ChannelActivityId
activity.Type = tao_vegetable.ActivityTypeChannel
}
if v.BizActivityId != nil {
activity.VendorActivityID = *v.BizActivityId
activity.Type = tao_vegetable.ActivityTypeBiz
}
if v.MerchantActivityId != nil {
activity.VendorActivityID = *v.MerchantActivityId
activity.Type = tao_vegetable.ActivityTypeMerchant
}
orderFinancial.Discounts = append(orderFinancial.Discounts, activity)
}
}
poiReceiveDetail := result["poi_receive_detail"]
if poiReceiveDetail != nil {
var data map[string]interface{}
utils.UnmarshalUseNumber([]byte(utils.Interface2String(poiReceiveDetail)), &data)
orderFinancial.ReceivableFreight = utils.MustInterface2Int64(data["logisticsFee"])
orderFinancial.FreightMoney = utils.MustInterface2Int64(data["logisticsFee"])
orderFinancial.ActualPayMoney = utils.MustInterface2Int64(data["onlinePayment"])
orderFinancial.PmMoney = utils.MustInterface2Int64(data["foodShareFeeChargeByPoi"])
orderFinancial.ShopMoney = utils.MustInterface2Int64(data["wmPoiReceiveCent"])
for _, x := range data["actOrderChargeByMt"].([]interface{}) {
orderFinancial.TotalDiscountMoney += utils.MustInterface2Int64(x.(map[string]interface{})["moneyCent"])
orderFinancial.PmSubsidyMoney += utils.MustInterface2Int64(x.(map[string]interface{})["moneyCent"])
}
for _, x := range data["actOrderChargeByPoi"].([]interface{}) {
orderFinancial.TotalDiscountMoney += utils.MustInterface2Int64(x.(map[string]interface{})["moneyCent"])
}
} else {
globals.SugarLogger.Warnf("mtwm OrderDetail2Financial, orderID:%s have no poi_receive_detail", orderFinancial.VendorOrderID)
}
if utils.MustInterface2Int64(result["is_third_shipping"]) == SelfDeliveryCarrierNo { // is_third_shipping int 是否是第三方配送平台配送,0表否1表是
orderFinancial.SelfDeliveryDiscountMoney = orderFinancial.ReceivableFreight
orderFinancial.DistanceFreightMoney = 0
// 通过本地数据库去取是否转美团/达达,并计算运费
// wayBill, err := partner.CurOrderManager.LoadWaybill(orderFinancial.VendorOrderID, orderFinancial.VendorID)
// if err == nil {
// orderFinancial.JxFreightMoney = wayBill.DesiredFee
// }
}
// // 美团订单单独处理部分,美团正向订单接口推送时总结算金额没有计算公益捐款一分钱,是否在这里直接提前扣除?
// // 3/18之后的订单一直都不显示公益捐款金额而且结算现在结算到了3/18之后的订单没有的已经不计算了先注释
// // 2019-04-03 10.52 询问赵mf, 此计划是必须参加的,而且是长期的,每单固定扣除一分钱
orderFinancial.DonationMoney = PublicWelfareDonation
// 不应该对第三方结账金额做更改,就算有异常,也要保留异常,知道问题出在哪里
// orderFinancial.ShopMoney -= PublicWelfareDonation
orderFinancial.ReceivableFreight = *result.PostFee
orderFinancial.FreightMoney = 0
orderFinancial.ActualPayMoney = *result.PayFee
orderFinancial.PmMoney = 0 // 平台费
orderFinancial.ShopMoney = 0 // 应结金额
orderFinancial.TotalDiscountMoney = *result.DiscountFee // 订单优惠总金额
orderFinancial.PmSubsidyMoney = *result.PostDiscountPlatformFee // 平台活动补贴(订单主体活动补贴+订单单条sku补贴1+
orderFinancial.SelfDeliveryDiscountMoney = *result.SkuDiscountPlatformFee // 平台承担运费补贴(商家自送)+
orderFinancial.DistanceFreightMoney = 0
return orderFinancial
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,12 @@
package mtwm
package tao_vegetable
import (
"errors"
"fmt"
"git.rosy.net.cn/jx-callback/globals/api"
"net/url"
"strings"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
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"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
@@ -15,57 +14,39 @@ import (
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
)
var (
// AfsVendorStatus2StatusMap = map[int]int{
// mtwmapi.ResTypePending: model.AfsOrderStatusWait4Approve,
// mtwmapi.ResTypeMerchantRefused: model.AfsOrderStatusFailed,
// mtwmapi.ResTypeMerchantAgreed: model.AfsOrderStatusFinished,
// mtwmapi.ResTypeCSRefused: model.AfsOrderStatusFailed,
// mtwmapi.ResTypeCSAgreed: model.AfsOrderStatusFinished,
// mtwmapi.ResTypeTimeoutAutoAgreed: model.AfsOrderStatusFinished,
// mtwmapi.ResTypeAutoAgreed: model.AfsOrderStatusFinished,
// mtwmapi.ResTypeUserCancelApply: model.AfsOrderStatusFailed,
// mtwmapi.ResTypeUserCancelComplain: model.AfsOrderStatusFailed,
// }
AfsVendorStatus2StatusMap = map[string]int{
mtwmapi.NotifyTypeApply: model.AfsOrderStatusWait4Approve,
mtwmapi.NotifyTypePartyApply: model.AfsOrderStatusWait4Approve,
mtwmapi.NotifyTypeSuccess: model.AfsOrderStatusFinished,
mtwmapi.NotifyTypeReject: model.AfsOrderStatusFailed,
mtwmapi.NotifyTypeCancelRefund: model.AfsOrderStatusFailed,
mtwmapi.NotifyTypeCancelRefundComplaint: model.AfsOrderStatusFailed,
tao_vegetable.OrderStatusApplyAfs: model.AfsOrderStatusWait4Approve,
tao_vegetable.OrderStatusCancelAfs: model.AfsOrderStatusCancelAfs,
tao_vegetable.OrderStatusRefundSuccess: model.AfsOrderStatusFinished,
}
)
func (c *PurchaseHandler) isAfsMsg(msg *mtwmapi.CallbackMsg) bool {
if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
// refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
orderID := utils.Str2Int64(GetOrderIDFromMsg(msg))
order, _ := partner.CurOrderManager.LoadOrder(utils.Int64ToStr(orderID), model.VendorIDMTWM)
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 {
//status, err := getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), order.VendorStoreID).OrderViewStatus(orderID)
//if err == nil {
//return utils.Int2Str(status) == mtwmapi.OrderStatusFinished
return true //TODO 有的美团订单售前退款,也当做售后处理试试
//}
return true
}
}
return false
}
func (c *PurchaseHandler) OnAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) {
func (c *PurchaseHandler) OnAfsOrderMsg(orderId, status string, msg interface{}) (retVal *tao_vegetable.CallBackResult) {
jxutils.CallMsgHandlerAsync(func() {
retVal = c.onAfsOrderMsg(msg)
}, jxutils.ComposeUniversalOrderID(GetOrderIDFromMsg(msg), model.VendorIDMTWM))
retVal = c.onAfsOrderMsg(status, msg)
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
return retVal
}
// todo 对于退款与部分退款order.go与这个文件中对于状态的处理不一致
func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwmapi.CallbackResponse) {
// todo 淘宝暂无部分退款,只有整单退款
func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal *tao_vegetable.CallBackResult) {
var err error
orderStatus := c.callbackAfsMsg2Status(msg)
var db = dao.GetDB()
orderStatus := c.callbackAfsMsg2Status(status, msg)
needCallNew := orderStatus.Status == model.AfsOrderStatusWait4Approve || orderStatus.Status == model.AfsOrderStatusNew
if !needCallNew {
_, err := partner.CurOrderManager.LoadAfsOrder(orderStatus.VendorOrderID, orderStatus.VendorID)
@@ -73,73 +54,80 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma
if dao.IsNoRowsError(err) {
needCallNew = true
} else {
return mtwmapi.Err2CallbackResponse(err, "")
return tao_vegetable.CallBackResultInfo(err)
}
}
}
if needCallNew {
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
var afsOrder *model.AfsOrder
refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
afsOrder = &model.AfsOrder{
VendorID: model.VendorIDMTWM,
AfsOrderID: orderStatus.VendorOrderID,
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: "",
StoreID: 0,
AfsCreatedAt: utils.Timestamp2Time(refundData.Timestamp),
VendorAppealType: "",
AppealType: model.AfsAppealTypeRefund,
VendorReasonType: "",
ReasonType: model.AfsReasonNotOthers,
ReasonDesc: utils.LimitUTF8StringLen(refundData.Reason, 1024),
ReasonImgList: utils.LimitUTF8StringLen(strings.Join(refundData.PictureList, ","), 1024),
RefundType: model.AfsTypePartRefund,
afsOrder = &model.AfsOrder{
VendorID: model.VendorIDTaoVegetable,
AfsOrderID: orderStatus.VendorOrderID,
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: refundData.StoreId,
StoreID: 0,
AfsCreatedAt: orderStatus.StatusTime,
VendorOrgCode: msg.AppID,
// FreightUserMoney: afsInfo.OrderFreightMoney,
// AfsFreightMoney: afsInfo.AfsFreight,
// BoxMoney: afsInfo.PackagingMoney,
// TongchengFreightMoney: afsInfo.TongchengFreightMoney,
// SkuBoxMoney: afsInfo.MealBoxMoney,
}
for _, sku := range refundData.FoodList {
orderSku := &model.OrderSkuFinancial{
// VendorID: model.VendorIDMTWM,
AfsOrderID: afsOrder.AfsOrderID,
// VendorOrderID: afsOrder.VendorOrderID,
// VendorStoreID: afsOrder.VendorStoreID,
// StoreID: afsOrder.StoreID,
IsAfsOrder: 1,
VendorAppealType: status, // 原始售后方式
AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消
VendorReasonType: refundData.RefundReason,
ReasonType: 0,
ReasonDesc: refundData.RefundReason,
ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024),
RefundType: model.AfsTypeFullRefund,
VendorOrgCode: refundData.MerchantCode,
}
Count: sku.Count,
// ConfirmTime: afsOrder.AfsCreateAt,
VendorSkuID: sku.SkuID,
SkuID: int(utils.Str2Int64WithDefault(sku.SkuID, 0)),
Name: sku.FoodName,
UserMoney: jxutils.StandardPrice2Int(sku.RefundPrice)*int64(sku.Count) + jxutils.StandardPrice2Int(sku.BoxPrice)*int64(sku.BoxNum),
}
if orderSku.VendorSkuID == "" || orderSku.VendorSkuID == "0" {
orderSku.VendorSkuID = sku.AppFoodCode
}
refundIds := make([]int64, 0, 0)
bizOrderIds := make([]int64, len(refundData.SubRefundOrders))
for _, v := range refundData.SubRefundOrders {
bizOrderIds = append(bizOrderIds, utils.Str2Int64(v.OutSubOrderId))
}
refundIds = append(refundIds, utils.Str2Int64(refundData.BizRefundId))
afsOrder.SkuUserMoney += orderSku.UserMoney
afsOrder.Skus = append(afsOrder.Skus, orderSku)
}
//afsOrder.PmSubsidyMoney += afsOrder.RefundMoney - afsOrder.SkuUserMoney
} else {
if afsOrder = c.createAfsOrder(msg.FormData); afsOrder != nil {
// if orderFinancial, err2 := partner.CurOrderManager.LoadOrderFinancial(orderStatus.RefVendorOrderID, model.VendorIDMTWM); err2 == nil {
// afsOrder = c.OrderFinancialDetail2Refund(orderFinancial, msg.FormData)
afsOrder.AfsOrderID = orderStatus.VendorOrderID
afsOrder.RefundType = model.AfsTypeFullRefund
afsOrder.AppealType = model.AfsAppealTypeRefund
afsOrder.VendorReasonType = ""
afsOrder.ReasonType = model.AfsReasonNotOthers
afsOrder.ReasonDesc = utils.LimitUTF8StringLen(refundData.Reason, 1024)
afsOrder.ReasonImgList = utils.LimitUTF8StringLen(strings.Join(refundData.PictureList, ","), 1024)
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
afsOrder.FreightUserMoney = *taoAfsOrder[0].RefundPostFee
afsOrder.AfsFreightMoney = *taoAfsOrder[0].RefundPostFee // 暂时未发现退货取件费用
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)),
}})
if err != nil {
return tao_vegetable.CallBackResultInfo(err)
}
for _, sku := range *skuList.SubOrderResponseList {
orderSku := &model.OrderSkuFinancial{
Count: utils.Str2Int(*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)
}
if afsOrder != nil {
//直接就来一个新的售后单,并且还是售后完成的
@@ -149,70 +137,132 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
}
} else {
// 用户取消售后
if status == tao_vegetable.OrderStatusCancelAfs {
// 删除售后单
afsOrder, err := dao.GetAfsOrders(db, model.VendorIDTaoVegetable, orderStatus.RefVendorOrderID, orderStatus.VendorOrderID)
if err != nil || afsOrder == nil {
globals.SugarLogger.Debugf("用户取消售后单,获取之前生成的售后单失败")
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)
}
// 删除售后商品
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)
}
// 订单更改为待配送
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 {
// 订单回调全额退款接口时,将订单状态修改为取消
refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
if refundData.NotifyType == "agree" && msg.Cmd == mtwmapi.MsgTypeOrderRefund {
order, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDMTWM)
order.Status = model.OrderStatusCanceled
dao.UpdateEntity(dao.GetDB(), order, "Status")
if err == nil && status == tao_vegetable.OrderStatusRefundSuccess {
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, orderStatus.VendorID)
goodsOrder.Status = model.OrderStatusCanceled
goodsOrder.VendorStatus = orderStatus.VendorStatus
dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus")
}
}
}
return mtwmapi.Err2CallbackResponse(err, "")
return tao_vegetable.CallBackResultInfo(err)
}
func (p *PurchaseHandler) createAfsOrder(orderData url.Values) (afsOrder *model.AfsOrder) {
afsOrder, err := partner.CurOrderManager.CreateAfsOrderFromOrder(orderData.Get("order_id"), model.VendorIDMTWM)
if err == nil {
afsOrder.AfsOrderID = orderData.Get("refund_id")
afsOrder.AfsCreatedAt = utils.Timestamp2Time(utils.Str2Int64(orderData.Get("timestamp")))
if afsOrder.AfsOrderID == "" {
afsOrder.AfsOrderID = afsOrder.VendorOrderID
}
} else {
afsOrder = nil
}
return afsOrder
}
func (c *PurchaseHandler) callbackAfsMsg2Status(msg *mtwmapi.CallbackMsg) (orderStatus *model.OrderStatus) {
refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) (orderStatus *model.OrderStatus) {
orderStatus = &model.OrderStatus{
VendorID: model.VendorIDMTWM,
OrderType: model.OrderTypeAfsOrder,
RefVendorOrderID: utils.Int64ToStr(refundData.OrderID),
RefVendorID: model.VendorIDMTWM,
VendorStatus: fmt.Sprintf("%s:%d", refundData.NotifyType, refundData.ResType),
Status: c.GetAfsStatusFromVendorStatus(refundData.ResType, refundData.NotifyType),
StatusTime: utils.Timestamp2Time(refundData.Timestamp),
Remark: refundData.Reason,
VendorID: model.VendorIDTaoVegetable,
OrderType: model.OrderTypeAfsOrder,
RefVendorID: model.VendorIDTaoVegetable,
}
if refundData.RefundID > 0 {
orderStatus.VendorOrderID = utils.Int64ToStr(refundData.RefundID)
} else {
switch status {
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 = utils.Str2Time(refundData.Timestamp)
orderStatus.Remark = refundData.Remarks
orderStatus.VendorOrderID = refundData.BizRefundId
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 = utils.Str2Time(refundData.Timestamp)
orderStatus.VendorOrderID = refundData.BizRefundId
//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:
refundData := msg.(*tao_vegetable.RefundOrderFinish)
orderStatus.RefVendorOrderID = refundData.OutMainRefundId
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售后退款成功")
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
orderStatus.StatusTime = utils.Str2Time(refundData.Timestamp)
orderStatus.VendorOrderID = refundData.BizSubRefundId
}
if orderStatus.VendorOrderID == "" {
orderStatus.VendorOrderID = orderStatus.RefVendorOrderID
}
return orderStatus
}
func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(resType int, notifyType string) int {
func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(notifyType string) int {
status := AfsVendorStatus2StatusMap[notifyType]
if status == model.AfsOrderStatusWait4Approve && resType != mtwmapi.ResTypePending {
status = model.AfsOrderStatusNew
}
//if status == model.AfsOrderStatusWait4Approve || status == model.AfsOrderStatusOnSaleAfs {
// status = model.AfsOrderStatusNew
//}
return status
}
// 审核售后单申请
func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) {
if globals.EnableMtwmStoreWrite {
if approveType == partner.AfsApproveTypeRefused {
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).OrderRefundReject(utils.Str2Int64(order.VendorOrderID), reason)
} else if approveType == partner.AfsApproveTypeRefusedToRefundMoney {
return errors.New("此平台暂时不支持")
} else {
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).OrderRefundAgree(utils.Str2Int64(order.VendorOrderID), reason)
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")
}
}
return err

View File

@@ -1,4 +1,4 @@
package mtwm
package tao_vegetable
import (
"strings"

View File

@@ -1,4 +1,4 @@
package mtwm
package tao_vegetable
import (
"testing"

View File

@@ -0,0 +1,199 @@
package tao_vegetable
import (
"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"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"time"
)
// orderStatusChangeNotice 拣货和通知发货状态变化接口
func orderStatusChangeNotice(order *model.GoodsOrder, orderStatus string) (*request591.AlibabaAelophyOrderWorkCallbackRequest, error) {
param := &request591.AlibabaAelophyOrderWorkCallbackRequest{}
param.WorkCallbackRequest = &domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackRequest{
StoreId: utils.String2Pointer(order.VendorStoreID),
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)),
Status: utils.String2Pointer(orderStatus),
}
workCallbackSubOrderInfoList := make([]domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo, 0, 0)
skuList, err := dao.GetSimpleOrderSkus(dao.GetDB(), order.VendorOrderID, nil)
if err != nil {
return nil, err
}
if len(skuList) == model.NO {
return nil, fmt.Errorf("订单商品列表为零,请管理员检查")
}
for _, v := range skuList {
workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{
BizSubOrderId: nil,
SkuCode: utils.String2Pointer(v.VendorSkuID),
PickSaleQuantity: utils.String2Pointer(utils.Int2Str(v.Count)),
PickStockQuantity: utils.String2Pointer(fmt.Sprintf("%.2f", float64(v.Weight)/float64(1000)*float64(v.Count))),
}
workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo)
}
// 出库
param.WorkCallbackRequest.WorkCallbackSubOrderInfoList = &workCallbackSubOrderInfoList
return param, nil
}
// OrderStatusChangeDelivery 订单开始配送和送达通知接口
func OrderStatusChangeDelivery(order *model.GoodsOrder, orderStatus string) *request591.AlibabaAelophyOrderWorkCallbackRequest {
param := &request591.AlibabaAelophyOrderWorkCallbackRequest{}
param.WorkCallbackRequest = &domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackRequest{
StoreId: utils.String2Pointer(order.VendorStoreID),
BizOrderId: utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)),
Status: utils.String2Pointer(orderStatus),
}
bill, _ := partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, order.WaybillVendorID)
param.WorkCallbackRequest.DelivererName = utils.String2Pointer(bill.CourierName)
param.WorkCallbackRequest.DelivererPhone = utils.String2Pointer(bill.CourierMobile)
if param.WorkCallbackRequest.DelivererName == nil || param.WorkCallbackRequest.DelivererPhone == nil {
param.WorkCallbackRequest.DelivererName = utils.String2Pointer("暂无")
param.WorkCallbackRequest.DelivererPhone = utils.String2Pointer("暂无")
}
return param
}
// getOrderCancelList 获取订单可取消的订单列表
func getOrderCancelList(api *tao_vegetable.API, order *model.GoodsOrder) (*domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderResponseDto, error) {
param := &request3156.AlibabaTclsAelophyRefundCsapplyrenderRequest{
RefundCsApplyRenderDTO: &domain3156.AlibabaTclsAelophyRefundCsapplyrenderRefundCsApplyRenderDto{
OutOrderId: utils.String2Pointer(order.VendorOrderID),
StoreId: utils.String2Pointer(order.VendorStoreID),
OutSubOrderIds: nil,
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
},
}
return api.PartialRefundReason(param)
}
func getTimeFromTimestamp(timeStamp int64) time.Time {
if timeStamp < 1538103149 { // 立即达订单给的是1而不是空01538103149不是特殊值只是一个任意之前的时间这样写可以处理
return utils.DefaultTimeValue
}
return utils.Timestamp2Time(timeStamp)
}
//
//func (p *PurchaseHandler) GetOrderConsigneeNumber(ctx *jxcontext.Context, storeID int, vendorStoreID string) (numberList []*partner.OrderPhoneNumberInfo, err error) {
// offset := 0
// for {
// store, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDMTWM, "")
// result, err2 := getAPI(store.VendorOrgCode, storeID, "").OrderBatchPullPhoneNumber(vendorStoreID, offset, mtwmapi.MaxBatchPullPhoneNumberLimit)
// if err = err2; err == nil {
// for _, v := range result {
// v2 := &partner.OrderPhoneNumberInfo{
// VendorOrderID: utils.Int64ToStr(v.OrderID),
// PhoneNumber: v.RealPhoneNumber,
// }
// if v2.PhoneNumber == "" {
// v2.PhoneNumber = v.RealOrderPhoneNumber
// }
// numberList = append(numberList, v2)
// }
// if len(result) <= mtwmapi.MaxBatchPullPhoneNumberLimit {
// break
// }
// offset += mtwmapi.MaxBatchPullPhoneNumberLimit
// } else {
// break
// }
// }
// return numberList, err
//}
//
//func (p *PurchaseHandler) GetOrderCourierNumber(ctx *jxcontext.Context, storeID int, vendorStoreID string) (numberList []*partner.OrderPhoneNumberInfo, err error) {
// offset := 0
// for {
// store, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDMTWM, "")
// result, err2 := getAPI(store.VendorOrgCode, 0, "").OrderGetRiderInfoPhoneNumber(vendorStoreID, offset, mtwmapi.MaxBatchPullPhoneNumberLimit)
// if err = err2; err == nil {
// for _, v := range result {
// numberList = append(numberList, &partner.OrderPhoneNumberInfo{
// VendorOrderID: utils.Int64ToStr(v.OrderID),
// PhoneNumber: v.RiderRealPhoneNumber,
// })
// }
// if len(result) <= mtwmapi.MaxBatchPullPhoneNumberLimit {
// break
// }
// offset += mtwmapi.MaxBatchPullPhoneNumberLimit
// } else {
// break
// }
// }
// return numberList, err
//}
//
//func (p *PurchaseHandler) onNumberDowngrade(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
// userNumberMap := make(map[string]*partner.OrderPhoneNumberInfo)
// courierNumberMap := make(map[string]*partner.OrderPhoneNumberInfo)
// orderMap := make(map[string]int)
// ctx := jxcontext.AdminCtx
// task := tasksch.NewParallelTask("美团外卖平台处理隐私号降级通知", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
// step := batchItemList[0].(int)
// switch step {
// case 0:
// userNumberList, err2 := p.GetOrderConsigneeNumber(ctx, 0, "")
// if err = err2; err == nil {
// for _, v := range userNumberList {
// userNumberMap[v.VendorOrderID] = v
// orderMap[v.VendorOrderID] = 1
// }
// }
// case 1:
// courierNumberList, err2 := p.GetOrderCourierNumber(ctx, 0, "")
// if err = err2; err == nil {
// for _, v := range courierNumberList {
// courierNumberMap[v.VendorOrderID] = v
// orderMap[v.VendorOrderID] = 1
// }
// }
// case 2:
// orderList := jxutils.StringMap2List(orderMap)
// if len(orderList) > 0 {
// updateTask := tasksch.NewParallelTask("美团外卖平台处理隐私号降级通知/处理订单", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
// vendorOrderID := batchItemList[0].(string)
// db := dao.GetDB()
// if userNumberMap[vendorOrderID] != nil {
// _, err = dao.UpdateEntityByKV(db, &model.GoodsOrder{}, map[string]interface{}{
// "ConsigneeMobile": userNumberMap[vendorOrderID].PhoneNumber,
// "ConsigneeMobile2": userNumberMap[vendorOrderID].PhoneNumber,
// }, map[string]interface{}{
// model.FieldVendorOrderID: vendorOrderID,
// model.FieldVendorID: model.VendorIDMTWM,
// })
// }
// if courierNumberMap[vendorOrderID] != nil {
// _, err = dao.UpdateEntityByKV(db, &model.Waybill{}, map[string]interface{}{
// "CourierMobile": courierNumberMap[vendorOrderID].PhoneNumber,
// }, map[string]interface{}{
// "VendorWaybillID": vendorOrderID,
// "WaybillVendorID": model.VendorIDMTWM,
// })
// }
// return retVal, err
// }, orderList)
// tasksch.HandleTask(updateTask, task, true).Run()
// _, err = updateTask.GetResult(0)
// }
// }
// return retVal, err
// }, []int{0, 1, 2})
// tasksch.HandleTask(task, nil, true).Run()
// return response
//}

View File

@@ -1,4 +1,4 @@
package mtwm
package tao_vegetable
import (
"encoding/json"

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
package mtwm
package tao_vegetable
import (
"testing"

View File

@@ -1,46 +0,0 @@
package mtwm
import (
"testing"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
// _ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
)
// func TestSyncStoreCategory(t *testing.T) {
// hint, err := CurPurchaseHandler.SyncStoreCategory(jxcontext.AdminCtx, nil, testShopID, false)
// if err != nil {
// t.Fatal(err)
// }
// t.Log(hint)
// }
// func TestSyncLocalStoreCategory(t *testing.T) {
// hint, err := CurPurchaseHandler.SyncLocalStoreCategory(jxcontext.AdminCtx, nil, testShopID, true, nil)
// if err != nil {
// t.Fatal(err)
// }
// t.Log(hint)
// }
// func TestSyncStoreSkus(t *testing.T) {
// hint, err := CurPurchaseHandler.SyncStoreSkus(jxcontext.AdminCtx, nil, testShopID, nil, false, true)
// if err != nil {
// t.Fatal(err)
// }
// t.Log(hint)
// }
func TestDeleteRemoteSkus(t *testing.T) {
err := CurPurchaseHandler.DeleteStoreAllSkus(jxcontext.AdminCtx, nil, testShopID, testShopVendorID, true)
if err != nil {
t.Fatal(err)
}
}
func TestDeleteRemoteCategories(t *testing.T) {
err := CurPurchaseHandler.DeleteStoreAllCategories(jxcontext.AdminCtx, nil, testShopID, testShopVendorID, true)
if err != nil {
t.Fatal(err)
}
}

View File

@@ -1,43 +0,0 @@
package mtwm
import (
"testing"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils"
// _ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
)
//func TestReadStore(t *testing.T) {
// store, err := CurPurchaseHandler.ReadStore(jxcontext.AdminCtx, "", "4351018")
// if err != nil {
// t.Fatal(err)
// }
// t.Log(utils.Format4Output(store, false))
//}
func TestUpdateStore(t *testing.T) {
err := CurPurchaseHandler.UpdateStore(nil, 100002, "test")
if err != nil {
t.Fatal(err)
}
}
func TestConstrainOpTimeList(t *testing.T) {
timeList := constrainOpTimeList([]int16{830, 1800}, []int16{
0,
200,
930,
1700,
})
t.Log(utils.Format4Output(timeList, false))
if timeList[0] != 930 || timeList[1] != 1700 {
t.Fatal("constrainOpTimeList failed")
}
}
func TestGetOpTimeListFromErr(t *testing.T) {
err := utils.NewErrorIntCode("当前配送营业时间为:07:00~24:00", mtwmapi.ErrCodeOpFailed)
list := getOpTimeListFromErr(err)
t.Log(list)
}

View File

@@ -1,4 +1,4 @@
package mtwm
package tao_vegetable
import (
"fmt"
@@ -6,8 +6,6 @@ import (
"strings"
"sync"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
@@ -32,7 +30,7 @@ type PurchaseHandler struct {
}
func init() {
if api.MtwmAPI != nil || api.Mtwm2API != nil {
if api.TaoVegetableApi != nil {
CurPurchaseHandler = New()
partner.RegisterPurchasePlatform(CurPurchaseHandler)
}
@@ -148,11 +146,11 @@ func bizStatusJX2Mtwm(status int) (openLevel, online int) {
return mtwmapi.PoiOpenLevelNormal, mtwmapi.PoiStatusOnline
}
func skuStatusJX2Mtwm(status int) int {
func skuStatusJX2Tao(status int) int64 {
if status == model.SkuStatusNormal {
return mtwmapi.SellStatusOnline
return tao_vegetable.CreateOnlineSaleFlag
}
return mtwmapi.SellStatusOffline
return tao_vegetable.CreateOfflineSaleFlag
}
func (p *PurchaseHandler) UploadImg(ctx *jxcontext.Context, vendorOrgCode, imgURL string, imgData []byte, imgName string, imgType int) (imgHint string, err error) {
@@ -215,23 +213,15 @@ func getAPI(appOrgCode string, storeID int, vendorStoreID string) (apiObj *tao_v
if appOrgCode == "" {
globals.SugarLogger.Debugf("getAPI appOrgCode is empty")
}
apiObj = partner.CurAPIManager.GetAPI(model.VendorIDTaoVegetable, appOrgCode).(*tao_vegetable.API)
var storeDetail *dao.StoreDetail
if storeID != model.NO {
storeDetail, _ = dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDTaoVegetable, appOrgCode)
} else if vendorStoreID != "" {
storeDetail, _ = dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreID, model.VendorIDTaoVegetable, appOrgCode)
}
if storeDetail != nil {
apiObj.SetToken(storeDetail.MtwmToken)
}
//apiObj = partner.CurAPIManager.GetAPI(model.VendorIDTaoVegetable, appOrgCode).(*tao_vegetable.API)
//var storeDetail *dao.StoreDetail
//if storeID != model.NO {
// storeDetail, _ = dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDTaoVegetable, appOrgCode)
//} else if vendorStoreID != "" {
// storeDetail, _ = dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreID, model.VendorIDTaoVegetable, appOrgCode)
//}
//if storeDetail != nil {
// apiObj.SetToken(storeDetail.MtwmToken)
//}
return apiObj
}
//
//func getAPIWithoutToken(appOrgCode string) (apiObj *mtwmapi.API) {
// if appOrgCode == "" {
// globals.SugarLogger.Warnf("getAPI appOrgCode is empty")
// }
// return partner.CurAPIManager.GetAPI(model.VendorIDTaoVegetable, appOrgCode).(*mtwmapi.API)
//}

View File

@@ -1,63 +0,0 @@
package mtwm
import (
"fmt"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"net/url"
"testing"
"time"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/partner"
)
func TestOnFinancialMsg(t *testing.T) {
msg := &mtwmapi.CallbackMsg{
Cmd: "orderRefund",
FormData: url.Values{},
}
msg.FormData.Set("timestamp", utils.Int64ToStr(time.Now().Unix()))
msg.FormData.Set("order_id", "33762863167364867")
msg.FormData.Set("notify_type", "agree")
msg.FormData.Set("money", "23.56")
food := []map[string]interface{}{
map[string]interface{}{
"app_food_code": "123",
"food_name": "商品1",
"sku_id": "123",
"refund_price": 3.14,
"count": 2,
"box_num": 1,
"box_price": 1,
},
map[string]interface{}{
"app_food_code": "124",
"food_name": "商品2",
"sku_id": "124",
"refund_price": 3.15,
"count": 2,
"box_num": 1,
"box_price": 1,
},
}
msg.FormData.Set("food", string(utils.MustMarshal(food)))
res := CurPurchaseHandler.onAfsOrderMsg(msg)
fmt.Println(res)
}
func TestOnOrderDetail(t *testing.T) {
result := map[string]interface{}{
"app_order_code": "", "app_poi_code": "2828472", "avg_send_time": 2410, "backup_recipient_phone": "[\"13164714130_7645\"]", "caution": " 【如遇缺货】: 缺货时电话与我沟通 收餐人隐私号 13049813276_5307手机号 139****5027", "city_id": 440300, "ctime": 1555036346, "day_seq": 1, "delivery_time": 0, "detail": "[{\"app_food_code\":\"27262\",\"box_num\":0,\"box_price\":0,\"cart_id\":0,\"food_discount\":1,\"food_name\":\"红管鱿鱼约250g/份\",\"food_property\":\"\",\"price\":23.54,\"quantity\":1,\"sku_id\":\"27262\",\"spec\":\"250g\",\"unit\":\"份\"},{\"app_food_code\":\"24987\",\"box_num\":0,\"box_price\":0,\"cart_id\":0,\"food_discount\":1,\"food_name\":\"带皮猪梅花肉约250g/份\",\"food_property\":\"\",\"price\":15.84,\"quantity\":1,\"sku_id\":\"24987\",\"spec\":\"250g\",\"unit\":\"份\"},{\"app_food_code\":\"27179\",\"box_num\":0,\"box_price\":0,\"cart_id\":0,\"food_discount\":1,\"food_name\":\"[畅销]龙骨约250g/份\",\"food_property\":\"\",\"price\":18.59,\"quantity\":1,\"sku_id\":\"27179\",\"spec\":\"250g\",\"unit\":\"份\"}]", "dinners_number": 0, "expect_deliver_time": 0, "extras": "[{\"act_detail_id\":664795195,\"mt_charge\":0,\"poi_charge\":5,\"reduce_fee\":5,\"remark\":\"满46.0元减5.0元\",\"type\":2},{\"act_detail_id\":665051798,\"mt_charge\":0,\"poi_charge\":4,\"reduce_fee\":4,\"remark\":\"减配送费4.0元\",\"type\":25},{\"act_detail_id\":274839715,\"mt_charge\":0.5,\"poi_charge\":0,\"reduce_fee\":0.5,\"remark\":\"用户使用了支付红包减0.5元\",\"type\":9},{\"mt_charge\":0,\"poi_charge\":0,\"reduce_fee\":0,\"remark\":\"送30元商家代金券\",\"type\":100},{}]", "has_invoiced": 0, "invoice_title": "", "is_favorites": false, "is_poi_first_order": true, "is_pre": 0, "is_third_shipping": 0, "latitude": 22.530194, "logistics_code": "1001", "longitude": 114.08372, "order_id": 28284722536001020, "order_send_time": 1555036356, "original_price": 63.97, "package_bag_money": 0, "pay_type": 2, "pick_type": 0, "poi_receive_detail": "{\"actOrderChargeByMt\":[{\"comment\":\"活动款\",\"feeTypeDesc\":\"活动款\",\"feeTypeId\":10019,\"moneyCent\":50}],\"actOrderChargeByPoi\":[{\"comment\":\"满46.0元减5.0元\",\"feeTypeDesc\":\"活动款\",\"feeTypeId\":10019,\"moneyCent\":500},{\"comment\":\"减配送费4.0元\",\"feeTypeDesc\":\"活动款\",\"feeTypeId\":10019,\"moneyCent\":400}],\"foodShareFeeChargeByPoi\":490,\"logisticsFee\":600,\"onlinePayment\":5447,\"wmPoiReceiveCent\":4406}", "recipient_address": "汇港名苑 (南2区1005)@#广东省深圳市福田区滨河大道滨河大道3119号汇港名苑", "recipient_name": "颜(女士)", "recipient_phone": "13049813276_5307", "remark": "", "result": "ok", "shipper_phone": "", "shipping_fee": 6, "shipping_type": 0, "source_id": 3, "status": 2, "taxpayer_id": "", "total": 54.47, "utime": 1555036346, "wm_order_id_view": 28284722536001020, "wm_poi_address": "深圳市福田区南园街道南华社区滨河路2037号下小庙南区70栋101号滨河街市场", "wm_poi_id": 2828472, "wm_poi_name": "京西菜市(华强南店)", "wm_poi_phone": "13724313878",
}
err := new(PurchaseHandler).OnOrderDetail(result, partner.CreatedPeration)
fmt.Println(err)
}
func TestName(t *testing.T) {
store, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), "1", model.VendorIDMTWM, "1")
fmt.Println(store)
fmt.Println(err)
}

View File

@@ -1,10 +1,8 @@
package mtwm
package tao_vegetable
import (
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner"
)
var (
@@ -27,37 +25,33 @@ func (p *PurchaseHandler) GetWaybillStatusFromVendorStatus(vendorStatus string)
}
func (c *PurchaseHandler) onWaybillMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse) {
waybill := c.callbackMsg2Waybill(msg)
err := partner.CurOrderManager.OnWaybillStatusChanged(waybill)
if err == nil && waybill.Status == model.WaybillStatusDelivering {
c.postFakeMsg(waybill.VendorOrderID, FakeMsgType, mtwmapi.OrderStatusDelivering)
}
return mtwmapi.Err2CallbackResponse(err, "")
//waybill := c.callbackMsg2Waybill(msg)
//err := partner.CurOrderManager.OnWaybillStatusChanged(waybill)
//if err == nil && waybill.Status == model.WaybillStatusDelivering {
// c.postFakeMsg(waybill.VendorOrderID, FakeMsgType, mtwmapi.OrderStatusDelivering)
//}
//return mtwmapi.Err2CallbackResponse(err, "")
return nil
}
func (c *PurchaseHandler) callbackMsg2Waybill(msg *mtwmapi.CallbackMsg) (retVal *model.Waybill) {
orderID := GetOrderIDFromMsg(msg)
vendorStatus := msg.FormData.Get("logistics_status")
retVal = &model.Waybill{
VendorOrderID: orderID,
OrderVendorID: model.VendorIDMTWM,
VendorWaybillID: orderID,
WaybillVendorID: model.VendorIDMTWM,
CourierName: msg.FormData.Get("dispatcher_name"),
CourierMobile: msg.FormData.Get("dispatcher_mobile"),
VendorStatus: vendorStatus,
Status: c.GetWaybillStatusFromVendorStatus(vendorStatus),
StatusTime: getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("time"))),
Remark: "",
VendorOrgCode: msg.AppID,
}
if retVal.StatusTime == utils.DefaultTimeValue {
retVal.StatusTime = getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("timestamp")))
}
//if vendorStatus == "4" || vendorStatus == "8" { // 4:美团推送已经(确认骑手)订单 8:美团推送(骑手完成)订单
// retVal.DesiredFee = utils.Float64TwoInt64(utils.Str2Float64WithDefault(msg.FormData.Get("shipping_fee"), 0)) // 订单优惠前的总费用
// partner.CurOrderManager
//orderID := GetOrderIDFromMsg(msg)
//vendorStatus := msg.FormData.Get("logistics_status")
//retVal = &model.Waybill{
// VendorOrderID: orderID,
// OrderVendorID: model.VendorIDMTWM,
// VendorWaybillID: orderID,
// WaybillVendorID: model.VendorIDMTWM,
// CourierName: msg.FormData.Get("dispatcher_name"),
// CourierMobile: msg.FormData.Get("dispatcher_mobile"),
// VendorStatus: vendorStatus,
// Status: c.GetWaybillStatusFromVendorStatus(vendorStatus),
// StatusTime: getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("time"))),
// Remark: "",
// VendorOrgCode: msg.AppID,
//}
//if retVal.StatusTime == utils.DefaultTimeValue {
// retVal.StatusTime = getTimeFromTimestamp(utils.Str2Int64(msg.FormData.Get("timestamp")))
//}
return retVal

View File

@@ -119,6 +119,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
if result.UserIdInfo != nil {
order.VendorUserID = result.UserIdInfo.IdCardNo
}
originalLng := utils.MustInterface2Float64(result.UserCoordinate.UserCoordinateLongitude)
originalLat := utils.MustInterface2Float64(result.UserCoordinate.UserCoordinateLatitude)
order.ConsigneeLng = jxutils.StandardCoordinate2Int(originalLng)
@@ -545,24 +546,6 @@ func (c *PurchaseHandler) postFakeMsg(vendorOrderID, cmd, VendorStatus, appOrgCo
// AcceptOrRefuseOrder 接单或者拒单(isAcceptIt:接单/拒单) 抖店暂无拒单
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
//if isAcceptIt {
// if globals.EnableMtwmStoreWrite {
// err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderConfirm(utils.Str2Int64(order.VendorOrderID))
// if err != nil {
// if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeOpFailed), []string{
// "订单已经确认过了",
// }) {
// err = nil
// } else {
// globals.SugarLogger.Warnf("mtwm AcceptOrRefuseOrder orderID:%s failed with err:%v", order.VendorOrderID, err)
// }
// }
// }
//} else {
// if globals.EnableMtwmStoreWrite {
// err = c.CancelOrder(jxcontext.AdminCtx, order, "bu")
// }
//}
return err
}

View File

@@ -90,11 +90,11 @@ func (c *PurchaseHandler) onAfsOrderMsg(msgId string, msg interface{}) (retVal *
VendorOrgCode: utils.Int2Str(vendorOrgCode),
}
afsOrder.FreightUserMoney = tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.RefundPostAmount
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
afsOrder.BoxMoney = 0 // 餐盒费
afsOrder.TongchengFreightMoney = 0 // 同城配送费
afsOrder.SkuBoxMoney = 0 // 商品包装费
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
afsOrder.AfsFreightMoney = tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.RefundPostAmount // 暂时未发现退货取件费用
afsOrder.BoxMoney = 0 // 餐盒费
afsOrder.TongchengFreightMoney = 0 // 同城配送费
afsOrder.SkuBoxMoney = 0 // 商品包装费
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
for _, sku := range tiktokAfsOrderDetail.Data.OrderInfo.SkuOrderInfos {
orderSku := &model.OrderSkuFinancial{
Count: int(sku.AfterSaleItemCount),

View File

@@ -296,6 +296,7 @@ func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode strin
// return cancelOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(model.SyncFlagDeletedMask, vendorStoreID, storeSkuList))
}
// UpdateStoreSkusSpecTag 更新限购
func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
//var foodDataList []map[string]interface{}
//for _, v := range storeSkuList {