txd
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package mtwm
|
||||
package tao_vegetable
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@@ -354,12 +354,12 @@ func (c *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITa
|
||||
return err
|
||||
}
|
||||
|
||||
//func (c *PurchaseHandler) GetActAmple(ctx *jxcontext.Context, vendorStoreID, vendorOrgCode string) (ample int, err error) {
|
||||
// for _, v := range mtwmapi.ActTypeList {
|
||||
// //1表示进行中
|
||||
// if actList, err := getAPI(vendorOrgCode, 0, vendorStoreID).GetByAppPoiCodeAndType(vendorOrgCode, 1, v); err == nil {
|
||||
// ample += len(actList)
|
||||
// }
|
||||
// }
|
||||
// return ample, err
|
||||
//}
|
||||
func (c *PurchaseHandler) GetActAmple(ctx *jxcontext.Context, vendorStoreID, vendorOrgCode string) (ample int, err error) {
|
||||
//for _, v := range mtwmapi.ActTypeList {
|
||||
// //1表示进行中
|
||||
// if actList, err := getAPI(vendorOrgCode, 0, vendorStoreID).GetByAppPoiCodeAndType(vendorOrgCode, 1, v); err == nil {
|
||||
// ample += len(actList)
|
||||
// }
|
||||
//}
|
||||
return ample, err
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -1,19 +1,12 @@
|
||||
package mtwm
|
||||
package tao_vegetable
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -42,71 +35,73 @@ func formalizeTagList(mtwmTagList string) (outTagList string) {
|
||||
return outTagList
|
||||
}
|
||||
|
||||
// 获取评价信息
|
||||
func (c *PurchaseHandler) RefreshComment(fromTime, toTime time.Time) (err error) {
|
||||
//storeMapList, err2 := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDMTWM}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "", "")
|
||||
////storeMapList, err2 := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDMTWM}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "", "")
|
||||
////if err = err2; err != nil {
|
||||
//// return err
|
||||
////}
|
||||
//endDateStr := time.Now().Add(-24 * time.Hour).Format("20060102")
|
||||
//startDateStr := time.Now().Add(-RefreshCommentTime).Format("20060102")
|
||||
//storeIDs, _ := dao.GetOrderStoreIDs(dao.GetDB(), fromTime, toTime, model.VendorIDMTWM)
|
||||
//task := tasksch.NewParallelTask("mtwm RefreshComment", nil, jxcontext.AdminCtx,
|
||||
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
// storeID := batchItemList[0].(int)
|
||||
// storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDMTWM, "")
|
||||
// commentList, err2 := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).CommentQuery(storeDetail.VendorStoreID, startDateStr, endDateStr, 0, 0, mtwmapi.CommentReplyStatusNotReplied)
|
||||
// var orderCommentList []*model.OrderComment
|
||||
// if err = err2; err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
// for _, mtwmComment := range commentList {
|
||||
// createdTime, err := utils.TryStr2Time(mtwmComment.CommentTime)
|
||||
// if err == nil {
|
||||
// orderComment := &model.OrderComment{
|
||||
// VendorOrderID: utils.Int64ToStr(mtwmComment.CommentID), // 美团评价不能得到订单号,以评价ID代替
|
||||
// VendorID: model.VendorIDMTWM,
|
||||
// UserCommentID: utils.Int64ToStr(mtwmComment.CommentID),
|
||||
// VendorStoreID: storeDetail.VendorStoreID,
|
||||
// TagList: formalizeTagList(mtwmComment.CommentLables),
|
||||
// Score: int8(mtwmComment.FoodCommentScore),
|
||||
// ModifyDuration: BAD_COMMENTS_MAX_MODIFY_TIME,
|
||||
// OriginalMsg: string(utils.MustMarshal(mtwmComment)),
|
||||
// IsReplied: int8(mtwmComment.ReplyStatus),
|
||||
// StoreID: storeDetail.ID,
|
||||
// }
|
||||
// if orderComment.IsReplied == 0 {
|
||||
// orderComment.Content = mtwmComment.CommentContent
|
||||
// orderComment.CommentCreatedAt = createdTime
|
||||
// } else {
|
||||
// orderComment.Content = mtwmComment.AddComment
|
||||
// if updatedTime, err := utils.TryStr2Time(mtwmComment.CommentTime); err == nil {
|
||||
// orderComment.CommentCreatedAt = updatedTime
|
||||
// }
|
||||
// }
|
||||
// orderCommentList = append(orderCommentList, orderComment)
|
||||
// }
|
||||
// }
|
||||
// return orderCommentList, nil
|
||||
// }, storeIDs)
|
||||
//task.Run()
|
||||
//resultList, err2 := task.GetResult(0)
|
||||
//if err = err2; err != nil {
|
||||
// return err
|
||||
//}
|
||||
endDateStr := time.Now().Add(-24 * time.Hour).Format("20060102")
|
||||
startDateStr := time.Now().Add(-RefreshCommentTime).Format("20060102")
|
||||
storeIDs, _ := dao.GetOrderStoreIDs(dao.GetDB(), fromTime, toTime, model.VendorIDMTWM)
|
||||
task := tasksch.NewParallelTask("mtwm RefreshComment", nil, jxcontext.AdminCtx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
storeID := batchItemList[0].(int)
|
||||
storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDMTWM, "")
|
||||
commentList, err2 := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).CommentQuery(storeDetail.VendorStoreID, startDateStr, endDateStr, 0, 0, mtwmapi.CommentReplyStatusNotReplied)
|
||||
var orderCommentList []*model.OrderComment
|
||||
if err = err2; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, mtwmComment := range commentList {
|
||||
createdTime, err := utils.TryStr2Time(mtwmComment.CommentTime)
|
||||
if err == nil {
|
||||
orderComment := &model.OrderComment{
|
||||
VendorOrderID: utils.Int64ToStr(mtwmComment.CommentID), // 美团评价不能得到订单号,以评价ID代替
|
||||
VendorID: model.VendorIDMTWM,
|
||||
UserCommentID: utils.Int64ToStr(mtwmComment.CommentID),
|
||||
VendorStoreID: storeDetail.VendorStoreID,
|
||||
TagList: formalizeTagList(mtwmComment.CommentLables),
|
||||
Score: int8(mtwmComment.FoodCommentScore),
|
||||
ModifyDuration: BAD_COMMENTS_MAX_MODIFY_TIME,
|
||||
OriginalMsg: string(utils.MustMarshal(mtwmComment)),
|
||||
IsReplied: int8(mtwmComment.ReplyStatus),
|
||||
StoreID: storeDetail.ID,
|
||||
}
|
||||
if orderComment.IsReplied == 0 {
|
||||
orderComment.Content = mtwmComment.CommentContent
|
||||
orderComment.CommentCreatedAt = createdTime
|
||||
} else {
|
||||
orderComment.Content = mtwmComment.AddComment
|
||||
if updatedTime, err := utils.TryStr2Time(mtwmComment.CommentTime); err == nil {
|
||||
orderComment.CommentCreatedAt = updatedTime
|
||||
}
|
||||
}
|
||||
orderCommentList = append(orderCommentList, orderComment)
|
||||
}
|
||||
}
|
||||
return orderCommentList, nil
|
||||
}, storeIDs)
|
||||
task.Run()
|
||||
resultList, err2 := task.GetResult(0)
|
||||
if err = err2; err != nil {
|
||||
return err
|
||||
}
|
||||
var orderCommentList []*model.OrderComment
|
||||
for _, result := range resultList {
|
||||
orderComment := result.(*model.OrderComment)
|
||||
orderCommentList = append(orderCommentList, orderComment)
|
||||
}
|
||||
if len(orderCommentList) > 0 {
|
||||
err = partner.CurOrderManager.OnOrderComments(orderCommentList)
|
||||
}
|
||||
//var orderCommentList []*model.OrderComment
|
||||
//for _, result := range resultList {
|
||||
// orderComment := result.(*model.OrderComment)
|
||||
// orderCommentList = append(orderCommentList, orderComment)
|
||||
//}
|
||||
//if len(orderCommentList) > 0 {
|
||||
// err = partner.CurOrderManager.OnOrderComments(orderCommentList)
|
||||
//}
|
||||
return err
|
||||
}
|
||||
|
||||
// ReplyOrderComment 评价回复
|
||||
func (c *PurchaseHandler) ReplyOrderComment(ctx *jxcontext.Context, vendorOrgCode string, orderComment *model.OrderComment, replyComment string) (err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = getAPI(vendorOrgCode, orderComment.StoreID, orderComment.VendorStoreID).CommentAddReply(orderComment.VendorStoreID, utils.Str2Int64(orderComment.UserCommentID), replyComment)
|
||||
}
|
||||
//if globals.EnableMtwmStoreWrite {
|
||||
// err = getAPI(vendorOrgCode, orderComment.StoreID, orderComment.VendorStoreID).CommentAddReply(orderComment.VendorStoreID, utils.Str2Int64(orderComment.UserCommentID), replyComment)
|
||||
//}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package mtwm
|
||||
package tao_vegetable
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
199
business/partner/purchase/tao_vegetable/order_utils.go
Normal file
199
business/partner/purchase/tao_vegetable/order_utils.go
Normal 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(而不是空,0),1538103149不是特殊值,只是一个任意之前的时间,这样写可以处理
|
||||
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
|
||||
//}
|
||||
@@ -1,4 +1,4 @@
|
||||
package mtwm
|
||||
package tao_vegetable
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
@@ -6,8 +6,6 @@ import (
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/baseapi/utils/errlist"
|
||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler"
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
@@ -15,8 +13,6 @@ import (
|
||||
"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"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"math"
|
||||
"regexp"
|
||||
"strings"
|
||||
@@ -62,58 +58,58 @@ type tEbaiStoreInfo struct {
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (retVal *dao.StoreDetail, err error) {
|
||||
result, err := getAPIWithoutToken(vendorOrgCode).PoiGet(vendorStoreID)
|
||||
if err == nil {
|
||||
retVal = &dao.StoreDetail{
|
||||
Store: model.Store{
|
||||
Address: result.Address,
|
||||
Tel1: result.Phone,
|
||||
},
|
||||
}
|
||||
retVal.OriginalName = result.Name
|
||||
_, retVal.Name = jxutils.SplitStoreName(retVal.OriginalName, partner.StoreNameSeparator, globals.StoreNameMtwm)
|
||||
|
||||
retVal.SetOpTime(openTimeMtwm2JX(result.ShippingTime))
|
||||
retVal.Status = bizStatusMtwm2JX(result.OpenLevel, result.IsOnline)
|
||||
|
||||
tel2 := result.StandbyTel
|
||||
if tel2 != "" && tel2 != retVal.Tel1 {
|
||||
retVal.Tel2 = tel2
|
||||
}
|
||||
|
||||
retVal.Lng = int(result.Longitude)
|
||||
retVal.Lat = int(result.Latitude)
|
||||
|
||||
lng := jxutils.IntCoordinate2Standard(retVal.Lng)
|
||||
lat := jxutils.IntCoordinate2Standard(retVal.Lat)
|
||||
db := dao.GetDB()
|
||||
retVal.DistrictCode = api.AutonaviAPI.GetCoordinateDistrictCode(lng, lat)
|
||||
city, err := dao.GetPlaceByCode(db, result.CityID)
|
||||
retVal.CityName = city.Name
|
||||
retVal.CityCode = result.CityID
|
||||
|
||||
poiCode := result.AppPoiCode
|
||||
retVal.VendorStoreID = vendorStoreID
|
||||
retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||
var deliveryRangeInfo []map[string]interface{}
|
||||
deliveryRangeInfo, err = getAPIWithoutToken(vendorOrgCode).ShippingFetch(poiCode)
|
||||
if err != nil {
|
||||
deliveryRangeInfo, err = getAPIWithoutToken(vendorOrgCode).ShippingList(poiCode)
|
||||
}
|
||||
if err == nil {
|
||||
if len(deliveryRangeInfo) > 0 {
|
||||
retVal.DeliveryRange = rangeMtwm2JX(deliveryRangeInfo[0]["area"].(string))
|
||||
logisticsCode := utils.Interface2String(deliveryRangeInfo[0]["logistics_code"])
|
||||
if logisticsCode == "" || logisticsCode == mtwmapi.PeiSongTypeSelf {
|
||||
retVal.DeliveryType = scheduler.StoreDeliveryTypeByStore
|
||||
} else {
|
||||
retVal.DeliveryType = scheduler.StoreDeliveryTypeByPlatform
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal, nil
|
||||
}
|
||||
//result, err := getAPIWithoutToken(vendorOrgCode).PoiGet(vendorStoreID)
|
||||
//if err == nil {
|
||||
// retVal = &dao.StoreDetail{
|
||||
// Store: model.Store{
|
||||
// Address: result.Address,
|
||||
// Tel1: result.Phone,
|
||||
// },
|
||||
// }
|
||||
// retVal.OriginalName = result.Name
|
||||
// _, retVal.Name = jxutils.SplitStoreName(retVal.OriginalName, partner.StoreNameSeparator, globals.StoreNameMtwm)
|
||||
//
|
||||
// retVal.SetOpTime(openTimeMtwm2JX(result.ShippingTime))
|
||||
// retVal.Status = bizStatusMtwm2JX(result.OpenLevel, result.IsOnline)
|
||||
//
|
||||
// tel2 := result.StandbyTel
|
||||
// if tel2 != "" && tel2 != retVal.Tel1 {
|
||||
// retVal.Tel2 = tel2
|
||||
// }
|
||||
//
|
||||
// retVal.Lng = int(result.Longitude)
|
||||
// retVal.Lat = int(result.Latitude)
|
||||
//
|
||||
// lng := jxutils.IntCoordinate2Standard(retVal.Lng)
|
||||
// lat := jxutils.IntCoordinate2Standard(retVal.Lat)
|
||||
// db := dao.GetDB()
|
||||
// retVal.DistrictCode = api.AutonaviAPI.GetCoordinateDistrictCode(lng, lat)
|
||||
// city, err := dao.GetPlaceByCode(db, result.CityID)
|
||||
// retVal.CityName = city.Name
|
||||
// retVal.CityCode = result.CityID
|
||||
//
|
||||
// poiCode := result.AppPoiCode
|
||||
// retVal.VendorStoreID = vendorStoreID
|
||||
// retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
||||
// retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||
// var deliveryRangeInfo []map[string]interface{}
|
||||
// deliveryRangeInfo, err = getAPIWithoutToken(vendorOrgCode).ShippingFetch(poiCode)
|
||||
// if err != nil {
|
||||
// deliveryRangeInfo, err = getAPIWithoutToken(vendorOrgCode).ShippingList(poiCode)
|
||||
// }
|
||||
// if err == nil {
|
||||
// if len(deliveryRangeInfo) > 0 {
|
||||
// retVal.DeliveryRange = rangeMtwm2JX(deliveryRangeInfo[0]["area"].(string))
|
||||
// logisticsCode := utils.Interface2String(deliveryRangeInfo[0]["logistics_code"])
|
||||
// if logisticsCode == "" || logisticsCode == mtwmapi.PeiSongTypeSelf {
|
||||
// retVal.DeliveryType = scheduler.StoreDeliveryTypeByStore
|
||||
// } else {
|
||||
// retVal.DeliveryType = scheduler.StoreDeliveryTypeByPlatform
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return retVal, nil
|
||||
//}
|
||||
return nil, err
|
||||
}
|
||||
func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||||
@@ -121,103 +117,103 @@ func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName strin
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName string, params map[string]interface{}, storeDetail *dao.StoreDetail) (vendorStoreID string, err error) {
|
||||
vendorOrgCode := params["vendorOrgCode"].(string)
|
||||
if vendorOrgCode == "" {
|
||||
return "", fmt.Errorf("平台账号必传!")
|
||||
}
|
||||
cityName := storeDetail.CityName
|
||||
if strings.Contains(cityName, "市") {
|
||||
cityName = strings.Replace(cityName, "市", "", strings.LastIndex(cityName, "市"))
|
||||
}
|
||||
shippingTime := ""
|
||||
if storeDetail.OpenTime1 != 0 && storeDetail.CloseTime1 != 0 {
|
||||
shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.OpenTime1)
|
||||
shippingTime += "-"
|
||||
shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.CloseTime1)
|
||||
if storeDetail.OpenTime2 != 0 && storeDetail.CloseTime2 != 0 {
|
||||
shippingTime += ","
|
||||
shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.OpenTime2)
|
||||
shippingTime += "-"
|
||||
shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.CloseTime2)
|
||||
}
|
||||
}
|
||||
vendorInfoMap := storeVendorOrgCodeMap[vendorOrgCode]
|
||||
poiSettleSaveParam := &mtwmapi.PoiSettleSaveParam{
|
||||
Type: 1, //创建
|
||||
ApplyInfos: []*mtwmapi.ApplyInfo{
|
||||
&mtwmapi.ApplyInfo{
|
||||
AppPoiCode: utils.Int2Str(storeDetail.ID),
|
||||
SettlementID: utils.Str2Int(vendorInfoMap["settlementID"]), //结算ID,暂时还没得
|
||||
MultiPoiBasicInfo: &mtwmapi.MultiPoiBasicInfo{
|
||||
Name: params["vendorStoreName"].(string),
|
||||
City: cityName,
|
||||
Address: storeDetail.Address,
|
||||
Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lng)),
|
||||
Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lat)),
|
||||
FirstTag: vendorInfoMap["firstTag"],
|
||||
CallCenter: storeDetail.Tel1,
|
||||
ContactPhone: storeDetail.Tel1,
|
||||
ContactName: storeDetail.IDName,
|
||||
EcommerceAccountPhone: "18048531223", //石总的手机
|
||||
ShippingTime: shippingTime,
|
||||
},
|
||||
MultiPoiShippingInfo: &mtwmapi.MultiPoiShippingInfo{
|
||||
ShippingType: 5, //1:商家自配 5:美团专送,101:美团快送
|
||||
//美团专送不需要输下面这俩
|
||||
// MinPrice: params["minPrice"].(float64),
|
||||
// ShippingFee: params["shippingFee"].(float64),
|
||||
},
|
||||
//资质
|
||||
},
|
||||
},
|
||||
}
|
||||
switchCertType := func(certType string) (licensePic, licenseSocialCreditCode, licenseNumber, licenseLegalPerson, licenseAddress, licenseValidStartDate, licenseValidity string, isLongTime int) {
|
||||
switch certType {
|
||||
case "1":
|
||||
licensePic = storeDetail.StoreFrontPic
|
||||
case "2":
|
||||
licensePic = storeDetail.StoreInPic
|
||||
case "5":
|
||||
licensePic = storeDetail.Licence
|
||||
licenseSocialCreditCode = storeDetail.LicenceCode
|
||||
licenseNumber = storeDetail.LicenceCode
|
||||
licenseLegalPerson = storeDetail.LicenceOwnerName
|
||||
licenseAddress = storeDetail.LicenceAddress
|
||||
licenseValidStartDate = storeDetail.LicenceValid
|
||||
if storeDetail.LicenceExpire == "" {
|
||||
isLongTime = 1
|
||||
} else {
|
||||
licenseValidity = storeDetail.LicenceExpire
|
||||
}
|
||||
case "6":
|
||||
licensePic = storeDetail.Licence2Image
|
||||
licenseSocialCreditCode = storeDetail.Licence2Code
|
||||
licenseNumber = storeDetail.Licence2Code
|
||||
licenseLegalPerson = storeDetail.LicenceOwnerName
|
||||
licenseAddress = storeDetail.LicenceAddress
|
||||
licenseValidStartDate = storeDetail.Licence2Valid
|
||||
if storeDetail.Licence2Expire == "" {
|
||||
isLongTime = 1
|
||||
} else {
|
||||
licenseValidity = storeDetail.Licence2Expire
|
||||
}
|
||||
}
|
||||
return licensePic, licenseSocialCreditCode, licenseNumber, licenseLegalPerson, licenseAddress, licenseValidStartDate, licenseValidity, isLongTime
|
||||
}
|
||||
var certs []*mtwmapi.MultiPoiCertInfo
|
||||
for _, v := range strings.Split(vendorInfoMap["poiCert"], ",") {
|
||||
cert := &mtwmapi.MultiPoiCertInfo{
|
||||
Type: utils.Str2Int(v),
|
||||
LicenseName: poiCertMap[v],
|
||||
}
|
||||
cert.LicensePic, cert.LicenseSocialCreditCode, cert.LicenseNumber, cert.LicenseLegalPerson, cert.LicenseAddress, cert.LicenseValidStartDate, cert.LicenseValidity, cert.IsLongTime = switchCertType(v)
|
||||
certs = append(certs, cert)
|
||||
}
|
||||
poiSettleSaveParam.ApplyInfos[0].MultiPoiCertInfos = certs
|
||||
mtapi := getAPIWithoutToken(vendorOrgCode)
|
||||
if vendorStoreID, err = mtapi.PoiSettleSave(poiSettleSaveParam); err == nil {
|
||||
err = mtapi.PoiSettleAuditSubmit([]string{vendorStoreID})
|
||||
}
|
||||
//vendorOrgCode := params["vendorOrgCode"].(string)
|
||||
//if vendorOrgCode == "" {
|
||||
// return "", fmt.Errorf("平台账号必传!")
|
||||
//}
|
||||
//cityName := storeDetail.CityName
|
||||
//if strings.Contains(cityName, "市") {
|
||||
// cityName = strings.Replace(cityName, "市", "", strings.LastIndex(cityName, "市"))
|
||||
//}
|
||||
//shippingTime := ""
|
||||
//if storeDetail.OpenTime1 != 0 && storeDetail.CloseTime1 != 0 {
|
||||
// shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.OpenTime1)
|
||||
// shippingTime += "-"
|
||||
// shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.CloseTime1)
|
||||
// if storeDetail.OpenTime2 != 0 && storeDetail.CloseTime2 != 0 {
|
||||
// shippingTime += ","
|
||||
// shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.OpenTime2)
|
||||
// shippingTime += "-"
|
||||
// shippingTime += jxutils.JxOperationTime2StrTime(storeDetail.CloseTime2)
|
||||
// }
|
||||
//}
|
||||
//vendorInfoMap := storeVendorOrgCodeMap[vendorOrgCode]
|
||||
//poiSettleSaveParam := &mtwmapi.PoiSettleSaveParam{
|
||||
// Type: 1, //创建
|
||||
// ApplyInfos: []*mtwmapi.ApplyInfo{
|
||||
// &mtwmapi.ApplyInfo{
|
||||
// AppPoiCode: utils.Int2Str(storeDetail.ID),
|
||||
// SettlementID: utils.Str2Int(vendorInfoMap["settlementID"]), //结算ID,暂时还没得
|
||||
// MultiPoiBasicInfo: &mtwmapi.MultiPoiBasicInfo{
|
||||
// Name: params["vendorStoreName"].(string),
|
||||
// City: cityName,
|
||||
// Address: storeDetail.Address,
|
||||
// Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lng)),
|
||||
// Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lat)),
|
||||
// FirstTag: vendorInfoMap["firstTag"],
|
||||
// CallCenter: storeDetail.Tel1,
|
||||
// ContactPhone: storeDetail.Tel1,
|
||||
// ContactName: storeDetail.IDName,
|
||||
// EcommerceAccountPhone: "18048531223", //石总的手机
|
||||
// ShippingTime: shippingTime,
|
||||
// },
|
||||
// MultiPoiShippingInfo: &mtwmapi.MultiPoiShippingInfo{
|
||||
// ShippingType: 5, //1:商家自配 5:美团专送,101:美团快送
|
||||
// //美团专送不需要输下面这俩
|
||||
// // MinPrice: params["minPrice"].(float64),
|
||||
// // ShippingFee: params["shippingFee"].(float64),
|
||||
// },
|
||||
// //资质
|
||||
// },
|
||||
// },
|
||||
//}
|
||||
//switchCertType := func(certType string) (licensePic, licenseSocialCreditCode, licenseNumber, licenseLegalPerson, licenseAddress, licenseValidStartDate, licenseValidity string, isLongTime int) {
|
||||
// switch certType {
|
||||
// case "1":
|
||||
// licensePic = storeDetail.StoreFrontPic
|
||||
// case "2":
|
||||
// licensePic = storeDetail.StoreInPic
|
||||
// case "5":
|
||||
// licensePic = storeDetail.Licence
|
||||
// licenseSocialCreditCode = storeDetail.LicenceCode
|
||||
// licenseNumber = storeDetail.LicenceCode
|
||||
// licenseLegalPerson = storeDetail.LicenceOwnerName
|
||||
// licenseAddress = storeDetail.LicenceAddress
|
||||
// licenseValidStartDate = storeDetail.LicenceValid
|
||||
// if storeDetail.LicenceExpire == "" {
|
||||
// isLongTime = 1
|
||||
// } else {
|
||||
// licenseValidity = storeDetail.LicenceExpire
|
||||
// }
|
||||
// case "6":
|
||||
// licensePic = storeDetail.Licence2Image
|
||||
// licenseSocialCreditCode = storeDetail.Licence2Code
|
||||
// licenseNumber = storeDetail.Licence2Code
|
||||
// licenseLegalPerson = storeDetail.LicenceOwnerName
|
||||
// licenseAddress = storeDetail.LicenceAddress
|
||||
// licenseValidStartDate = storeDetail.Licence2Valid
|
||||
// if storeDetail.Licence2Expire == "" {
|
||||
// isLongTime = 1
|
||||
// } else {
|
||||
// licenseValidity = storeDetail.Licence2Expire
|
||||
// }
|
||||
// }
|
||||
// return licensePic, licenseSocialCreditCode, licenseNumber, licenseLegalPerson, licenseAddress, licenseValidStartDate, licenseValidity, isLongTime
|
||||
//}
|
||||
//var certs []*mtwmapi.MultiPoiCertInfo
|
||||
//for _, v := range strings.Split(vendorInfoMap["poiCert"], ",") {
|
||||
// cert := &mtwmapi.MultiPoiCertInfo{
|
||||
// Type: utils.Str2Int(v),
|
||||
// LicenseName: poiCertMap[v],
|
||||
// }
|
||||
// cert.LicensePic, cert.LicenseSocialCreditCode, cert.LicenseNumber, cert.LicenseLegalPerson, cert.LicenseAddress, cert.LicenseValidStartDate, cert.LicenseValidity, cert.IsLongTime = switchCertType(v)
|
||||
// certs = append(certs, cert)
|
||||
//}
|
||||
//poiSettleSaveParam.ApplyInfos[0].MultiPoiCertInfos = certs
|
||||
//mtapi := getAPIWithoutToken(vendorOrgCode)
|
||||
//if vendorStoreID, err = mtapi.PoiSettleSave(poiSettleSaveParam); err == nil {
|
||||
// err = mtapi.PoiSettleAuditSubmit([]string{vendorStoreID})
|
||||
//}
|
||||
return vendorStoreID, err
|
||||
}
|
||||
|
||||
@@ -226,75 +222,76 @@ func (p *PurchaseHandler) DeleteStore(db *dao.DaoDB, storeID int, userName strin
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||||
var name string
|
||||
if db == nil {
|
||||
db = dao.GetDB()
|
||||
}
|
||||
mtapi := getAPI(getStoreVendorOrgCode(storeID), storeID, "")
|
||||
//获取本地store信息
|
||||
storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDMTWM, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
errList := errlist.New()
|
||||
//获取平台store信息
|
||||
remoteStoreInfo, err := mtapi.PoiGet(storeDetail.VendorStoreID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
mergedStoreStatus := jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus)
|
||||
name = remoteStoreInfo.Name
|
||||
if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 {
|
||||
if storeDetail.VendorStoreName != "" {
|
||||
name = storeDetail.VendorStoreName
|
||||
}
|
||||
// else {
|
||||
// name = jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM)
|
||||
// }
|
||||
}
|
||||
store := fmt.Sprintf("门店id:%d,门店名称:%s,第三方门店状态:%d,本地修改前门店状态%d,本地门店修改后状态:%d,第三方平台Id(美团):%s", storeID, remoteStoreInfo.Name, remoteStoreInfo.IsOnline, storeDetail.Status, mergedStoreStatus, storeDetail.VendorOrgCode)
|
||||
event.AddOperateEvent(jxcontext.AdminCtx, jxcontext.AdminCtx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
// openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus)
|
||||
//TODO 美团暂时不用那个电话
|
||||
phone := storeDetail.Tel1
|
||||
// if storeDetail.MarketManPhone != "" {
|
||||
// phone = storeDetail.MarketManPhone
|
||||
// } else {
|
||||
// phone = model.VendorStoreTel
|
||||
// }
|
||||
params := map[string]interface{}{
|
||||
"name": name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM),
|
||||
"address": storeDetail.Address, // 美团好像地址也不能改的?
|
||||
"longitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Longitude)),
|
||||
"latitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Latitude)),
|
||||
"phone": phone,
|
||||
"shipping_fee": remoteStoreInfo.ShippingFee,
|
||||
"shipping_time": remoteStoreInfo.ShippingTime,
|
||||
"open_level": remoteStoreInfo.OpenLevel,
|
||||
"is_online": remoteStoreInfo.IsOnline,
|
||||
"third_tag_name": remoteStoreInfo.ThirdTagName,
|
||||
"promotion_info": storeDetail.PromoteInfo,
|
||||
}
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
errList.AddErr(mtapi.PoiSave(storeDetail.VendorStoreID, params))
|
||||
}
|
||||
// PoiSave有时会报错:商家已接入美团配送,不可修改门店配送相关信息,这里放弃信息修改
|
||||
// if err != nil {
|
||||
// if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeCanNotModifyStoreDeliveryInfo), nil) {
|
||||
// if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||
// err = p.UpdateStoreStatus(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, mergedStoreStatus)
|
||||
// } else {
|
||||
// err = nil
|
||||
// }
|
||||
// }
|
||||
// errList.AddErr(err)
|
||||
// }
|
||||
if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||
errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, mergedStoreStatus))
|
||||
}
|
||||
errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, storeDetail.GetOpTimeList()))
|
||||
// errList.AddErr(p.UpdateStoreBoxFee(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID))
|
||||
return errList.GetErrListAsOne()
|
||||
//var name string
|
||||
//if db == nil {
|
||||
// db = dao.GetDB()
|
||||
//}
|
||||
//mtapi := getAPI(getStoreVendorOrgCode(storeID), storeID, "")
|
||||
////获取本地store信息
|
||||
//storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDMTWM, "")
|
||||
//if err != nil {
|
||||
// return err
|
||||
//}
|
||||
//errList := errlist.New()
|
||||
////获取平台store信息
|
||||
//remoteStoreInfo, err := mtapi.PoiGet(storeDetail.VendorStoreID)
|
||||
//if err != nil {
|
||||
// return err
|
||||
//}
|
||||
//mergedStoreStatus := jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus)
|
||||
//name = remoteStoreInfo.Name
|
||||
//if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 {
|
||||
// if storeDetail.VendorStoreName != "" {
|
||||
// name = storeDetail.VendorStoreName
|
||||
// }
|
||||
// // else {
|
||||
// // name = jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM)
|
||||
// // }
|
||||
//}
|
||||
//store := fmt.Sprintf("门店id:%d,门店名称:%s,第三方门店状态:%d,本地修改前门店状态%d,本地门店修改后状态:%d,第三方平台Id(美团):%s", storeID, remoteStoreInfo.Name, remoteStoreInfo.IsOnline, storeDetail.Status, mergedStoreStatus, storeDetail.VendorOrgCode)
|
||||
//event.AddOperateEvent(jxcontext.AdminCtx, jxcontext.AdminCtx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
//// openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus)
|
||||
////TODO 美团暂时不用那个电话
|
||||
//phone := storeDetail.Tel1
|
||||
//// if storeDetail.MarketManPhone != "" {
|
||||
//// phone = storeDetail.MarketManPhone
|
||||
//// } else {
|
||||
//// phone = model.VendorStoreTel
|
||||
//// }
|
||||
//params := map[string]interface{}{
|
||||
// "name": name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM),
|
||||
// "address": storeDetail.Address, // 美团好像地址也不能改的?
|
||||
// "longitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Longitude)),
|
||||
// "latitude": jxutils.IntCoordinate2Standard(int(remoteStoreInfo.Latitude)),
|
||||
// "phone": phone,
|
||||
// "shipping_fee": remoteStoreInfo.ShippingFee,
|
||||
// "shipping_time": remoteStoreInfo.ShippingTime,
|
||||
// "open_level": remoteStoreInfo.OpenLevel,
|
||||
// "is_online": remoteStoreInfo.IsOnline,
|
||||
// "third_tag_name": remoteStoreInfo.ThirdTagName,
|
||||
// "promotion_info": storeDetail.PromoteInfo,
|
||||
//}
|
||||
//if globals.EnableMtwmStoreWrite {
|
||||
// errList.AddErr(mtapi.PoiSave(storeDetail.VendorStoreID, params))
|
||||
//}
|
||||
//// PoiSave有时会报错:商家已接入美团配送,不可修改门店配送相关信息,这里放弃信息修改
|
||||
//// if err != nil {
|
||||
//// if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeCanNotModifyStoreDeliveryInfo), nil) {
|
||||
//// if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||
//// err = p.UpdateStoreStatus(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, mergedStoreStatus)
|
||||
//// } else {
|
||||
//// err = nil
|
||||
//// }
|
||||
//// }
|
||||
//// errList.AddErr(err)
|
||||
//// }
|
||||
//if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||
// errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, mergedStoreStatus))
|
||||
//}
|
||||
//errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID, storeDetail.GetOpTimeList()))
|
||||
//// errList.AddErr(p.UpdateStoreBoxFee(jxcontext.AdminCtx, storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID))
|
||||
//return errList.GetErrListAsOne()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
|
||||
@@ -357,10 +354,10 @@ func (p *PurchaseHandler) onStoreStatusChanged(msg *mtwmapi.CallbackMsg) (respon
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (storeStatus int, err error) {
|
||||
result, err := getAPI(vendorOrgCode, storeID, "").PoiGet(vendorStoreID)
|
||||
if err == nil {
|
||||
return bizStatusMtwm2JX(result.OpenLevel, result.IsOnline), nil
|
||||
}
|
||||
//result, err := getAPI(vendorOrgCode, storeID, "").PoiGet(vendorStoreID)
|
||||
//if err == nil {
|
||||
// return bizStatusMtwm2JX(result.OpenLevel, result.IsOnline), nil
|
||||
//}
|
||||
return 0, err
|
||||
}
|
||||
|
||||
@@ -369,30 +366,30 @@ func (p *PurchaseHandler) EnableAutoAcceptOrder(ctx *jxcontext.Context, vendorOr
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) {
|
||||
openLevel, isOnline := bizStatusJX2Mtwm(status)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
if isOnline != mtwmapi.PoiStatusOnline {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOffline(vendorStoreID)
|
||||
} else {
|
||||
if err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOnline(vendorStoreID); err == nil { // 这个函数成功返回也并不表示上线成功。。。
|
||||
remoteStoreInfo, err2 := getAPI(vendorOrgCode, storeID, vendorStoreID).PoiGet(vendorStoreID)
|
||||
if err = err2; err != nil {
|
||||
return err
|
||||
}
|
||||
if remoteStoreInfo.IsOnline == mtwmapi.PoiStatusOnline {
|
||||
if openLevel == mtwmapi.PoiOpenLevelHaveRest {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiClose(vendorStoreID)
|
||||
} else {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOpen(vendorStoreID)
|
||||
}
|
||||
} else {
|
||||
err = errors.New("门店还未上线,不能修改营业状态")
|
||||
}
|
||||
store := fmt.Sprintf("美团外卖回调门店改变回调(营业状态/审核状态):门店id:%s,美团门店状态:%d.[121营业,120休息,18上线,19下线],本地修改后状态[%d]", vendorStoreID, remoteStoreInfo.OpenLevel, openLevel)
|
||||
event.AddOperateEvent(ctx, ctx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
}
|
||||
}
|
||||
}
|
||||
//openLevel, isOnline := bizStatusJX2Mtwm(status)
|
||||
//if globals.EnableMtwmStoreWrite {
|
||||
// if isOnline != mtwmapi.PoiStatusOnline {
|
||||
// err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOffline(vendorStoreID)
|
||||
// } else {
|
||||
// if err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOnline(vendorStoreID); err == nil { // 这个函数成功返回也并不表示上线成功。。。
|
||||
// remoteStoreInfo, err2 := getAPI(vendorOrgCode, storeID, vendorStoreID).PoiGet(vendorStoreID)
|
||||
// if err = err2; err != nil {
|
||||
// return err
|
||||
// }
|
||||
// if remoteStoreInfo.IsOnline == mtwmapi.PoiStatusOnline {
|
||||
// if openLevel == mtwmapi.PoiOpenLevelHaveRest {
|
||||
// err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiClose(vendorStoreID)
|
||||
// } else {
|
||||
// err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOpen(vendorStoreID)
|
||||
// }
|
||||
// } else {
|
||||
// err = errors.New("门店还未上线,不能修改营业状态")
|
||||
// }
|
||||
// store := fmt.Sprintf("美团外卖回调门店改变回调(营业状态/审核状态):门店id:%s,美团门店状态:%d.[121营业,120休息,18上线,19下线],本地修改后状态[%d]", vendorStoreID, remoteStoreInfo.OpenLevel, openLevel)
|
||||
// event.AddOperateEvent(ctx, ctx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -440,24 +437,24 @@ func constrainOpTimeList(opTimeList, validOpTimeList []int16) (newOpTimeList []i
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, opTimeList []int16) (err error) {
|
||||
shippingTime := openTimeJX2Mtwm(opTimeList)
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiShipTimeUpdate(vendorStoreID, shippingTime)
|
||||
if err != nil {
|
||||
shippingTime = ""
|
||||
if validOpTimeList := getOpTimeListFromErr(err); len(validOpTimeList) > 0 {
|
||||
shippingTime = openTimeJX2Mtwm(constrainOpTimeList(opTimeList, validOpTimeList))
|
||||
}
|
||||
if shippingTime != "" {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiShipTimeUpdate(vendorStoreID, shippingTime)
|
||||
}
|
||||
}
|
||||
}
|
||||
//shippingTime := openTimeJX2Mtwm(opTimeList)
|
||||
//if globals.EnableMtwmStoreWrite {
|
||||
// err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiShipTimeUpdate(vendorStoreID, shippingTime)
|
||||
// if err != nil {
|
||||
// shippingTime = ""
|
||||
// if validOpTimeList := getOpTimeListFromErr(err); len(validOpTimeList) > 0 {
|
||||
// shippingTime = openTimeJX2Mtwm(constrainOpTimeList(opTimeList, validOpTimeList))
|
||||
// }
|
||||
// if shippingTime != "" {
|
||||
// err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiShipTimeUpdate(vendorStoreID, shippingTime)
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrgCode string) (vendorStoreIDs []string, err error) {
|
||||
vendorStoreIDs, err = getAPIWithoutToken(vendorOrgCode).PoiGetIDs()
|
||||
//vendorStoreIDs, err = getAPIWithoutToken(vendorOrgCode).PoiGetIDs()
|
||||
return vendorStoreIDs, err
|
||||
}
|
||||
|
||||
@@ -466,20 +463,20 @@ func (c *PurchaseHandler) UpdateStoreCustomID(ctx *jxcontext.Context, vendorOrgC
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreBoxFee(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (err error) {
|
||||
boxFee, err := dao.GetSysConfigAsInt64(dao.GetDB(), model.ConfigSysMtwmBoxFee)
|
||||
if err == nil {
|
||||
if globals.EnableMtwmStoreWrite && globals.IsProductEnv() {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PackagePriceUpdate(vendorStoreID, 1, int(boxFee))
|
||||
}
|
||||
}
|
||||
//boxFee, err := dao.GetSysConfigAsInt64(dao.GetDB(), model.ConfigSysMtwmBoxFee)
|
||||
//if err == nil {
|
||||
// if globals.EnableMtwmStoreWrite && globals.IsProductEnv() {
|
||||
// err = getAPI(vendorOrgCode, storeID, vendorStoreID).PackagePriceUpdate(vendorStoreID, 1, int(boxFee))
|
||||
// }
|
||||
//}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
|
||||
if lineStatus == model.StoreStatusOpened {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOnline(vendorStoreID)
|
||||
} else {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOffline(vendorStoreID)
|
||||
}
|
||||
//if lineStatus == model.StoreStatusOpened {
|
||||
// err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOnline(vendorStoreID)
|
||||
//} else {
|
||||
// err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOffline(vendorStoreID)
|
||||
//}
|
||||
return err
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
package mtwm
|
||||
package tao_vegetable
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
//}
|
||||
|
||||
@@ -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)
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user