Merge remote-tracking branch 'origin/jdshop' into qidongsheng

This commit is contained in:
qidongsheng
2020-06-27 08:39:07 +08:00
16 changed files with 149 additions and 439 deletions

View File

@@ -1075,7 +1075,7 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o
}
order := &model.GoodsOrder{
VendorOrderID2: utils.Int64ToStr(jdsOrder.OrderID),
VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID) + "001",
VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID) + "000001",
VendorID: model.VendorIDJDShop,
BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight),
VendorStatus: utils.Int2Str(jdsOrder.OrderStatus),
@@ -1219,8 +1219,14 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int)
}
//重新构建order的数据
storeMaps, err := dao.GetStoresMapList(db, []int{order.VendorID}, []int{storeID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "")
if err != nil || len(storeMaps) == 0 {
return "", fmt.Errorf("该门店未绑定京狗平台,请先绑定后再转移!门店:[%v]", storeID)
}
stores, err := dao.GetStoreList(db, []int{storeID}, nil, nil, nil, "")
if len(storeMaps) > 0 && len(stores) > 0 {
if storeMaps[0].VendorStoreID == "" {
return "", fmt.Errorf("该门店未绑定京狗平台,或绑定有误,请联系技术部!门店:[%v]", storeID)
}
order.StoreID = storeID
order.StoreName = stores[0].Name
order.VendorStoreID = storeMaps[0].VendorStoreID
@@ -1230,7 +1236,7 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int)
if len(order.VendorOrderID) > 12 {
suffix := utils.Str2Int(order.VendorOrderID[12:len(order.VendorOrderID)])
suffix++
order.VendorOrderID = utils.Int64ToStr(utils.Str2Int64(order.VendorOrderID2)*100) + utils.Int2Str(suffix)
order.VendorOrderID = utils.Int64ToStr(utils.Str2Int64(order.VendorOrderID2)*100000) + utils.Int2Str(suffix)
}
for _, sku := range skus {
sku.VendorOrderID = order.VendorOrderID

View File

@@ -7,6 +7,8 @@ import (
"strings"
"time"
"github.com/astaxie/beego"
"git.rosy.net.cn/jx-callback/globals/api"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
@@ -314,111 +316,35 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
afsInfo[v.SkuID].Count -= minus
}
}
// if v.SkuCount2 == 1 {
// skuStr1 := strings.Join([]string{
// utils.Int2Str(v.SkuID),
// utils.Int2Str(v.SkuCount2),
// utils.Int2Str(v.SkuShopPrice),
// utils.Int2Str(v.SkuSalePrice),
// utils.Int2Str(v.SkuEarningPrice),
// }, ",")
// if order == nil || v.ID != order.ID {
// order = v
// v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID]
// v.Status2 = model.OrderStatusName[v.Status]
// v.SkuInfo = skuStr1
// v.SkuInfo2 = skuStr1
// orders2 = append(orders2, v)
// } else {
// order.SkuInfo += ";" + skuStr1
// order.SkuInfo2 += ";" + skuStr1
// }
// } else if v.SkuCount2 > 1 {
// storeID := 0
// if v.StoreID == 0 {
// storeID = v.JxStoreID
// } else {
// storeID = v.StoreID
// }
// result, _ := dao.GetEffectiveActStoreSkuInfo(dao.GetDB(), 0, nil, 0, []int{storeID}, []int{v.SkuID}, v.OrderCreatedAt, v.OrderCreatedAt)
// if len(result) > 0 {
// if result[0].EarningPrice != 0 {
// var (
// storePayPercentage, price int
// )
// stores, _ := dao.GetStoreList(dao.GetDB(), []int{v.StoreID}, nil, nil, nil, "")
// if len(stores) > 0 {
// storePayPercentage = stores[0].PayPercentage
// } else {
// storePayPercentage = 70
// }
// skuStr1 := strings.Join([]string{
// utils.Int2Str(v.SkuID),
// utils.Int2Str(v.SkuCount2),
// utils.Int2Str(v.SkuShopPrice),
// utils.Int2Str(v.SkuSalePrice),
// utils.Int2Str(v.SkuEarningPrice),
// }, ",")
// skuStr2 := strings.Join([]string{
// utils.Int2Str(v.SkuID),
// utils.Int2Str(1),
// utils.Int2Str(v.SkuShopPrice),
// utils.Int2Str(v.SkuSalePrice),
// utils.Int2Str(v.SkuEarningPrice),
// }, ",")
// if v.SkuShopPrice < v.SkuSalePrice {
// price = v.SkuShopPrice * storePayPercentage
// } else {
// price = v.SkuSalePrice * storePayPercentage
// }
// skuStr3 := strings.Join([]string{
// utils.Int2Str(v.SkuID),
// utils.Int2Str(v.SkuCount2 - 1),
// utils.Int2Str(v.SkuShopPrice),
// utils.Int2Str(v.SkuSalePrice),
// utils.Int2Str(price),
// }, ",")
// if order == nil || v.ID != order.ID {
// order = v
// v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID]
// v.Status2 = model.OrderStatusName[v.Status]
// v.SkuInfo2 = skuStr1
// v.SkuInfo = skuStr2 + ";" + skuStr3
// orders2 = append(orders2, v)
// } else {
// order.SkuInfo2 += ";" + skuStr1
// order.SkuInfo += ";" + skuStr2 + ";" + skuStr3
// }
// }
// } else {
// skuStr1 := strings.Join([]string{
// utils.Int2Str(v.SkuID),
// utils.Int2Str(v.SkuCount2),
// utils.Int2Str(v.SkuShopPrice),
// utils.Int2Str(v.SkuSalePrice),
// utils.Int2Str(v.SkuEarningPrice),
// }, ",")
// if order == nil || v.ID != order.ID {
// order = v
// v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID]
// v.Status2 = model.OrderStatusName[v.Status]
// v.SkuInfo = skuStr1
// v.SkuInfo2 = skuStr1
// orders2 = append(orders2, v)
// } else {
// order.SkuInfo += ";" + skuStr1
// order.SkuInfo2 += ";" + skuStr1
// }
// }
// }
if v.SkuCount2 > 0 {
skuStr := strings.Join([]string{
utils.Int2Str(v.SkuID),
utils.Int2Str(v.SkuCount2),
utils.Int2Str(v.SkuShopPrice),
utils.Int2Str(v.SkuSalePrice),
utils.Int2Str(v.SkuEarningPrice),
}, ",")
var skuStr string
if beego.BConfig.RunMode == "jxgy" {
skuStr = strings.Join([]string{
utils.Int2Str(v.SkuID),
utils.Int2Str(v.SkuCount2),
utils.Int2Str(v.SkuShopPrice),
utils.Int2Str(v.SkuSalePrice),
utils.Int2Str(v.SkuEarningPrice),
}, ",")
} else {
if v.PayPercentage == 100 {
skuStr = strings.Join([]string{
utils.Int2Str(v.SkuID),
utils.Int2Str(v.SkuCount2),
utils.Int2Str(v.SkuEarningPrice),
utils.Int2Str(v.SkuSalePrice),
utils.Int2Str(v.SkuShopPrice),
}, ",")
} else {
skuStr = strings.Join([]string{
utils.Int2Str(v.SkuID),
utils.Int2Str(v.SkuCount2),
utils.Int2Str(v.SkuShopPrice),
utils.Int2Str(v.SkuSalePrice),
utils.Int2Str(v.SkuEarningPrice),
}, ",")
}
}
if order == nil || v.ID != order.ID {
order = v
v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID]

View File

@@ -763,9 +763,9 @@ func (s *DefScheduler) cancelOtherWaybillsCheckOrderDeliveryFlag(savedOrderInfo
}
func (s *DefScheduler) solutionJdsOrder(bill *model.Waybill) (err error) {
//表示此订单是京东商城转移的订单,不用出库,但要去修改运单号
if len(bill.VendorOrderID) > 12 {
if utils.Str2Int(bill.VendorOrderID[12:len(bill.VendorOrderID)]) > 1 {
//表示此订单是京东商城2次转移的订单不用出库但要去修改运单号
if utils.Str2Int(bill.VendorOrderID[12:len(bill.VendorOrderID)]) > 2 {
err = jdshop.CurPurchaseHandler.OrderTransfer(jxcontext.AdminCtx, bill.VendorOrderID, bill.VendorWaybillID, true)
if err != nil {
globals.SugarLogger.Errorf("京东商城订单自动转移失败!", err)
@@ -779,6 +779,7 @@ func (s *DefScheduler) solutionJdsOrder(bill *model.Waybill) (err error) {
func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill2Keep *model.Waybill, cancelReasonID int, cancelReason string) (err error) {
globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v", savedOrderInfo.order.VendorOrderID, bill2Keep)
globals.SugarLogger.Debugf("testcancelOtherWaybills,savedOrderInfo: %v", utils.Format4Output(savedOrderInfo, false))
for _, v := range savedOrderInfo.waybills {
if v.Status < model.WaybillStatusEndBegin &&
!model.IsWaybillPlatformOwn(v) &&

View File

@@ -3334,6 +3334,7 @@ func AutoFocusStoreSkusForTopSkus(ctx *jxcontext.Context, isAsync, isContinueWhe
var skuBindInfoList []*StoreSkuBindInfo
for _, vv := range skuNameAndPlaceList {
if skuNameMap[vv.ID] != 0 {
globals.SugarLogger.Debugf("testAutoFocusStoreSkusForTopSkus,storeID:%v,nameID:%v", v.ID, vv.ID)
storeSkuBindInfo := &StoreSkuBindInfo{
StoreID: v.ID,
NameID: vv.ID,
@@ -4693,4 +4694,3 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku
}
return hint, err
}

View File

@@ -1115,7 +1115,7 @@ func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, storeSkus []*model
}
storeSku2, _ := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, []int{storeSku.SkuID})
if storeSku.JdsID != 0 && len(storeSku2) > 0 {
if storeSku.Status != storeSku2[0].Status {
if storeSku.Status != storeSku2[0].Status && storeMap.VendorStoreID != "" {
err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, stock, utils.Str2Int(storeMap.VendorStoreID))
}
}
@@ -1184,14 +1184,14 @@ func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch
for _, v := range updateList {
skuBindInfos1 = append(skuBindInfos1, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false))
}
_, err = UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos1, isAsync, isContinueWhenError, false)
UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos1, isAsync, isContinueWhenError, false)
}
if len(addList) > 0 {
for _, v := range addList {
skuBindInfos2 = append(skuBindInfos2, buildStoreSkuBindInfo(db, storeMap.StoreID, v, true))
}
_, err = UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos2, isAsync, isContinueWhenError, false)
UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos2, isAsync, isContinueWhenError, false)
}
return err
}

View File

@@ -283,7 +283,6 @@ func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyn
skuItem.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0)
if skuItem.ImgWatermark != "" {
downLoad, _ := uploadImgStandard(skuItem.ImgWatermark)
fmt.Println("testdo", downLoad)
skuItem.ImgMix = jxutils.MixWatermarkImg(downLoad, skuItem.ImgOrigin, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
}
}
@@ -483,9 +482,9 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
} else {
if sku.MergedStatus == model.SkuStatusNormal {
if dao.IsVendorThingIDEmpty(sku.VendorCatID) && !strings.Contains(sku.StoreName, model.ExdStoreName) && vendorID != model.VendorIDYB && vendorID != model.VendorIDJDShop {
globals.SugarLogger.Warnf("syncStoreSkuNew 创建门店:%d商品:%d但没有平台分类ID", storeID, sku.SkuID)
// globals.SugarLogger.Warnf("syncStoreSkuNew 创建门店:%d商品:%d但没有平台分类ID", storeID, sku.SkuID)
} else if dao.IsVendorThingIDEmpty(utils.Int64ToStr(sku.VendorVendorCatID)) && vendorID == model.VendorIDJDShop {
globals.SugarLogger.Warnf("syncStoreSkuNew 创建门店:%d商品:%d但没有映射的平台ID", storeID, sku.SkuID)
// globals.SugarLogger.Warnf("syncStoreSkuNew 创建门店:%d商品:%d但没有映射的平台ID", storeID, sku.SkuID)
} else {
createList = append(createList, sku)
}
@@ -509,7 +508,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
// 修改商品信息时不改价(以免活动引起的失败),而用单独的改价来改
if (model.IsSyncStatusUpdate(sku.SkuSyncStatus) || (model.IsSyncStatusSeq(sku.SkuSyncStatus) && reorderHandler == nil)) && singleStoreHandler != nil {
if dao.IsVendorThingIDEmpty(sku.VendorCatID) && !strings.Contains(sku.StoreName, model.ExdStoreName) && vendorID != model.VendorIDYB && vendorID != model.VendorIDJDShop {
globals.SugarLogger.Warnf("syncStoreSkuNew 修改门店:%d商品:%d但没有平台分类ID", storeID, sku.SkuID)
// globals.SugarLogger.Warnf("syncStoreSkuNew 修改门店:%d商品:%d但没有平台分类ID", storeID, sku.SkuID)
} else {
isAdded2Update = true
updateList = append(updateList, calVendorPrice4StoreSku(sku, storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage)))
@@ -915,7 +914,9 @@ func amendAndPruneStoreStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, v
})
}
}
if storeID == 103075 {
fmt.Println("sku2Delete", utils.Format4Output(sku2Delete, false))
}
if opType == AmendPruneOnlyAmend || opType == AmendPruneAll {
for _, v := range localSkuList {
if !model.IsSyncStatusDelete(v.SkuSyncStatus) && v.BindID != 0 {

View File

@@ -46,10 +46,10 @@ var (
"22:00:00",
}
dailyWorkTimeList2 = []string{
"23:00:00",
"04:00:00",
}
priceReferTimeList = []string{
"01:00:00",
"03:00:00",
}
checkCookieList = []string{
"08:00:00",
@@ -57,7 +57,7 @@ var (
"18:00:00",
}
createStorePriceTimeList = []string{
"02:00:00",
"04:00:00",
}
refreshPageActTimeList = []string{
"7:00:00",
@@ -393,7 +393,7 @@ func doDailyWork() {
dao.SetStoresMapSyncStatus(dao.GetDB(), nil, nil, model.SyncFlagStoreStatus)
cms.CurVendorSync.SyncStore2(jxcontext.AdminCtx, dao.GetDB(), nil, nil, true, true)
syncStoreSku()
// syncStoreSku()
InitEx()
cms.SyncStoresCourierInfo(jxcontext.AdminCtx, nil, false, true)
netprinter.RebindAllPrinters(jxcontext.AdminCtx, false, true)

View File

@@ -8,8 +8,6 @@ import (
"strings"
"time"
"git.rosy.net.cn/baseapi/platformapi/jdshopapi"
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
"git.rosy.net.cn/jx-callback/business/partner/delivery"
"github.com/360EntSecGroup-Skylar/excelize"
@@ -1611,295 +1609,6 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
// continue
// }
// }
var jdsIds = []int64{69355523686,
69353698875,
69353633443,
69353579080,
69353592976,
69353575450,
69353669915,
69353617240,
69353711276,
69355552630,
69353579078,
69633169613,
69353608855,
69634881612,
69353634806,
69353675911,
69353698186,
69353698877,
69607962771,
69608002604,
69666543870,
69353541693,
69411607058,
69353594629,
69353602818,
69353698187,
69355538267,
69353633269,
69355549016,
69411607059,
69593365617,
69353589341,
69353618034,
69353633445,
69353644658,
69353644659,
69353664332,
69355505481,
69355531215,
69355552632,
69353618035,
69353619589,
69353684423,
69353687174,
69353722053,
69355493882,
69627859883,
69680935348,
69353555847,
69353570677,
69353589397,
69353592975,
69353594611,
69353602819,
69353616402,
69353624528,
69353654004,
69353668114,
69353687173,
69353701089,
69353722052,
69353723922,
69355527850,
69355552631,
69628257042,
69636525703,
69680935349,
69353579081,
69353589342,
69353632136,
69353654006,
69353726354,
69355496067,
69355515747,
69355516049,
69355527036,
69355532703,
69355558164,
69355560640,
69608002434,
69608089252,
69626869676,
69628142211,
69651275202,
69665458721,
69980157422,
69353511255,
69353550931,
69353555846,
69353579079,
69353593375,
69353595563,
69353603501,
69353608856,
69353618036,
69353628469,
69353628470,
69353632137,
69353633267,
69353633444,
69353651935,
69353668115,
69353683331,
69353684157,
69353701088,
69353723844,
69353723845,
69353726353,
69355490631,
69355493881,
69355493884,
69355520278,
69355523687,
69355532705,
69355533814,
69355536851,
69355538268,
69355538269,
69593321185,
69593321186,
69607997022,
69626638026,
69626638027,
69626872037,
69627693305,
69627954144,
69628180933,
69633580083,
69633580085,
69634881613,
69635037810,
69635204944,
69636212985,
69636446354,
69659137913,
69659219611,
69665406179,
69666460731,
69673523007,
69680905913,
69681869918,
69821176674,
69913341309,
69916445013,
69353511254,
69353570678,
69353581400,
69353589343,
69353589398,
69353593376,
69353594630,
69353609816,
69353616406,
69353617241,
69353619591,
69353633268,
69353634833,
69353642793,
69353647695,
69353651934,
69353654005,
69353664333,
69353669914,
69353673334,
69353684159,
69353684603,
69353684604,
69353684605,
69353684607,
69353698876,
69353701090,
69353711277,
69353711278,
69353726357,
69355496066,
69355520277,
69355523688,
69355527851,
69355533813,
69355533815,
69355538270,
69355559874,
69355559875,
69355559876,
69355560641,
69607988687,
69608089253,
69625036409,
69625436705,
69626674146,
69626756838,
69626849783,
69626872040,
69627211928,
69627823696,
69627823697,
69627824429,
69627859882,
69627954146,
69628055157,
69628209840,
69628220046,
69628244518,
69628620179,
69628645373,
69633038980,
69633169614,
69633311068,
69633433209,
69634285577,
69634285578,
69634566319,
69634566320,
69634620948,
69635037811,
69635075404,
69635108188,
69636525704,
69636563250,
69636658901,
69636658902,
69651265114,
69659219612,
69659883978,
69662122661,
69666543871,
69666543872,
69666660395,
69666907986,
69666931214,
69673508504,
69680887348,
69818078270,
69881553035,
69901783885,
69913362221,
69916396643,
69925717199,
69933144351,
69933974117,
69935756246,
69935768981,
69935855227,
69935915640,
69937601360,
69937642148,
69939562884,
69939571687,
69948026907,
}
db := dao.GetDB()
for _, v := range jdsIds {
vendorSku, _ := api.JdShopAPI.FindSkuById(v)
var sku *model.Sku
sql := `
SELECT b.* FROM store_sku_bind a,sku b WHERE a.sku_id = b.id AND a.store_id = 102919 AND a.jds_id = ?
`
sqlParams := []interface{}{v}
err = dao.GetRow(db, &sku, sql, sqlParams)
skus, _ := dao.GetStoreSkus(db, model.VendorIDJDShop, model.JdShopMainStoreID, []int{sku.ID})
storeSku := skus[0]
if sku.Comment != "" {
var specQuality = utils.Float64ToStr(float64(storeSku.SpecQuality)) + storeSku.SpecUnit
vendorSkuAttr := vendorSku.SaleAttrs[0].AttrValueAlias[0]
if vendorSkuAttr == specQuality {
err = api.JdShopAPI.UpdateWareSaleAttrvalueAlias(&jdshopapi.UpdateWareSaleAttrvalueAliasParam{
WareID: vendorSku.WareID,
Props: []*jdshopapi.CreateSkuParamAttrs2{
&jdshopapi.CreateSkuParamAttrs2{
AttrID: vendorSku.SaleAttrs[0].AttrID,
AttrValues: []string{vendorSku.SaleAttrs[0].AttrValues[0]},
AttrValueAlias: []string{sku.Comment},
Type: "com.jd.pop.ware.ic.api.domain.prop",
Type2: "com.jd.pop.ware.ic.api.domain.Prop",
},
},
})
} else {
if vendorSkuAttr != sku.Comment {
_, maxNo, _ := api.JdShopAPI.FindValuesByAttrId(utils.Str2Int(vendorSku.SaleAttrs[0].AttrID))
api.JdShopAPI.SaveVenderAttrValue(sku.Comment, utils.Str2Int(vendorSku.SaleAttrs[0].AttrID), int(storeSku.VendorVendorCatID), maxNo+1)
}
}
}
// attrValue := vendorSku.SaleAttrs[0].AttrValueAlias[0]
// if storeSkus != nil {
// cms.CurVendorSync.SyncStoresSkus(ctx, nil, 0, db, []int{model.VendorIDJDShop}, []int{model.JdShopMainStoreID}, []int{storeSkus.SkuID}, false, true, true)
// }
}
return err
}

View File

@@ -161,7 +161,7 @@ func GetPossibleVendorIDFromVendorOrderID(vendorOrderID string) (vendorID int) {
vendorID = model.VendorIDWSC
} else if orderIDLen == len("1000004390") {
vendorID = model.VendorIDJX
} else if orderIDLen == len("124557362562002") {
} else if orderIDLen == len("124557362562000001") {
vendorID = model.VendorIDJDShop
}
}

View File

@@ -30,6 +30,13 @@ func (c *DeliveryHandler) GetVendorID() int {
return model.VendorIDJDWL
}
func OnWaybillMsg() {
}
func (c *DeliveryHandler) OnWaybillMsg() {
}
func (c *DeliveryHandler) CreateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (vendorStoreID string, status int, err error) {
return vendorStoreID, status, err
}
@@ -94,7 +101,3 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) {
return err
}
func (c *DeliveryHandler) OnWaybillMsg() {
}

View File

@@ -61,6 +61,7 @@ func OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg) (retVal *mtpsapi.Ca
}
func (c *DeliveryHandler) OnWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) {
c.pushToGy(msg)
jxutils.CallMsgHandler(func() {
retVal = c.onWaybillMsg(msg)
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDMTPS))
@@ -104,13 +105,13 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg)
return mtpsapi.SuccessResponse
}
c.pushToGy(order, msg)
globals.SugarLogger.Debugf("onWaybillMsg test, %v", msg)
return mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
}
func (c *DeliveryHandler) pushToGy(waybill *model.Waybill, msg *mtpsapi.CallbackOrderMsg) {
order, _ := dao.GetSimpleOrder(dao.GetDB(), waybill.VendorOrderID)
func (c *DeliveryHandler) pushToGy(msg *mtpsapi.CallbackOrderMsg) {
vendorOrderID, _ := jxutils.SplitUniversalOrderID(msg.OrderID)
order, _ := dao.GetSimpleOrder(dao.GetDB(), vendorOrderID)
//查不到订单可能就是果园的订单
if order == nil {
cl := http.Client{}
@@ -132,19 +133,7 @@ func (c *DeliveryHandler) pushToGy(waybill *model.Waybill, msg *mtpsapi.Callback
if err != nil {
return
}
request.PostForm.Set("mt_peisong_id", msg.MtPeisongID)
request.PostForm.Set("courier_name", msg.CourierName)
request.PostForm.Set("delivery_id", utils.Int64ToStr(msg.DeliveryID))
request.PostForm.Set("appkey", msg.AppKey)
request.PostForm.Set("order_id", msg.OrderID)
request.PostForm.Set("courier_phone", msg.CourierPhone)
request.PostForm.Set("status", utils.Int2Str(msg.Status))
request.PostForm.Set("timestamp", utils.Int64ToStr(msg.Timestamp))
request.PostForm.Set("cancel_reason_id", utils.Int2Str(msg.CancelReasonId))
request.PostForm.Set("cancel_reason", msg.CancelReason)
request.PostForm.Set("sign", sign)
fmt.Println("testgy request : %v", request.FormValue("sign"))
request.Header.Set("content_type", "application/x-www-form-urlencoded; charset=UTF-8")
request.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
cl.Do(request)
}
}

View File

@@ -46,6 +46,9 @@ func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (s
Current: 1,
PageSize: 1,
})
if err != nil {
return 0, err
}
return status2Jxstatus(orderResult.OrderList[0].OrderStatus), err
}
@@ -85,9 +88,11 @@ func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName
return err
}
func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
ChangeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "")
return err
}
func (p *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinished, "")
return err
}
func (p *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *model.GoodsOrder) (mobile string, err error) {
@@ -101,6 +106,9 @@ func (p *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod
}
func (p *PurchaseHandler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, reason)
if order.EclpOutID != "" {
_, err = api.JdEclpAPI.CancelOrder(order.EclpOutID)
}
return err
}
func (p *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) {
@@ -162,7 +170,7 @@ func (p *PurchaseHandler) OrderTransfer(ctx *jxcontext.Context, vendorOrderID, v
if !isAuto {
companyID = jdshopapi.JdsDeliveryCompanyJD
}
err = api.JdShopAPI.UpdateWaybill(vendorOrderID[:12], companyID, vendorWaybillID)
err = api.JdShopAPI.UpdateWaybill(vendorOrderID[:12], companyID, vendorOrderID)
return err
}

View File

@@ -385,6 +385,21 @@ func GenOrderNo(ctx *jxcontext.Context) (orderNo int64) {
return orderNo
}
func GenAfsOrderNo(ctx *jxcontext.Context) (orderNo int64) {
const prefix = 80
const randPartNum = 100
orderNo = time.Now().Unix() - orderNoBeginTimestamp
orderNo = orderNo * randPartNum
md5Bytes := md5.Sum([]byte(utils.GetUUID()))
randPart := 0
for k, v := range md5Bytes {
randPart += int(v) << ((k % 3) * 8)
}
orderNo += int64(randPart % randPartNum)
orderNo += int64(math.Pow10(int(math.Log10(float64(orderNo)))+1)) * prefix
return orderNo
}
func GenPayOrderID(order *model.GoodsOrder) (payOrderID int64) {
return utils.Str2Int64(order.VendorOrderID)
}

View File

@@ -2,7 +2,11 @@ package jx
import (
"fmt"
"time"
"git.rosy.net.cn/jx-callback/business/partner/purchase/jx/localjx"
"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/partner"
@@ -37,6 +41,56 @@ func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.Goods
// 发起部分退款
func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) {
var skuMap = make(map[int]*model.OrderSku)
for _, sku := range order.Skus {
skuMap[sku.SkuID] = sku
}
orderStatus := buildOrderStatus(ctx, order, reason)
afsOrder := &model.AfsOrder{
VendorID: order.VendorID,
AfsOrderID: orderStatus.VendorOrderID,
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: order.VendorStoreID,
StoreID: order.StoreID,
AfsCreatedAt: time.Now(),
VendorAppealType: "",
AppealType: model.AfsAppealTypeRefund,
VendorReasonType: utils.Int2Str(model.AfsReasonNotOthers),
ReasonType: model.AfsReasonNotOthers,
ReasonDesc: utils.LimitUTF8StringLen(reason, 1024),
ReasonImgList: "",
RefundType: model.AfsTypePartRefund,
VendorOrgCode: "",
}
for _, sku := range refundSkuList {
orderSku := &model.OrderSkuFinancial{
Count: sku.Count,
VendorSkuID: utils.Int2Str(sku.SkuID),
SkuID: sku.SkuID,
}
if skuMap[sku.SkuID] != nil {
orderSku.Name = skuMap[sku.SkuID].SkuName
orderSku.UserMoney = skuMap[sku.SkuID].SalePrice
}
afsOrder.SkuUserMoney += orderSku.UserMoney
afsOrder.Skus = append(afsOrder.Skus, orderSku)
}
err = fmt.Errorf("%s不支持售后部分退款请让买家发起退款", model.VendorChineseNames[model.VendorIDJX])
return err
}
func buildOrderStatus(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (orderStatus *model.OrderStatus) {
orderStatus = &model.OrderStatus{
VendorOrderID: utils.Int64ToStr(localjx.GenAfsOrderNo(ctx)), // 是售后单ID不是订单ID订单ID在RefVendorOrderID中
VendorID: order.VendorID,
OrderType: model.OrderTypeAfsOrder,
RefVendorOrderID: order.VendorOrderID,
RefVendorID: order.VendorID,
VendorStatus: utils.Int2Str(model.AfsOrderStatusWait4Approve),
Status: model.AfsOrderStatusWait4Approve,
StatusTime: time.Now(),
Remark: reason,
}
return orderStatus
}

View File

@@ -172,7 +172,7 @@ EnableDocs = false
jdOrgCode = "320406"
jdLoginName = "jd_jxcs1223"
jdToken = "77e703b7-7997-441b-a12a-2e522efb117a"
jdToken = "29afd5a8-f93f-4d4c-9fce-a7297340af59"
jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d"
jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4"
@@ -395,7 +395,7 @@ enableElmStoreWrite = false
enableMtwmStoreWrite = false
enableWscStoreWrite = false
enableYbStoreWrite = false
enableJdShopWrite = true
enableJdShopWrite = false
jdOrgCode = "320406"
jdLoginName = "jd_jxcs1223"

View File

@@ -744,8 +744,7 @@ func init() {
MethodParams: param.Make(
param.New("msgType", param.IsRequired),
),
Filters: nil,
Params: nil})
})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:MsgController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:MsgController"],
beego.ControllerComments{
@@ -2843,5 +2842,4 @@ func init() {
MethodParams: param.Make(),
Filters: nil,
Params: nil})
}