Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -944,6 +944,7 @@ func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.Da
|
||||
if db == nil {
|
||||
db = dao.GetDB()
|
||||
}
|
||||
|
||||
isDuplicated, err = addOrderOrWaybillStatus(orderStatus, db)
|
||||
if err == nil && !isDuplicated && (orderStatus.Status != model.OrderStatusUnknown && orderStatus.Status != model.OrderStatusMsg) {
|
||||
// todo 加这个代码的原因是,抖店运单取消会去将本地的订单状态设置为取消,跳过,不修改本地订单状态
|
||||
@@ -994,6 +995,7 @@ func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.Da
|
||||
updateFields = append(updateFields, "LockStatus", "LockStatusTime", "Flag")
|
||||
}
|
||||
}
|
||||
|
||||
utils.CallFuncLogError(func() error {
|
||||
_, err = db.Db.Update(order, updateFields...)
|
||||
return err
|
||||
@@ -1010,6 +1012,7 @@ func (c *OrderManager) addOrderStatus(orderStatus *model.OrderStatus, db *dao.Da
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return isDuplicated, order, err
|
||||
}
|
||||
|
||||
@@ -2655,7 +2658,7 @@ func UpdateTiktokShopTotalMoney() {
|
||||
var goodsOrders []*model.GoodsOrder
|
||||
|
||||
sql := `SELECT g.* FROM goods_order g WHERE g.order_created_at >= ? AND g.status = ? AND g.vendor_id = ? AND total_shop_money = ? ORDER BY g.order_created_at desc`
|
||||
orderCreateTime := time.Now().AddDate(0, 0, -15)
|
||||
orderCreateTime := time.Now().AddDate(0, 0, -50)
|
||||
param := []interface{}{orderCreateTime, model.OrderStatusFinished, model.VendorIDDD, model.NO}
|
||||
if err := dao.GetRows(db, &goodsOrders, sql, param...); err != nil {
|
||||
globals.SugarLogger.Debugf("Update GoodsOrder Total shop money err %s", err)
|
||||
@@ -2695,6 +2698,7 @@ func UpdateTiktokShopTotalMoney() {
|
||||
}
|
||||
}
|
||||
}
|
||||
globals.SugarLogger.Debugf("vendorOrderId =========: %s , TotalShopMoney := %d", v.VendorOrderID, v.TotalShopMoney)
|
||||
if _, err := dao.UpdateEntity(db, v, "TotalShopMoney", "NewEarningPrice"); err != nil {
|
||||
globals.SugarLogger.Errorf("更新本地订单结算信息错误 : %s", err)
|
||||
continue
|
||||
|
||||
@@ -928,12 +928,41 @@ func StoreOpenAll(ctx *jxcontext.Context) {
|
||||
// globals.SugarLogger.Debug("StoreOpenAll skuID is Complete")
|
||||
//}
|
||||
|
||||
// 对比本地商品和平台商品差异(价格和规格),不同的重新同步
|
||||
func CheckSkuDiffBetweenJxAndVendor2(ctx *jxcontext.Context, vendorIDList []int, storeIDList []int) {
|
||||
//db := dao.GetDB()
|
||||
// CheckSkuDiffBetweenJxAndVendor2 对比本地商品和平台商品差异(价格和规格),不同的重新同步
|
||||
func CheckSkuDiffBetweenJxAndVendor2(ctx *jxcontext.Context, vendorIDList []int, storeIDList []int) error {
|
||||
//var (
|
||||
// db = dao.GetDB()
|
||||
// errList = make([]error, 0, 0)
|
||||
//)
|
||||
//for _, v := range storeIDList {
|
||||
// //storeMapList, err := dao.GetStoresMapList(db, vendorIDList, []int{v}, []int{model.StoreStatusOpened, model.StoreStatusHaveRest, model.StoreStatusClosed}, status, model.StoreIsSyncYes, "", "", "")
|
||||
// // 1.判断本地门店是否开启了同步,未开启的跳过
|
||||
// storeMapList, err := dao.GetStoresMapList(db, vendorIDList, []int{v}, []int{model.StoreStatusOpened, model.StoreStatusHaveRest, model.StoreStatusClosed}, model.StoreStatusOpened, model.StoreIsSyncYes, "", "", "")
|
||||
// if err != nil {
|
||||
// errList = append(errList, fmt.Errorf("门店id[%d]查询异常:%v", v, err))
|
||||
// continue
|
||||
// }
|
||||
// if len(storeMapList) == model.NO {
|
||||
// errList = append(errList, fmt.Errorf("门店id[%d],未绑定平台账号或者同步未打开", v))
|
||||
// continue
|
||||
// }
|
||||
// // 2.查询本地商品列表,存储sku_id,vendor_price,weight
|
||||
// skuList, skuErr := dao.GetStoreSkuBindPriceAndWeight(db, v)
|
||||
// if len(skuList) == model.NO || skuErr != nil {
|
||||
// errList = append(errList, fmt.Errorf("门店id[%d],商品为空或错误:%v", v, skuErr))
|
||||
// continue
|
||||
// }
|
||||
//
|
||||
// // 查询平台门店所有商品
|
||||
// for _, storeMap := range storeMapList {
|
||||
// singleStoreHandler := partner.GetPurchasePlatformFromVendorID(storeMap.VendorID).(partner.ISingleStoreStoreSkuHandler)
|
||||
// // 淘宝需要storeSkuList有值
|
||||
// vendorSkuInfoList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, v, storeMap.VendorStoreID, nil)
|
||||
//
|
||||
// }
|
||||
// // 3.比对价格和规格重量,不同的以本地为基础开始重新同步
|
||||
//
|
||||
//}
|
||||
return nil
|
||||
}
|
||||
|
||||
//入口函数,校验本地商品京西和其他平台的差异
|
||||
|
||||
@@ -45,7 +45,7 @@ func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromVendorStoreId, toStoreId
|
||||
switch step {
|
||||
case 1:
|
||||
// 1.加载门店商品,删除商品.当分类下没有商品时.删除分类
|
||||
//errs := LoadingStoreSkuList(ctx, toApi, toStore.VendorStoreID)
|
||||
// errs := LoadingStoreSkuList(ctx, toApi, toStore.VendorStoreID)
|
||||
//if errs != nil && len(errs) > 0 {
|
||||
// return nil, errs[0]
|
||||
//}
|
||||
|
||||
@@ -194,8 +194,16 @@ func Init() {
|
||||
ScheduleTimerFunc("UpdateTiktokShopTotalMoney", func() {
|
||||
orderman.UpdateTiktokShopTotalMoney()
|
||||
}, []string{
|
||||
"03:35:00",
|
||||
"11:05:00",
|
||||
"03:00:00",
|
||||
"05:00:00",
|
||||
"07:00:00",
|
||||
"09:00:00",
|
||||
"11:00:00",
|
||||
"14:00:00",
|
||||
"16:00:00",
|
||||
"19:00:00",
|
||||
"21:00:00",
|
||||
"01:00:00",
|
||||
})
|
||||
/// 更新淘鲜达结算信息
|
||||
ScheduleTimerFunc("UpdateTaoTotalMoney", func() {
|
||||
|
||||
@@ -2105,3 +2105,35 @@ func GetStoresSkusForManageState(db *DaoDB, storeID, status int) (storeSkuList [
|
||||
err = GetRows(db, &storeSkuList, sql, sqlParams...)
|
||||
return storeSkuList, err
|
||||
}
|
||||
|
||||
type SkuPriceAndWeight struct {
|
||||
SkuId int64 `orm:"column(sku_id)" json:"skuId"` // 商品本地id
|
||||
MtwmPrice int64 `orm:"column(mtwm_price)" json:"mtwmPrice"` // 美团平台价
|
||||
JdPrice int64 `orm:"column(jd_price)" json:"jdPrice"` // 京东平台价
|
||||
EbaiPrice int64 `orm:"column(ebai_price)" json:"ebaiPrice"` // 饿百平台价
|
||||
TaoPrice int64 `orm:"column(tao_price)" json:"taoPrice"` // 淘宝平台价
|
||||
DdPrice int64 `orm:"column(dd_price)" json:"ddPrice"` // 抖店平台价
|
||||
Weight int64 `orm:"column(weight)" json:"weight"` // 商品规格重量
|
||||
}
|
||||
|
||||
// GetStoreSkuBindPriceAndWeight 获取门店绑定商品平台价格和规格
|
||||
func GetStoreSkuBindPriceAndWeight(db *DaoDB, storeId int) (skuList map[string]*SkuPriceAndWeight, err error) {
|
||||
sql := ` SELECT b.sku_id,b.mtwm_price,b.jd_price,b.ebai_price,b.tao_price,b.dd_price,s.weight FROM store_sku_bind b
|
||||
INNER JOIN sku s ON s.id = b.sku_id
|
||||
WHERE b.store_id = ? AND b.deleted_at = ?
|
||||
`
|
||||
result := make([]*SkuPriceAndWeight, 0, 0)
|
||||
sqlParams := []interface{}{storeId, utils.DefaultTimeValue}
|
||||
if err = GetRows(db, &result, sql, sqlParams...); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(result) != model.NO {
|
||||
skuMap := make(map[string]*SkuPriceAndWeight, 0)
|
||||
for _, v := range result {
|
||||
skuMap[utils.Int64ToStr(v.SkuId)] = v
|
||||
}
|
||||
return skuMap, nil
|
||||
}
|
||||
return nil, errors.New("门店不存在商品数据")
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||
tiktokStatusPush(order, msg.OrderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
tiktokStatusPush(order, msg.OrderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), goodsOrder.VendorOrgCode)
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if goodsOrder.VendorID == model.VendorIDTaoVegetable && msg.OrderStatus == dadaapi.OrderStatusAccepted {
|
||||
@@ -129,7 +129,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
}
|
||||
|
||||
// 抖音订单状态回传
|
||||
func tiktokStatusPush(order *model.Waybill, status int, lng, lat string) {
|
||||
func tiktokStatusPush(order *model.Waybill, status int, lng, lat, vendorOrgCode string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
@@ -177,7 +177,7 @@ func tiktokStatusPush(order *model.Waybill, status int, lng, lat string) {
|
||||
result.LogisticsStatus = 0
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
delivery.PullTiktokRiderInfo(result, vendorOrgCode)
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) callbackMsg2Waybill(msg *dadaapi.CallbackMsg) (retVal *model.Waybill, goods *model.GoodsOrder) {
|
||||
|
||||
@@ -311,7 +311,7 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify, resultParam *fnpsapi.ShortSta
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), order.VendorOrgCode)
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if good.VendorID == model.VendorIDTaoVegetable && cc.OrderStatus == fnpsapi.OrderStatusAssigned {
|
||||
@@ -322,7 +322,7 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify, resultParam *fnpsapi.ShortSta
|
||||
}
|
||||
|
||||
// 抖音订单状态回传
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64, lng, lat string) {
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64, lng, lat, vendorOrgCode string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
@@ -361,7 +361,7 @@ func tiktokStatusPush(order *model.Waybill, orderStatus int64, lng, lat string)
|
||||
result.LogisticsStatus = 0
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
delivery.PullTiktokRiderInfo(result, vendorOrgCode)
|
||||
}
|
||||
|
||||
// 异常报备
|
||||
|
||||
@@ -142,7 +142,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||
pushMTPSToTiktok(msg.Status, order, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
pushMTPSToTiktok(msg.Status, order, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), goodsOrder.VendorOrgCode)
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if goodsOrder.VendorID == model.VendorIDTaoVegetable && msg.Status == mtpsapi.OrderStatusAccepted {
|
||||
@@ -153,7 +153,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
return err
|
||||
}
|
||||
|
||||
func pushMTPSToTiktok(msgStatus int, order *model.Waybill, lng, lat string) {
|
||||
func pushMTPSToTiktok(msgStatus int, order *model.Waybill, lng, lat, vendorOrgCode string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
@@ -186,11 +186,12 @@ func pushMTPSToTiktok(msgStatus int, order *model.Waybill, lng, lat string) {
|
||||
result.LogisticsStatus = 0
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
if result.LogisticsStatus == model.WaybillStatusCourierArrived {
|
||||
result.LogisticsStatus = model.WaybillStatusDelivering
|
||||
result.LogisticsContext = model.RiderGetOrderDelivering
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
delivery.PullTiktokRiderInfo(result, vendorOrgCode)
|
||||
} else {
|
||||
delivery.PullTiktokRiderInfo(result, vendorOrgCode)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -230,7 +230,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
case model.VendorIDWSC: // 微盟微商城
|
||||
continue
|
||||
case model.VendorIDDD: // 抖店小时达
|
||||
riderInfo.LogisticsProviderCode = utils.JxVendorId2TiktokCode(v.WaybillVendorID)
|
||||
riderInfo.LogisticsProviderCode = tiktok_api.JxVendorId2TiktokCode(v.WaybillVendorID)
|
||||
riderInfo.ThirdCarrierOrderId = v.VendorOrderID
|
||||
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
|
||||
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, utils.Struct2Map(riderInfo, "", true)); err != nil {
|
||||
@@ -261,7 +261,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
return
|
||||
}
|
||||
|
||||
func PullTiktokRiderInfo(riderInfo *utils.RiderInfo) {
|
||||
func PullTiktokRiderInfo(riderInfo *utils.RiderInfo, vendorOrgCode string) {
|
||||
switch riderInfo.LogisticsStatus {
|
||||
case 5: // 呼叫骑手
|
||||
riderInfo.LogisticsStatus = 0
|
||||
@@ -304,7 +304,7 @@ func PullTiktokRiderInfo(riderInfo *utils.RiderInfo) {
|
||||
// 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号!
|
||||
paramsMap := utils.Struct2Map(riderInfo, "", true)
|
||||
if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil {
|
||||
if err := handler.GetOrderRider("", "", paramsMap); err != nil {
|
||||
if err := handler.GetOrderRider(vendorOrgCode, "", paramsMap); err != nil {
|
||||
globals.SugarLogger.Errorf("PullTiktokRiderInfo Err %s", err.Error())
|
||||
}
|
||||
}
|
||||
@@ -439,7 +439,7 @@ func UpdateFakeWayBillToTiktok() {
|
||||
if riderInfo.LogisticsContext != model.RiderGetOrderDeliverFailed && riderInfo.LogisticsContext != model.RiderGetOrderDeliverOther && riderInfo.LogisticsContext != model.RiderWaitRider {
|
||||
riderInfo.LogisticsContext = fmt.Sprintf(riderInfo.LogisticsContext, riderInfo.CourierName, riderInfo.CourierPhone)
|
||||
}
|
||||
riderInfo.LogisticsProviderCode = utils.JxVendorId2TiktokCode(fakeWayBill[i].WaybillVendorID)
|
||||
riderInfo.LogisticsProviderCode = tiktok_api.JxVendorId2TiktokCode(fakeWayBill[i].WaybillVendorID)
|
||||
|
||||
// 推送骑手信息
|
||||
paramsMap := utils.Struct2Map(riderInfo, "", true)
|
||||
|
||||
@@ -441,7 +441,7 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), good.VendorOrgCode)
|
||||
case model.VendorIDTaoVegetable, model.VendorIDMTWM:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if good.VendorID == model.VendorIDTaoVegetable && orderStatus == sfps2.OrderStatusTakeOrder {
|
||||
@@ -451,7 +451,7 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons
|
||||
return sfps2.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64, lng, lat string) {
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64, lng, lat, vendorOrgCode string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
@@ -489,7 +489,7 @@ func tiktokStatusPush(order *model.Waybill, orderStatus int64, lng, lat string)
|
||||
result.LogisticsStatus = 0
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
delivery.PullTiktokRiderInfo(result, vendorOrgCode)
|
||||
}
|
||||
|
||||
// OnWaybillExceptSF 异常报备
|
||||
|
||||
@@ -415,7 +415,7 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
|
||||
switch param.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(param.WaybillVendorID).GetRidderPosition(nil, param.VendorOrderID, param.VendorOrderID, param.VendorWaybillID, param.VendorWaybillID2)
|
||||
tiktokStatusPush(param, req.State, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
tiktokStatusPush(param, req.State, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat), good.VendorOrgCode)
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(param.VendorOrderID, param.Status) // 骑手位置更新
|
||||
if good.VendorID == model.VendorIDTaoVegetable && req.State == uuptapi.StateRMGrabsOrder {
|
||||
@@ -425,7 +425,7 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
|
||||
return uuptapi.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
func tiktokStatusPush(param *model.Waybill, orderStatus string, lng, lat string) {
|
||||
func tiktokStatusPush(param *model.Waybill, orderStatus string, lng, lat, vendorOrgCode string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: param.VendorOrderID,
|
||||
ThirdCarrierOrderId: param.VendorOrderID,
|
||||
@@ -463,7 +463,7 @@ func tiktokStatusPush(param *model.Waybill, orderStatus string, lng, lat string)
|
||||
result.LogisticsStatus = 0
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
delivery.PullTiktokRiderInfo(result, vendorOrgCode)
|
||||
}
|
||||
|
||||
//辅助函数
|
||||
|
||||
@@ -3,6 +3,7 @@ package ebai
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -163,6 +164,16 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *ebaiapi.CallbackMsg) (retVal *ebaia
|
||||
err = partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus)
|
||||
}
|
||||
}
|
||||
|
||||
// 只有有售后订单就更新此订单的结算信息
|
||||
if utils.Str2Int(orderStatus.VendorStatus) == ebaiapi.OrderPartRefundSuccess {
|
||||
orderData, err2 := api.EbaiAPI.OrderPartRefundGet(orderStatus.RefVendorOrderID)
|
||||
if err2 == nil && utils.MustInterface2Int64(orderData["shop_fee"]) != model.NO {
|
||||
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDEBAI)
|
||||
goodsOrder.TotalShopMoney = utils.MustInterface2Int64(orderData["shop_fee"])
|
||||
dao.UpdateEntity(dao.GetDB(), goodsOrder, "TotalShopMoney")
|
||||
}
|
||||
}
|
||||
retVal = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, nil)
|
||||
}
|
||||
return retVal
|
||||
|
||||
@@ -703,6 +703,10 @@ func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult
|
||||
sql := ` UPDATE store_sku_bind SET ebai_id = 0,ebai_sync_status = 2 WHERE store_id = ? AND sku_id = ?`
|
||||
param := []interface{}{storeID, v.SkuID}
|
||||
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||
} else if strings.Contains(opResultMap[utils.Str2Int64(v.VendorSkuID)], "商品禁止售卖不允许上架") || strings.Contains(opResultMap[utils.Str2Int64(v.VendorSkuID)], "商品已被禁售") {
|
||||
sql := ` UPDATE store_sku_bind SET ebai_sync_status = 4 WHERE store_id = ? AND sku_id = ?`
|
||||
param := []interface{}{storeID, v.SkuID}
|
||||
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||
}
|
||||
selectedStoreSkuList = append(selectedStoreSkuList, opFailed)
|
||||
}
|
||||
|
||||
@@ -347,11 +347,15 @@ func (c *PurchaseHandler) OnStoreMsg(vendorOrgCode string, msg *jdapi.CallbackOr
|
||||
err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDJD, storeStatus)
|
||||
} else {
|
||||
// 可能在门店删除的情况下会出查不到门店的错误
|
||||
globals.SugarLogger.Debugf("GetStoreStatus==============%v", err)
|
||||
if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == 4 {
|
||||
err = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("OnStoreMsg==============%v", err)
|
||||
}
|
||||
return jdapi.Err2CallbackResponse(err, "")
|
||||
}
|
||||
|
||||
|
||||
@@ -391,6 +391,7 @@ func (c *PurchaseHandler) onOrderMsg(msg *mtwmapi.CallbackMsg) (response *mtwmap
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
err = partner.CurOrderManager.OnOrderStatusChanged(msg.AppID, status)
|
||||
if err == nil && msg.Cmd == mtwmapi.MsgTypeOrderFinished {
|
||||
utils.CallFuncAsync(func() {
|
||||
@@ -509,6 +510,11 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
|
||||
"订单已经确认过了",
|
||||
}) {
|
||||
err = nil
|
||||
goodsOrder, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, order.VendorID)
|
||||
if goodsOrder.Status < model.OrderStatusAccepted {
|
||||
order.Status = model.OrderStatusAccepted
|
||||
dao.UpdateEntity(dao.GetDB(), order, "Status")
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Warnf("mtwm AcceptOrRefuseOrder orderID:%s failed with err:%v", order.VendorOrderID, err)
|
||||
}
|
||||
|
||||
@@ -149,13 +149,30 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||
}
|
||||
} else {
|
||||
// msg-status 1-已申请 10-初审已同意 11-初审已驳回 16-初审已申诉 17-初审申诉已同意 18-初审申诉已驳回 20-终审已发起(用户已发货) 21-终审已同意 22-终审已驳回 26-终审已申诉 27-终审申诉已同意 28-终审申诉已驳回 30-已取消
|
||||
if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil {
|
||||
order, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDMTWM)
|
||||
// 订单回调全额退款接口时,将订单状态修改为取消
|
||||
refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
|
||||
if refundData.NotifyType == mtwmapi.MsgTypeOrderAgree && msg.Cmd == mtwmapi.MsgTypeOrderRefund {
|
||||
order, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, model.VendorIDMTWM)
|
||||
order.Status = model.OrderStatusCanceled
|
||||
dao.UpdateEntity(dao.GetDB(), order, "Status")
|
||||
} else if refundData.Status == "21" {
|
||||
skuList, _ := dao.GetSimpleOrderSkus(dao.GetDB(), orderStatus.RefVendorOrderID, nil)
|
||||
totalSkuCount := 0
|
||||
for _, v := range skuList {
|
||||
totalSkuCount += v.Count
|
||||
}
|
||||
|
||||
financialSku, _ := dao.GetOrderRefundSkuList(dao.GetDB(), []string{orderStatus.RefVendorOrderID})
|
||||
refundSkuCount := 0
|
||||
for _, v := range financialSku {
|
||||
refundSkuCount += v.Count
|
||||
}
|
||||
if totalSkuCount == refundSkuCount {
|
||||
order.Status = model.OrderStatusCanceled
|
||||
dao.UpdateEntity(dao.GetDB(), order, "Status")
|
||||
}
|
||||
}
|
||||
|
||||
// 新订单平台自动同意退单,某一些情况下产生的运单没退!这个处理一下!
|
||||
@@ -168,7 +185,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
return mtwmapi.Err2CallbackResponse(err, "")
|
||||
|
||||
@@ -462,13 +462,13 @@ func (c *PurchaseHandler) UpdateStoreBoxFee(ctx *jxcontext.Context, vendorOrgCod
|
||||
func (c *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
|
||||
mtwmApi := getAPI(vendorOrgCode, storeID, vendorStoreID)
|
||||
switch lineStatus {
|
||||
case model.StoreStatusOpened:
|
||||
case model.StoreStatusOpened: // 先上线在开店
|
||||
if err = mtwmApi.PoiOnline(vendorStoreID); err == nil {
|
||||
err = mtwmApi.PoiOpen(vendorStoreID)
|
||||
}
|
||||
default:
|
||||
if err = mtwmApi.PoiOffline(vendorStoreID); err == nil {
|
||||
err = mtwmApi.PoiClose(vendorStoreID)
|
||||
default: // 先关店,在下线
|
||||
if err = mtwmApi.PoiClose(vendorStoreID); err == nil {
|
||||
err = mtwmApi.PoiOffline(vendorStoreID)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -97,14 +97,21 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
||||
order.ConsigneeLat = jxutils.StandardCoordinate2Int(utils.Str2Float64(originalList[1]))
|
||||
order.DiscountMoney = *orderDetail.DiscountFee
|
||||
|
||||
//var salePrice int64 = 0
|
||||
//var weight int = 0
|
||||
order.PmSubsidyMoney = *orderDetail.SkuDiscountPlatformFee // 平台承担优惠
|
||||
// 添加需要赠送的东西(暂时没有赠品套餐直接商品)
|
||||
multiSkuMap := make(map[int]int)
|
||||
var (
|
||||
skuSalePrice int64 = 0 // 商品售卖价
|
||||
merchantDiscountsPrice int64 = 0 // 商户优惠价
|
||||
// 平台优惠价
|
||||
platformDiscountsPrice int64 = *orderDetail.PlatformDeduction.BaseLogisticsFee + *orderDetail.PlatformDeduction.TechnicalServiceFee + *orderDetail.PlatformDeduction.PayServiceFee + *orderDetail.PlatformDeduction.ThirdpartnarFee
|
||||
)
|
||||
if len(*orderDetail.SubOrderResponseList) > 0 {
|
||||
for _, extra := range *orderDetail.SubOrderResponseList {
|
||||
// 这个是包装袋的价格,用户退款是包装袋未推送退款,导致本地订单退款状态无法更新,取消包装袋的记录
|
||||
skuSalePrice += *extra.OriginalFee
|
||||
merchantDiscountsPrice += *extra.DiscountMerchantFee
|
||||
|
||||
// 这个是包装袋的价格,用户退款是包装袋未推送退款,导致本地订单退款状态无法更新,取消包装袋的记录(但是结算的时候需要加上去)
|
||||
if *extra.SkuCode == "6108080" {
|
||||
continue
|
||||
}
|
||||
@@ -200,7 +207,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
||||
v.IsVendorAct = model.YES
|
||||
}
|
||||
}
|
||||
// 抖音订单手机号和收货地址是否同城(虚拟号,无法获取到正确地址)
|
||||
//订单手机号和收货地址是否同城(虚拟号,无法获取到正确地址)
|
||||
order.PhoneAscription = model.PhoneAscriptionAddressNo + "-" + "归属信息不匹配:" + "虚拟电话号码"
|
||||
|
||||
// 本地获取订单记录
|
||||
@@ -217,6 +224,28 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
|
||||
order.StoreName = "未获取到" // 真实门店名称
|
||||
}
|
||||
|
||||
//结算类型
|
||||
if store.PayPercentage < 50 {
|
||||
order.EarningType = model.EarningTypePoints
|
||||
} else {
|
||||
order.EarningType = model.EarningTypeQuote
|
||||
}
|
||||
|
||||
// 平台结算金额
|
||||
order.TotalShopMoney = skuSalePrice + *orderDetail.PostFee - merchantDiscountsPrice - platformDiscountsPrice
|
||||
if order.EarningType == model.EarningTypePoints {
|
||||
waybill, _ := partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, order.WaybillVendorID)
|
||||
if waybill == nil {
|
||||
if (order.NewEarningPrice == 0 || order.NewEarningPrice != order.TotalShopMoney*int64(100-order.OrderPayPercentage/2)/int64(100)) && order.OrderPayPercentage <= 50 {
|
||||
order.NewEarningPrice = order.TotalShopMoney * int64(100-order.OrderPayPercentage/2) / int64(100)
|
||||
}
|
||||
} else {
|
||||
if (order.NewEarningPrice == 0 || order.NewEarningPrice != (order.TotalShopMoney-waybill.DesiredFee)*int64(100-order.OrderPayPercentage/2)/int64(100)) && order.OrderPayPercentage <= 50 {
|
||||
order.NewEarningPrice = order.TotalShopMoney*int64(100-order.OrderPayPercentage/2)/int64(100) - waybill.DesiredFee
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return order, orderMap, err
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,9 @@ package tiktok_store
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/autonavi"
|
||||
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/ascription_place"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -133,16 +135,16 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
|
||||
if len(result.SkuOrderList) > 0 {
|
||||
for _, extra := range result.SkuOrderList {
|
||||
sku := &model.OrderSku{
|
||||
VendorOrderID: extra.ParentOrderId,
|
||||
VendorID: model.VendorIDDD,
|
||||
StoreSubID: 0,
|
||||
StoreSubName: "",
|
||||
Count: int(extra.ItemNum),
|
||||
VendorSkuID: utils.Int64ToStr(extra.SkuId),
|
||||
SkuID: utils.Str2Int(extra.OutSkuId),
|
||||
JxSkuID: utils.Str2Int(extra.OutSkuId),
|
||||
SkuName: extra.ProductName,
|
||||
ShopPrice: extra.OriginAmount,
|
||||
VendorOrderID: extra.ParentOrderId,
|
||||
VendorID: model.VendorIDDD,
|
||||
StoreSubID: 0,
|
||||
StoreSubName: "",
|
||||
Count: int(extra.ItemNum),
|
||||
VendorSkuID: utils.Int64ToStr(extra.SkuId),
|
||||
SkuID: utils.Str2Int(extra.OutSkuId),
|
||||
JxSkuID: utils.Str2Int(extra.OutSkuId),
|
||||
SkuName: extra.ProductName,
|
||||
//ShopPrice: extra.OriginAmount, 京西价
|
||||
VendorPrice: extra.OrderAmount / extra.ItemNum,
|
||||
SalePrice: extra.OriginAmount,
|
||||
EarningPrice: 0,
|
||||
@@ -245,6 +247,15 @@ func (p *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, par
|
||||
//appKey := `7152420904331429407` // 暂时定死
|
||||
//appSecret := `cc7ba367-2394-4cbb-81c6-26f0e929d1c6` //暂时定死
|
||||
//return tiktokShop.NewExpress(appKey, appSecret, "").OrderStatusAndPsInfoNew(param)
|
||||
//api.AutonaviAPI.
|
||||
if param["latitude"].(string) != "" && param["longitude"].(string) != "" {
|
||||
if len(param["latitude"].(string)) > len("39.978573") && len(param["longitude"].(string)) > len("116.5031060") { // 是否为百度坐标
|
||||
lng, lat, _ := api.AutonaviAPI.CoordinateConvert(param["latitude"].(float64), param["longitude"].(float64), autonavi.CoordSysBaidu)
|
||||
param["latitude"] = utils.Float64ToStr(lat)
|
||||
param["longitude"] = utils.Float64ToStr(lng)
|
||||
}
|
||||
}
|
||||
|
||||
return getAPI(vendorOrgCode, 0, vendorStoreID).OrderStatusAndPsInfoNew(param)
|
||||
}
|
||||
|
||||
@@ -598,22 +609,7 @@ func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
||||
AddressId: 0,
|
||||
StoreId: utils.Str2Int64(order.VendorStoreID),
|
||||
}
|
||||
switch order.WaybillVendorID {
|
||||
case model.VendorIDDada:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeDaDa
|
||||
case model.VendorIDMTPS:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeMeiTuan
|
||||
case model.VendorIDFengNiao:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeFengNiao
|
||||
case model.VendorIDSFPS:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeSF
|
||||
case model.VendorIDUUPT:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeUU
|
||||
case model.VendorJXFakeWL, -1:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeMerchant
|
||||
default:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeMerchant
|
||||
}
|
||||
logisticsAdd.CompanyCode = tiktokShop.JxVendorId2TiktokCode(order.WaybillVendorID)
|
||||
//转门店自送通知抖音发货
|
||||
return api.OrderDelivering(logisticsAdd)
|
||||
}
|
||||
@@ -641,7 +637,7 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam
|
||||
AddressId: 0,
|
||||
StoreId: utils.Str2Int64(order.VendorStoreID),
|
||||
}
|
||||
param.CompanyCode = utils.JxVendorId2TiktokCode(order.WaybillVendorID)
|
||||
param.CompanyCode = tiktokShop.JxVendorId2TiktokCode(order.WaybillVendorID)
|
||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderDelivering(param)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -677,7 +673,7 @@ func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName
|
||||
Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(order.ConsigneeLng)),
|
||||
OpCode: tiktokShop.TiktokLogisticsDELIVERED,
|
||||
}
|
||||
riderInfo.LogisticsProviderCode = utils.JxVendorId2TiktokCode(order.WaybillVendorID)
|
||||
riderInfo.LogisticsProviderCode = tiktokShop.JxVendorId2TiktokCode(order.WaybillVendorID)
|
||||
bills, _ := dao.GetWaybills(dao.GetDB(), order.VendorOrderID, nil)
|
||||
for _, v := range bills {
|
||||
if v.Status == model.OrderStatusCanceled {
|
||||
@@ -686,7 +682,7 @@ func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName
|
||||
riderInfo.CourierName = v.CourierName
|
||||
riderInfo.CourierPhone = v.CourierMobile
|
||||
}
|
||||
riderInfo.LogisticsProviderCode = utils.JxVendorId2TiktokCode(order.WaybillVendorID)
|
||||
riderInfo.LogisticsProviderCode = tiktokShop.JxVendorId2TiktokCode(order.WaybillVendorID)
|
||||
return c.GetOrderRider("", "", utils.Struct2MapByJson(riderInfo))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user