Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop

This commit is contained in:
richboo111
2022-10-10 13:58:31 +08:00
5 changed files with 143 additions and 105 deletions

View File

@@ -618,7 +618,7 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, upcs []strin
model.ThingTypeSku, utils.DefaultTimeValue, keywordInt64) model.ThingTypeSku, utils.DefaultTimeValue, keywordInt64)
if isFocus { if isFocus {
sql += " OR t4.ebai_id = ? OR t4.mtwm_id = ? OR t4.dd_id = ?" sql += " OR t4.ebai_id = ? OR t4.mtwm_id = ? OR t4.dd_id = ?"
sqlParams = append(sqlParams, keywordInt64, keywordInt64,keywordInt64) sqlParams = append(sqlParams, keywordInt64, keywordInt64, keywordInt64)
} }
} }
sql += ")" sql += ")"
@@ -716,6 +716,10 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, upcs []strin
sql += " OR (t4.ebai_sync_status & ? <> 0 AND NOT (t4.ebai_sync_status & ? <> 0 AND (t4.status <> ? OR t2.status <> ?)) )" sql += " OR (t4.ebai_sync_status & ? <> 0 AND NOT (t4.ebai_sync_status & ? <> 0 AND (t4.status <> ? OR t2.status <> ?)) )"
sqlParams = append(sqlParams, params["ebaiSyncStatus"], model.SyncFlagNewMask, model.SkuStatusNormal, model.SkuStatusNormal) sqlParams = append(sqlParams, params["ebaiSyncStatus"], model.SyncFlagNewMask, model.SkuStatusNormal, model.SkuStatusNormal)
} }
if params["ddSyncStatus"] != nil && realVendorMap[model.VendorIDDD] == 1 {
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["mtwmSyncStatus"] != nil && realVendorMap[model.VendorIDMTWM] == 1 { if params["mtwmSyncStatus"] != nil && realVendorMap[model.VendorIDMTWM] == 1 {
sql += " OR (t4.mtwm_sync_status & ? <> 0 AND NOT (t4.mtwm_sync_status & ? <> 0 AND (t4.status <> ? OR t2.status <> ?)) )" 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) sqlParams = append(sqlParams, params["mtwmSyncStatus"], model.SyncFlagNewMask, model.SkuStatusNormal, model.SkuStatusNormal)
@@ -876,7 +880,7 @@ func getGetStoresSkusBaseSQL2(db *dao.DaoDB, storeIDs, skuIDs []int, upcs []stri
model.ThingTypeSku, utils.DefaultTimeValue, keywordInt64) model.ThingTypeSku, utils.DefaultTimeValue, keywordInt64)
if isFocus { if isFocus {
sql += " OR t4.ebai_id = ? OR t4.mtwm_id = ? OR t4.dd_id = ?" sql += " OR t4.ebai_id = ? OR t4.mtwm_id = ? OR t4.dd_id = ?"
sqlParams = append(sqlParams, keywordInt64, keywordInt64,keywordInt64) sqlParams = append(sqlParams, keywordInt64, keywordInt64, keywordInt64)
} }
} }
sql += ")" sql += ")"
@@ -1135,9 +1139,9 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, upcs []str
t4.created_at bind_created_at, t4.updated_at bind_updated_at, t4.last_operator bind_last_operator, t4.deleted_at bind_deleted_at, t4.created_at bind_created_at, t4.updated_at bind_updated_at, t4.last_operator bind_last_operator, t4.deleted_at bind_deleted_at,
t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at, t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at,
t4.ebai_id, t4.mtwm_id,t4.dd_id, t4.yb_id, CONCAT(smm.yb_store_prefix,t1.yb_name_suffix) yb_sku_name, t4.jds_id, t4.jds_ware_id, t4.ebai_id, t4.mtwm_id,t4.dd_id, t4.yb_id, CONCAT(smm.yb_store_prefix,t1.yb_name_suffix) yb_sku_name, t4.jds_id, t4.jds_ware_id,
t4.jd_sync_status, t4.ebai_sync_status, t4.mtwm_sync_status, t4.yb_sync_status, t4.jds_sync_status, t4.jd_sync_status, t4.ebai_sync_status, t4.mtwm_sync_status,t4.dd_sync_status, t4.yb_sync_status, t4.jds_sync_status,
t4.jd_price, t4.ebai_price, t4.mtwm_price, t4.jx_price, t4.yb_price, t4.jds_price, t4.jd_price, t4.ebai_price, t4.mtwm_price, t4.jx_price, t4.dd_price, t4.yb_price, t4.jds_price,
t4.jd_lock_time, t4.ebai_lock_time, t4.mtwm_lock_time, t4.jx_lock_time, t4.yb_lock_time, t4.jds_lock_time, t4.jd_lock_time, t4.ebai_lock_time, t4.mtwm_lock_time, t4.dd_lock_time, t4.jx_lock_time, t4.yb_lock_time, t4.jds_lock_time,
t4.status_sale_begin, t4.status_sale_end, t4.stock, t4.mt_ladder_box_price, t4.status_sale_begin, t4.status_sale_end, t4.stock, t4.mt_ladder_box_price,
t6.mid_unit_price real_mid_unit_price, t6.mid_unit_price real_mid_unit_price,
t7.unit_price audit_unit_price t7.unit_price audit_unit_price
@@ -1145,6 +1149,8 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, upcs []str
if isHighPrice || priceType != 0 { if isHighPrice || priceType != 0 {
sql += " , t4.unit_price DESC LIMIT 99" sql += " , t4.unit_price DESC LIMIT 99"
} }
globals.SugarLogger.Debug("==============sqlDD", sql)
globals.SugarLogger.Debug("==============param", sqlParams)
var tmpList []*tGetStoresSkusInfo var tmpList []*tGetStoresSkusInfo
beginTime := time.Now() beginTime := time.Now()
if err = dao.GetRowsTx(txDB, &tmpList, sql, sqlParams...); err != nil { if err = dao.GetRowsTx(txDB, &tmpList, sql, sqlParams...); err != nil {

View File

@@ -403,6 +403,7 @@ func updateStoreSku(db *dao.DaoDB, vendorID int, storeSkuList []*dao.StoreSkuSyn
for k, v := range storeSkuList { for k, v := range storeSkuList {
updateItemList[k] = sku2Update(vendorID, v, syncStatus) updateItemList[k] = sku2Update(vendorID, v, syncStatus)
} }
globals.SugarLogger.Debugf("updateItemList==========%s", updateItemList)
num, err = dao.BatchUpdateEntityByKV(db, updateItemList) num, err = dao.BatchUpdateEntityByKV(db, updateItemList)
if vendorID == model.VendorIDYB { if vendorID == model.VendorIDYB {
err = updateYbOhterSku(db, storeSkuList) err = updateYbOhterSku(db, storeSkuList)
@@ -755,6 +756,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
} }
} }
successList := putils.UnselectStoreSkuSyncListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList)) successList := putils.UnselectStoreSkuSyncListByVendorSkuIDs(batchedStoreSkuList, GetVendorSkuIDList(failedList))
globals.SugarLogger.Debugf("successList================%s", utils.Format4Output(successList, false))
if len(successList) > 0 { if len(successList) > 0 {
updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask) updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask)
} }

