解决冲突
This commit is contained in:
@@ -588,6 +588,9 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku, isQueryMidPric
|
||||
t1.price,
|
||||
t1.img,
|
||||
t1.img2,
|
||||
t1.img3,
|
||||
t1.img_watermark,
|
||||
t1.img_mix,
|
||||
t1.status,
|
||||
t1.is_spu,
|
||||
t1.desc_img,
|
||||
@@ -596,7 +599,8 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku, isQueryMidPric
|
||||
t1.ex_prefix_begin,
|
||||
t1.ex_prefix_end,
|
||||
t1.yb_name_suffix,
|
||||
t1.jds_stock_switch
|
||||
t1.jds_stock_switch,
|
||||
t1.preparation_time
|
||||
`
|
||||
if isQueryMidPrice {
|
||||
sql += `,
|
||||
@@ -624,6 +628,9 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku, isQueryMidPric
|
||||
t1.price,
|
||||
t1.img,
|
||||
t1.img2,
|
||||
t1.img3,
|
||||
t1.img_watermark,
|
||||
t1.img_mix,
|
||||
t1.status,
|
||||
t1.is_spu,
|
||||
t1.desc_img,
|
||||
@@ -637,6 +644,7 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku, isQueryMidPric
|
||||
t1.ex_prefix_end,
|
||||
t1.yb_name_suffix,
|
||||
t1.jds_stock_switch,
|
||||
t1.preparation_time,
|
||||
`
|
||||
if isQueryMidPrice {
|
||||
sqlData += " t4.mid_unit_price,"
|
||||
@@ -903,7 +911,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
||||
}
|
||||
}
|
||||
globals.SugarLogger.Debugf("UpdateSkuName valid:%s", utils.Format4Output(valid, false))
|
||||
for _, imgName := range []string{"img", "img2"} {
|
||||
for _, imgName := range []string{"img", "img2", "img3"} {
|
||||
if valid[imgName] != nil {
|
||||
if imgStr := utils.Interface2String(valid[imgName]); imgStr != "" {
|
||||
_, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid[imgName].(string), model.ImgTypeMain, true)
|
||||
@@ -1517,7 +1525,7 @@ func GetJdUpcCodeByName(ctx *jxcontext.Context, name, upcCode string) (productIn
|
||||
return productInfos, err
|
||||
}
|
||||
|
||||
func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fromTime, toTime string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, imgWaterMark string, vendorID int, exPrefix, fromTime, toTime string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
var (
|
||||
fromTimeP time.Time
|
||||
toTimeP time.Time
|
||||
@@ -1545,24 +1553,30 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
|
||||
"exPrefix": exPrefix,
|
||||
"exPrefixBegin": fromTimeP,
|
||||
"exPrefixEnd": toTimeP,
|
||||
"imgWaterMark": imgWaterMark,
|
||||
"exVendorID": vendorID,
|
||||
}
|
||||
if now.Sub(toTimeP) <= 0 && now.Sub(fromTimeP) >= 0 {
|
||||
if now.Sub(toTimeP) <= 0 && now.Sub(fromTimeP) <= 0 {
|
||||
_, err = UpdateSkuName(ctx, nameID, payload, false)
|
||||
} else if now.Sub(fromTimeP) > 0 && now.Sub(toTimeP) > 0 {
|
||||
payload["exPrefixBegin"] = nil
|
||||
payload["exPrefixEnd"] = nil
|
||||
payload["imgWaterMark"] = nil
|
||||
payload["exVendorID"] = nil
|
||||
_, err = UpdateSkuName(ctx, nameID, payload, false)
|
||||
} else {
|
||||
skuList, err := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
|
||||
if err == nil && len(skuList) > 0 {
|
||||
if skuList[0].ExPrefixBegin != nil {
|
||||
_, err = UpdateSkuName(ctx, nameID, payload, false)
|
||||
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, partner.GetSingleStoreVendorIDs(), nil, false, []int{skuList[0].ID}, nil, model.SyncFlagModifiedMask, true, true)
|
||||
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{vendorID}, nil, false, []int{skuList[0].ID}, nil, model.SyncFlagModifiedMask, true, true)
|
||||
} else {
|
||||
skuName := &model.SkuName{
|
||||
ExPrefix: exPrefix,
|
||||
ExPrefixBegin: &fromTimeP,
|
||||
ExPrefixEnd: &toTimeP,
|
||||
ImgWatermark: imgWaterMark,
|
||||
ExVendorID: vendorID,
|
||||
}
|
||||
skuName.ID = nameID
|
||||
skuName.LastOperator = ctx.GetLoginID()
|
||||
@@ -1574,7 +1588,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
_, err = dao.UpdateEntity(db, skuName, "ExPrefix", "ExPrefixBegin", "ExPrefixEnd", "LastOperator", "UpdatedAt")
|
||||
_, err = dao.UpdateEntity(db, skuName, "ImgWatermark", "ExVendorID", "ExPrefix", "ExPrefixBegin", "ExPrefixEnd", "LastOperator", "UpdatedAt")
|
||||
dao.Commit(db)
|
||||
}
|
||||
}
|
||||
@@ -1592,7 +1606,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro
|
||||
for _, v := range skuList {
|
||||
skuIDs = append(skuIDs, v.ID)
|
||||
}
|
||||
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, partner.GetSingleStoreVendorIDs(), nil, false, skuIDs, nil, model.SyncFlagModifiedMask, true, true)
|
||||
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{vendorID}, nil, false, skuIDs, nil, model.SyncFlagModifiedMask, true, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2520,3 +2534,72 @@ func deleteJdsSku(db *dao.DaoDB, skuID int) (err error) {
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark string, vendorID int, exPrefix, fromTime, toTime string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
var (
|
||||
fromTimeP time.Time
|
||||
toTimeP time.Time
|
||||
db = dao.GetDB()
|
||||
)
|
||||
if fromTime != "" {
|
||||
fromTimeP = utils.Time2Date(utils.Str2Time(fromTime))
|
||||
}
|
||||
if toTime != "" {
|
||||
toTimeP = utils.Time2Date(utils.Str2Time(toTime))
|
||||
}
|
||||
if toTimeP.Before(fromTimeP) {
|
||||
return "", fmt.Errorf("结束时间不可以小于开始时间!开始时间:[%v],结束时间:[%v]", fromTimeP, toTimeP)
|
||||
}
|
||||
task := tasksch.NewParallelTask("UpdateSkuExinfoMap", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
nameID := batchItemList[0].(int)
|
||||
skuEx := &model.SkuExinfoMap{
|
||||
NameID: nameID,
|
||||
ImgWatermark: imgWaterMark,
|
||||
ExPrefix: exPrefix,
|
||||
VendorID: vendorID,
|
||||
BeginAt: fromTimeP,
|
||||
EndAt: toTimeP,
|
||||
}
|
||||
dao.WrapAddIDCULDEntity(skuEx, ctx.GetUserName())
|
||||
skuExs, _ := dao.GetSkuExinfos(db, []int{nameID}, []int{vendorID}, "", utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
if len(skuExs) > 0 {
|
||||
skuEx2 := skuExs[0]
|
||||
skuEx2.DeletedAt = time.Now()
|
||||
skuEx2.LastOperator = ctx.GetUserName()
|
||||
dao.UpdateEntity(db, skuEx2, "DeletedAt", "LastOperator")
|
||||
dao.CreateEntity(db, skuEx)
|
||||
} else {
|
||||
dao.CreateEntity(db, skuEx)
|
||||
}
|
||||
now := utils.Time2Date(time.Now())
|
||||
if now.Sub(fromTimeP) >= 0 && now.Sub(toTimeP) <= 0 {
|
||||
var skuIDs []int
|
||||
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
|
||||
if err = err2; err == nil {
|
||||
if len(skuList) > 0 {
|
||||
for _, v := range skuList {
|
||||
skuIDs = append(skuIDs, v.ID)
|
||||
}
|
||||
if partner.IsMultiStore(vendorID) {
|
||||
for _, v := range skuIDs {
|
||||
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
|
||||
}
|
||||
CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, isAsync, isContinueWhenError, ctx.GetUserName())
|
||||
} else {
|
||||
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{vendorID}, nil, false, skuIDs, nil, model.SyncFlagModifiedMask, isAsync, isContinueWhenError)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return retVal, err
|
||||
}, nameIDs)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
if isAsync {
|
||||
hint = task.GetID()
|
||||
} else {
|
||||
_, err = task.GetResult(0)
|
||||
hint = "1"
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
@@ -370,6 +370,17 @@ func getStoresSql(ctx *jxcontext.Context, keyword string, params map[string]inte
|
||||
}
|
||||
}
|
||||
|
||||
if params["storeLevels"] != nil {
|
||||
var storeLevels []string
|
||||
if err = jxutils.Strings2Objs(utils.Interface2String(params["storeLevels"]), &storeLevels); err != nil {
|
||||
return "", nil, "", nil, err
|
||||
}
|
||||
if len(storeLevels) > 0 {
|
||||
sqlWhere += " AND t1.store_level IN (" + dao.GenQuestionMarks(len(storeLevels)) + ")"
|
||||
sqlWhereParams = append(sqlWhereParams, storeLevels)
|
||||
}
|
||||
}
|
||||
|
||||
sql = sqlFrom + sqlWhere
|
||||
sqlParams = append(sqlParams, sqlFromParams...)
|
||||
sqlParams = append(sqlParams, sqlWhereParams...)
|
||||
|
||||
@@ -13,6 +13,8 @@ import (
|
||||
"time"
|
||||
"unicode"
|
||||
|
||||
"github.com/astaxie/beego"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/jdshopapi"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
@@ -843,8 +845,7 @@ func UpdateStoreSkus(ctx *jxcontext.Context, causeFlag, storeID int, skuBindInfo
|
||||
|
||||
func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isScale, isRefreshHigh, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
globals.SugarLogger.Debugf("UpdateStoresSkus:%s, storeIDs:%v, skuBindInfos:%s", ctx.GetTrackInfo(), storeIDs, utils.Format4Output(skuBindInfos, true))
|
||||
flag, err := doStoreSkuAudit(ctx, storeIDs, skuBindInfos)
|
||||
if !flag {
|
||||
if beego.BConfig.RunMode == "jxgy" {
|
||||
var num int64
|
||||
db := dao.GetDB()
|
||||
skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, isScale, isRefreshHigh)
|
||||
@@ -859,6 +860,24 @@ func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, sku
|
||||
if num == 0 || !isAsync || hint == "" {
|
||||
hint = utils.Int64ToStr(num)
|
||||
}
|
||||
} else {
|
||||
flag, _ := doStoreSkuAudit(ctx, storeIDs, skuBindInfos)
|
||||
if !flag {
|
||||
var num int64
|
||||
db := dao.GetDB()
|
||||
skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, isScale, isRefreshHigh)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
isAsync = asyncStoreSkuOpFilter(ctx, isAsync)
|
||||
num = int64(len(skuIDs))
|
||||
if num > 0 {
|
||||
hint, err = CurVendorSync.SyncStoresSkus(ctx, nil, causeFlag, db, nil, storeIDs, skuIDs, false, isAsync, isContinueWhenError)
|
||||
}
|
||||
if num == 0 || !isAsync || hint == "" {
|
||||
hint = utils.Int64ToStr(num)
|
||||
}
|
||||
}
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
@@ -1107,7 +1126,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
skuBind.Status = tmpStatus
|
||||
}
|
||||
if globals.IsAddEvent {
|
||||
err = AddEventDetail(db, ctx, model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, "", "")
|
||||
err = AddEventDetail(db, ctx, model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, "", utils.Int2Str(skuBind.UnitPrice))
|
||||
}
|
||||
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
||||
dao.WrapAddIDCULDEntity(skuBind, userName)
|
||||
@@ -2351,7 +2370,7 @@ func ReCalculateJxPrice(db *dao.DaoDB, ctx *jxcontext.Context, storeIDs []int) (
|
||||
if storeSkuList, err := dao.GetStoresSkusInfo(db, []int{storeID}, nil); err == nil {
|
||||
for _, skuBind := range storeSkuList {
|
||||
skuBind.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), skuBind.Price)
|
||||
dao.UpdateEntity(db, skuBind)
|
||||
dao.UpdateEntity(db, skuBind, "JxPrice")
|
||||
}
|
||||
} else {
|
||||
return nil, err
|
||||
@@ -4504,6 +4523,14 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto
|
||||
time.Sleep(time.Second / 5)
|
||||
db := dao.GetDB()
|
||||
for _, storeID := range storeIDs {
|
||||
stores, _ := dao.GetStoreList(db, []int{storeID}, nil, nil, nil, "")
|
||||
//扣点的门店改价不进审核
|
||||
if len(stores) > 0 {
|
||||
if stores[0].PayPercentage <= 50 || stores[0].StoreLevel == "E" {
|
||||
globals.SugarLogger.Debugf("doStoreSkuAudit return0 storeID : %v", storeID)
|
||||
return false, err
|
||||
}
|
||||
}
|
||||
for _, skuBindInfo := range skuBindInfos {
|
||||
globals.SugarLogger.Debugf("doStoreSkuAudit storeID: %v , nameID: %v", storeID, skuBindInfo.NameID)
|
||||
storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{skuBindInfo.NameID}, model.StoreAuditStatusOnline)
|
||||
@@ -4584,7 +4611,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku
|
||||
if status == model.StoreAuditStatusOnline {
|
||||
return "", fmt.Errorf("审核标志不正确!")
|
||||
}
|
||||
task := tasksch.NewParallelTask("StoreSkuPriceAudit", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
task := tasksch.NewParallelTask("StoreSkuPriceAudit", tasksch.NewParallelConfig().SetParallelCount(5).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
storeAudit := batchItemList[0].(*model.StoreSkuAudit)
|
||||
storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeAudit.StoreID}, []int{storeAudit.NameID}, model.StoreAuditStatusOnline)
|
||||
@@ -4594,10 +4621,10 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku
|
||||
if len(storeAudits) > 1 {
|
||||
return retVal, fmt.Errorf("查询到该门店该商品的待审核信息大于1条!storeID: %v, nameID: %v", storeAudit.StoreID, storeAudit.NameID)
|
||||
}
|
||||
flag := false
|
||||
// flag := false
|
||||
//审核通过
|
||||
if status == model.StoreAuditStatusCreated {
|
||||
flag = true
|
||||
// flag = true
|
||||
storeAudits[0].UserID = ctx.GetUserID()
|
||||
storeAudits[0].Status = model.StoreAuditStatusCreated
|
||||
storeAudits[0].Remark = storeAudit.Remark
|
||||
@@ -4640,19 +4667,20 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku
|
||||
} else {
|
||||
return retVal, fmt.Errorf("审核标志不正确!")
|
||||
}
|
||||
//TODO 暂时先不推消息了
|
||||
if err == nil {
|
||||
if globals.IsProductEnv() {
|
||||
skuAndNames, err := dao.GetSkus(db, nil, []int{storeAudit.NameID}, nil, nil, nil)
|
||||
if len(skuAndNames) > 0 && err == nil {
|
||||
price := 0
|
||||
if storeAudit.AuditPrice != 0 {
|
||||
price = storeAudit.AuditPrice
|
||||
} else {
|
||||
price = storeAudits[0].UnitPrice
|
||||
}
|
||||
weixinmsg.NotifyStoreOpRequestStatus(flag, storeAudit.StoreID, storeAudit.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, price, storeAudit.Remark)
|
||||
}
|
||||
}
|
||||
// if globals.IsProductEnv() {
|
||||
// skuAndNames, err := dao.GetSkus(db, nil, []int{storeAudit.NameID}, nil, nil, nil)
|
||||
// if len(skuAndNames) > 0 && err == nil {
|
||||
// price := 0
|
||||
// if storeAudit.AuditPrice != 0 {
|
||||
// price = storeAudit.AuditPrice
|
||||
// } else {
|
||||
// price = storeAudits[0].UnitPrice
|
||||
// }
|
||||
// weixinmsg.NotifyStoreOpRequestStatus(flag, storeAudit.StoreID, storeAudit.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, price, storeAudit.Remark)
|
||||
// }
|
||||
// }
|
||||
}
|
||||
return retVal, err
|
||||
}, storeSkuAudits)
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
|
||||
"git.rosy.net.cn/baseapi"
|
||||
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
|
||||
@@ -677,6 +678,7 @@ func (v *VendorSync) LoopStoresMap2(ctx *jxcontext.Context, parentTask tasksch.I
|
||||
resultList, err2 := task.GetResult(0)
|
||||
if len(task.GetFailedList()) > 0 {
|
||||
err2 = buildErrMsg(task)
|
||||
err = err2
|
||||
}
|
||||
if err = err2; err == nil {
|
||||
if len(resultList) == 0 {
|
||||
@@ -1088,58 +1090,96 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
)
|
||||
storeSkus, _ := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, nil)
|
||||
_, hint, err = v.LoopStoresMap2(ctx, nil, db, fmt.Sprintf("同步京东商城库存商品信息:%v", storeIDs), isAsync, true, []int{model.VendorIDJDShop}, storeIDs, false,
|
||||
func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||
loopMapInfo := batchItemList[0].(*LoopStoreMapInfo)
|
||||
if handler := v.GetStoreHandler(loopMapInfo.VendorID); handler != nil {
|
||||
parallelCount := 5
|
||||
if model.MultiStoresVendorMap[loopMapInfo.VendorID] == 1 {
|
||||
parallelCount = 2
|
||||
for _, storeMap := range loopMapInfo.StoreMapList {
|
||||
if storeMap.Status > model.StoreStatusDisabled && storeMap.StoreID != model.JdShopMainStoreID && storeMap.SyncRule != 0 {
|
||||
err = syncJdsStoresSkus(ctx, db, nil, storeMap, isAsync, isContinueWhenError)
|
||||
}
|
||||
err = syncJdsStoreStock(ctx, db, storeSkus, storeMap)
|
||||
}
|
||||
loopStoreTask := tasksch.NewParallelTask(fmt.Sprintf("处理平台%s", model.VendorChineseNames[loopMapInfo.VendorID]),
|
||||
tasksch.NewParallelConfig().SetParallelCount(parallelCount).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
storeMap := batchItemList[0].(*model.StoreMap)
|
||||
if storeMap.Status > model.StoreStatusDisabled && storeMap.StoreID != model.JdShopMainStoreID && storeMap.SyncRule != 0 {
|
||||
err = syncJdsStoresSkus(ctx, db, task, storeMap, isAsync, isContinueWhenError)
|
||||
}
|
||||
return nil, err
|
||||
}, loopMapInfo.StoreMapList)
|
||||
t.AddChild(loopStoreTask).Run()
|
||||
_, err = loopStoreTask.GetResult(0)
|
||||
}
|
||||
return nil, partner.AddVendorInfo2Err(err, loopMapInfo.VendorID)
|
||||
}, isContinueWhenError)
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, storeSkus []*model.StoreSkuBind, storeMap *model.StoreMap) (err error) {
|
||||
for _, storeSku := range storeSkus {
|
||||
stock := 0
|
||||
if storeSku.Status == model.StoreSkuBindStatusNormal {
|
||||
stock = 9999
|
||||
}
|
||||
storeSku2, _ := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, []int{storeSku.SkuID})
|
||||
if storeSku.JdsID != 0 && len(storeSku2) > 0 {
|
||||
if storeSku.Status != storeSku2[0].Status {
|
||||
err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, stock, utils.Str2Int(storeMap.VendorStoreID))
|
||||
}
|
||||
}
|
||||
}
|
||||
// task := tasksch.NewParallelTask("syncJdsStoreStock", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
|
||||
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
// storeSku := batchItemList[0].(*model.StoreSkuBind)
|
||||
|
||||
// return retVal, err
|
||||
// }, storeSkus)
|
||||
// tasksch.HandleTask(task, nil, true).Run()
|
||||
// _, err = task.GetResult(0)
|
||||
return err
|
||||
}
|
||||
|
||||
func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (err error) {
|
||||
var (
|
||||
mainSkusMap = make(map[int]*model.StoreSkuBind)
|
||||
skusMap = make(map[int]*model.StoreSkuBind)
|
||||
updateList []*model.StoreSkuBind
|
||||
addList []*model.StoreSkuBind
|
||||
mainSkusMap = make(map[int][]*dao.StoreSkuSyncInfo)
|
||||
skusMap = make(map[int][]*dao.StoreSkuSyncInfo)
|
||||
updateList []*dao.StoreSkuSyncInfo
|
||||
addList []*dao.StoreSkuSyncInfo
|
||||
skuBindInfos1 []*StoreSkuBindInfo
|
||||
skuBindInfos2 []*StoreSkuBindInfo
|
||||
)
|
||||
storeSkusMain, err := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, nil)
|
||||
storeSkusMain, err := dao.GetStoreSkusByNameIDs(db, []int{model.JdShopMainStoreID}, 0)
|
||||
for _, v := range storeSkusMain {
|
||||
mainSkusMap[v.SkuID] = v
|
||||
mainSkusMap[v.NameID] = append(mainSkusMap[v.NameID], v)
|
||||
}
|
||||
storeSkus, err := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, nil)
|
||||
storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeMap.StoreID}, 0)
|
||||
for _, v := range storeSkus {
|
||||
skusMap[v.SkuID] = v
|
||||
if mainSkusMap[v.SkuID] != nil && mainSkusMap[v.SkuID].Status != v.Status {
|
||||
updateList = append(updateList, mainSkusMap[v.SkuID])
|
||||
skusMap[v.NameID] = append(skusMap[v.NameID], v)
|
||||
}
|
||||
for k, v := range skusMap {
|
||||
if mainSkusMap[k] != nil {
|
||||
flag := false
|
||||
for _, storeSku := range v {
|
||||
if storeSku.StoreSkuStatus == model.StoreSkuBindStatusNormal {
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
if !flag {
|
||||
continue
|
||||
}
|
||||
for _, storeSku := range v {
|
||||
for _, storeSkuMain := range mainSkusMap[k] {
|
||||
if storeSkuMain.StoreSkuStatus == model.StoreSkuBindStatusNormal && storeSku.StoreSkuStatus == model.StoreSkuBindStatusDontSale &&
|
||||
storeSkuMain.SkuID == storeSku.SkuID {
|
||||
updateList = append(updateList, storeSkuMain)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for k, v := range mainSkusMap {
|
||||
if skusMap[k] == nil {
|
||||
if storeMap.SyncRule == 2 {
|
||||
addList = append(addList, v)
|
||||
for _, storeSkuMain := range v {
|
||||
addList = append(addList, storeSkuMain)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// fmt.Println("updateList", utils.Format4Output(updateList, false))
|
||||
// fmt.Println("addList", utils.Format4Output(addList, false))
|
||||
if len(updateList) > 0 {
|
||||
for _, v := range updateList {
|
||||
skuBindInfos1 = append(skuBindInfos1, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false))
|
||||
@@ -1149,18 +1189,14 @@ func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch
|
||||
|
||||
if len(addList) > 0 {
|
||||
for _, v := range addList {
|
||||
skuBindInfos2 = append(skuBindInfos2, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false))
|
||||
skuBindInfos2 = append(skuBindInfos2, buildStoreSkuBindInfo(db, storeMap.StoreID, v, true))
|
||||
}
|
||||
_, err = UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos2, isAsync, isContinueWhenError, false)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func buildStoreSkuBindInfo(db *dao.DaoDB, storeID int, storeBind *model.StoreSkuBind, isFocus bool) (skuBindInfo *StoreSkuBindInfo) {
|
||||
result, err := dao.GetSkus(db, []int{storeBind.SkuID}, nil, nil, nil, nil)
|
||||
if err != nil || len(result) == 0 {
|
||||
return nil
|
||||
}
|
||||
func buildStoreSkuBindInfo(db *dao.DaoDB, storeID int, storeBind *dao.StoreSkuSyncInfo, isFocus bool) (skuBindInfo *StoreSkuBindInfo) {
|
||||
skus := []*StoreSkuBindSkuInfo{
|
||||
&StoreSkuBindSkuInfo{
|
||||
SkuID: storeBind.SkuID,
|
||||
@@ -1168,12 +1204,12 @@ func buildStoreSkuBindInfo(db *dao.DaoDB, storeID int, storeBind *model.StoreSku
|
||||
}
|
||||
skuBindInfo = &StoreSkuBindInfo{
|
||||
StoreID: storeID,
|
||||
NameID: result[0].NameID,
|
||||
NameID: storeBind.NameID,
|
||||
}
|
||||
if isFocus {
|
||||
skuBindInfo.IsFocus = 1
|
||||
}
|
||||
if storeBind.Status == model.SkuStatusNormal {
|
||||
if storeBind.StoreSkuStatus == model.SkuStatusNormal {
|
||||
skus[0].IsSale = 1
|
||||
} else {
|
||||
skus[0].IsSale = -1
|
||||
@@ -1181,3 +1217,31 @@ func buildStoreSkuBindInfo(db *dao.DaoDB, storeID int, storeBind *model.StoreSku
|
||||
skuBindInfo.Skus = skus
|
||||
return skuBindInfo
|
||||
}
|
||||
|
||||
func SyncSkuExperfixAndWatermark(ctx *jxcontext.Context) (err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
)
|
||||
skuExinfos, err := dao.GetSkuExinfos(db, nil, []int{model.VendorIDMTWM, model.VendorIDEBAI, model.VendorIDJD}, "", utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
task := tasksch.NewParallelTask("SyncSkuExperfixAndWatermark", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
skuExinfo := batchItemList[0].(*model.SkuExinfoMap)
|
||||
skus, err := dao.GetSkus(db, nil, []int{skuExinfo.NameID}, nil, nil, nil)
|
||||
var skuIDs []int
|
||||
for _, v := range skus {
|
||||
skuIDs = append(skuIDs, v.ID)
|
||||
}
|
||||
if partner.IsMultiStore(skuExinfo.VendorID) {
|
||||
for _, v := range skuIDs {
|
||||
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
|
||||
}
|
||||
CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, true, true, ctx.GetUserName())
|
||||
} else {
|
||||
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{skuExinfo.VendorID}, nil, false, skuIDs, nil, model.SyncFlagModifiedMask, true, true)
|
||||
}
|
||||
return retVal, err
|
||||
}, skuExinfos)
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
_, err = task.GetResult(0)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -147,7 +147,12 @@ func SyncSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int,
|
||||
if skuVendorInfo.ExdSkuID != "" {
|
||||
return nil, err
|
||||
}
|
||||
skuVendorInfo.SkuName = jxutils.ComposeSkuName(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0, skuVendorInfo.ExPrefix, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd)
|
||||
skuVendorInfo.SkuName = jxutils.ComposeSkuNameSync(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0, skuVendorInfo.ExPrefix, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd)
|
||||
skuVendorInfo.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
|
||||
if skuVendorInfo.ImgWatermark != "" {
|
||||
downLoad, _ := uploadImgStandard(skuVendorInfo.ImgWatermark)
|
||||
skuVendorInfo.ImgMix = jxutils.MixWatermarkImg(downLoad, skuVendorInfo.Img, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd)
|
||||
}
|
||||
skuVendorInfo.MergedStatus = jxutils.MergeSkuStatus(skuVendorInfo.Status, skuVendorInfo.NameStatus)
|
||||
if multiStoresHandler, ok := partner.GetPurchasePlatformFromVendorID(skuVendorInfo.VendorID).(partner.IMultipleStoresHandler); ok {
|
||||
if model.IsSyncStatusDelete(skuVendorInfo.SkuSyncStatus) { //删除
|
||||
|
||||
@@ -280,6 +280,12 @@ func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyn
|
||||
}
|
||||
skuItem.MergedStatus = jxutils.MergeSkuStatus(jxutils.MergeSkuStatus(skuItem.NameStatus, skuItem.Status), skuItem.StoreSkuStatus)
|
||||
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
||||
skuItem.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0)
|
||||
if skuItem.ImgWatermark != "" {
|
||||
downLoad, _ := uploadImgStandard(skuItem.ImgWatermark)
|
||||
fmt.Println("testdo", downLoad)
|
||||
skuItem.ImgMix = jxutils.MixWatermarkImg(downLoad, skuItem.ImgOrigin, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
||||
}
|
||||
}
|
||||
}
|
||||
return inSkuList
|
||||
|
||||
@@ -11,10 +11,8 @@ import (
|
||||
"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/business/partner/purchase/jd"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"git.rosy.net.cn/jx-callback/globals/api/apimanager"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -149,78 +147,52 @@ func GetCheckVendorCookie(ctx *jxcontext.Context, vendorIDs []int, isAuto bool)
|
||||
errMsg = ""
|
||||
)
|
||||
for _, v := range vendorIDs {
|
||||
appOrgCodeList := apimanager.CurAPIManager.GetAppOrgCodeList(v)
|
||||
if len(appOrgCodeList) > 0 {
|
||||
for _, vv := range appOrgCodeList {
|
||||
cc := &CheckCookie{}
|
||||
var flag = false
|
||||
switch v {
|
||||
case model.VendorIDEBAI:
|
||||
resultMap, err := api.EbaiAPI.GetStoreOrderInfo(ebaiOrderID)
|
||||
if len(resultMap) < 1 && err != nil {
|
||||
if strings.Contains(err.Error(), ebaiErr) || strings.Contains(err.Error(), ebaiErr2) {
|
||||
errMsg += fmt.Sprintf(" 饿百账号:[%v]的Cookie无效了!", vv)
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
// result, err := api.Ebai2API.GetEbaiDepotSku(ebaiapi.EbaiWholeCountryStore, "190700570")
|
||||
// if err != nil || len(result) < 1 {
|
||||
// cc := &CheckCookie{}
|
||||
// cc.VendorID = v
|
||||
// cc.VendorOrgCode = "饿百后台饿鲜达全国账号"
|
||||
// cc.Status = "无效"
|
||||
// ccList = append(ccList, cc)
|
||||
// errMsg += fmt.Sprintf(" 饿百账号:[饿百后台饿鲜达全国账号]的Cookie无效了!", vv)
|
||||
// flag = true
|
||||
// }
|
||||
// result2, err2 := api.EbaiAPI.GetExianDaSkuDepot("190600741")
|
||||
// if err2 != nil || result2 == nil {
|
||||
// cc := &CheckCookie{}
|
||||
// cc.VendorID = v
|
||||
// cc.VendorOrgCode = "饿鲜达供应链系统"
|
||||
// cc.Status = "无效"
|
||||
// ccList = append(ccList, cc)
|
||||
// errMsg += fmt.Sprintf(" 饿百账号:[饿鲜达供应链系统]的Cookie无效了!", vv)
|
||||
// flag = true
|
||||
// }
|
||||
case model.VendorIDMTWM:
|
||||
_, err := api.MtwmAPI.PackagePriceGet(mtStoreID)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), mtErr) {
|
||||
errMsg += fmt.Sprintf(" 美团账号:[%v]的Cookie无效了!", vv)
|
||||
flag = true
|
||||
}
|
||||
globals.SugarLogger.Debugf("cookieCheck", err)
|
||||
}
|
||||
case model.VendorIDJD:
|
||||
result, err := jd.GetAPI(vv).GetJdUpcCodeByName("", jdUpcCode, 1, 5)
|
||||
if len(result) < 1 && err != nil {
|
||||
if strings.Contains(err.Error(), jdErr) {
|
||||
errMsg += fmt.Sprintf(" 京东账号:[%v]的Cookie无效了!", vv)
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
result2, err2 := api.JdPageAPI.GetCorporationInfo("11926674", "92510108MA68KK3M8P")
|
||||
if err2 != nil || result2 == nil {
|
||||
cc := &CheckCookie{}
|
||||
cc.VendorID = v
|
||||
cc.VendorOrgCode = "京东page账号"
|
||||
cc.Status = "无效"
|
||||
ccList = append(ccList, cc)
|
||||
errMsg += fmt.Sprintf(" 京东page账号:的Cookie无效了!", vv)
|
||||
flag = true
|
||||
}
|
||||
cc := &CheckCookie{}
|
||||
var flag = false
|
||||
switch v {
|
||||
case model.VendorIDEBAI:
|
||||
resultMap, err := api.EbaiAPI.GetStoreOrderInfo(ebaiOrderID)
|
||||
if len(resultMap) < 1 && err != nil {
|
||||
if strings.Contains(err.Error(), ebaiErr) || strings.Contains(err.Error(), ebaiErr2) {
|
||||
errMsg += fmt.Sprintf(" 饿百账号:[%v]的Cookie无效了!")
|
||||
flag = true
|
||||
}
|
||||
cc.VendorID = v
|
||||
cc.VendorOrgCode = vv
|
||||
if flag {
|
||||
cc.Status = "无效"
|
||||
} else {
|
||||
cc.Status = "有效"
|
||||
}
|
||||
case model.VendorIDMTWM:
|
||||
_, err := api.MtwmAPI.PackagePriceGet(mtStoreID)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), mtErr) {
|
||||
errMsg += fmt.Sprintf(" 美团账号:[%v]的Cookie无效了!")
|
||||
flag = true
|
||||
}
|
||||
ccList = append(ccList, cc)
|
||||
globals.SugarLogger.Debugf("cookieCheck", err)
|
||||
}
|
||||
case model.VendorIDJD:
|
||||
result, err := api.JdAPI.GetJdUpcCodeByName("", jdUpcCode, 1, 5)
|
||||
if len(result) < 1 && err != nil {
|
||||
if strings.Contains(err.Error(), jdErr) {
|
||||
errMsg += fmt.Sprintf(" 京东账号:[%v]的Cookie无效了!")
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
case model.VendorIDJDShop:
|
||||
_, err := api.JdShopAPI.OrderDetail("124350112427")
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "登录") {
|
||||
errMsg += fmt.Sprintf("京东商城:[%v]的Cookie无效了!")
|
||||
flag = true
|
||||
}
|
||||
globals.SugarLogger.Debugf("cookieCheck", err)
|
||||
}
|
||||
}
|
||||
cc.VendorID = v
|
||||
cc.VendorOrgCode = ""
|
||||
if flag {
|
||||
cc.Status = "无效"
|
||||
} else {
|
||||
cc.Status = "有效"
|
||||
}
|
||||
ccList = append(ccList, cc)
|
||||
}
|
||||
if isAuto && errMsg != "" {
|
||||
globals.SugarLogger.Warnf("GetCheckVendorCookie:[%v]", errMsg)
|
||||
|
||||
@@ -164,7 +164,7 @@ func Init() {
|
||||
ScheduleTimerFunc("doDailyWork2", doDailyWork2, dailyWorkTimeList2)
|
||||
|
||||
ScheduleTimerFuncByInterval(func() {
|
||||
orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-15*time.Minute), time.Now())
|
||||
orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-20*time.Minute), time.Now())
|
||||
}, 10*time.Second, 10*time.Minute)
|
||||
|
||||
ScheduleTimerFuncByInterval(func() {
|
||||
@@ -205,7 +205,7 @@ func Init() {
|
||||
cms.AutoFocusStoreSkusForTopSkus(jxcontext.AdminCtx, true, true)
|
||||
}, createStorePriceTimeList)
|
||||
ScheduleTimerFunc("GetCheckVendorCookie", func() {
|
||||
event.GetCheckVendorCookie(jxcontext.AdminCtx, []int{model.VendorIDEBAI, model.VendorIDJD, model.VendorIDMTWM, model.VendorIDMTPS}, true)
|
||||
event.GetCheckVendorCookie(jxcontext.AdminCtx, []int{model.VendorIDEBAI, model.VendorIDJD, model.VendorIDMTWM, model.VendorIDMTPS, model.VendorIDJDShop}, true)
|
||||
}, checkCookieList)
|
||||
ScheduleTimerFunc("SendSeckillSkusCountMsg", func() {
|
||||
cms.SendSeckillSkusCountMsg(jxcontext.AdminCtx, []int{model.VendorIDEBAI, model.VendorIDJD, model.VendorIDMTWM}, false, true)
|
||||
@@ -419,6 +419,8 @@ func doDailyWork() {
|
||||
orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -3).Format("20060102"), time.Now().Format("20060102"))
|
||||
//同步上架京东商城待售商品
|
||||
cms.RefreshJdsSkusStatus(jxcontext.AdminCtx)
|
||||
//同步商品额外前缀和水印图
|
||||
cms.SyncSkuExperfixAndWatermark(jxcontext.AdminCtx)
|
||||
}
|
||||
|
||||
func RefreshRealMobile(ctx *jxcontext.Context, vendorID int, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
|
||||
@@ -1611,10 +1611,295 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
||||
// continue
|
||||
// }
|
||||
// }
|
||||
_, err = api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{
|
||||
Current: 1,
|
||||
PageSize: 10,
|
||||
})
|
||||
var jdsIds = []int64{69355523686,
|
||||
69353698875,
|
||||
69353633443,
|
||||
69353579080,
|
||||
69353592976,
|
||||
69353575450,
|
||||
69353669915,
|
||||
69353617240,
|
||||
69353711276,
|
||||
69355552630,
|
||||
69353579078,
|
||||
69633169613,
|
||||
69353608855,
|
||||
69634881612,
|
||||
69353634806,
|
||||
69353675911,
|
||||
69353698186,
|
||||
69353698877,
|
||||
69607962771,
|
||||
69608002604,
|
||||
69666543870,
|
||||
69353541693,
|
||||
69411607058,
|
||||
69353594629,
|
||||
69353602818,
|
||||
69353698187,
|
||||
69355538267,
|
||||
69353633269,
|
||||
69355549016,
|
||||
69411607059,
|
||||
69593365617,
|
||||
69353589341,
|
||||
69353618034,
|
||||
69353633445,
|
||||
69353644658,
|
||||
69353644659,
|
||||
69353664332,
|
||||
69355505481,
|
||||
69355531215,
|
||||
69355552632,
|
||||
69353618035,
|
||||
69353619589,
|
||||
69353684423,
|
||||
69353687174,
|
||||
69353722053,
|
||||
69355493882,
|
||||
69627859883,
|
||||
69680935348,
|
||||
69353555847,
|
||||
69353570677,
|
||||
69353589397,
|
||||
69353592975,
|
||||
69353594611,
|
||||
69353602819,
|
||||
69353616402,
|
||||
69353624528,
|
||||
69353654004,
|
||||
69353668114,
|
||||
69353687173,
|
||||
69353701089,
|
||||
69353722052,
|
||||
69353723922,
|
||||
69355527850,
|
||||
69355552631,
|
||||
69628257042,
|
||||
69636525703,
|
||||
69680935349,
|
||||
69353579081,
|
||||
69353589342,
|
||||
69353632136,
|
||||
69353654006,
|
||||
69353726354,
|
||||
69355496067,
|
||||
69355515747,
|
||||
69355516049,
|
||||
69355527036,
|
||||
69355532703,
|
||||
69355558164,
|
||||
69355560640,
|
||||
69608002434,
|
||||
69608089252,
|
||||
69626869676,
|
||||
69628142211,
|
||||
69651275202,
|
||||
69665458721,
|
||||
69980157422,
|
||||
69353511255,
|
||||
69353550931,
|
||||
69353555846,
|
||||
69353579079,
|
||||
69353593375,
|
||||
69353595563,
|
||||
69353603501,
|
||||
69353608856,
|
||||
69353618036,
|
||||
69353628469,
|
||||
69353628470,
|
||||
69353632137,
|
||||
69353633267,
|
||||
69353633444,
|
||||
69353651935,
|
||||
69353668115,
|
||||
69353683331,
|
||||
69353684157,
|
||||
69353701088,
|
||||
69353723844,
|
||||
69353723845,
|
||||
69353726353,
|
||||
69355490631,
|
||||
69355493881,
|
||||
69355493884,
|
||||
69355520278,
|
||||
69355523687,
|
||||
69355532705,
|
||||
69355533814,
|
||||
69355536851,
|
||||
69355538268,
|
||||
69355538269,
|
||||
69593321185,
|
||||
69593321186,
|
||||
69607997022,
|
||||
69626638026,
|
||||
69626638027,
|
||||
69626872037,
|
||||
69627693305,
|
||||
69627954144,
|
||||
69628180933,
|
||||
69633580083,
|
||||
69633580085,
|
||||
69634881613,
|
||||
69635037810,
|
||||
69635204944,
|
||||
69636212985,
|
||||
69636446354,
|
||||
69659137913,
|
||||
69659219611,
|
||||
69665406179,
|
||||
69666460731,
|
||||
69673523007,
|
||||
69680905913,
|
||||
69681869918,
|
||||
69821176674,
|
||||
69913341309,
|
||||
69916445013,
|
||||
69353511254,
|
||||
69353570678,
|
||||
69353581400,
|
||||
69353589343,
|
||||
69353589398,
|
||||
69353593376,
|
||||
69353594630,
|
||||
69353609816,
|
||||
69353616406,
|
||||
69353617241,
|
||||
69353619591,
|
||||
69353633268,
|
||||
69353634833,
|
||||
69353642793,
|
||||
69353647695,
|
||||
69353651934,
|
||||
69353654005,
|
||||
69353664333,
|
||||
69353669914,
|
||||
69353673334,
|
||||
69353684159,
|
||||
69353684603,
|
||||
69353684604,
|
||||
69353684605,
|
||||
69353684607,
|
||||
69353698876,
|
||||
69353701090,
|
||||
69353711277,
|
||||
69353711278,
|
||||
69353726357,
|
||||
69355496066,
|
||||
69355520277,
|
||||
69355523688,
|
||||
69355527851,
|
||||
69355533813,
|
||||
69355533815,
|
||||
69355538270,
|
||||
69355559874,
|
||||
69355559875,
|
||||
69355559876,
|
||||
69355560641,
|
||||
69607988687,
|
||||
69608089253,
|
||||
69625036409,
|
||||
69625436705,
|
||||
69626674146,
|
||||
69626756838,
|
||||
69626849783,
|
||||
69626872040,
|
||||
69627211928,
|
||||
69627823696,
|
||||
69627823697,
|
||||
69627824429,
|
||||
69627859882,
|
||||
69627954146,
|
||||
69628055157,
|
||||
69628209840,
|
||||
69628220046,
|
||||
69628244518,
|
||||
69628620179,
|
||||
69628645373,
|
||||
69633038980,
|
||||
69633169614,
|
||||
69633311068,
|
||||
69633433209,
|
||||
69634285577,
|
||||
69634285578,
|
||||
69634566319,
|
||||
69634566320,
|
||||
69634620948,
|
||||
69635037811,
|
||||
69635075404,
|
||||
69635108188,
|
||||
69636525704,
|
||||
69636563250,
|
||||
69636658901,
|
||||
69636658902,
|
||||
69651265114,
|
||||
69659219612,
|
||||
69659883978,
|
||||
69662122661,
|
||||
69666543871,
|
||||
69666543872,
|
||||
69666660395,
|
||||
69666907986,
|
||||
69666931214,
|
||||
69673508504,
|
||||
69680887348,
|
||||
69818078270,
|
||||
69881553035,
|
||||
69901783885,
|
||||
69913362221,
|
||||
69916396643,
|
||||
69925717199,
|
||||
69933144351,
|
||||
69933974117,
|
||||
69935756246,
|
||||
69935768981,
|
||||
69935855227,
|
||||
69935915640,
|
||||
69937601360,
|
||||
69937642148,
|
||||
69939562884,
|
||||
69939571687,
|
||||
69948026907,
|
||||
}
|
||||
db := dao.GetDB()
|
||||
for _, v := range jdsIds {
|
||||
vendorSku, _ := api.JdShopAPI.FindSkuById(v)
|
||||
var sku *model.Sku
|
||||
sql := `
|
||||
SELECT b.* FROM store_sku_bind a,sku b WHERE a.sku_id = b.id AND a.store_id = 102919 AND a.jds_id = ?
|
||||
`
|
||||
sqlParams := []interface{}{v}
|
||||
err = dao.GetRow(db, &sku, sql, sqlParams)
|
||||
skus, _ := dao.GetStoreSkus(db, model.VendorIDJDShop, model.JdShopMainStoreID, []int{sku.ID})
|
||||
storeSku := skus[0]
|
||||
if sku.Comment != "" {
|
||||
var specQuality = utils.Float64ToStr(float64(storeSku.SpecQuality)) + storeSku.SpecUnit
|
||||
vendorSkuAttr := vendorSku.SaleAttrs[0].AttrValueAlias[0]
|
||||
if vendorSkuAttr == specQuality {
|
||||
err = api.JdShopAPI.UpdateWareSaleAttrvalueAlias(&jdshopapi.UpdateWareSaleAttrvalueAliasParam{
|
||||
WareID: vendorSku.WareID,
|
||||
Props: []*jdshopapi.CreateSkuParamAttrs2{
|
||||
&jdshopapi.CreateSkuParamAttrs2{
|
||||
AttrID: vendorSku.SaleAttrs[0].AttrID,
|
||||
AttrValues: []string{vendorSku.SaleAttrs[0].AttrValues[0]},
|
||||
AttrValueAlias: []string{sku.Comment},
|
||||
Type: "com.jd.pop.ware.ic.api.domain.prop",
|
||||
Type2: "com.jd.pop.ware.ic.api.domain.Prop",
|
||||
},
|
||||
},
|
||||
})
|
||||
} else {
|
||||
if vendorSkuAttr != sku.Comment {
|
||||
_, maxNo, _ := api.JdShopAPI.FindValuesByAttrId(utils.Str2Int(vendorSku.SaleAttrs[0].AttrID))
|
||||
api.JdShopAPI.SaveVenderAttrValue(sku.Comment, utils.Str2Int(vendorSku.SaleAttrs[0].AttrID), int(storeSku.VendorVendorCatID), maxNo+1)
|
||||
}
|
||||
}
|
||||
}
|
||||
// attrValue := vendorSku.SaleAttrs[0].AttrValueAlias[0]
|
||||
// if storeSkus != nil {
|
||||
// cms.CurVendorSync.SyncStoresSkus(ctx, nil, 0, db, []int{model.VendorIDJDShop}, []int{model.JdShopMainStoreID}, []int{storeSkus.SkuID}, false, true, true)
|
||||
// }
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user