Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -1121,20 +1121,32 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
||||
dao.Rollback(db, txDB)
|
||||
return 0, err
|
||||
}
|
||||
// if valid["jdsStockSwitch"] != nil {
|
||||
// if _, err = SetStoreSkuSyncStatus2(db, []int{model.JdShopMainStoreID}, []int{model.VendorIDJDShop}, skuIDs, model.SyncFlagSaleMask); err != nil {
|
||||
// dao.Rollback(db, txDB)
|
||||
// return 0, err
|
||||
// }
|
||||
// }
|
||||
}
|
||||
dao.Commit(db, txDB)
|
||||
|
||||
errList := errlist.New()
|
||||
errList.AddErr(err)
|
||||
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
||||
errList.AddErr(err)
|
||||
err = errList.GetErrListAsOne()
|
||||
//_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
||||
//errList.AddErr(err)
|
||||
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
storeIds, _ := GetSyncSkuStoreId(db, skuIDs)
|
||||
if len(storeIds) > model.NO {
|
||||
CurVendorSync.SyncStoresSkus(jxcontext.AdminCtx, nil, 0, db, partner.GetSingleStoreVendorIDs(), storeIds, skuIDs, false, false, true)
|
||||
}
|
||||
}, "")
|
||||
|
||||
// 修改之前的bug,运营在修改商品之后,可能是价格或者其他什么发生变化,去重新更新一下各个平台的商品
|
||||
// 但是会出现商品所属门店或者分组比较多,然后更新异常慢,采用异步处理一下,但是本方法会出现很多更新异常
|
||||
// 商品未创建,图片啊,价格啊什么的
|
||||
//storeIds, err := GetSyncSkuStoreId(db, skuIDs)
|
||||
//if err != nil {
|
||||
// return 0, err
|
||||
//}
|
||||
//_, err2 = CurVendorSync.SyncStoresSkus(jxcontext.AdminCtx, nil, 0, db, partner.GetSingleStoreVendorIDs(), storeIds, skuIDs, false, false, true)
|
||||
//errList.AddErr(err2)
|
||||
//err = errList.GetErrListAsOne()
|
||||
|
||||
if globals.IsAddEvent {
|
||||
mapBefore := refutil.FindMapAndStructMixed(valid, beforSkuName)
|
||||
err = AddEventDetail(db, ctx, model.OperateUpdate, nameID, model.ThingTypeSkuName, 0, BuildDiffData(mapBefore), BuildDiffData(valid))
|
||||
@@ -1410,6 +1422,26 @@ func SetUpdateSkuPriceIfChange(db *dao.DaoDB, skuPrice, nowPrice int64, skuId in
|
||||
return err
|
||||
}
|
||||
|
||||
// GetSyncSkuStoreId 当每个商品存在修改时,需要重新同步商品的信息,立马同步,获取需要同步的门店信息
|
||||
func GetSyncSkuStoreId(db *dao.DaoDB, skus []int) ([]int, error) {
|
||||
sql := ` SELECT * FROM store_sku_bind b
|
||||
INNER JOIN store s on s.id = b.store_id
|
||||
WHERE b.sku_id IN (` + dao.GenQuestionMarks(len(skus)) + `) AND b.status = ? AND s.status <> ? AND b.deleted_at = ? `
|
||||
param := []interface{}{skus, model.YES, model.StoreStatusDisabled, utils.DefaultTimeValue}
|
||||
|
||||
skuBind := make([]*model.StoreSkuBind, 0, 0)
|
||||
if err := dao.GetRows(db, &skuBind, sql, param); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
storeIds := make([]int, 0, 0)
|
||||
for _, v := range skuBind {
|
||||
storeIds = append(storeIds, v.StoreID)
|
||||
}
|
||||
|
||||
return storeIds, nil
|
||||
}
|
||||
|
||||
func UpdateSkuImg(ctx *jxcontext.Context, skuID int, payload map[string]interface{}) (string, error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
|
||||
@@ -6,9 +6,6 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/ddmsg"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
|
||||
"git.rosy.net.cn/baseapi"
|
||||
@@ -931,262 +928,12 @@ func StoreOpenAll(ctx *jxcontext.Context) {
|
||||
// globals.SugarLogger.Debug("StoreOpenAll skuID is Complete")
|
||||
//}
|
||||
|
||||
func TestDiff(ctx *jxcontext.Context, vendorIDList []int, storeIDList []int) {
|
||||
baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor start time: %v", time.Now())
|
||||
startProcessTime := time.Now().Unix()
|
||||
vendorMap := make(map[int]bool)
|
||||
for _, vendorID := range vendorIDList {
|
||||
vendorMap[vendorID] = true //map[平台ID:true]
|
||||
}
|
||||
storeIDMap := make(map[int]bool)
|
||||
for _, storeID := range storeIDList {
|
||||
storeIDMap[storeID] = true //map[门店ID:true]
|
||||
}
|
||||
/************************************************update**************************************************/
|
||||
//自己存值
|
||||
a := func() {
|
||||
for vendorID, _ := range vendorNameList {
|
||||
//filter for vendorID
|
||||
if len(vendorMap) > 0 {
|
||||
if _, ok := vendorMap[vendorID]; !ok {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if partner.IsMultiStore(vendorID) {
|
||||
multiHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler)
|
||||
for _, vendorOrgCode := range apimanager.CurAPIManager.GetAppOrgCodeList(vendorID) {
|
||||
allSkuNameInfoList, err := multiHandler.GetSkus(ctx, vendorOrgCode, 0, "")
|
||||
//获取单个表格对比的物品信息列表
|
||||
skuNameInfoList = allSkuNameInfoList
|
||||
if err != nil {
|
||||
fmt.Println("allSkuNameInfoList赋值错误,error信息" + err.Error())
|
||||
continue
|
||||
}
|
||||
//*partner.StoreSkuInfo skuNameList []*SkuNameInfo
|
||||
var bareStoreSkuList []*partner.StoreSkuInfo
|
||||
for _, v := range allSkuNameInfoList {
|
||||
for _, v2 := range v.SkuList {
|
||||
if v2.Status > model.SkuStatusDontSale {
|
||||
for _, v2 := range v.SkuList {
|
||||
bareStoreSkuList = append(bareStoreSkuList, &v2.StoreSkuInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//if multiStoreAllSkuInfoList[vendorID][vendorOrgCode] != nil && bareStoreSkuList != nil {
|
||||
if multiStoreAllSkuInfoList[vendorID] != nil && bareStoreSkuList != nil {
|
||||
multiStoreAllSkuInfoList[vendorID][vendorOrgCode] = bareStoreSkuList
|
||||
//}else if multiStoreAllSkuInfoList[vendorID][vendorOrgCode] == nil{
|
||||
} else if multiStoreAllSkuInfoList[vendorID] == nil {
|
||||
multiStoreAllSkuInfoList = make(map[int]map[string][]*partner.StoreSkuInfo)
|
||||
multiStoreAllSkuInfoList[vendorID] = make(map[string][]*partner.StoreSkuInfo)
|
||||
multiStoreAllSkuInfoList[vendorID][vendorOrgCode] = bareStoreSkuList
|
||||
}
|
||||
tempMap := make(map[int]*partner.SkuNameInfo)
|
||||
for _, value := range allSkuNameInfoList {
|
||||
for _, skuInfo := range value.SkuList {
|
||||
//表示平台商品库未下架的
|
||||
if skuInfo.Status > model.SkuStatusDontSale {
|
||||
filterVendorDepotUnSaleSkuIds = append(filterVendorDepotUnSaleSkuIds, skuInfo.SkuID)
|
||||
tempMap[skuInfo.SkuID] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
//商品信息
|
||||
if multiStoreAllSkuInfoMap[vendorID] == nil {
|
||||
multiStoreAllSkuInfoMap = make(map[int]map[string]map[int]*partner.SkuNameInfo)
|
||||
multiStoreAllSkuInfoMap[vendorID] = make(map[string]map[int]*partner.SkuNameInfo)
|
||||
//multiStoreAllSkuInfoMap[vendorID][vendorOrgCode] = make(map[int]*partner.SkuNameInfo)
|
||||
multiStoreAllSkuInfoMap[vendorID][vendorOrgCode] = tempMap
|
||||
} else {
|
||||
multiStoreAllSkuInfoMap[vendorID][vendorOrgCode] = tempMap
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/************************************************update****************************************************/
|
||||
//1.获取京西本地所有门店信息 store、place、user表联查 jxStoreInfoList
|
||||
//2.过滤所有门店信息,只留下传进来的vendorMap,storeIDMap中对应的平台和门台信息 filterStoreList
|
||||
//3.判断是否多平台门店,两种情况两种处理
|
||||
b := func() {
|
||||
jxStoreInfoList, err := GetStores(ctx, "", map[string]interface{}{}, 0, -1, utils.DefaultTimeValue, utils.DefaultTimeValue, 0, 0)
|
||||
if err != nil {
|
||||
baseapi.SugarLogger.Errorf("CheckSkuDiffBetweenJxAndVendor GetStores error:%v", err)
|
||||
} else {
|
||||
//获取总共几个门店任务
|
||||
filterStoreList := GetFilterStoreList(jxStoreInfoList.Stores, vendorMap, storeIDMap)
|
||||
diffData.InitData()
|
||||
for i := range filterStoreList {
|
||||
jxStoreInfoListValue := filterStoreList[i]
|
||||
storeID := jxStoreInfoListValue.ID
|
||||
storeIDStr := utils.Int2Str(storeID)
|
||||
storeName := jxStoreInfoListValue.Name
|
||||
jxSkuInfoDataSingle := &dao.StoreSkuNamesInfo{}
|
||||
jxSkuInfoDataMulti := &dao.StoreSkuNamesInfo{}
|
||||
if jxStoreInfoListValue.StoreMaps != nil {
|
||||
var multiFlag = false
|
||||
var singleFlag = false
|
||||
var filterJxSkuInfoMapSingle map[int]*dao.StoreSkuNameExt
|
||||
var filterJxSkuInfoMapMulti map[int]*dao.StoreSkuNameExt
|
||||
for _, vendorListValue := range jxStoreInfoListValue.StoreMaps {
|
||||
vendorID := vendorListValue.VendorID
|
||||
if partner.IsMultiStore(vendorID) {
|
||||
if multiFlag == false {
|
||||
//jxSkuInfoDataMulti, _ = GetStoreSkus(ctx, storeID, filterJxDepotUnSaleSkuIds, true, "", true, false, map[string]interface{}{}, 0, -1)
|
||||
jxSkuInfoDataMulti, _ = GetStoreSkus2(ctx, storeID, filterJxDepotUnSaleSkuIds, true, "", true, false, map[string]interface{}{}, 0, -1)
|
||||
/*重新计算价格*/
|
||||
SetJxPrice(jxSkuInfoDataMulti, storeID, vendorID)
|
||||
filterJxSkuInfoMapMulti = GetFilterJxSkuInfoMap(jxSkuInfoDataMulti.SkuNames) //map[京西商品ID:StoreSkuNameExt]
|
||||
multiFlag = true
|
||||
}
|
||||
} else {
|
||||
if singleFlag == false {
|
||||
//jxSkuInfoDataSingle, _ = GetStoreSkus(ctx, storeID, nil, true, "", true, false, map[string]interface{}{}, 0, -1)
|
||||
jxSkuInfoDataSingle, _ = GetStoreSkus2(ctx, storeID, nil, true, "", true, false, map[string]interface{}{}, 0, -1)
|
||||
/*重新计算价格*/
|
||||
SetJxPrice(jxSkuInfoDataSingle, storeID, vendorID)
|
||||
filterJxSkuInfoMapSingle = GetFilterJxSkuInfoMap(jxSkuInfoDataSingle.SkuNames) //map[京西商品ID:StoreSkuNameExt]
|
||||
singleFlag = true
|
||||
}
|
||||
}
|
||||
vendorStoreID := vendorListValue.VendorStoreID
|
||||
baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor storeID:%d vendorID:%d vendorStoreID:%s vendorListValue:%v", storeID, vendorID, vendorStoreID, vendorListValue)
|
||||
|
||||
if partner.IsMultiStore(vendorID) {
|
||||
singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IPurchasePlatformStoreSkuHandler)
|
||||
allSkuInfoList := GetMultiStoreAllSkuInfoList(vendorID, vendorListValue.VendorOrgCode)
|
||||
skuBareInfoList, err := singleStoreHandler.GetStoreSkusBareInfo(ctx, vendorListValue.VendorOrgCode, nil, storeID, vendorStoreID, allSkuInfoList)
|
||||
if err != nil {
|
||||
baseapi.SugarLogger.Infof("CheckSkuDiffBetweenJxAndVendor GetStoreSkusBareInfo error:%v", err)
|
||||
} else if len(skuBareInfoList) > 0 {
|
||||
//获取京东的商品
|
||||
filterSkuInfoMap := GetFilterMultiStoreSkuInfoMap(vendorID, vendorListValue.VendorOrgCode, skuBareInfoList) //map[京东商品ID:SkuNameInfo]
|
||||
CompareJxAndVendor(vendorID, storeIDStr, vendorStoreID, storeName, filterJxSkuInfoMapMulti, filterSkuInfoMap, 1)
|
||||
}
|
||||
} else {
|
||||
singleStoreHandler := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler)
|
||||
vendorSkuInfoList, err := singleStoreHandler.GetStoreSkusFullInfo(ctx, nil, storeID, vendorStoreID, nil)
|
||||
if err != nil {
|
||||
baseapi.SugarLogger.Infof("CheckSkuDiffBetweenJxAndVendor GetStoreSkusFullInfo error:%v", err)
|
||||
} else if len(vendorSkuInfoList) > 0 {
|
||||
//获取京东的商品
|
||||
filterVendorSkuInfoMap := GetFilterVendorSkuInfoMap(vendorSkuInfoList) //map[平台商品ID:SkuNameInfo]
|
||||
CompareJxAndVendor(vendorID, storeIDStr, vendorStoreID, storeName, filterJxSkuInfoMapSingle, filterVendorSkuInfoMap, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/********************************第三步****************************/
|
||||
c := func(data map[int][]DiffData, depotData map[int][]DepotDiffData) {
|
||||
var sheetList []*excel.Obj2ExcelSheetConfig
|
||||
for key, value := range data {
|
||||
sheetName := vendorNameList[key]
|
||||
if partner.IsMultiStore(key) {
|
||||
excelConfDepot := &excel.Obj2ExcelSheetConfig{
|
||||
Title: sheetName + "商品库与京西商品库对比",
|
||||
Data: depotData[key],
|
||||
CaptionList: deoptTitleList,
|
||||
}
|
||||
sheetList = append(sheetList, excelConfDepot)
|
||||
}
|
||||
excelConf := &excel.Obj2ExcelSheetConfig{
|
||||
Title: sheetName,
|
||||
Data: value,
|
||||
CaptionList: titleList,
|
||||
}
|
||||
sheetList = append(sheetList, excelConf)
|
||||
if needStatistic {
|
||||
statisticSheet := AddStatisticSheet(sheetName, value)
|
||||
sheetList = append(sheetList, statisticSheet)
|
||||
}
|
||||
baseapi.SugarLogger.Debugf("WriteToExcel:append:%s count:%d", sheetName, len(value))
|
||||
}
|
||||
|
||||
if len(sheetList) > 0 {
|
||||
excelBin := excel.Obj2Excel(sheetList)
|
||||
sheetList = nil
|
||||
timeStr := utils.Int64ToStr(time.Now().Unix())
|
||||
diffFullFileName := diffFileName[IsJXCS()] + timeStr + fileExt
|
||||
if canWriteTolocal {
|
||||
jxutils.WriteFile(diffFullFileName, excelBin)
|
||||
}
|
||||
baseapi.SugarLogger.Debugf("WriteToExcel:save %s success", diffFullFileName)
|
||||
//上传
|
||||
downloadURL, err := jxutils.UploadExportContent(excelBin, diffFullFileName)
|
||||
if err != nil {
|
||||
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s failed error:%v", diffFullFileName, err)
|
||||
} else {
|
||||
baseapi.SugarLogger.Debugf("WriteToExcel:upload %s success, downloadURL: %s", diffFullFileName, downloadURL)
|
||||
/*************发送钉钉消息**************/
|
||||
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", "京西平台对比数据上传成功:Excel下载地址是 "+downloadURL)
|
||||
}
|
||||
} else {
|
||||
baseapi.SugarLogger.Debug("WriteToExcel:No diff data!!!")
|
||||
}
|
||||
//}
|
||||
endProcessTime := time.Now().Unix()
|
||||
diff := endProcessTime - startProcessTime
|
||||
baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor end time: %v", time.Now())
|
||||
baseapi.SugarLogger.Debugf("CheckSkuDiffBetweenJxAndVendor cost time: %d sec", diff)
|
||||
}
|
||||
apiover := make(chan int, 1)
|
||||
compover := make(chan int, 1)
|
||||
over := false
|
||||
/********************************第三步****************************/
|
||||
/*异步任务*/
|
||||
/************************************************************************************/
|
||||
go func() {
|
||||
defer func() {
|
||||
if recover() != nil {
|
||||
// beego.Info("执行任务失败")
|
||||
panic("API调用失败")
|
||||
}
|
||||
}()
|
||||
a()
|
||||
depotDiffData.InitData2()
|
||||
CompareJxAndMultiVenderDepot(ctx, vendorMap)
|
||||
apiover <- 0
|
||||
}()
|
||||
/*a等待a现成执行完*/
|
||||
go func() {
|
||||
for !over {
|
||||
select {
|
||||
case <-apiover:
|
||||
/*第二步 为了获取 filterJxDepotUnSaleSkuIds*/
|
||||
go func() {
|
||||
defer func() {
|
||||
if recover() != nil {
|
||||
// beego.Info("比较任务失败")
|
||||
panic("比较任务失败")
|
||||
}
|
||||
}()
|
||||
b()
|
||||
compover <- 0 //比较任务完成
|
||||
}()
|
||||
/*第二步*/
|
||||
case <-compover:
|
||||
go func() {
|
||||
defer func() {
|
||||
if recover() != nil {
|
||||
// beego.Info("写入任务失败")
|
||||
panic("写入任务失败")
|
||||
}
|
||||
}()
|
||||
c(diffData.diffDataMap, depotDiffData.diffDataMap)
|
||||
fmt.Println("任务执行完成")
|
||||
over = true
|
||||
}()
|
||||
break
|
||||
}
|
||||
}
|
||||
}()
|
||||
/************************************************************************************/
|
||||
// 对比本地商品和平台商品差异(价格和规格),不同的重新同步
|
||||
func CheckSkuDiffBetweenJxAndVendor2(ctx *jxcontext.Context, vendorIDList []int, storeIDList []int) {
|
||||
//db := dao.GetDB()
|
||||
//for _, v := range storeIDList {
|
||||
// //storeMapList, err := dao.GetStoresMapList(db, vendorIDList, []int{v}, []int{model.StoreStatusOpened, model.StoreStatusHaveRest, model.StoreStatusClosed}, status, model.StoreIsSyncYes, "", "", "")
|
||||
//}
|
||||
}
|
||||
|
||||
//入口函数,校验本地商品京西和其他平台的差异
|
||||
@@ -1408,15 +1155,3 @@ func WriteToExcel(task *tasksch.SeqTask, data map[int][]DiffData, depotData map[
|
||||
baseapi.SugarLogger.Debug("WriteToExcel:No diff data!!!")
|
||||
}
|
||||
}
|
||||
|
||||
func SetJxPrice(jxSkuInfoDataMulti *dao.StoreSkuNamesInfo, storeId int, vendorid int) (err error) {
|
||||
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeId, vendorid, "")
|
||||
/*重新计算京西价格*/
|
||||
for _, values := range jxSkuInfoDataMulti.SkuNames {
|
||||
for _, value := range values.Skus {
|
||||
value.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), value.BindPrice)
|
||||
}
|
||||
}
|
||||
/*重新计算京西价格*/
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package cms
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||
"github.com/astaxie/beego/server/web"
|
||||
beego "github.com/astaxie/beego/server/web"
|
||||
"regexp"
|
||||
@@ -94,6 +95,34 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo
|
||||
num := 0
|
||||
rootTask := tasksch.NewSeqTask(fmt.Sprintf("%s SyncStoreCategory step1", model.VendorChineseNames[vendorID]), ctx,
|
||||
func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
// 保证下面api成功率添加校验
|
||||
if vendorID == model.VendorIDEBAI {
|
||||
// 门店审核状态
|
||||
status, err := api.EbaiAPI.ShopStatusGet("", utils.Str2Int64(vendorStoreID))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 门店营业状态
|
||||
ebaiStatus, err := api.EbaiAPI.ShopBusStatusGet("", utils.Str2Int64(vendorStoreID), ebaiapi.PlatformFlagElm)
|
||||
|
||||
switch status {
|
||||
case ebaiapi.ShopCheckStatusCheckSuccess:
|
||||
|
||||
case ebaiapi.ShopCheckStatusNew, ebaiapi.ShopCheckStatusWaitCheck, ebaiapi.ShopCheckStatusUpdateWaitCheck:
|
||||
if ebaiStatus == ebaiapi.ShopBusStatusSuspended {
|
||||
return nil, fmt.Errorf("门店审核中,请联系饿了么工作人员加快审核")
|
||||
}
|
||||
case ebaiapi.ShopCheckStatusGoLiveFail:
|
||||
if ebaiStatus == ebaiapi.ShopBusStatusSuspended {
|
||||
return nil, fmt.Errorf("门店上线审核失败,请联系饿了么工作人员加快审核")
|
||||
}
|
||||
case ebaiapi.ShopCheckStatusCheckFail:
|
||||
if ebaiStatus == ebaiapi.ShopBusStatusSuspended {
|
||||
return nil, fmt.Errorf("门店审核未通过")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
level := step + 1
|
||||
catList, err := dao.GetDirtyStoreCategories(db, vendorID, storeID, level, skuIDs)
|
||||
if len(catList) > 0 {
|
||||
|
||||
@@ -83,10 +83,10 @@ func (c *DeliveryHandler) OnWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaapi.CallbackResponse) {
|
||||
order, goodsOrder := c.callbackMsg2Waybill(msg)
|
||||
store, _ := dao.GetStoreDetail(dao.GetDB(), goodsOrder.JxStoreID, goodsOrder.VendorID, goodsOrder.VendorOrgCode)
|
||||
|
||||
switch msg.OrderStatus {
|
||||
case dadaapi.OrderStatusWaitingForAccept:
|
||||
dadaOrder, err := api.DadaAPI.QueryOrderInfo(msg.OrderID)
|
||||
if err == nil {
|
||||
if dadaOrder, err2 := api.DadaAPI.QueryOrderInfo(msg.OrderID); err2 == nil {
|
||||
order.ActualFee = jxutils.StandardPrice2Int(dadaOrder.ActualFee)
|
||||
order.DesiredFee = jxutils.StandardPrice2Int(dadaOrder.DeliveryFee) + int64(store.FreightMarkup)
|
||||
}
|
||||
@@ -94,7 +94,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
case dadaapi.OrderStatusAccepted:
|
||||
order.Status = model.WaybillStatusCourierAssigned
|
||||
order.Remark = order.CourierName + "," + order.CourierMobile
|
||||
if dadaOrder, err := api.DadaAPI.QueryOrderInfo(msg.OrderID); err == nil {
|
||||
if dadaOrder, err2 := api.DadaAPI.QueryOrderInfo(msg.OrderID); err2 == nil {
|
||||
order.ActualFee = jxutils.StandardPrice2Int(dadaOrder.ActualFee)
|
||||
order.DesiredFee = jxutils.StandardPrice2Int(dadaOrder.DeliveryFee) + int64(store.FreightMarkup)
|
||||
}
|
||||
@@ -116,7 +116,8 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
tiktokStatusPush(order, msg.OrderStatus)
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||
tiktokStatusPush(order, msg.OrderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if goodsOrder.VendorID == model.VendorIDTaoVegetable && msg.OrderStatus == dadaapi.OrderStatusAccepted {
|
||||
@@ -128,15 +129,17 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap
|
||||
}
|
||||
|
||||
// 抖音订单状态回传
|
||||
func tiktokStatusPush(order *model.Waybill, status int) {
|
||||
func tiktokStatusPush(order *model.Waybill, status int, lng, lat string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorWaybillID,
|
||||
CourierName: order.CourierName,
|
||||
CourierPhone: order.CourierMobile,
|
||||
LogisticsStatus: order.Status,
|
||||
OpCode: "",
|
||||
LogisticsProviderCode: utils.DaDaCode,
|
||||
Longitude: lng,
|
||||
Latitude: lat,
|
||||
}
|
||||
|
||||
switch status {
|
||||
|
||||
@@ -310,7 +310,8 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify, resultParam *fnpsapi.ShortSta
|
||||
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
tiktokStatusPush(order, orderStatus)
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if good.VendorID == model.VendorIDTaoVegetable && cc.OrderStatus == fnpsapi.OrderStatusAssigned {
|
||||
@@ -321,15 +322,17 @@ func OnWaybillMsg(msg *fnpsapi.OrderStatusNottify, resultParam *fnpsapi.ShortSta
|
||||
}
|
||||
|
||||
// 抖音订单状态回传
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64) {
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64, lng, lat string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorWaybillID,
|
||||
CourierName: order.CourierName,
|
||||
CourierPhone: order.CourierMobile,
|
||||
LogisticsStatus: order.Status,
|
||||
OpCode: "",
|
||||
LogisticsProviderCode: utils.FnPsCode,
|
||||
Longitude: lng,
|
||||
Latitude: lat,
|
||||
}
|
||||
|
||||
switch orderStatus {
|
||||
|
||||
@@ -141,7 +141,8 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
err := mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
pushMTPSToTiktok(msg.Status, order)
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||
pushMTPSToTiktok(msg.Status, order, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if goodsOrder.VendorID == model.VendorIDTaoVegetable && msg.Status == mtpsapi.OrderStatusAccepted {
|
||||
@@ -152,7 +153,7 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
return err
|
||||
}
|
||||
|
||||
func pushMTPSToTiktok(msgStatus int, order *model.Waybill) {
|
||||
func pushMTPSToTiktok(msgStatus int, order *model.Waybill, lng, lat string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
@@ -161,6 +162,8 @@ func pushMTPSToTiktok(msgStatus int, order *model.Waybill) {
|
||||
LogisticsProviderCode: utils.MTPsCode,
|
||||
LogisticsStatus: order.Status,
|
||||
OpCode: "",
|
||||
Longitude: lng,
|
||||
Latitude: lat,
|
||||
}
|
||||
|
||||
switch msgStatus {
|
||||
|
||||
@@ -440,7 +440,8 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons
|
||||
|
||||
switch order.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
tiktokStatusPush(order, orderStatus)
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(order.WaybillVendorID).GetRidderPosition(nil, order.VendorOrderID, order.VendorOrderID, order.VendorWaybillID, order.VendorWaybillID2)
|
||||
tiktokStatusPush(order, orderStatus, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
case model.VendorIDTaoVegetable, model.VendorIDMTWM:
|
||||
delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新
|
||||
if good.VendorID == model.VendorIDTaoVegetable && orderStatus == sfps2.OrderStatusTakeOrder {
|
||||
@@ -450,15 +451,17 @@ func OnWaybillMsg(urlIndex string, msg interface{}) (resp *sfps2.CallbackRespons
|
||||
return sfps2.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64) {
|
||||
func tiktokStatusPush(order *model.Waybill, orderStatus int64, lng, lat string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: order.VendorOrderID,
|
||||
ThirdCarrierOrderId: order.VendorOrderID,
|
||||
CourierName: order.CourierName,
|
||||
CourierPhone: order.CourierMobile,
|
||||
LogisticsProviderCode: "10002",
|
||||
LogisticsProviderCode: utils.SFPSCode,
|
||||
LogisticsStatus: order.Status,
|
||||
OpCode: "",
|
||||
Latitude: lat,
|
||||
Longitude: lng,
|
||||
}
|
||||
switch orderStatus {
|
||||
case sfps2.OrderStatusNewOrder:
|
||||
|
||||
@@ -414,7 +414,8 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
|
||||
//推送抖音
|
||||
switch param.OrderVendorID {
|
||||
case model.VendorIDDD:
|
||||
tiktokStatusPush(param, req.State)
|
||||
Lng, Lat, _ := partner.GetRidderPositionGetter(param.WaybillVendorID).GetRidderPosition(nil, param.VendorOrderID, param.VendorOrderID, param.VendorWaybillID, param.VendorWaybillID2)
|
||||
tiktokStatusPush(param, req.State, utils.Float64ToStr(Lng), utils.Float64ToStr(Lat))
|
||||
case model.VendorIDMTWM, model.VendorIDTaoVegetable:
|
||||
delivery.GetOrderRiderInfoToPlatform(param.VendorOrderID, param.Status) // 骑手位置更新
|
||||
if good.VendorID == model.VendorIDTaoVegetable && req.State == uuptapi.StateRMGrabsOrder {
|
||||
@@ -424,15 +425,17 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp
|
||||
return uuptapi.Err2CallbackResponse(nil)
|
||||
}
|
||||
|
||||
func tiktokStatusPush(param *model.Waybill, orderStatus string) {
|
||||
func tiktokStatusPush(param *model.Waybill, orderStatus string, lng, lat string) {
|
||||
result := &utils.RiderInfo{
|
||||
OrderId: param.VendorOrderID,
|
||||
ThirdCarrierOrderId: param.VendorOrderID,
|
||||
CourierName: param.CourierName,
|
||||
CourierPhone: param.CourierMobile,
|
||||
LogisticsProviderCode: "10002",
|
||||
LogisticsProviderCode: utils.UUPTCode,
|
||||
LogisticsStatus: param.Status,
|
||||
OpCode: "",
|
||||
Longitude: lng,
|
||||
Latitude: lat,
|
||||
}
|
||||
switch orderStatus {
|
||||
case uuptapi.StateConfirmSuccess: //下单成功
|
||||
|
||||
@@ -665,7 +665,7 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod
|
||||
ReasonRemarks: reason,
|
||||
}
|
||||
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
||||
date, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||
date, _, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||
for _, v := range date {
|
||||
v2 := v.(map[string]interface{})
|
||||
refundProduct := &ebaiapi.RefundProductList{
|
||||
|
||||
@@ -242,7 +242,7 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod
|
||||
ReasonRemarks: reason,
|
||||
}
|
||||
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
||||
date, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||
date, _, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||
for _, v := range date {
|
||||
v2 := v.(map[string]interface{})
|
||||
refundProduct := &ebaiapi.RefundProductList{
|
||||
@@ -303,24 +303,19 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G
|
||||
ReasonCode: "",
|
||||
ReasonRemarks: reason,
|
||||
}
|
||||
date, err := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||
date, removerAll, err := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
||||
removerAll := false
|
||||
if date != nil && len(date) != model.NO {
|
||||
for k, v := range date {
|
||||
for _, v := range date {
|
||||
v2 := v.(map[string]interface{})
|
||||
refundProduct := &ebaiapi.RefundProductList{
|
||||
SubBizOrderId: v2["sub_biz_order_id"].(string),
|
||||
PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v2["platform_sku_id"], 0)),
|
||||
}
|
||||
// 全退
|
||||
if k == model.NO && utils.MustInterface2Int64(v2["is_refund_all"]) == model.YES {
|
||||
removerAll = true
|
||||
}
|
||||
switch utils.MustInterface2Int64(v2["fund_calculate_type"]) {
|
||||
case 0:
|
||||
refundProduct.Number = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_quantity"]))
|
||||
@@ -359,9 +354,22 @@ func orderSkus2AfsSkus(refundSkuList []*model.OrderSku) (removeSkuList []*ebaiap
|
||||
|
||||
func (c *PurchaseHandler) GetOrderAfsInfo(ctx *jxcontext.Context, vendorOrderID, afsOrderID string) (orderAfsInfo *partner.OrderAfsInfo, err error) {
|
||||
orderAfsInfo = &partner.OrderAfsInfo{}
|
||||
if result, err := api.EbaiAPI.OrderPartRefundGet(vendorOrderID); err == nil {
|
||||
result, _, err := api.EbaiAPI.GetReverseOrder(vendorOrderID)
|
||||
if err == nil {
|
||||
orderAfsInfo.VendorOrderID = vendorOrderID
|
||||
orderAfsInfo.AfsTotalShopMoney = utils.MustInterface2Int64(result["shop_fee"])
|
||||
var afsTotalShopMoney int64 = 0
|
||||
for _, v := range result {
|
||||
v2 := v.(map[string]interface{})
|
||||
afsTotalShopMoney += utils.MustInterface2Int64(v2["refund_user_amount"])
|
||||
}
|
||||
orderAfsInfo.AfsTotalShopMoney = afsTotalShopMoney
|
||||
}
|
||||
return orderAfsInfo, err
|
||||
|
||||
//orderAfsInfo = &partner.OrderAfsInfo{}
|
||||
//if result, err := api.EbaiAPI.OrderPartRefundGet(vendorOrderID) ;err == nil {
|
||||
// orderAfsInfo.VendorOrderID = vendorOrderID
|
||||
// orderAfsInfo.AfsTotalShopMoney = utils.MustInterface2Int64(result["shop_fee"])
|
||||
//}
|
||||
//return orderAfsInfo, err
|
||||
}
|
||||
|
||||
@@ -342,8 +342,7 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask
|
||||
}
|
||||
}
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
fBaiduIDs, fShopIDs, err1 := FilterStoreRel(baiduShopIDs)
|
||||
globals.SugarLogger.Debugf("RefreshAllStoresID FilterStoreRel fBaiduIDs====%d fShopIDs====%d err====%v", fBaiduIDs, fShopIDs, err1)
|
||||
fBaiduIDs, fShopIDs, _ := FilterStoreRel(baiduShopIDs)
|
||||
err = api.EbaiAPI.ShopIDBatchUpdate(fBaiduIDs, fShopIDs)
|
||||
}
|
||||
return nil, err
|
||||
|
||||
@@ -187,6 +187,10 @@ func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID in
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
if catName, catSeq, isCheck := getCheckExdStoreNameAndSeq(storeID, storeCat); !isCheck {
|
||||
err = api.EbaiAPI.ShopCategoryUpdate(utils.Int2Str(storeID), utils.Str2Int64WithDefault(storeCat.VendorCatID, 0), formatCatName(catName), jxCatSeq2Ebai(catSeq))
|
||||
// 修改分类时错误:自定义分类ID(category_id)不存在(降低api调用错误)
|
||||
if err != nil && strings.Contains(err.Error(), "自定义分类ID(category_id)不存在") {
|
||||
dao.SetStoreCategorySyncStatus(dao.GetDB(), model.VendorIDEBAI, []int{storeID}, []int{storeCat.StoreCatID}, 2)
|
||||
}
|
||||
}
|
||||
// todo, 饿百将一个分类重复改名,也会报分类名重复错,特殊处理一下,不过因为GetStoreCategory其实会拉取所有的门店分类,是比较耗时的操作
|
||||
if utils.IsErrMatch(err, "1", []string{"分类名称已经存在"}) {
|
||||
@@ -231,8 +235,19 @@ func (p *PurchaseHandler) updateStoreSkus(ctx *jxcontext.Context, storeID int, v
|
||||
_, err = api.EbaiAPI.SkuUpdate(ctx.GetTrackInfo(), strStoreID, utils.Str2Int64(storeSku.VendorSkuID), params)
|
||||
if err != nil {
|
||||
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品基础信息")
|
||||
// 本地商品存在饿百商品id,但是平台不存在该商品
|
||||
if strings.Contains(err.Error(), "sku不存在") {
|
||||
sql := ` UPDATE store_sku_bind SET ebai_id = 0,ebai_sync_status = 2 WHERE store_id = ? AND sku_id = ?`
|
||||
param := []interface{}{storeID, storeSku.SkuID}
|
||||
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||
} else if strings.Contains(err.Error(), "商品禁止售卖不允许上架,请去商品审核模块进行修改") {
|
||||
sql := ` UPDATE store_sku_bind SET ebai_sync_status = 0 WHERE store_id = ? AND sku_id = ?`
|
||||
param := []interface{}{storeID, storeSku.SkuID}
|
||||
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||
}
|
||||
}
|
||||
if ebaiExSkuCatMap[storeSku.SkuID] == 0 && ebaiExSkuCatMap2[storeSku.SkuID] == 0 && ebaiExSkuCatMap3[storeSku.SkuID] == 0 {
|
||||
|
||||
if ebaiExSkuCatMap[storeSku.SkuID] == 0 && ebaiExSkuCatMap2[storeSku.SkuID] == 0 && ebaiExSkuCatMap3[storeSku.SkuID] == 0 && err == nil {
|
||||
if isNeedMapCat && !isExd {
|
||||
utils.CallFuncAsync(func() {
|
||||
api.EbaiAPI.SkuShopCategoryMap(strStoreID, utils.Str2Int64(storeSku.VendorSkuID), "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku))
|
||||
@@ -315,7 +330,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
||||
vendorSkuIDs := partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDIntList()
|
||||
if globals.EnableEbaiStoreWrite {
|
||||
var opResult *ebaiapi.BatchOpResult
|
||||
if status == model.SkuStatusNormal {
|
||||
if status == model.SkuStatusNormal { // 可售上架
|
||||
if len(vendorSkuIDs) > 1 {
|
||||
opResult, err = api.EbaiAPI.SkuOnline(ctx.GetTrackInfo(), utils.Int2Str(storeID), vendorSkuIDs, nil, nil)
|
||||
} else if len(vendorSkuIDs) == 1 {
|
||||
@@ -325,7 +340,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
||||
}
|
||||
return failedList, err
|
||||
}
|
||||
} else {
|
||||
} else { // 下架
|
||||
if len(vendorSkuIDs) > 1 {
|
||||
opResult, err = api.EbaiAPI.SkuOffline(ctx.GetTrackInfo(), utils.Int2Str(storeID), vendorSkuIDs, nil, nil)
|
||||
} else if len(vendorSkuIDs) == 1 {
|
||||
@@ -389,6 +404,12 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
|
||||
if err != nil {
|
||||
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品库存")
|
||||
}
|
||||
// 本地商品存在饿百商品id,但是平台不存在该商品
|
||||
if err != nil && strings.Contains(err.Error(), "商品不存在") {
|
||||
sql := ` UPDATE store_sku_bind SET ebai_id = 0,ebai_sync_status = 2 WHERE store_id = ? AND sku_id = ?`
|
||||
param := []interface{}{storeID, storeSkuList[0].SkuID}
|
||||
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||
}
|
||||
}
|
||||
err = nil
|
||||
}
|
||||
@@ -677,6 +698,12 @@ func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult
|
||||
VendoreName: vendorName,
|
||||
SyncType: syncType,
|
||||
}
|
||||
// 本地商品存在饿百商品id,但是平台不存在该商品
|
||||
if strings.Contains(opResultMap[utils.Str2Int64(v.VendorSkuID)], "商品不存在") {
|
||||
sql := ` UPDATE store_sku_bind SET ebai_id = 0,ebai_sync_status = 2 WHERE store_id = ? AND sku_id = ?`
|
||||
param := []interface{}{storeID, v.SkuID}
|
||||
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||
}
|
||||
selectedStoreSkuList = append(selectedStoreSkuList, opFailed)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,8 +351,9 @@ func Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) {
|
||||
order.Skus = append(order.Skus, sku)
|
||||
}
|
||||
// 包装袋金额设置
|
||||
store, _ := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, order.VendorID, order.VendorOrgCode)
|
||||
store, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), order.VendorStoreID, order.VendorID, order.VendorOrgCode)
|
||||
order.PackagePrice = store.PackageSetting
|
||||
order.JxStoreID = store.ID
|
||||
jxutils.RefreshOrderSkuRelated(order)
|
||||
return order
|
||||
}
|
||||
|
||||
@@ -460,10 +460,17 @@ func (c *PurchaseHandler) UpdateStoreBoxFee(ctx *jxcontext.Context, vendorOrgCod
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
|
||||
if lineStatus == model.StoreStatusOpened {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOnline(vendorStoreID)
|
||||
} else {
|
||||
err = getAPI(vendorOrgCode, storeID, vendorStoreID).PoiOffline(vendorStoreID)
|
||||
mtwmApi := getAPI(vendorOrgCode, storeID, vendorStoreID)
|
||||
switch lineStatus {
|
||||
case model.StoreStatusOpened:
|
||||
if err = mtwmApi.PoiOnline(vendorStoreID); err != nil {
|
||||
err = mtwmApi.PoiOpen(vendorStoreID)
|
||||
}
|
||||
default:
|
||||
if err = mtwmApi.PoiOffline(vendorStoreID); err != nil {
|
||||
err = mtwmApi.PoiClose(vendorStoreID)
|
||||
}
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
// OnCallbackMsg 淘宝回调接口
|
||||
func OnCallbackMsg(orderStatus, orderId string, msg interface{}) (response *tao_vegetable.CallBackResult) {
|
||||
if CurPurchaseHandler != nil {
|
||||
// return CurPurchaseHandler.onOrderMsg(orderStatus, orderId, msg)
|
||||
jxutils.CallMsgHandlerAsync(func() {
|
||||
response = CurPurchaseHandler.onOrderMsg(orderStatus, orderId, msg)
|
||||
}, jxutils.ComposeUniversalOrderID(orderId, model.VendorIDTaoVegetable))
|
||||
|
||||
@@ -587,20 +587,35 @@ func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//转门店自送通知抖音发货
|
||||
err = api.OrderDelivering(&order_logisticsAdd_request.OrderLogisticsAddParam{
|
||||
logisticsAdd := &order_logisticsAdd_request.OrderLogisticsAddParam{
|
||||
OrderId: order.VendorOrderID,
|
||||
Company: "",
|
||||
CompanyCode: "chengdouruoxi",
|
||||
CompanyCode: "",
|
||||
LogisticsCode: order.VendorOrderID,
|
||||
IsRefundReject: false,
|
||||
IsRejectRefund: false,
|
||||
SerialNumberList: nil,
|
||||
AddressId: 0,
|
||||
StoreId: utils.Str2Int64(order.VendorStoreID),
|
||||
})
|
||||
return err
|
||||
}
|
||||
switch order.WaybillVendorID {
|
||||
case model.VendorIDDada:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeDaDa
|
||||
case model.VendorIDMTPS:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeMeiTuan
|
||||
case model.VendorIDFengNiao:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeFengNiao
|
||||
case model.VendorIDSFPS:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeSF
|
||||
case model.VendorIDUUPT:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeUU
|
||||
case model.VendorJXFakeWL, -1:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeMerchant
|
||||
default:
|
||||
logisticsAdd.CompanyCode = tiktokShop.TiktokDeliveryTypeMerchant
|
||||
}
|
||||
//转门店自送通知抖音发货
|
||||
return api.OrderDelivering(logisticsAdd)
|
||||
}
|
||||
|
||||
// Swtich2SelfDelivered 暂无自送完成
|
||||
|
||||
@@ -275,7 +275,7 @@ func (c *TempOpController) TestStartOrEndOpStore() {
|
||||
// @Title 京西平台和其他平台商品的对比
|
||||
// @Description 京西平台和其他平台商品的对比
|
||||
// @Param token header string true "认证token"
|
||||
// @Param vendorIDs formData string false "运营商ID列表(京东0 美团1 饿百3)"
|
||||
// @Param vendorIDs formData string false "运营商ID列表(京东0 美团1 饿百3,14抖音,16淘宝)"
|
||||
// @Param storeIDs formData string false "京西门店ID列表"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
@@ -295,7 +295,7 @@ func (c *TempOpController) CheckSkuDiffBetweenJxAndVendor() {
|
||||
// @Title 京西平台和其他平台商品的对比Test
|
||||
// @Description 对比Test
|
||||
// @Param token header string true "认证token"
|
||||
// @Param vendorIDs formData string false "运营商ID列表(京东0 美团1 饿百3)"
|
||||
// @Param vendorIDs formData string false "运营商ID列表(京东0 美团1 饿百3 14抖音 16淘宝)"
|
||||
// @Param storeIDs formData string false "京西门店ID列表"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 404 User not found
|
||||
@@ -305,7 +305,7 @@ func (c *TempOpController) StoreSkuCheckDiff() {
|
||||
var vendorIDList []int
|
||||
var storeIDList []int
|
||||
if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDList, params.StoreIDs, &storeIDList); err == nil {
|
||||
cms.TestDiff(params.Ctx, vendorIDList, storeIDList)
|
||||
|
||||
}
|
||||
return retVal, "", err
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user