View File

@@ -505,6 +505,7 @@ func AddStoreCategoryMap(db *DaoDB, storeID, categoryID int, vendorID int, vendo
CategoryID: categoryID, CategoryID: categoryID,
MtwmSyncStatus: model.SyncFlagNewMask, MtwmSyncStatus: model.SyncFlagNewMask,
EbaiSyncStatus: model.SyncFlagNewMask, EbaiSyncStatus: model.SyncFlagNewMask,
DdSyncStatus: model.SyncFlagNewMask,
YbSyncStatus: model.SyncFlagNewMask, YbSyncStatus: model.SyncFlagNewMask,
} }
storeCat.DeletedAt = utils.DefaultTimeValue storeCat.DeletedAt = utils.DefaultTimeValue

View File

@@ -383,70 +383,98 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
storeSku.VendorSkuID = utils.Int64ToStr(tiktokResultChildren.ProductId) storeSku.VendorSkuID = utils.Int64ToStr(tiktokResultChildren.ProductId)
} }
} else { } else {
syncType = "更新商品" //syncType = "更新商品"
for _, storeSku := range storeSkuList { //for _, storeSku := range storeSkuList {
param := &product_editV2_request.ProductEditV2Param{ // // 创建子商品
ProductId: utils.Str2Int64(storeSku.VendorSkuID), // param := &product_addV2_request.ProductAddV2Param{
CategoryLeafId: utils.Str2Int64(storeSku.VendorCatID), // CategoryLeafId: utils.Str2Int64(storeSku.SkuVendorMapCatID),
Name: storeSku.Name, // Name: storeSku.Name,
PayType: tiktokShop.TiktokPayType1, // PayType: tiktokShop.TiktokPayType1,
ReduceType: tiktokShop.SkuReduceTypePayMakeOrder, // ReduceType: tiktokShop.SkuReduceTypePayMakeOrder,
FreightId: freightId, // Weight: utils.Int2Float64(storeSku.Weight),
Weight: utils.Int2Float64(storeSku.Weight), // DeliveryDelayDay: tiktokShop.DeliveryDelayDayToDay,
DeliveryDelayDay: tiktokShop.DeliveryDelayDayToDay, // PresellType: tiktokShop.SendGoodsTypeNow,
PresellType: tiktokShop.SendGoodsTypeNow, // Supply7dayReturn: 0,
Supply7dayReturn: 0, // Mobile: storeDetail.Tel1,
Mobile: storeDetail.Tel1, // Commit: true,
Commit: true, // Specs: "净重|" + fmt.Sprintf("%f", storeSku.SpecQuality) + storeSku.SpecUnit,
Specs: "净重|" + fmt.Sprintf("%f", storeSku.SpecQuality) + storeSku.SpecUnit, // NeedRechargeMode: false,
NeedRechargeMode: false, // SellChannel: []int64{0},
SellChannel: []int64{0}, // StartSaleType: 0,
StartSaleType: 0, // PickupMethod: "0",
PickupMethod: "0", // }
StoreId: int64(storeSku.StoreID), // // param.AccountTemplateId = ""
MainProductId: int64(storeSku.NameID), // // 获取上传图,商品轮播图
} // img, err := GetTiktokImgList(utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.ImgOrigin, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5)
// if err != nil {
// 获取上传图,商品轮播图 // return nil, err
img, err := GetTiktokImgList(utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.ImgOrigin, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5) // }
if err != nil { // param.Pic = img
return nil, err // // 商品详情图
} // img2, err := GetTiktokImgList(utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.DescImg)
param.Pic = img // if err != nil {
// 商品详情图 // return nil, err
img2, err := GetTiktokImgList(utils.Int2Str(storeSku.StoreID), storeDetail.VendorOrgCode, storeSku.DescImg) // }
if err != nil { // param.Description = img2
return nil, err //
} // // weight_unit 目前抖音只支持g和kg两种
param.Description = img2 // switch storeSku.Unit {
// case "g", "ml", "G", "ML":
// weight_unit 目前抖音只支持g和kg两种 // param.WeightUnit = tiktokShop.WeightUint_G
switch storeSku.Unit { // case "kg", "l", "L", "KG":
case "g", "ml", "G", "ML": // param.WeightUnit = tiktokShop.WeightUint_G
param.WeightUnit = tiktokShop.WeightUint_G // }
case "kg", "l", "L", "KG": //
param.WeightUnit = tiktokShop.WeightUint_G // // spec_prices
} // param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, 0, storeSku)
// // ProductFormatNew 获取商品属性
// spec_prices // productFormatNew, err := GetProductFormatNew(param.CategoryLeafId, storeDetail.VendorOrgCode)
param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, 0, storeSku) // globals.SugarLogger.Debug("创建=============productFormatNew", productFormatNew)
// ProductFormatNew // globals.SugarLogger.Debug("创建=============productFormatNew err", err)
productFormatNew, err := GetProductFormatNew(param.CategoryLeafId, storeDetail.VendorOrgCode) // if err != nil {
globals.SugarLogger.Debug("更新=============productFormatNew", productFormatNew) // return nil, err
globals.SugarLogger.Debug("更新=============productFormatNew err", err) // }
if err != nil { // param.ProductFormatNew = productFormatNew
return nil, err // globals.SugarLogger.Debug("创建=============param", utils.Format4Output(param, false))
} //
param.ProductFormatNew = productFormatNew // // 获取品牌
// brandID, err := api.GetSkuBrand(param.CategoryLeafId)
// 抖店更新商品 // if err != nil {
if err := api.EditStoreCommodity(param); err != nil { // return nil, err
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType) // }
storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID) // param.StandardBrandId = brandID
continue //
} // tiktokResult, err := api.EditStoreCommodity(param) // 创建主商品
} // if err != nil {
return // failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
// storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
// continue
// }
// globals.SugarLogger.Debugf("tiktokResult main ===%s", utils.Format4Output(tiktokResult, false))
//
// // 创建子商品
// param.FreightId = freightId
// param.MainProductId = tiktokResult.ProductId
// param.SpecPrices = GetSpecPrices(param.Specs, vendorStoreID, tiktokResult.ProductId, storeSku)
// // 获取门店限售模板
// saleLimitId, err := CreateSaleTemp(utils.Str2Int64(vendorStoreID), api)
// globals.SugarLogger.Debug("==22213123131231231", saleLimitId)
// if err != nil {
// return nil, err
// }
// param.SaleLimitId = saleLimitId
// param.StoreId = utils.Str2Int64(vendorStoreID)
// // 抖店创建商品
// globals.SugarLogger.Debugf("zishangping=============%s", utils.Format4Output(param, false))
// tiktokResultChildren, err := api.EditStoreCommodity(param)
// if err != nil {
// failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDDD], syncType)
// storeSku.VendorSkuID = utils.Int2Str(storeSku.SkuID)
// continue
// }
// storeSku.VendorSkuID = utils.Int64ToStr(tiktokResultChildren.ProductId)
//}
//return
} }
if len(failedList) > 0 { if len(failedList) > 0 {

73
main.go
View File

@@ -134,44 +134,45 @@ func checkCmdFlags() bool {
func main() { func main() {
if !checkCmdFlags() { if !checkCmdFlags() {
Init() Init()
if err := tasks.RefreshWeixinToken(); err != nil { //if err := tasks.RefreshWeixinToken(); err != nil {
globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err) // globals.SugarLogger.Errorf("RefreshWeixinToken failed with error:%s", err)
return
}
if err := tasks.RefreshWeixin2Token(); err != nil {
globals.SugarLogger.Errorf("RefreshWeixin2Token failed with error:%s", err)
return
}
if err := tasks.RefreshWeixin3Token(); err != nil {
globals.SugarLogger.Errorf("RefreshWeixin3Token failed with error:%s", err)
return
}
// if err := tasks.RefreshWeimobToken(); err != nil {
// globals.SugarLogger.Errorf("RefreshWeimobToken failed with error:%s", err)
// return
// }
if err := tasks.RefreshYilianyunToken(); err != nil {
globals.SugarLogger.Errorf("RefreshYilianyunToken failed with error:%s", err)
return
}
if err := tasks.RefreshPushToken(); err != nil {
globals.SugarLogger.Errorf("RefreshPushToken failed with error:%s", err)
return
}
if web.BConfig.RunMode != "jxgy" {
if err := tasks.RefreshFnToken(); err != nil {
globals.SugarLogger.Errorf("RefreshFnToken failed with error:%s", err)
return
}
}
//if err := tasks.RefreshTiktokToken(); err != nil {
// globals.SugarLogger.Errorf("RefreshTiktokToken failed with error:%s", err)
// return // return
//} //}
if err := tasks.RefreshQywxToken(); err != nil { //if err := tasks.RefreshWeixin2Token(); err != nil {
globals.SugarLogger.Errorf("RefreshQywxToken failed with error:%s", err) // globals.SugarLogger.Errorf("RefreshWeixin2Token failed with error:%s", err)
return // return
} //}
//if err := tasks.RefreshWeixin3Token(); err != nil {
// globals.SugarLogger.Errorf("RefreshWeixin3Token failed with error:%s", err)
// return
//}
//// if err := tasks.RefreshWeimobToken(); err != nil {
//// globals.SugarLogger.Errorf("RefreshWeimobToken failed with error:%s", err)
//// return
//// }
//if err := tasks.RefreshYilianyunToken(); err != nil {
// globals.SugarLogger.Errorf("RefreshYilianyunToken failed with error:%s", err)
// return
//}
//if err := tasks.RefreshPushToken(); err != nil {
// globals.SugarLogger.Errorf("RefreshPushToken failed with error:%s", err)
// return
//}
//if web.BConfig.RunMode != "jxgy" {
// if err := tasks.RefreshFnToken(); err != nil {
// globals.SugarLogger.Errorf("RefreshFnToken failed with error:%s", err)
// return
// }
//}
////if err := tasks.RefreshTiktokToken(); err != nil {
//// globals.SugarLogger.Errorf("RefreshTiktokToken failed with error:%s", err)
//// return
////}
//if err := tasks.RefreshQywxToken(); err != nil {
// globals.SugarLogger.Errorf("RefreshQywxToken failed with error:%s", err)
// return
//}
// if globals.IsProductEnv() { // if globals.IsProductEnv() {
// orderman.SaveJdsOrders(nil, time.Now().Add(-2*time.Hour), time.Now()) // orderman.SaveJdsOrders(nil, time.Now().Add(-2*time.Hour), time.Now())
// } // }