txd
This commit is contained in:
@@ -27,7 +27,7 @@ const (
|
||||
)
|
||||
|
||||
func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order *model.GoodsOrder, courierVendorIDs, excludeCourierVendorIDs []int, maxDeliveryFee int64, createOnlyOne bool) (bills []*model.Waybill, err error) {
|
||||
storeCourierList, err := dao.GetStoreCourierList2(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, model.StoreStatusOpened, []int{model.StoreAuditStatusOnline, model.StoreAuditStatusUpdated})
|
||||
storeCourierList, err := dao.GetStoreCourierList2(dao.GetDB(), []int{jxutils.GetSaleStoreIDFromOrder(order)}, courierVendorIDs, model.StoreStatusOpened, []int{model.StoreAuditStatusOnline, model.StoreAuditStatusUpdated})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -944,6 +944,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
||||
|
||||
//1表示为门店发单,需要验证门店账户余额情况
|
||||
_, err2 := s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs)
|
||||
// 检查是否有有效运单
|
||||
if err == nil && err2 == nil {
|
||||
// 1.检查门店三方配送配置,达达>蜂鸟>美团>顺丰>uu
|
||||
// excludeVendorIDs 包括上面已经发送的平台id
|
||||
|
||||
@@ -43,7 +43,7 @@ func (s *DefScheduler) SelfDeliveringAndUpdateStatus(ctx *jxcontext.Context, ven
|
||||
phone = storeDetail.Tel1
|
||||
}
|
||||
err = s.SelfDeliverDelivering(order, phone) // 取消平台自配送
|
||||
//s.CancelAll3rdWaybills(ctx, vendorOrderID, vendorID, true) // 取消三方平台配送以及调度
|
||||
s.CancelAll3rdWaybills(ctx, vendorOrderID, vendorID, true) // 取消三方平台配送以及调度
|
||||
}
|
||||
} else {
|
||||
if order.Status < model.OrderStatusDelivering {
|
||||
@@ -159,6 +159,14 @@ func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Contex
|
||||
if !forceCreate {
|
||||
err = s.canOrderCreateWaybillNormally(order, nil)
|
||||
}
|
||||
// 检查订单是否在配送状态
|
||||
waybills, err := dao.GetWaybills(dao.GetDB(), order.VendorOrderID, nil)
|
||||
for _, v := range waybills {
|
||||
if v.Status >= model.OrderStatusDelivering {
|
||||
err = fmt.Errorf("订单已经在配送中,无法创建运单,有疑问请联系管理员")
|
||||
break
|
||||
}
|
||||
}
|
||||
if err == nil {
|
||||
if forceCreate {
|
||||
maxDeliveryFee = math.MaxInt64
|
||||
|
||||
@@ -177,6 +177,8 @@ func getVendorPriceFromStoreSkuBind(bind *model.StoreSkuBind, vendorID int) (ven
|
||||
vendorPrice = bind.JxPrice
|
||||
case model.VendorIDDD:
|
||||
vendorPrice = bind.DdPrice
|
||||
case model.VendorIDTaoVegetable:
|
||||
vendorPrice = bind.TaoPrice
|
||||
}
|
||||
return vendorPrice
|
||||
}
|
||||
|
||||
@@ -451,6 +451,7 @@ func DeleteCategoryMap(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int) (n
|
||||
return dao.DeleteEntityLogically(db, catMap, map[string]interface{}{
|
||||
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldMtwmSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldTaoSyncStatus: model.SyncFlagDeletedMask,
|
||||
}, ctx.GetUserName(), map[string]interface{}{
|
||||
model.FieldCategoryID: categoryID,
|
||||
model.FieldDeletedAt: utils.DefaultTimeValue,
|
||||
@@ -1188,10 +1189,10 @@ func getCategoryByImg(img ...string) string {
|
||||
}
|
||||
|
||||
// 根据平台返回的分类id,获取本地绑定的映射分类id
|
||||
func getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, jdsCategoryID, ebaiCategoryID, mtwmCategoryID string, jxCategoryId int) (string, string, string, int) {
|
||||
func getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, jdsCategoryID, ebaiCategoryID, mtwmCategoryID, taoCategoryID string, jxCategoryId int) (string, string, string, string, int) {
|
||||
cats, err := dao.GetCategoriesByName(dao.GetDB(), "", jdCategoryId)
|
||||
if len(cats) == 0 || err != nil {
|
||||
return jdsCategoryID, ebaiCategoryID, mtwmCategoryID, 0
|
||||
return jdsCategoryID, ebaiCategoryID, mtwmCategoryID, taoCategoryID, 0
|
||||
} else {
|
||||
if jdsCategoryID == "" && cats[0].JdsCategoryID != 0 {
|
||||
jdsCategoryID = utils.Int64ToStr(cats[0].JdsCategoryID)
|
||||
@@ -1202,11 +1203,14 @@ func getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, jdsCategoryID, ebaiCa
|
||||
if mtwmCategoryID == "" && cats[0].MtwmCategoryID != 0 {
|
||||
mtwmCategoryID = utils.Int64ToStr(cats[0].MtwmCategoryID)
|
||||
}
|
||||
if taoCategoryID == "" && cats[0].TaoCategoryID != 0 {
|
||||
taoCategoryID = utils.Int64ToStr(cats[0].TaoCategoryID)
|
||||
}
|
||||
if jxCategoryId == 0 || jxCategoryId == 291 {
|
||||
jxCategoryId = cats[0].ID
|
||||
}
|
||||
}
|
||||
return jdsCategoryID, ebaiCategoryID, mtwmCategoryID, jxCategoryId
|
||||
return jdsCategoryID, ebaiCategoryID, mtwmCategoryID, taoCategoryID, jxCategoryId
|
||||
}
|
||||
|
||||
func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, nameID int, payload map[string]interface{}, skuNameExt *model.SkuNameExt, isDelete bool) (flag bool) {
|
||||
@@ -1242,6 +1246,7 @@ func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, n
|
||||
jdsCategoryID := ""
|
||||
ebaiCategoryID := ""
|
||||
mtwmCategoryID := ""
|
||||
taoCategoryID := ""
|
||||
ddCategoryID := ""
|
||||
jxCategoryID := 0
|
||||
if skuNameExt != nil {
|
||||
@@ -1252,7 +1257,7 @@ func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, n
|
||||
}
|
||||
|
||||
if jdCategoryId != "" && jdCategoryId != "0" {
|
||||
jdsCategoryID, ebaiCategoryID, mtwmCategoryID, jxCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, skuNameExt.JdsCategoryID, skuNameExt.EbaiCategoryID, skuNameExt.MtwmCategoryID, skuNameExt.CategoryID)
|
||||
jdsCategoryID, ebaiCategoryID, mtwmCategoryID, taoCategoryID, jxCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, skuNameExt.JdsCategoryID, skuNameExt.EbaiCategoryID, skuNameExt.MtwmCategoryID, skuNameExt.TaoCategoryID, skuNameExt.CategoryID)
|
||||
} else {
|
||||
jdsCategoryID = skuNameExt.JdsCategoryID
|
||||
ebaiCategoryID = skuNameExt.EbaiCategoryID
|
||||
@@ -1323,7 +1328,7 @@ func updateOrCreateSkuVendorCategoryMap(db *dao.DaoDB, ctx *jxcontext.Context, n
|
||||
}
|
||||
|
||||
if jdCategoryId != "" {
|
||||
jdsCategoryID, ebaiCategoryID, mtwmCategoryID, jxCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, jdsCategoryID, ebaiCategoryID, mtwmCategoryID, jxCategoryID)
|
||||
jdsCategoryID, ebaiCategoryID, mtwmCategoryID, taoCategoryID, jxCategoryID = getJDCategoryLoadingLocalCategoryReflex(jdCategoryId, jdsCategoryID, ebaiCategoryID, mtwmCategoryID, taoCategoryID, jxCategoryID)
|
||||
}
|
||||
|
||||
if payload["ddCategoryID"] != nil {
|
||||
@@ -1645,6 +1650,7 @@ func refreshStoreSkuPrice(ctx *jxcontext.Context, db *dao.DaoDB, skuID int) (err
|
||||
storeSku.ID = v.BindID
|
||||
storeSku.JdSyncStatus = v.JdSyncStatus | model.SyncFlagPriceMask
|
||||
storeSku.MtwmSyncStatus = v.MtwmSyncStatus | model.SyncFlagPriceMask
|
||||
storeSku.TaoSyncStatus = v.TaoSyncStatus | model.SyncFlagPriceMask
|
||||
storeSku.EbaiSyncStatus = v.EbaiSyncStatus | model.SyncFlagPriceMask
|
||||
storeSku.Price = jxutils.CaculateSkuPrice(int(v.UnitPrice), v.SpecQuality, v.SpecUnit, v.Unit)
|
||||
storeSku.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), int(storeSku.Price))
|
||||
@@ -1659,7 +1665,7 @@ func refreshStoreSkuPrice(ctx *jxcontext.Context, db *dao.DaoDB, skuID int) (err
|
||||
}
|
||||
}
|
||||
}()
|
||||
dao.UpdateEntity(db, storeSku, "Price", "JdSyncStatus", "MtwmSyncStatus", "EbaiSyncStatus", "JxPrice", "LastOperator")
|
||||
dao.UpdateEntity(db, storeSku, "Price", "JdSyncStatus", "MtwmSyncStatus", "TaoSyncStatus", "EbaiSyncStatus", "JxPrice", "LastOperator")
|
||||
dao.Commit(db, txDB)
|
||||
return retVal, err
|
||||
}, list)
|
||||
@@ -1730,6 +1736,7 @@ func DeleteStoreSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuID int) (n
|
||||
_, err = dao.DeleteEntityLogically(db, storeSkuBind, map[string]interface{}{
|
||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldMtwmSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldTaoSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldJdsSyncStatus: model.SyncFlagDeletedMask,
|
||||
}, ctx.GetUserName(), map[string]interface{}{
|
||||
|
||||
@@ -719,7 +719,7 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, upcs []strin
|
||||
sql += " AND t4.status >= ? AND t4.status <= ?"
|
||||
sqlParams = append(sqlParams, fromStatus, toStatus)
|
||||
}
|
||||
if params["jdSyncStatus"] != nil || params["ebaiSyncStatus"] != nil || params["mtwmSyncStatus"] != nil {
|
||||
if params["jdSyncStatus"] != nil || params["ebaiSyncStatus"] != nil || params["mtwmSyncStatus"] != nil || params["taoSyncStatus"] != nil {
|
||||
realVendorMap, err2 := getValidStoreVendorMap(db, storeIDs)
|
||||
if err = err2; err != nil {
|
||||
return "", nil, err
|
||||
@@ -741,6 +741,10 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, upcs []strin
|
||||
sql += " OR (t4.mtwm_sync_status & ? <> 0 AND NOT (t4.mtwm_sync_status & ? <> 0 AND (t4.status <> ? OR t2.status <> ?)) )"
|
||||
sqlParams = append(sqlParams, params["mtwmSyncStatus"], model.SyncFlagNewMask, model.SkuStatusNormal, model.SkuStatusNormal)
|
||||
}
|
||||
if params["taoSyncStatus"] != nil && realVendorMap[model.VendorIDTaoVegetable] == 1 {
|
||||
sql += " OR (t4.tao_sync_status & ? <> 0 AND NOT (t4.tao_sync_status & ? <> 0 AND (t4.status <> ? OR t2.status <> ?)) )"
|
||||
sqlParams = append(sqlParams, params["taoSyncStatus"], model.SyncFlagNewMask, model.SkuStatusNormal, model.SkuStatusNormal)
|
||||
}
|
||||
sql += ")"
|
||||
}
|
||||
}
|
||||
@@ -981,7 +985,7 @@ func getGetStoresSkusBaseSQL2(db *dao.DaoDB, storeIDs, skuIDs []int, upcs []stri
|
||||
sql += " AND t4.status >= ? AND t4.status <= ?"
|
||||
sqlParams = append(sqlParams, fromStatus, toStatus)
|
||||
}
|
||||
if params["jdSyncStatus"] != nil || params["ebaiSyncStatus"] != nil || params["mtwmSyncStatus"] != nil {
|
||||
if params["jdSyncStatus"] != nil || params["ebaiSyncStatus"] != nil || params["mtwmSyncStatus"] != nil || params["taoSyncStatus"] != nil {
|
||||
realVendorMap, err2 := getValidStoreVendorMap(db, storeIDs)
|
||||
if err = err2; err != nil {
|
||||
return "", nil, err
|
||||
@@ -1003,6 +1007,10 @@ func getGetStoresSkusBaseSQL2(db *dao.DaoDB, storeIDs, skuIDs []int, upcs []stri
|
||||
sql += " OR (t4.dd_sync_status & ? <> 0 AND NOT (t4.dd_sync_status & ? <> 0 AND (t4.status <> ? OR t2.status <> ?)) )"
|
||||
sqlParams = append(sqlParams, params["ddSyncStatus"], model.SyncFlagNewMask, model.SkuStatusNormal, model.SkuStatusNormal)
|
||||
}
|
||||
if params["taoSyncStatus"] != nil && realVendorMap[model.VendorIDTaoVegetable] == 1 {
|
||||
sql += " OR (t4.tao_sync_status & ? <> 0 AND NOT (t4.tao_sync_status & ? <> 0 AND (t4.status <> ? OR t2.status <> ?)) )"
|
||||
sqlParams = append(sqlParams, params["taoSyncStatus"], model.SyncFlagNewMask, model.SkuStatusNormal, model.SkuStatusNormal)
|
||||
}
|
||||
sql += ")"
|
||||
}
|
||||
}
|
||||
@@ -2066,6 +2074,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
skuBind.ID = deletedSku.ID
|
||||
// vendorSkuID的赋值意义不大
|
||||
skuBind.MtwmID = deletedSku.MtwmID
|
||||
skuBind.TaoID = deletedSku.TaoID
|
||||
skuBind.EbaiID = deletedSku.EbaiID
|
||||
skuBind.JdsID = deletedSku.JdsID
|
||||
skuBind.JdsWareID = deletedSku.JdsWareID
|
||||
@@ -2125,6 +2134,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldMtwmSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldTaoSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldYbSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldJdsSyncStatus: model.SyncFlagDeletedMask,
|
||||
model.FieldDdSyncStatus: model.SyncFlagDeletedMask,
|
||||
@@ -2262,6 +2272,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
updateFieldMap[model.FieldJdSyncStatus] = 1
|
||||
updateFieldMap[model.FieldEbaiSyncStatus] = 1
|
||||
updateFieldMap[model.FieldMtwmSyncStatus] = 1
|
||||
updateFieldMap[model.FieldTaoSyncStatus] = 1
|
||||
updateFieldMap[model.FieldDdSyncStatus] = 1
|
||||
updateFieldMap[model.FieldUpdatedAt] = 1
|
||||
updateFieldMap[model.FieldLastOperator] = 1
|
||||
@@ -2424,6 +2435,7 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind
|
||||
model.FieldJdSyncStatus: skuBind.JdSyncStatus | model.SyncFlagSaleMask,
|
||||
model.FieldEbaiSyncStatus: skuBind.EbaiSyncStatus | model.SyncFlagSaleMask,
|
||||
model.FieldMtwmSyncStatus: skuBind.MtwmSyncStatus | model.SyncFlagSaleMask,
|
||||
model.FieldTaoSyncStatus: skuBind.TaoSyncStatus | model.SyncFlagSaleMask,
|
||||
model.FieldDdSyncStatus: skuBind.DdSyncStatus | model.SyncFlagSaleMask,
|
||||
}
|
||||
if utils.IsTimeZero(autoSaleTime) || skuBind.Status == model.SkuStatusNormal {
|
||||
@@ -3195,6 +3207,7 @@ func setStoreSkuBindStatus(skuBind *model.StoreSkuBind, status int8) {
|
||||
skuBind.JdSyncStatus |= status
|
||||
skuBind.EbaiSyncStatus |= status
|
||||
skuBind.MtwmSyncStatus |= status
|
||||
skuBind.TaoSyncStatus |= status
|
||||
skuBind.YbSyncStatus |= status
|
||||
skuBind.JdsSyncStatus |= status
|
||||
skuBind.DdSyncStatus |= status
|
||||
@@ -5495,6 +5508,7 @@ func buildStoreSkuBindInfosAndFocus(ctx *jxcontext.Context, db *dao.DaoDB, store
|
||||
JxPrice: jxPrice,
|
||||
YbSyncStatus: 0,
|
||||
MtwmSyncStatus: model.SyncFlagNewMask,
|
||||
TaoSyncStatus: model.SyncFlagNewMask,
|
||||
JdSyncStatus: model.SyncFlagNewMask,
|
||||
EbaiSyncStatus: model.SyncFlagNewMask,
|
||||
}
|
||||
|
||||
@@ -397,6 +397,8 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin
|
||||
status = jxSkuInfo.Skus[0].EbaiSyncStatus
|
||||
} else if vendorID == model.VendorIDJD {
|
||||
status = jxSkuInfo.Skus[0].JdSyncStatus
|
||||
} else if vendorID == model.VendorIDTaoVegetable {
|
||||
status = jxSkuInfo.Skus[0].TaoSyncStatus
|
||||
}
|
||||
syncStatus := utils.Int2Str(int(status))
|
||||
toBeCreate := GetBoolName(model.IsSyncStatusNeedCreate(status))
|
||||
|
||||
@@ -69,6 +69,10 @@ func CreateStoreCategoryByStoreSku(ctx *jxcontext.Context, vendorID, storeID int
|
||||
}
|
||||
|
||||
func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, nameIDs, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
// 668594 正式服印象汇 668469 测试服芬姐
|
||||
if storeID != 668594 && storeID != 668469 && vendorID == model.VendorIDTaoVegetable {
|
||||
return "", nil
|
||||
}
|
||||
handler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
|
||||
num := 0
|
||||
db := dao.GetDB()
|
||||
@@ -551,9 +555,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
||||
}
|
||||
} else {
|
||||
if sku.MergedStatus == model.SkuStatusNormal {
|
||||
if vendorID == model.VendorIDDD {
|
||||
createList = append(createList, sku)
|
||||
} else if dao.IsVendorThingIDEmpty(sku.VendorCatID) && !strings.Contains(sku.StoreName, model.ExdStoreName) && vendorID != model.VendorIDYB && vendorID != model.VendorIDJDShop {
|
||||
if dao.IsVendorThingIDEmpty(sku.VendorCatID) && !strings.Contains(sku.StoreName, model.ExdStoreName) && vendorID != model.VendorIDYB && vendorID != model.VendorIDDD || vendorID != model.VendorIDJDShop {
|
||||
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)
|
||||
|
||||
@@ -104,12 +104,12 @@ var (
|
||||
VendorIDYB: "Yb",
|
||||
VendorIDJX: "Jx",
|
||||
VendorIDJDShop: "Jds",
|
||||
VendorIDTaoVegetable: "Tao",
|
||||
|
||||
VendorIDDada: "Dada",
|
||||
VendorIDMTPS: "Mtps",
|
||||
VendorIDFengNiao: "Fn",
|
||||
VendorIDSFPS: "Sfps",
|
||||
//VendorIDDYPS: "DYPS",
|
||||
VendorIDUUPT: "UUPT",
|
||||
|
||||
VendorIDFeiE: "Feie",
|
||||
@@ -140,6 +140,7 @@ var (
|
||||
VendorIDJDShop: "京东商城",
|
||||
VendorIDWSC: "微盟微商城",
|
||||
VendorIDJX: "京西商城",
|
||||
VendorIDTaoVegetable: "淘先达",
|
||||
|
||||
VendorIDDada: "达达众包",
|
||||
VendorIDMTPS: "美团配送",
|
||||
|
||||
@@ -28,6 +28,7 @@ var (
|
||||
ShopChineseNames = map[int]string{
|
||||
VendorIDJD: globals.StoreName,
|
||||
VendorIDMTWM: globals.StoreNameMtwm,
|
||||
VendorIDTaoVegetable: globals.StoreNameTao,
|
||||
VendorIDELM: globals.StoreNameEbai,
|
||||
VendorIDEBAI: globals.StoreNameEbai,
|
||||
VendorIDJX: fmt.Sprintf("%s商城", globals.StoreName),
|
||||
@@ -154,6 +155,7 @@ var (
|
||||
VendorIDELM: 0,
|
||||
VendorIDEBAI: 0,
|
||||
VendorIDDD: 0,
|
||||
VendorIDTaoVegetable: 0,
|
||||
}
|
||||
|
||||
ZXCityCodeMap = map[int]string{
|
||||
@@ -288,6 +290,8 @@ const (
|
||||
OrderStatusEndEnd = 120
|
||||
|
||||
AfsOrderStatusWait4Approve = 155 // 待审核售后单
|
||||
AfsOrderStatusCancelAfs = 156 // 用户取消售后
|
||||
AfsOrderStatusOnSaleAfs = 157 // 用户售中取消
|
||||
AfsOrderStatusNew = 160 // 已审核或不需要审核售后单
|
||||
AfsOrderStatusWait4ReceiveGoods = 165 // 退款退货的,需要商家确认收到货
|
||||
AfsOrderStatusReceivedGoods = 167 // 已确认收到货
|
||||
|
||||
@@ -510,6 +510,7 @@ func AddStoreCategoryMap(db *DaoDB, storeID, categoryID int, vendorID int, vendo
|
||||
StoreID: storeID,
|
||||
CategoryID: categoryID,
|
||||
MtwmSyncStatus: model.SyncFlagNewMask,
|
||||
TaoSyncStatus: model.SyncFlagNewMask,
|
||||
EbaiSyncStatus: model.SyncFlagNewMask,
|
||||
DdSyncStatus: model.SyncFlagNewMask,
|
||||
YbSyncStatus: model.SyncFlagNewMask,
|
||||
@@ -533,6 +534,9 @@ func AddStoreCategoryMap(db *DaoDB, storeID, categoryID int, vendorID int, vendo
|
||||
} else if vendorID == model.VendorIDDD {
|
||||
storeCat.DdID = vendorCategoryID
|
||||
storeCat.DdSyncStatus = status
|
||||
} else if vendorID == model.VendorIDTaoVegetable {
|
||||
storeCat.TaoID = vendorCategoryID
|
||||
storeCat.TaoSyncStatus = status
|
||||
} else {
|
||||
panic("unsupported vendor")
|
||||
}
|
||||
|
||||
@@ -298,6 +298,7 @@ type StoreSkuExt struct {
|
||||
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||
EbaiSyncStatus int8 `orm:"default(2)" json:"ebaiSyncStatus"`
|
||||
MtwmSyncStatus int8 `orm:"default(2)" json:"mtwmSyncStatus"`
|
||||
TaoSyncStatus int8 `orm:"default(2)" json:"taoSyncStatus"`
|
||||
DdSyncStatus int8 `orm:"default(2)" json:"ddSyncStatus"`
|
||||
YbSyncStatus int8 `orm:"default(2)" json:"ybSyncStatus"`
|
||||
JdsSyncStatus int8 `orm:"default(2)" json:"jdsSyncStatus"` //京东商城
|
||||
@@ -372,6 +373,7 @@ type StoreSkuAndName struct {
|
||||
StoreSkuSyncInfo
|
||||
JdSyncStatus int8 `orm:"default(2)"`
|
||||
MtwmSyncStatus int8 `orm:"default(2)"`
|
||||
TaoSyncStatus int8 `orm:"default(2)"`
|
||||
EbaiSyncStatus int8 `orm:"default(2)"`
|
||||
}
|
||||
|
||||
@@ -670,9 +672,6 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
|
||||
} else {
|
||||
fmtParams = append(fmtParams, "''")
|
||||
}
|
||||
// if globals.IsStoreSkuAct {
|
||||
// sql += " OR act.sync_status <> 0"
|
||||
// }
|
||||
sql += ")"
|
||||
} else {
|
||||
sql += " AND t1.deleted_at = ?"
|
||||
@@ -682,11 +681,6 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
|
||||
sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
||||
sqlParams = append(sqlParams, skuIDs)
|
||||
}
|
||||
// 多门店平台没有成功创建的商品,不直接过滤,让上层同步时报错
|
||||
// if !isSingleStorePF {
|
||||
// sql += " AND t2.%s_id <> 0"
|
||||
// fmtParams = append(fmtParams, fieldPrefix)
|
||||
// }
|
||||
sql = fmt.Sprintf(sql, fmtParams...)
|
||||
sql += " ORDER BY t1.price"
|
||||
if err = GetRows(db, &skus, sql, sqlParams...); err != nil {
|
||||
@@ -1433,6 +1427,9 @@ func SetStoreSkuBindVendorPrice(storeSkuBind *model.StoreSkuBind, vendorID int,
|
||||
case model.VendorIDDD:
|
||||
storeSkuBind.DdPrice = vendorPrice
|
||||
storeSkuBind.DdLockTime = pLockTime
|
||||
case model.VendorIDTaoVegetable:
|
||||
storeSkuBind.TaoPrice = vendorPrice
|
||||
storeSkuBind.TaoLockTime = pLockTime
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1448,6 +1445,8 @@ func GetStoreSkuBindVendorPrice(storeSkuBind *model.StoreSkuBind, vendorID int)
|
||||
vendorPrice = storeSkuBind.JxPrice
|
||||
case model.VendorIDDD:
|
||||
vendorPrice = storeSkuBind.DdPrice
|
||||
case model.VendorIDTaoVegetable:
|
||||
vendorPrice = storeSkuBind.TaoPrice
|
||||
}
|
||||
return vendorPrice
|
||||
}
|
||||
@@ -1460,6 +1459,9 @@ func SetStoreSkuBindSyncStatus(storeSkuBind *model.StoreSkuBind, vendorID int, s
|
||||
storeSkuBind.MtwmSyncStatus = syncStatus
|
||||
case model.VendorIDEBAI:
|
||||
storeSkuBind.EbaiSyncStatus = syncStatus
|
||||
case model.VendorIDTaoVegetable:
|
||||
storeSkuBind.TaoSyncStatus = syncStatus
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1471,6 +1473,8 @@ func GetStoreSkuBindSyncStatus(storeSkuBind *model.StoreSkuBind, vendorID int) (
|
||||
syncStatus = storeSkuBind.MtwmSyncStatus
|
||||
case model.VendorIDEBAI:
|
||||
syncStatus = storeSkuBind.EbaiSyncStatus
|
||||
case model.VendorIDTaoVegetable:
|
||||
syncStatus = storeSkuBind.TaoSyncStatus
|
||||
}
|
||||
return syncStatus
|
||||
}
|
||||
@@ -1481,6 +1485,8 @@ func SetStoreCatMapSyncStatus(storeCatMap *model.StoreSkuCategoryMap, vendorID i
|
||||
storeCatMap.MtwmSyncStatus = syncStatus
|
||||
case model.VendorIDEBAI:
|
||||
storeCatMap.EbaiSyncStatus = syncStatus
|
||||
case model.VendorIDTaoVegetable:
|
||||
storeCatMap.TaoSyncStatus = syncStatus
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ const (
|
||||
// FieldElmSyncStatus = "ElmSyncStatus"
|
||||
FieldEbaiSyncStatus = "EbaiSyncStatus"
|
||||
FieldMtwmSyncStatus = "MtwmSyncStatus"
|
||||
FieldTaoSyncStatus = "TaoSyncStatus"
|
||||
FieldDdSyncStatus = "DdSyncStatus"
|
||||
// FieldWscSyncStatus = "WscSyncStatus"
|
||||
FieldYbSyncStatus = "YbSyncStatus"
|
||||
|
||||
@@ -132,12 +132,11 @@ type SkuCategory struct {
|
||||
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
||||
MtwmCategoryID int64 `orm:"column(mtwm_category_id)" json:"mtwmCategoryID"` // 这个是指对应的美团外卖商品类别
|
||||
DdCategoryID int64 `orm:"column(dd_category_id)" json:"ddCategoryID"` // 这个是指对应的抖音外卖商品类别
|
||||
TaoCategoryID int64 `orm:"column(tao_category_id)" json:"taoCategoryID"` // 这个是指对应的抖音外卖商品类别
|
||||
YbCategoryID int64 `orm:"column(yb_category_id)" json:"ybCategoryID"` // 这个是指对应的银豹商品类别
|
||||
JdsCategoryID int64 `orm:"column(jds_category_id)" json:"jdsCategoryID"` // 这个是指对应的京东商城类别
|
||||
GoMeiCategoryID int64 `orm:"column(go_mei_category_id)" json:"goMeiCategoryID"` // 这个是指对应的国美商城类别
|
||||
|
||||
// ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
|
||||
// WscCategoryID int64 `orm:"column(wsc_category_id)" json:"wscCategoryID"` // 这个是指对应的美团外卖商品类别
|
||||
Status int8 `orm:"default(1)" json:"status"` //分类状态,0表示禁用,1表示启用
|
||||
Img string `orm:"size(512)" json:"img"` //分类图片
|
||||
|
||||
@@ -146,8 +145,6 @@ type SkuCategory struct {
|
||||
IsExdSpec int `json:"isExdSpec"` //是否是饿鲜达特有新建的分类
|
||||
IsExdSync int `json:"isExdSync"` //饿鲜达分类是否同步到平台
|
||||
|
||||
// JdID int64 `orm:"column(jd_id);index" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
|
||||
// JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||
IsSync int `json:"isSync"` //是否同步到平台
|
||||
}
|
||||
|
||||
@@ -210,7 +207,6 @@ func (*SkuName) TableIndex() [][]string {
|
||||
|
||||
type Sku struct {
|
||||
ModelIDCULD
|
||||
|
||||
CategoryID int `orm:"column(category_id)" json:"categoryID"` // 特殊类别,一般用于秒杀,特价之类的特殊类别
|
||||
NameID int `orm:"column(name_id)" json:"nameID"` // todo 这个索引应该要求唯一
|
||||
SkuIndex int `json:"-"`
|
||||
@@ -220,17 +216,12 @@ type Sku struct {
|
||||
Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality
|
||||
Status int `json:"status"`
|
||||
Seq int `json:"seq"`
|
||||
|
||||
ExdSkuID string `orm:"column(exd_sku_id)" json:"exdSkuID"` //饿鲜达商品ID
|
||||
ExdCategoryThirdID int `orm:"column(exd_category_third_id)" json:"exdCategoryThirdID"`
|
||||
EclpID string `orm:"column(eclp_id)" json:"eclpID"` //eclp物料商品ID
|
||||
MinOrderCount int `json:"minOrderCount"` //最少起购份数,美团用
|
||||
LadderBoxNum int `json:"ladderBoxNum"` //包装费x件 ,美团用
|
||||
LadderBoxPrice int `json:"ladderBoxPrice"` //包装费y元 ,美团用
|
||||
// JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
|
||||
// JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||
|
||||
// LinkID int `orm:"column(link_id);null;index" json:"linkID"`
|
||||
}
|
||||
|
||||
type SkuAndName struct {
|
||||
@@ -291,6 +282,7 @@ type SkuNameExt struct {
|
||||
JdsCategoryID string `json:"jdsCategoryID"`
|
||||
EbaiCategoryID string `json:"ebaiCategoryID"`
|
||||
MtwmCategoryID string `json:"mtwmCategoryID"`
|
||||
TaoCategoryID string `json:"TaoCategoryID"`
|
||||
DdCategoryID string `json:"ddCategoryID"`
|
||||
}
|
||||
|
||||
|
||||
@@ -55,20 +55,18 @@ type StoreSkuCategoryMap struct {
|
||||
StoreID int `orm:"column(store_id)"`
|
||||
CategoryID int `orm:"column(category_id)"`
|
||||
|
||||
// ElmID int64 `orm:"column(elm_id);index"`
|
||||
EbaiID int64 `orm:"column(ebai_id);index"`
|
||||
MtwmID string `orm:"column(mtwm_id);index;size(16)"`
|
||||
TaoID string `orm:"column(tao_id);index;size(16)"`
|
||||
DdID string `orm:"column(dd_id);index;size(16)"`
|
||||
// WscID int64 `orm:"column(wsc_id);index"`
|
||||
YbID int64 `orm:"column(yb_id);index"`
|
||||
JdsID int64 `orm:"column(jds_id);index"`
|
||||
|
||||
// ElmSyncStatus int8 `orm:"default(2)"`
|
||||
EbaiSyncStatus int8 `orm:"default(2)"`
|
||||
MtwmSyncStatus int8 `orm:"default(2)"`
|
||||
TaoSyncStatus int8 `orm:"default(2)"`
|
||||
DdSyncStatus int8 `orm:"default(2)"`
|
||||
// WscSyncStatus int8 `orm:"default(2)"`
|
||||
YbID int64 `orm:"column(yb_id);index"`
|
||||
YbSyncStatus int8 `orm:"default(2)"`
|
||||
JdsID int64 `orm:"column(jds_id);index"`
|
||||
JdsSyncStatus int8 `orm:"default(2)"`
|
||||
}
|
||||
|
||||
@@ -114,30 +112,27 @@ type StoreSkuBind struct {
|
||||
|
||||
// ElmID int64 `orm:"column(elm_id);index"`
|
||||
MtwmID int64 `orm:"column(mtwm_id);index"`
|
||||
TaoID int64 `orm:"column(tao_id);index"`
|
||||
EbaiID int64 `orm:"column(ebai_id);index"`
|
||||
YbID int64 `orm:"column(yb_id);index"`
|
||||
JdsID int64 `orm:"column(jds_id);index"`
|
||||
JdsWareID int64 `orm:"column(jds_ware_id)"`
|
||||
// GmID string `orm:"column(gm_id)"`
|
||||
// WscID int64 `orm:"column(wsc_id);index"` // 表示微盟skuId
|
||||
// WscID2 int64 `orm:"column(wsc_id2);index"` // 表示微盟goodsId
|
||||
DdID int64 `orm:"column(dd_id);index"` // 子品主商品id
|
||||
VendorSonSkuID string `orm:"column(vendor_son_sku_id)"` // 子商品skuid
|
||||
VendorSkuAttrId string `orm:"column(vendor_sku_attr_id)"` // 抖音需要,主品skuid
|
||||
VendorMainId string `orm:"column(vendor_Main_id)"` // 抖音需要,商品主id
|
||||
|
||||
// ElmSyncStatus int8 `orm:"default(2)"`
|
||||
JdSyncStatus int8 `orm:"default(2)"`
|
||||
MtwmSyncStatus int8 `orm:"default(2)"`
|
||||
TaoSyncStatus int8 `orm:"default(2)"`
|
||||
DdSyncStatus int8 `orm:"default(2)"`
|
||||
EbaiSyncStatus int8 `orm:"default(2)"`
|
||||
YbSyncStatus int8 `orm:"default(2)"`
|
||||
JdsSyncStatus int8 `orm:"default(2)"` //京东商城
|
||||
//GmSyncStatus int8 `orm:"default(2)"` //京东商城
|
||||
// WscSyncStatus int8 `orm:"default(2)"`
|
||||
|
||||
JdPrice int `json:"jdPrice"`
|
||||
MtwmPrice int `json:"mtwmPrice"`
|
||||
TaoPrice int `json:"taoPrice"`
|
||||
EbaiPrice int `json:"ebaiPrice"`
|
||||
JxPrice int `json:"jxPrice"`
|
||||
DdPrice int `json:"ddPrice"`
|
||||
@@ -148,6 +143,7 @@ type StoreSkuBind struct {
|
||||
JdLockTime *time.Time `orm:"null" json:"jdLockTime"`
|
||||
JdsLockTime *time.Time `orm:"null" json:"jdsLockTime"`
|
||||
MtwmLockTime *time.Time `orm:"null" json:"mtwmLockTime"`
|
||||
TaoLockTime *time.Time `orm:"null" json:"taoLockTime"`
|
||||
EbaiLockTime *time.Time `orm:"null" json:"ebaiLockTime"`
|
||||
JxLockTime *time.Time `orm:"null" json:"jxLockTime"`
|
||||
YbLockTime *time.Time `orm:"null" json:"ybLockTime"`
|
||||
|
||||
@@ -110,9 +110,21 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
default:
|
||||
order.Status = model.WaybillStatusUnknown
|
||||
}
|
||||
|
||||
err := dadaapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status))
|
||||
defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if order.OrderVendorID == model.VendorIDDD {
|
||||
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
tiktokStatusPush(order, msg.OrderStatus)
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// 抖音订单状态回传
|
||||
func tiktokStatusPush(order *model.Waybill, status int) {
|
||||
result := &mtpsapi.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
@@ -122,7 +134,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
LogisticsStatus: order.Status,
|
||||
OpCode: "",
|
||||
}
|
||||
switch msg.OrderStatus {
|
||||
switch status {
|
||||
case dadaapi.OrderStatusWaitingForAccept: // 待接单,召唤骑手
|
||||
result.LogisticsStatus = model.WaybillStatusNew
|
||||
result.LogisticsContext = model.RiderWaitRider
|
||||
@@ -158,8 +170,6 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) callbackMsg2Waybill(msg *dadaapi.CallbackMsg) (retVal *model.Waybill, goods *model.GoodsOrder) {
|
||||
@@ -604,32 +614,32 @@ func (c *DeliveryHandler) GetDeliverLiquidatedDamages(orderId string, deliverId
|
||||
|
||||
// 直接返回的 原因是,一个订单在达达发布多次运单时,QueryOrderInfo获取到的运单始终是最后一个运单的配送价格!所以直接返回算了!
|
||||
return localPrice, nil
|
||||
// 平台状态兑换金额
|
||||
var vendorPrice int64 = 0
|
||||
// 未接单不扣款
|
||||
if dadaOrder.AcceptTime == "" {
|
||||
vendorPrice = 0
|
||||
}
|
||||
|
||||
// 有了接单时间,订单变成了待取货
|
||||
if dadaOrder.AcceptTime != "" && dadaOrder.FetchTime == "" {
|
||||
nowTime := time.Now().Unix()
|
||||
fetchTime := utils.Str2Time(dadaOrder.AcceptTime).Unix()
|
||||
timeDiffer := nowTime - fetchTime
|
||||
if timeDiffer > 15*60 || timeDiffer < 60 {
|
||||
vendorPrice = 0
|
||||
}
|
||||
vendorPrice = 200
|
||||
}
|
||||
|
||||
// fetchTime 已经有时间了,代表已经取货.次数取消扣除此订单全部金额
|
||||
// 达达存在多个订单的运单违约金额统计在一起的情况
|
||||
if dadaOrder.FetchTime != "" {
|
||||
vendorPrice = utils.Float64TwoInt64(dadaOrder.DeliveryFee * float64(100))
|
||||
}
|
||||
|
||||
if localPrice > vendorPrice {
|
||||
return localPrice, nil
|
||||
}
|
||||
return vendorPrice, nil
|
||||
//// 平台状态兑换金额
|
||||
//var vendorPrice int64 = 0
|
||||
//// 未接单不扣款
|
||||
//if dadaOrder.AcceptTime == "" {
|
||||
// vendorPrice = 0
|
||||
//}
|
||||
//
|
||||
//// 有了接单时间,订单变成了待取货
|
||||
//if dadaOrder.AcceptTime != "" && dadaOrder.FetchTime == "" {
|
||||
// nowTime := time.Now().Unix()
|
||||
// fetchTime := utils.Str2Time(dadaOrder.AcceptTime).Unix()
|
||||
// timeDiffer := nowTime - fetchTime
|
||||
// if timeDiffer > 15*60 || timeDiffer < 60 {
|
||||
// vendorPrice = 0
|
||||
// }
|
||||
// vendorPrice = 200
|
||||
//}
|
||||
//
|
||||
//// fetchTime 已经有时间了,代表已经取货.次数取消扣除此订单全部金额
|
||||
//// 达达存在多个订单的运单违约金额统计在一起的情况
|
||||
//if dadaOrder.FetchTime != "" {
|
||||
// vendorPrice = utils.Float64TwoInt64(dadaOrder.DeliveryFee * float64(100))
|
||||
//}
|
||||
//
|
||||
//if localPrice > vendorPrice {
|
||||
// return localPrice, nil
|
||||
//}
|
||||
//return vendorPrice, nil
|
||||
}
|
||||
|
||||
@@ -69,7 +69,6 @@ func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int,
|
||||
}
|
||||
parameter.PartnerOrderCode = bill.VendorOrderID
|
||||
if err = api.FnAPI.CancelOrder(parameter); err != nil {
|
||||
globals.SugarLogger.Debugf("============err := %v ", err)
|
||||
if strings.Contains(err.Error(), "运单暂未生成") {
|
||||
err = nil
|
||||
}
|
||||
@@ -122,11 +121,23 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
||||
}
|
||||
// 重量超标减少配送费
|
||||
weight := 4.9500
|
||||
if utils.Int2Float64(order.Weight)/1000 >= weight {
|
||||
reallyWeight := utils.Int2Float64(order.Weight) / 1000
|
||||
if reallyWeight >= weight || reallyWeight <= model.NO {
|
||||
parameter.GoodsWeight = weight
|
||||
} else {
|
||||
parameter.GoodsWeight = reallyWeight
|
||||
}
|
||||
|
||||
var goodsList []*fnpsapi.GoodsItemsList
|
||||
if len(order.Skus) == model.NO {
|
||||
goodsList = append(goodsList, &fnpsapi.GoodsItemsList{
|
||||
ItemName: "平台商品(本地暂无储存信息)",
|
||||
ItemQuantity: model.YES,
|
||||
ItemAmountCent: model.YES,
|
||||
ItemActualAmountCent: model.YES,
|
||||
ItemId: utils.Int2Str(9527),
|
||||
})
|
||||
} else {
|
||||
for _, v := range order.Skus {
|
||||
goodsList = append(goodsList, &fnpsapi.GoodsItemsList{
|
||||
ItemName: v.SkuName,
|
||||
@@ -136,6 +147,7 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
||||
ItemId: utils.Int2Str(v.SkuID),
|
||||
})
|
||||
}
|
||||
}
|
||||
parameter.GoodsItemList = goodsList
|
||||
|
||||
//要求饿百的订单要传来源
|
||||
@@ -182,11 +194,23 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
|
||||
}
|
||||
// 重量超标减少配送费
|
||||
weight := 4.9500
|
||||
if utils.Int2Float64(order.Weight)/1000 >= weight {
|
||||
reallyWeight := utils.Int2Float64(order.Weight) / 1000
|
||||
if reallyWeight >= weight || reallyWeight <= model.NO {
|
||||
preCreateOrder.GoodsWeight = weight
|
||||
} else {
|
||||
preCreateOrder.GoodsWeight = reallyWeight
|
||||
}
|
||||
|
||||
var goodsList []*fnpsapi.GoodsItemsList
|
||||
if len(order.Skus) == model.NO {
|
||||
goodsList = append(goodsList, &fnpsapi.GoodsItemsList{
|
||||
ItemName: "平台商品(本地暂无储存信息)",
|
||||
ItemQuantity: model.YES,
|
||||
ItemAmountCent: model.YES,
|
||||
ItemActualAmountCent: model.YES,
|
||||
ItemId: utils.Int2Str(9527),
|
||||
})
|
||||
} else {
|
||||
for _, v := range order.Skus {
|
||||
goodsList = append(goodsList, &fnpsapi.GoodsItemsList{
|
||||
ItemName: v.SkuName,
|
||||
@@ -196,6 +220,8 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
|
||||
ItemId: utils.Int2Str(v.SkuID),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
preCreateOrder.GoodsItemList = goodsList
|
||||
|
||||
deliveryFeeInfo = &partner.WaybillFeeInfo{}
|
||||
@@ -280,7 +306,17 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify, resultParam *fnpsapi.ShortSta
|
||||
return fnpsapi.Err2CallbackResponse(err, "")
|
||||
}
|
||||
|
||||
if order.OrderVendorID == model.VendorIDDD {
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
tiktokStatusPush(order, orderStatus)
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
}
|
||||
return fnpsapi.Err2CallbackResponse(nil, "")
|
||||
}
|
||||
|
||||
// 抖音订单状态回传
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64) {
|
||||
result := &mtpsapi.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
@@ -317,10 +353,6 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify, resultParam *fnpsapi.ShortSta
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
}
|
||||
|
||||
defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
return fnpsapi.Err2CallbackResponse(nil, "")
|
||||
}
|
||||
|
||||
// 异常报备
|
||||
|
||||
@@ -104,7 +104,6 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("获取运单信息错误,可能是果园运单:%s,%v", utils.Format4Output(msg, false), err)
|
||||
break
|
||||
//return mtpsapi.Err2CallbackResponse(err, fmt.Sprintf("%s", "获取订单状态错误"))
|
||||
}
|
||||
order.DesiredFee = utils.Float64TwoInt64(utils.MustInterface2Float64(data["delivery_fee"]) * 100)
|
||||
order.ActualFee = utils.Float64TwoInt64(utils.MustInterface2Float64(data["pay_amount"]) * 100)
|
||||
@@ -115,7 +114,6 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("获取运单信息错误,可能是果园运单:%s,%v", utils.Format4Output(msg, false), err)
|
||||
break
|
||||
//return mtpsapi.Err2CallbackResponse(err, fmt.Sprintf("%s", "获取订单状态错误"))
|
||||
}
|
||||
order.DesiredFee = utils.Float64TwoInt64(utils.MustInterface2Float64(data["delivery_fee"]) * 100)
|
||||
order.ActualFee = utils.Float64TwoInt64(utils.MustInterface2Float64(data["pay_amount"]) * 100)
|
||||
@@ -132,13 +130,6 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
return mtpsapi.SuccessResponse
|
||||
}
|
||||
|
||||
//if msg.Status == mtpsapi.OrderStatusPickedUp {
|
||||
// order.Status = model.WaybillStatusCourierArrived
|
||||
// mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||
// delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
// msg.Status = mtpsapi.OrderStatusPickedUp
|
||||
//}
|
||||
|
||||
order2, _ := partner.CurOrderManager.LoadOrder(order.VendorOrderID, order.OrderVendorID)
|
||||
//查不到订单可能就是果园的订单
|
||||
if order2 == nil && beego.BConfig.RunMode != "jxgy" {
|
||||
@@ -148,9 +139,12 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
|
||||
// 加入调度器
|
||||
err := mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||
defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if order.OrderVendorID == model.VendorIDDD {
|
||||
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
pushMTPSToTiktok(msg.Status, order)
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
}
|
||||
|
||||
return err
|
||||
@@ -276,7 +270,7 @@ func (c *DeliveryHandler) callbackMsg2Waybill(msg *mtpsapi.CallbackOrderMsg) (re
|
||||
// return deliveryFeeInfo, err
|
||||
//}
|
||||
|
||||
// 新方法平台返回
|
||||
// GetWaybillFee 新方法平台返回(预下单)
|
||||
func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) {
|
||||
shopWeight := float64(order.Weight) / float64(order.Weight)
|
||||
if shopWeight > 50 {
|
||||
@@ -291,7 +285,7 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
|
||||
return nil, err
|
||||
}
|
||||
|
||||
deliveryFeeInfo.RefDeliveryFee, deliveryFeeInfo.RefAddFee, err = api.MtpsAPI.PreCreateByShop(&mtpsapi.PreCreateByShopParam{
|
||||
param := &mtpsapi.PreCreateByShopParam{
|
||||
DeliveryID: deliveryID,
|
||||
OrderID: order.VendorOrderID,
|
||||
ShopID: shopId,
|
||||
@@ -306,13 +300,19 @@ func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInf
|
||||
PayTypeCode: 0,
|
||||
ExpectedDeliveryTime: mtpsapi.DeliveryServiceCodeRapid, // 4002飞速达,4011快速达,4012及时达,4013集中送
|
||||
OuterOrderSourceDesc: "101",
|
||||
})
|
||||
}
|
||||
|
||||
if param.GoodsWidth <= model.NO {
|
||||
param.GoodsWidth = model.YES
|
||||
}
|
||||
|
||||
deliveryFeeInfo.RefDeliveryFee, deliveryFeeInfo.RefAddFee, err = api.MtpsAPI.PreCreateByShop(param)
|
||||
deliveryFeeInfo.DeliveryFee = deliveryFeeInfo.RefDeliveryFee
|
||||
|
||||
return deliveryFeeInfo, err
|
||||
}
|
||||
|
||||
// IDeliveryPlatformHandler(美团配送)
|
||||
// CreateWaybill(美团配送)
|
||||
func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) {
|
||||
db := dao.GetDB()
|
||||
// 检查配送平台是否被禁用
|
||||
@@ -324,16 +324,6 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
||||
return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment)
|
||||
}
|
||||
|
||||
// 自定义计算预估费用
|
||||
//deliveryFee, _, err := delivery.CalculateOrderDeliveryFee(order, time.Now(), db)
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
// 运费预警
|
||||
//if err = delivery.CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee, order, model.VendorIDMTPS); err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
|
||||
// 忽略坐标转换错误,即使是转换出错,也只能当成转换成功来处理,底层会有错误日志输出
|
||||
lngFloat, latFloat, _ := jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
||||
billParams := &mtpsapi.CreateOrderByShopParam{
|
||||
@@ -350,6 +340,9 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
||||
// ExpectedDeliveryTime: order.ExpectedDeliveredTime.Unix(),
|
||||
OrderType: mtpsapi.OrderTypeASAP,
|
||||
}
|
||||
if billParams.GoodsWidth <= model.NO {
|
||||
billParams.GoodsWidth = model.YES
|
||||
}
|
||||
|
||||
// 获取送货单id
|
||||
billParams.DeliveryID = c.getDeliveryID(order)
|
||||
@@ -363,6 +356,7 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
||||
Goods: []*mtpsapi.GoodsItem{},
|
||||
}
|
||||
goodItemMap := map[string]*mtpsapi.GoodsItem{}
|
||||
if len(order.Skus) > model.NO {
|
||||
for _, sku := range order.Skus {
|
||||
goodItem := &mtpsapi.GoodsItem{
|
||||
GoodCount: sku.Count,
|
||||
@@ -377,6 +371,20 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee
|
||||
item.GoodCount += goodItem.GoodCount
|
||||
}
|
||||
}
|
||||
} else {
|
||||
goodItem := &mtpsapi.GoodsItem{
|
||||
GoodCount: model.YES,
|
||||
GoodPrice: jxutils.IntPrice2Standard(model.YES),
|
||||
}
|
||||
goodItem.GoodName, goodItem.GoodUnit = jxutils.GetNameAndUnitFromSkuName("本地暂无商品信息 500g/份")
|
||||
// 好像SKU名不能重复,否则会报错,尝试处理一下
|
||||
if item, ok := goodItemMap[goodItem.GoodName]; !ok {
|
||||
goods.Goods = append(goods.Goods, goodItem)
|
||||
goodItemMap[goodItem.GoodName] = goodItem
|
||||
} else {
|
||||
item.GoodCount += goodItem.GoodCount
|
||||
}
|
||||
}
|
||||
|
||||
billParams.Note = utils.FilterMb4("客户电话:" + order.ConsigneeMobile + "," + order.BuyerComment + ",配送遇到问题,可联系18048531223取消配送单,禁止未配送直接完成定单!")
|
||||
billParams.GoodsDetail = string(utils.MustMarshal(goods))
|
||||
|
||||
@@ -3,7 +3,9 @@ package delivery
|
||||
import (
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"math/big"
|
||||
"time"
|
||||
|
||||
@@ -19,6 +21,7 @@ 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"
|
||||
utilsTao "git.rosy.net.cn/jx-callback/business/partner/purchase/tao_vegetable"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
)
|
||||
|
||||
@@ -88,9 +91,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
//3.当同一个订单已经上传了一次配送信息,如再次同步会更新配送信息,以最新的一次为准。
|
||||
//4.如订单已完成、已取消等状态发货将失败。
|
||||
for _, v := range orders {
|
||||
//if v.Status >= model.OrderStatusFinished || v.Status < model.OrderStatusDelivering {
|
||||
// continue
|
||||
//}
|
||||
if orderId == "" && v.VendorID == model.VendorIDDD { // 抖音门店订单除了三方配送回调时推送,不在主动推送配送消息
|
||||
continue
|
||||
}
|
||||
@@ -134,6 +134,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
riderInfo.LogisticsStatus = v.Status
|
||||
}
|
||||
|
||||
taoDeliveryStatus := ""
|
||||
switch riderInfo.LogisticsStatus {
|
||||
case 5: // 呼叫骑手
|
||||
riderInfo.LogisticsStatus = 0
|
||||
@@ -147,12 +148,15 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
case 20: //配送中
|
||||
riderInfo.LogisticsStatus = 20
|
||||
riderInfo.OpCode = tiktok_api.TiktokLogisticsRIDERPICKUP
|
||||
taoDeliveryStatus = tao_vegetable.OrderStatusDelivery // 配送中
|
||||
case 110: // 完成
|
||||
riderInfo.LogisticsStatus = 40
|
||||
riderInfo.OpCode = tiktok_api.TiktokLogisticsDELIVERED
|
||||
taoDeliveryStatus = tao_vegetable.OrderStatusDeliveryOver // 完成
|
||||
case 105: // 完成
|
||||
riderInfo.LogisticsStatus = 40
|
||||
riderInfo.OpCode = tiktok_api.TiktokLogisticsDELIVERED
|
||||
taoDeliveryStatus = tao_vegetable.OrderStatusDeliveryOver // 完成
|
||||
case 115: // 取消
|
||||
riderInfo.CourierName = ""
|
||||
riderInfo.CourierPhone = ""
|
||||
@@ -161,24 +165,28 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
case 22, 0, 120: // 异常配送
|
||||
riderInfo.LogisticsStatus = 22
|
||||
riderInfo.OpCode = tiktok_api.TiktokLogisticsINDDELIVERYEXCEPTION
|
||||
taoDeliveryStatus = tao_vegetable.OrderStatusUserRejection // 完成
|
||||
default:
|
||||
continue
|
||||
}
|
||||
|
||||
if riderInfo.Longitude == "" {
|
||||
riderInfo.Longitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLng) / 1000000)
|
||||
}
|
||||
if riderInfo.Latitude == "" {
|
||||
riderInfo.Latitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLat) / 1000000)
|
||||
}
|
||||
|
||||
if riderInfo.CourierPhone == "" {
|
||||
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), v.JxStoreID, 0, "")
|
||||
if riderInfo.CourierPhone == "" {
|
||||
if err == nil {
|
||||
riderInfo.CourierPhone = storeDetail.Tel1
|
||||
}
|
||||
riderInfo.CourierName = "老板"
|
||||
}
|
||||
|
||||
if riderInfo.Longitude == "" && riderInfo.LogisticsStatus != 105 {
|
||||
riderInfo.Longitude = utils.Float64ToStr(utils.Int2Float64(storeDetail.Lng) / 1000000)
|
||||
riderInfo.Latitude = utils.Float64ToStr(utils.Int2Float64(storeDetail.Lat) / 1000000)
|
||||
}
|
||||
if riderInfo.Longitude == "" && riderInfo.LogisticsStatus == 105 {
|
||||
riderInfo.Longitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLng) / 1000000)
|
||||
riderInfo.Latitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLat) / 1000000)
|
||||
}
|
||||
|
||||
if riderInfo.CourierPhone == "" {
|
||||
riderInfo.CourierName = "石锋"
|
||||
riderInfo.CourierPhone = "18048531223"
|
||||
@@ -186,6 +194,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
if riderInfo.ThirdCarrierOrderId == "" {
|
||||
riderInfo.ThirdCarrierOrderId = riderInfo.OrderId + "_fake"
|
||||
}
|
||||
|
||||
// 目前只推送美团骑手信息
|
||||
switch v.VendorID {
|
||||
case model.VendorIDMTWM: // 美团订单
|
||||
@@ -212,6 +221,20 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
continue
|
||||
case model.VendorIDJX: // 京西平台
|
||||
continue
|
||||
case model.VendorIDTaoVegetable: // 淘鲜达
|
||||
// 定时任务刷新骑手坐标
|
||||
if orderId == "" {
|
||||
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
|
||||
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, utils.Struct2Map(riderInfo, "", true)); err != nil {
|
||||
globals.SugarLogger.Errorf("Error pushing meituan rider information :%s--%s--%v", v.VendorOrderID, utils.Format4Output(riderInfo, false), err)
|
||||
}
|
||||
}
|
||||
} else { // 订单状态改变 [配送中/用户签收/用户拒收]
|
||||
param := utilsTao.OrderStatusChangeDelivery(&v.GoodsOrder, taoDeliveryStatus)
|
||||
if err := api.TaoVegetableApi.DeliveryFinish(param); err != nil {
|
||||
globals.SugarLogger.Debugf("淘先达运单状态推送错误运单状态[%s],错误:%s", taoDeliveryStatus, err.Error())
|
||||
}
|
||||
}
|
||||
default:
|
||||
globals.SugarLogger.Errorf("Order source error, non system order: %s", v.VendorOrderID)
|
||||
continue
|
||||
|
||||
@@ -90,7 +90,7 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i
|
||||
weight int
|
||||
productDetail []*sfps2.ProductDetail
|
||||
)
|
||||
if order.Weight >= 49500 {
|
||||
if order.Weight >= 49500 || order.Weight <= model.NO {
|
||||
weight = 49500
|
||||
} else {
|
||||
weight = order.Weight
|
||||
@@ -127,12 +127,19 @@ func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee i
|
||||
},
|
||||
}
|
||||
|
||||
if len(order.Skus) != model.NO {
|
||||
for _, v := range order.Skus {
|
||||
productDetail = append(productDetail, &sfps2.ProductDetail{
|
||||
ProductName: v.SkuName,
|
||||
ProductNum: int64(v.Count),
|
||||
})
|
||||
}
|
||||
} else {
|
||||
productDetail = append(productDetail, &sfps2.ProductDetail{
|
||||
ProductName: "本地暂无商品储存信息",
|
||||
ProductNum: int64(model.YES),
|
||||
})
|
||||
}
|
||||
param.OrderDetail.ProductDetail = productDetail
|
||||
|
||||
sfOrderID, sfBillID, sfTotalPrice, sfReallyPrice, err := api.SfPsAPI.CreateOrder(param)
|
||||
@@ -192,13 +199,15 @@ func (d DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int,
|
||||
func (d DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) {
|
||||
var (
|
||||
weight int
|
||||
//productDetail []*sfps2.ProductDetail
|
||||
)
|
||||
if order.Weight >= 49500 {
|
||||
|
||||
// 默认重量
|
||||
if order.Weight >= 49500 || order.Weight <= 0 {
|
||||
weight = 49500
|
||||
} else {
|
||||
weight = order.Weight
|
||||
}
|
||||
|
||||
store, err := dao.GetStoreDetail(dao.GetDB(), getReallyStoreID(order.StoreID, order.JxStoreID), 0, "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -382,12 +391,20 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons
|
||||
globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg)
|
||||
}
|
||||
|
||||
globals.SugarLogger.Debugf("SFPS OnWaybillMsg order=%s", utils.Format4Output(order, false))
|
||||
if err := partner.CurOrderManager.OnWaybillStatusChanged(order); err != nil {
|
||||
return sfps2.Err2CallbackResponse(err)
|
||||
}
|
||||
|
||||
if order.OrderVendorID == model.VendorIDDD {
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
tiktokStatusPush(order, orderStatus)
|
||||
case model.VendorIDTaoVegetable, model.VendorIDMTWM:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
}
|
||||
return sfps2.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64) {
|
||||
result := &mtpsapi.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
@@ -424,10 +441,6 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
}
|
||||
|
||||
defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
return sfps2.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
// OnWaybillExceptSF 异常报备
|
||||
|
||||
@@ -381,7 +381,16 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
|
||||
return uuptapi.Err2CallbackResponse(err)
|
||||
}
|
||||
//推送抖音
|
||||
if param.OrderVendorID == model.VendorIDDD {
|
||||
switch param.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
tiktokStatusPush(param, req.State)
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(param.VendorOrderID, param.Status) // 骑手位置更新
|
||||
}
|
||||
return uuptapi.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
func tiktokStatusPush(param *model.Waybill, orderStatus string) {
|
||||
result := &mtpsapi.RiderInfo{
|
||||
OrderId: param.VendorOrderID,
|
||||
ThirdCarrierOrderId: param.VendorOrderID,
|
||||
@@ -391,7 +400,7 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
|
||||
LogisticsStatus: param.Status,
|
||||
OpCode: "",
|
||||
}
|
||||
switch req.State {
|
||||
switch orderStatus {
|
||||
case uuptapi.StateConfirmSuccess: //下单成功
|
||||
result.LogisticsStatus = model.WaybillStatusNew
|
||||
result.LogisticsContext = model.RiderWaitRider
|
||||
@@ -418,9 +427,6 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
|
||||
result.LogisticsContext = model.RiderGetOrderDeliverOther
|
||||
}
|
||||
delivery.PullTiktokRiderInfo(result)
|
||||
}
|
||||
defer delivery.GetOrderRiderInfoToPlatform(param.VendorOrderID, param.Status) // 骑手位置更新
|
||||
return uuptapi.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
//辅助函数
|
||||
|
||||
@@ -53,3 +53,13 @@ func GetOrderIDFromMap(orderMap map[string]interface{}) string {
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func GetAfsIDFromMap(orderMap map[string]interface{}) string {
|
||||
if orderID := orderMap["refund_order_id"]; orderID != nil {
|
||||
if tryOrderID, ok := orderID.(string); ok {
|
||||
return tryOrderID
|
||||
}
|
||||
return utils.Int64ToStr(utils.MustInterface2Int64(orderID))
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ func (p *PurchaseHandler) OrderFinancialDetail2Refund(orderFinancial *model.Orde
|
||||
func (p *PurchaseHandler) AfsOrderDetail2Financial(orderData map[string]interface{}) (afsOrder *model.AfsOrder) {
|
||||
afsOrder = &model.AfsOrder{
|
||||
VendorID: model.VendorIDEBAI,
|
||||
AfsOrderID: GetOrderIDFromMap(orderData),
|
||||
AfsOrderID: GetAfsIDFromMap(orderData),
|
||||
VendorOrderID: GetOrderIDFromMap(orderData),
|
||||
}
|
||||
order, err := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, afsOrder.VendorID)
|
||||
|
||||
@@ -72,8 +72,6 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, payType int,
|
||||
err = api.TLpayAPI.CreateH5UnitorderOrder(param2)
|
||||
} else {
|
||||
result, err := api.TLpayAPI.CreateUnitorderOrder(param)
|
||||
globals.SugarLogger.Debugf("===============result: %s", utils.Format4Output(result, false))
|
||||
globals.SugarLogger.Debugf("===============result: %s", utils.Format4Output(err, false))
|
||||
if err == nil {
|
||||
var result2 tonglianpayapi.PayInfo
|
||||
json.Unmarshal([]byte(result.PayInfo), &result2)
|
||||
|
||||
@@ -93,12 +93,8 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
|
||||
return order, result, err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) getOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) {
|
||||
return getAPI(vendorOrgCode, 0, vendorStoreID).OrderStatusAndPsInfo(param)
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetOrderRider(vendorOrgCode, vendorStoreID string, param map[string]interface{}) (err error) {
|
||||
return p.getOrderRider(vendorOrgCode, vendorStoreID, param)
|
||||
return getAPI(vendorOrgCode, 0, vendorStoreID).OrderStatusAndPsInfo(param)
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID, vendorStoreID string) (order *model.GoodsOrder, err error) {
|
||||
@@ -570,6 +566,7 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam
|
||||
return err
|
||||
}
|
||||
|
||||
// SelfDeliverDelivered 自配送订单送达
|
||||
func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderArrived(utils.Str2Int64(order.VendorOrderID))
|
||||
|
||||
@@ -744,6 +744,7 @@ func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode strin
|
||||
return cancelOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(model.SyncFlagDeletedMask, vendorStoreID, storeSkuList))
|
||||
}
|
||||
|
||||
// UpdateStoreSkusSpecTag 更新限购
|
||||
func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
var foodDataList = []map[string]interface{}{}
|
||||
for _, v := range storeSkuList {
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
} */
|
||||
}
|
||||
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 {
|
||||
|
||||
// 订单
|
||||
for _, x := range *result.SubOrderResponseList {
|
||||
orderSkuFinancial := &model.OrderSkuFinancial{
|
||||
VendorID: orderFinancial.VendorID,
|
||||
VendorOrderID: orderFinancial.VendorOrderID,
|
||||
// OrderFinancialID: orderFinancial.VendorOrderID,
|
||||
// ConfirmTime: utils.Str2TimeWithDefault(utils.Interface2String(result["ctime"]), utils.DefaultTimeValue),
|
||||
VendorStoreID: result["app_poi_code"].(string),
|
||||
VendorStoreID: *result.StoreId,
|
||||
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"])),
|
||||
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
|
||||
}
|
||||
} 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 {
|
||||
|
||||
// 活动
|
||||
for _, v := range *x.Activitys {
|
||||
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"]))
|
||||
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)
|
||||
}
|
||||
// 通过活动Id去取,京西活动补贴
|
||||
// orderFinancial.JxSubsidyMoney +=
|
||||
}
|
||||
}
|
||||
}
|
||||
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.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
|
||||
// 通过本地数据库去取是否转美团/达达,并计算运费
|
||||
// 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
|
||||
|
||||
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,74 +54,81 @@ 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,
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
AfsOrderID: orderStatus.VendorOrderID,
|
||||
VendorOrderID: orderStatus.RefVendorOrderID,
|
||||
VendorStoreID: "",
|
||||
VendorStoreID: refundData.StoreId,
|
||||
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,
|
||||
AfsCreatedAt: orderStatus.StatusTime,
|
||||
|
||||
VendorOrgCode: msg.AppID,
|
||||
// FreightUserMoney: afsInfo.OrderFreightMoney,
|
||||
// AfsFreightMoney: afsInfo.AfsFreight,
|
||||
// BoxMoney: afsInfo.PackagingMoney,
|
||||
// TongchengFreightMoney: afsInfo.TongchengFreightMoney,
|
||||
// SkuBoxMoney: afsInfo.MealBoxMoney,
|
||||
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,
|
||||
}
|
||||
for _, sku := range refundData.FoodList {
|
||||
|
||||
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))
|
||||
|
||||
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{
|
||||
// VendorID: model.VendorIDMTWM,
|
||||
AfsOrderID: afsOrder.AfsOrderID,
|
||||
// VendorOrderID: afsOrder.VendorOrderID,
|
||||
// VendorStoreID: afsOrder.VendorStoreID,
|
||||
// StoreID: afsOrder.StoreID,
|
||||
IsAfsOrder: 1,
|
||||
|
||||
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
|
||||
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)
|
||||
}
|
||||
//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)
|
||||
}
|
||||
}
|
||||
if afsOrder != nil {
|
||||
//直接就来一个新的售后单,并且还是售后完成的
|
||||
if orderStatus.Status == model.AfsOrderStatusFinished {
|
||||
@@ -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,
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
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,
|
||||
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)
|
||||
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 {
|
||||
err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).OrderRefundAgree(utils.Str2Int64(order.VendorOrderID), reason)
|
||||
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)
|
||||
//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
|
||||
// }
|
||||
}
|
||||
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()
|
||||
// // 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
|
||||
|
||||
@@ -119,6 +119,7 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode, vendorOrderID, vendorStoreID s
|
||||
if result.UserIdInfo != nil {
|
||||
order.VendorUserID = result.UserIdInfo.IdCardNo
|
||||
}
|
||||
|
||||
originalLng := utils.MustInterface2Float64(result.UserCoordinate.UserCoordinateLongitude)
|
||||
originalLat := utils.MustInterface2Float64(result.UserCoordinate.UserCoordinateLatitude)
|
||||
order.ConsigneeLng = jxutils.StandardCoordinate2Int(originalLng)
|
||||
@@ -545,24 +546,6 @@ func (c *PurchaseHandler) postFakeMsg(vendorOrderID, cmd, VendorStatus, appOrgCo
|
||||
|
||||
// AcceptOrRefuseOrder 接单或者拒单(isAcceptIt:接单/拒单) 抖店暂无拒单
|
||||
func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) {
|
||||
//if isAcceptIt {
|
||||
// if globals.EnableMtwmStoreWrite {
|
||||
// err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").OrderConfirm(utils.Str2Int64(order.VendorOrderID))
|
||||
// if err != nil {
|
||||
// if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeOpFailed), []string{
|
||||
// "订单已经确认过了",
|
||||
// }) {
|
||||
// err = nil
|
||||
// } else {
|
||||
// globals.SugarLogger.Warnf("mtwm AcceptOrRefuseOrder orderID:%s failed with err:%v", order.VendorOrderID, err)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//} else {
|
||||
// if globals.EnableMtwmStoreWrite {
|
||||
// err = c.CancelOrder(jxcontext.AdminCtx, order, "bu")
|
||||
// }
|
||||
//}
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(msgId string, msg interface{}) (retVal *
|
||||
VendorOrgCode: utils.Int2Str(vendorOrgCode),
|
||||
}
|
||||
afsOrder.FreightUserMoney = tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.RefundPostAmount
|
||||
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
|
||||
afsOrder.AfsFreightMoney = tiktokAfsOrderDetail.Data.ProcessInfo.AfterSaleInfo.RefundPostAmount // 暂时未发现退货取件费用
|
||||
afsOrder.BoxMoney = 0 // 餐盒费
|
||||
afsOrder.TongchengFreightMoney = 0 // 同城配送费
|
||||
afsOrder.SkuBoxMoney = 0 // 商品包装费
|
||||
|
||||
@@ -296,6 +296,7 @@ func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode strin
|
||||
// return cancelOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(model.SyncFlagDeletedMask, vendorStoreID, storeSkuList))
|
||||
}
|
||||
|
||||
// UpdateStoreSkusSpecTag 更新限购
|
||||
func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
|
||||
//var foodDataList []map[string]interface{}
|
||||
//for _, v := range storeSkuList {
|
||||
|
||||
@@ -156,6 +156,7 @@ storeNameMtwm = "京西菜市"
|
||||
storeNameEbai = "饿鲜达"
|
||||
storeNameEbai2 = "好菜鲜生"
|
||||
storeNameTiktok = "抖音小时购"
|
||||
storeNameTao = "淘鲜达"
|
||||
|
||||
smsSignName = "京西菜市"
|
||||
smsMobileVerifyTemplate = "SMS_175583158"
|
||||
|
||||
@@ -46,6 +46,7 @@ type StoreSkuController struct {
|
||||
// @Param jdSyncStatus query int false "京东同步标识"
|
||||
// @Param ebaiSyncStatus query int false "饿百同步标识"
|
||||
// @Param mtwmSyncStatus query int false "美团外卖同步标识"
|
||||
// @Param taoSyncStatus query int false "淘先达同步标识"
|
||||
// @Param lockTime query string false "价格锁定时间"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
@@ -88,6 +89,7 @@ func (c *StoreSkuController) GetStoreSkus() {
|
||||
// @Param jdSyncStatus query int false "京东同步标识"
|
||||
// @Param ebaiSyncStatus query int false "饿百同步标识"
|
||||
// @Param mtwmSyncStatus query int false "美团外卖同步标识"
|
||||
// @Param taoSyncStatus query int false "陶先达同步标识"
|
||||
// @Param lockTime query string false "价格锁定时间"
|
||||
// @Param isHighPrice query bool false "是否查过高价格商品,0是忽略,1是高价,-1是低价"
|
||||
// @Param priceType query int false "是否查过高价格商品,0是忽略,1是高价,-1是低价"
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/common"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
taoVegetable "git.rosy.net.cn/jx-callback/business/partner/purchase/tao_vegetable"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"github.com/astaxie/beego/server/web"
|
||||
@@ -13,14 +18,14 @@ type TaoBaoVegetableController struct {
|
||||
web.Controller
|
||||
}
|
||||
|
||||
// GetCode 淘菜菜获取商户授权code
|
||||
// GetCode 淘菜菜获取商户授权code,这个code和token是门店层次的
|
||||
func (c *TaoBaoVegetableController) GetCode() {
|
||||
codeData := ""
|
||||
if c.Ctx.Input.Method() == http.MethodPost {
|
||||
body, err := ioutil.ReadAll(c.Ctx.Request.Body)
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("商户收取code获取:%s,%s", string(body), err.Error())
|
||||
c.Data["json"] = MsgFail()
|
||||
c.Data["json"] = tao_vegetable.CallBackResultInfo(err)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
@@ -33,11 +38,114 @@ func (c *TaoBaoVegetableController) GetCode() {
|
||||
tokenInfo, err := api.TaoVegetableApi.GetStoreToken(codeData, "")
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("获取门店token错误:%s", err.Error())
|
||||
c.Data["json"] = MsgFail()
|
||||
c.Data["json"] = tao_vegetable.CallBackResultInfo(err)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
globals.SugarLogger.Debugf("token:%s", utils.Format4Output(tokenInfo, false))
|
||||
// 创建storeMap门店信息
|
||||
// 刷新token
|
||||
|
||||
// 创建或者更新账号token
|
||||
param := &model.VendorOrgCode{
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
VendorOrgCode: api.TaoVegetableApi.GetVendorOrgCode(),
|
||||
Comment: tokenInfo.UserNick,
|
||||
VendorType: "platform",
|
||||
IsJxCat: 1,
|
||||
IsOpen: 1,
|
||||
EmpowerURL: "http://oauth.hemaos.com/authorize?\nresponse_type=code&sp=hema&op=topApp&client_id=" + api.TaoVegetableApi.GetVendorOrgCode(),
|
||||
StoreBrandName: "自动更新(京西菜市)",
|
||||
Token: utils.Format4Output(tokenInfo, false),
|
||||
AppKey: api.TaoVegetableApi.GetVendorOrgCode(),
|
||||
AppSecret: api.TaoVegetableApi.GetAppSecret(),
|
||||
}
|
||||
if err := common.AddVendorOrgCode(nil, param); err != nil {
|
||||
c.Data["json"] = tiktok_api.CallbackResponse{Code: tiktok_api.CallbackFailCode, Msg: tiktok_api.CallbackFail}
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
c.Data["json"] = tao_vegetable.CallBackResultInfo(nil)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
// OrderStatus 订单状态变化 [post]
|
||||
func (c *TaoBaoVegetableController) OrderStatus() {
|
||||
order, err := api.TaoVegetableApi.ReaderOrderInfo(c.Ctx.Request)
|
||||
globals.SugarLogger.Debugf("OrderStatus := %s", utils.Format4Output(order, false))
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("订单状态变化:%s", err.Error())
|
||||
c.Data["json"] = tao_vegetable.CallBackResultInfo(err)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusChange, utils.Int64ToStr(order.BizOrderId), order)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
// ApplyCancelOrder 用户发起售后申请
|
||||
func (c *TaoBaoVegetableController) ApplyCancelOrder() {
|
||||
afsOrder, err := api.TaoVegetableApi.UserApplyRefund(c.Ctx.Request)
|
||||
globals.SugarLogger.Debugf("ApplyCancelOrder := %s", utils.Format4Output(afsOrder, false))
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("用户发起售后:%s", err.Error())
|
||||
c.Data["json"] = tao_vegetable.CallBackResultInfo(err)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusApplyAfs, afsOrder.OutOrderId, afsOrder)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
// UserCancelRefund 用户取消售后
|
||||
func (c *TaoBaoVegetableController) UserCancelRefund() {
|
||||
afsOrder, err := api.TaoVegetableApi.UserCancelRefundApply(c.Ctx.Request)
|
||||
globals.SugarLogger.Debugf("UserCancelRefund := %s", utils.Format4Output(afsOrder, false))
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("用户取消售后:%s", err.Error())
|
||||
c.Data["json"] = tao_vegetable.CallBackResultInfo(err)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusCancelAfs, afsOrder.OutOrderId, afsOrder)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
// CancelOnSaleRefundOrder 用户售中取消(走订单取消流程)
|
||||
func (c *TaoBaoVegetableController) CancelOnSaleRefundOrder() {
|
||||
afsOrder, err := api.TaoVegetableApi.OnSaleRefundOrder(c.Ctx.Request)
|
||||
globals.SugarLogger.Debugf("CancelOnSaleRefundOrder := %s", utils.Format4Output(afsOrder, false))
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("用户售中取消:%s", err.Error())
|
||||
c.Data["json"] = tao_vegetable.CallBackResultInfo(err)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusOnSaleCancel, utils.Int64ToStr(afsOrder.BizOrderId), afsOrder)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
// RefundOrderSuccess 用户售后成功通知,只有退款成功了才会通知(商户拒绝退款,不会通知)
|
||||
func (c *TaoBaoVegetableController) RefundOrderSuccess() {
|
||||
refundSuccess, err := api.TaoVegetableApi.RefundOrderFinish(c.Ctx.Request)
|
||||
globals.SugarLogger.Debugf("RefundOrderSuccess := %s", utils.Format4Output(refundSuccess, false))
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("用户售后成功消息通知:%s", err.Error())
|
||||
c.Data["json"] = tao_vegetable.CallBackResultInfo(err)
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
callbackResponse := taoVegetable.OnCallbackMsg(tao_vegetable.OrderStatusRefundSuccess, refundSuccess.OutSubOrderId, refundSuccess)
|
||||
c.Data["json"] = callbackResponse
|
||||
c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
@@ -93,6 +93,11 @@ func (a *APIManager) GetAppOrgCodeList(vendorID int) (appOrgCodeList []string) {
|
||||
for _, v := range vendorOrgCodes {
|
||||
appOrgCodeList = append(appOrgCodeList, v.VendorOrgCode)
|
||||
}
|
||||
case model.VendorIDTaoVegetable:
|
||||
vendorOrgCodes, _ := dao.GetVendorOrgCode(dao.GetDB(), model.VendorIDTaoVegetable, "", model.VendorOrgTypePlatform)
|
||||
for _, v := range vendorOrgCodes {
|
||||
appOrgCodeList = append(appOrgCodeList, v.VendorOrgCode)
|
||||
}
|
||||
case model.VendorIDMTWM:
|
||||
appOrgCodeList = []string{api.MtwmAPI.GetAppID(), api.Mtwm2API.GetAppID()}
|
||||
case model.VendorIDEBAI:
|
||||
|
||||
@@ -47,6 +47,7 @@ var (
|
||||
StoreNameTiktok string
|
||||
StoreNameEbai string
|
||||
StoreNameEbai2 string
|
||||
StoreNameTao string
|
||||
|
||||
SMSSignName string
|
||||
SMSMobileVerifyTemplate string
|
||||
@@ -137,6 +138,7 @@ func Init() {
|
||||
StoreName = web.AppConfig.DefaultString("storeName", "")
|
||||
StoreNameMtwm = web.AppConfig.DefaultString("storeNameMtwm", "")
|
||||
StoreNameTiktok = web.AppConfig.DefaultString("storeNameTiktok", "")
|
||||
StoreNameTao = web.AppConfig.DefaultString("storeNameTao", "")
|
||||
StoreNameEbai = web.AppConfig.DefaultString("storeNameEbai", "")
|
||||
StoreNameEbai2 = web.AppConfig.DefaultString("storeNameEbai2", "")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user