Merge remote-tracking branch 'origin/jdshop' into qidongsheng
This commit is contained in:
@@ -2542,6 +2542,7 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri
|
|||||||
fromTimeP time.Time
|
fromTimeP time.Time
|
||||||
toTimeP time.Time
|
toTimeP time.Time
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
|
skuIDs []int
|
||||||
)
|
)
|
||||||
if fromTime != "" {
|
if fromTime != "" {
|
||||||
fromTimeP = utils.Time2Date(utils.Str2Time(fromTime))
|
fromTimeP = utils.Time2Date(utils.Str2Time(fromTime))
|
||||||
@@ -2552,66 +2553,75 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri
|
|||||||
if toTimeP.Before(fromTimeP) {
|
if toTimeP.Before(fromTimeP) {
|
||||||
return "", fmt.Errorf("结束时间不可以小于开始时间!开始时间:[%v],结束时间:[%v]", fromTimeP, toTimeP)
|
return "", fmt.Errorf("结束时间不可以小于开始时间!开始时间:[%v],结束时间:[%v]", fromTimeP, toTimeP)
|
||||||
}
|
}
|
||||||
task := tasksch.NewParallelTask("UpdateSkuExinfoMap", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
switch step {
|
||||||
nameID := batchItemList[0].(int)
|
case 0:
|
||||||
skuEx := &model.SkuExinfoMap{
|
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
NameID: nameID,
|
nameID := batchItemList[0].(int)
|
||||||
ImgWatermark: imgWaterMark,
|
skuEx := &model.SkuExinfoMap{
|
||||||
ExPrefix: exPrefix,
|
NameID: nameID,
|
||||||
VendorID: vendorID,
|
ImgWatermark: imgWaterMark,
|
||||||
BeginAt: fromTimeP,
|
ExPrefix: exPrefix,
|
||||||
EndAt: toTimeP,
|
VendorID: vendorID,
|
||||||
}
|
BeginAt: fromTimeP,
|
||||||
dao.WrapAddIDCULDEntity(skuEx, ctx.GetUserName())
|
EndAt: toTimeP,
|
||||||
skuExs, _ := dao.GetSkuExinfos(db, []int{nameID}, []int{vendorID}, "", utils.ZeroTimeValue, utils.ZeroTimeValue)
|
}
|
||||||
if len(skuExs) > 0 {
|
dao.WrapAddIDCULDEntity(skuEx, ctx.GetUserName())
|
||||||
skuEx2 := skuExs[0]
|
skuExs, _ := dao.GetSkuExinfos(db, []int{nameID}, []int{vendorID}, "", utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
skuEx2.DeletedAt = time.Now()
|
if len(skuExs) > 0 {
|
||||||
skuEx2.LastOperator = ctx.GetUserName()
|
skuEx2 := skuExs[0]
|
||||||
dao.UpdateEntity(db, skuEx2, "DeletedAt", "LastOperator")
|
skuEx2.DeletedAt = time.Now()
|
||||||
dao.CreateEntity(db, skuEx)
|
skuEx2.LastOperator = ctx.GetUserName()
|
||||||
} else {
|
dao.UpdateEntity(db, skuEx2, "DeletedAt", "LastOperator")
|
||||||
dao.CreateEntity(db, skuEx)
|
dao.CreateEntity(db, skuEx)
|
||||||
}
|
} else {
|
||||||
now := utils.Time2Date(time.Now())
|
dao.CreateEntity(db, skuEx)
|
||||||
if now.Sub(fromTimeP) >= 0 && now.Sub(toTimeP) <= 0 {
|
}
|
||||||
var skuIDs []int
|
now := utils.Time2Date(time.Now())
|
||||||
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
|
if now.Sub(fromTimeP) >= 0 && now.Sub(toTimeP) <= 0 {
|
||||||
if err = err2; err == nil {
|
var skuIDs []int
|
||||||
if len(skuList) > 0 {
|
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil)
|
||||||
for _, v := range skuList {
|
if err = err2; err == nil {
|
||||||
skuIDs = append(skuIDs, v.ID)
|
if len(skuList) > 0 {
|
||||||
retVal = []int{v.ID}
|
for _, v := range skuList {
|
||||||
}
|
skuIDs = append(skuIDs, v.ID)
|
||||||
if partner.IsMultiStore(vendorID) {
|
retVal = []int{v.ID}
|
||||||
for _, v := range skuIDs {
|
}
|
||||||
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
|
if partner.IsMultiStore(vendorID) {
|
||||||
|
for _, v := range skuIDs {
|
||||||
|
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return retVal, err
|
||||||
}
|
}
|
||||||
return retVal, err
|
taskParallel := tasksch.NewParallelTask("UpdateSkuExinfoMap", tasksch.NewParallelConfig().SetParallelCount(parallelCount), ctx, taskFunc, nameIDs)
|
||||||
}, nameIDs)
|
tasksch.HandleTask(taskParallel, task, true).Run()
|
||||||
tasksch.HandleTask(task, nil, true).Run()
|
result, err2 := task.GetResult(0)
|
||||||
if isAsync {
|
err = err2
|
||||||
hint = task.GetID()
|
if len(result) > 0 {
|
||||||
} else {
|
for _, v := range result {
|
||||||
var skuIDs []int
|
skuIDs = append(skuIDs, int(utils.Interface2Int64WithDefault(v, 0)))
|
||||||
result, err2 := task.GetResult(0)
|
}
|
||||||
err = err2
|
|
||||||
if len(result) > 0 {
|
|
||||||
for _, v := range result {
|
|
||||||
skuIDs = append(skuIDs, int(utils.Interface2Int64WithDefault(v, 0)))
|
|
||||||
}
|
}
|
||||||
|
case 1:
|
||||||
if partner.IsMultiStore(vendorID) {
|
if partner.IsMultiStore(vendorID) {
|
||||||
CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, isAsync, isContinueWhenError, ctx.GetUserName())
|
CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, isAsync, isContinueWhenError, ctx.GetUserName())
|
||||||
} else {
|
} else {
|
||||||
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{vendorID}, nil, false, skuIDs, nil, model.SyncFlagModifiedMask, isAsync, isContinueWhenError)
|
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{vendorID}, nil, false, skuIDs, nil, model.SyncFlagModifiedMask, isAsync, isContinueWhenError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
taskSeq := tasksch.NewSeqTask2("更新商品前缀", ctx, isContinueWhenError, taskSeqFunc, 2)
|
||||||
|
tasksch.HandleTask(taskSeq, nil, true).Run()
|
||||||
|
if !isAsync {
|
||||||
|
_, err = taskSeq.GetResult(0)
|
||||||
hint = "1"
|
hint = "1"
|
||||||
|
} else {
|
||||||
|
hint = taskSeq.GetID()
|
||||||
}
|
}
|
||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1257,7 +1257,6 @@ func SyncSkuExperfixAndWatermark(ctx *jxcontext.Context) (err error) {
|
|||||||
if time.Now().Sub(skuExinfo.EndAt) > 0 {
|
if time.Now().Sub(skuExinfo.EndAt) > 0 {
|
||||||
skuExinfo.DeletedAt = time.Now()
|
skuExinfo.DeletedAt = time.Now()
|
||||||
dao.UpdateEntity(db, skuExinfo, "DeletedAt")
|
dao.UpdateEntity(db, skuExinfo, "DeletedAt")
|
||||||
return retVal, err
|
|
||||||
}
|
}
|
||||||
skus, err := dao.GetSkus(db, nil, []int{skuExinfo.NameID}, nil, nil, nil)
|
skus, err := dao.GetSkus(db, nil, []int{skuExinfo.NameID}, nil, nil, nil)
|
||||||
var skuIDs []int
|
var skuIDs []int
|
||||||
|
|||||||
@@ -1523,188 +1523,67 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
///建店
|
//京东商城商品不同
|
||||||
// beginTime := utils.Str2Time("2020-05-18")
|
// type tTmp struct {
|
||||||
// endTime := utils.Str2Time("2020-05-24")
|
// SkuID int `json:"skuID"`
|
||||||
// result, _ := misc.GetStoreTotalScoreList(nil, 0, "", beginTime, endTime, true, 50, 100, 1, 700)
|
// Reason string `json:"reason"`
|
||||||
// for _, v := range result.StoreTotalScoreList {
|
// }
|
||||||
// storeMaps, _ := dao.GetStoresMapList(db, []int{model.VendorIDJX}, []int{v.StoreID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "")
|
// var vendorMap = make(map[int]*partner.SkuNameInfo)
|
||||||
// if len(storeMaps) == 0 {
|
// var localMap = make(map[int]*model.StoreSkuBind)
|
||||||
// stores, _ := dao.GetStoreList(db, []int{v.StoreID}, nil, nil, nil, "")
|
// var addList, deleteList []int
|
||||||
// store := stores[0]
|
// var updateList []*tTmp
|
||||||
// if store.Status != model.StoreStatusDisabled && !strings.Contains(store.Name, "不做") {
|
// vendorStock2JxStatus := func(stock int) (status int) {
|
||||||
// pricePercentagePack := ""
|
// if stock > 0 {
|
||||||
// if store.PayPercentage >= 90 {
|
// return model.StoreSkuBindStatusNormal
|
||||||
// pricePercentagePack = "京西100"
|
// } else {
|
||||||
// } else if store.PayPercentage >= 80 {
|
// return model.StoreSkuBindStatusDontSale
|
||||||
// pricePercentagePack = "京西80"
|
// }
|
||||||
// } else {
|
// }
|
||||||
// pricePercentagePack = "京西70"
|
// handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJDShop).(partner.ISingleStoreStoreSkuHandler)
|
||||||
// }
|
// skuNameList, err := handler.GetStoreSkusFullInfo(ctx, nil, 0, "", nil)
|
||||||
// storeMap := &model.StoreMap{
|
// storeSkuList, err := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, nil)
|
||||||
// Status: 1,
|
// for _, v := range skuNameList {
|
||||||
// VendorID: model.VendorIDJX,
|
// vendorMap[v.SkuList[0].SkuID] = v
|
||||||
// AutoPickup: 1,
|
// }
|
||||||
// DeliveryCompetition: 1,
|
// for _, v := range storeSkuList {
|
||||||
// PricePercentage: 100,
|
// if vendorMap[v.SkuID] == nil {
|
||||||
// IsSync: 1,
|
// if v.Status == model.StoreSkuBindStatusNormal {
|
||||||
// VendorStoreID: utils.Int2Str(v.StoreID),
|
// addList = append(addList, v.SkuID)
|
||||||
// PricePercentagePack: pricePercentagePack,
|
// }
|
||||||
// }
|
// } else {
|
||||||
// _, err = cms.AddStoreVendorMap(ctx, db, model.VendorIDJX, "", v.StoreID, storeMap)
|
// if int64(v.JdsPrice) != vendorMap[v.SkuID].SkuList[0].VendorPrice {
|
||||||
// if err != nil {
|
// updateList = append(updateList, &tTmp{
|
||||||
// continue
|
// SkuID: v.SkuID,
|
||||||
|
// Reason: "价格不同",
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// if v.Status != vendorStock2JxStatus(vendorMap[v.SkuID].SkuList[0].Stock) {
|
||||||
|
// updateList = append(updateList, &tTmp{
|
||||||
|
// SkuID: v.SkuID,
|
||||||
|
// Reason: "库存可售不同",
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// skus, _ := dao.GetSkus(dao.GetDB(), []int{v.SkuID}, nil, nil, nil, nil)
|
||||||
|
// if skus[0].Comment != "" {
|
||||||
|
// if skus[0].Comment != vendorMap[v.SkuID].SkuList[0].Comment {
|
||||||
|
// updateList = append(updateList, &tTmp{
|
||||||
|
// SkuID: v.SkuID,
|
||||||
|
// Reason: "备注与销售属性不同",
|
||||||
|
// })
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
// localMap[v.SkuID] = v
|
||||||
// }
|
// }
|
||||||
|
// for k, _ := range vendorMap {
|
||||||
//京东商城街道name
|
// if localMap[k] == nil {
|
||||||
// var stores []*model.Store
|
// deleteList = append(deleteList, k)
|
||||||
// var db = dao.GetDB()
|
|
||||||
// sql := `
|
|
||||||
// SELECT b.*
|
|
||||||
// FROM store_map a, store b
|
|
||||||
// WHERE a.store_id = b.id
|
|
||||||
// AND a.vendor_store_id = '' AND a.vendor_id = 5 AND a.deleted_at = ?
|
|
||||||
// AND b.deleted_at = ?
|
|
||||||
// `
|
|
||||||
// sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue}
|
|
||||||
// err = dao.GetRows(db, &stores, sql, sqlParams)
|
|
||||||
// for _, v := range stores {
|
|
||||||
// result, _ := api.AutonaviAPI.GetCoordinateAreaInfo(jxutils.IntCoordinate2Standard(v.Lng), jxutils.IntCoordinate2Standard(v.Lat))
|
|
||||||
// if result["regeocode"] != nil {
|
|
||||||
// street := result["regeocode"].(map[string]interface{})["addressComponent"].(map[string]interface{})["township"].(string)
|
|
||||||
// if street != "" {
|
|
||||||
// storeMaps, _ := dao.GetStoresMapList(db, []int{model.VendorIDJDShop}, []int{v.ID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "")
|
|
||||||
// storeMap := storeMaps[0]
|
|
||||||
// storeMap.JdsStreetName = street
|
|
||||||
// dao.UpdateEntity(db, storeMap, "JdsStreetName")
|
|
||||||
// }
|
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
// fmt.Println("addList2", addList)
|
||||||
// var stores []*model.Store
|
// fmt.Println("updateList2", utils.Format4Output(updateList, false))
|
||||||
// sql := `
|
// fmt.Println("deleteList2", deleteList)
|
||||||
// SELECT a.*
|
cms.SyncSkuExperfixAndWatermark(jxcontext.AdminCtx)
|
||||||
// FROM store a
|
|
||||||
// LEFT JOIN store_map b ON a.id = b.store_id AND b.vendor_id = 5 AND b.deleted_at = '1970-01-01 00:00:00'
|
|
||||||
// WHERE 1=1
|
|
||||||
// AND (a.status = 1 OR a.status = 0)
|
|
||||||
// AND b.id IS NULL
|
|
||||||
// AND a.deleted_at = '1970-01-01 00:00:00'
|
|
||||||
// `
|
|
||||||
// err = dao.GetRows(db, &stores, sql, nil)
|
|
||||||
// for _, v := range stores {
|
|
||||||
// storeMap := &model.StoreMap{
|
|
||||||
// Status: 1,
|
|
||||||
// VendorID: model.VendorIDJDShop,
|
|
||||||
// AutoPickup: 1,
|
|
||||||
// DeliveryCompetition: 1,
|
|
||||||
// PricePercentage: 100,
|
|
||||||
// IsSync: 1,
|
|
||||||
// SyncRule: 1,
|
|
||||||
// }
|
|
||||||
// _, err = cms.AddStoreVendorMap(ctx, db, model.VendorIDJDShop, "", v.ID, storeMap)
|
|
||||||
// if err != nil {
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// db := dao.GetDB()
|
|
||||||
// type tStore struct {
|
|
||||||
// NameID int `orm:"column(name_id)"`
|
|
||||||
// StoreID int `orm:"column(store_id)"`
|
|
||||||
// }
|
|
||||||
// var resultList []*tStore
|
|
||||||
// stores, _ := dao.GetStoreList(db, nil, nil, nil, nil, "")
|
|
||||||
// for _, v := range stores {
|
|
||||||
// var resultList2 []*tStore
|
|
||||||
// sql := `
|
|
||||||
// SELECT a.name_id,a.store_id FROM (
|
|
||||||
// SELECT DISTINCT a.unit_price,b.name_id,a.store_id from store_sku_bind a,sku b,store c
|
|
||||||
// where a.sku_id = b.id
|
|
||||||
// and c.id = a.store_id and c.deleted_at = '1970-01-01 00:00:00'
|
|
||||||
// and a.store_id = ?
|
|
||||||
// and a.deleted_at = '1970-01-01 00:00:00')a
|
|
||||||
// GROUP BY 1,2
|
|
||||||
// HAVING count(a.unit_price) > 1
|
|
||||||
// `
|
|
||||||
// sqlParams := []interface{}{v.ID}
|
|
||||||
// err = dao.GetRows(db, &resultList2, sql, sqlParams)
|
|
||||||
// resultList = append(resultList, resultList2...)
|
|
||||||
// }
|
|
||||||
// fmt.Println("testresultList3", utils.Format4Output(resultList, false))
|
|
||||||
// var skuBindInfos []*cms.StoreSkuBindInfo
|
|
||||||
// for _, v := range resultList {
|
|
||||||
// storeSkus, _ := dao.GetStoreSkusByNameIDs(db, []int{v.StoreID}, v.NameID)
|
|
||||||
// unitPirce := storeSkus[0].UnitPrice
|
|
||||||
// skuBindInfo := &cms.StoreSkuBindInfo{
|
|
||||||
// StoreID: v.StoreID,
|
|
||||||
// NameID: v.NameID,
|
|
||||||
// UnitPrice: int(unitPirce),
|
|
||||||
// }
|
|
||||||
// skuBindInfos = append(skuBindInfos, skuBindInfo)
|
|
||||||
// }
|
|
||||||
// _, err = cms.UpdateStoresSkusByBind(ctx, nil, skuBindInfos, true, true, false)
|
|
||||||
type tTmp struct {
|
|
||||||
SkuID int `json:"skuID"`
|
|
||||||
Reason string `json:"reason"`
|
|
||||||
}
|
|
||||||
var vendorMap = make(map[int]*partner.SkuNameInfo)
|
|
||||||
var localMap = make(map[int]*model.StoreSkuBind)
|
|
||||||
var addList, deleteList []int
|
|
||||||
var updateList []*tTmp
|
|
||||||
vendorStock2JxStatus := func(stock int) (status int) {
|
|
||||||
if stock > 0 {
|
|
||||||
return model.StoreSkuBindStatusNormal
|
|
||||||
} else {
|
|
||||||
return model.StoreSkuBindStatusDontSale
|
|
||||||
}
|
|
||||||
}
|
|
||||||
handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJDShop).(partner.ISingleStoreStoreSkuHandler)
|
|
||||||
skuNameList, err := handler.GetStoreSkusFullInfo(ctx, nil, 0, "", nil)
|
|
||||||
storeSkuList, err := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, nil)
|
|
||||||
for _, v := range skuNameList {
|
|
||||||
vendorMap[v.SkuList[0].SkuID] = v
|
|
||||||
}
|
|
||||||
for _, v := range storeSkuList {
|
|
||||||
if vendorMap[v.SkuID] == nil {
|
|
||||||
if v.Status == model.StoreSkuBindStatusNormal {
|
|
||||||
addList = append(addList, v.SkuID)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if int64(v.JdsPrice) != vendorMap[v.SkuID].SkuList[0].VendorPrice {
|
|
||||||
updateList = append(updateList, &tTmp{
|
|
||||||
SkuID: v.SkuID,
|
|
||||||
Reason: "价格不同",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if v.Status != vendorStock2JxStatus(vendorMap[v.SkuID].SkuList[0].Stock) {
|
|
||||||
updateList = append(updateList, &tTmp{
|
|
||||||
SkuID: v.SkuID,
|
|
||||||
Reason: "库存可售不同",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
skus, _ := dao.GetSkus(dao.GetDB(), []int{v.SkuID}, nil, nil, nil, nil)
|
|
||||||
if skus[0].Comment != "" {
|
|
||||||
if skus[0].Comment != vendorMap[v.SkuID].SkuList[0].Comment {
|
|
||||||
updateList = append(updateList, &tTmp{
|
|
||||||
SkuID: v.SkuID,
|
|
||||||
Reason: "备注与销售属性不同",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
localMap[v.SkuID] = v
|
|
||||||
}
|
|
||||||
for k, _ := range vendorMap {
|
|
||||||
if localMap[k] == nil {
|
|
||||||
deleteList = append(deleteList, k)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fmt.Println("addList2", addList)
|
|
||||||
fmt.Println("updateList2", utils.Format4Output(updateList, false))
|
|
||||||
fmt.Println("deleteList2", deleteList)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -152,12 +152,12 @@ var (
|
|||||||
}
|
}
|
||||||
|
|
||||||
ZXCityCodeMap = map[int]string{
|
ZXCityCodeMap = map[int]string{
|
||||||
310100: "上海市",
|
310100: "上海市",
|
||||||
110100: "北京市",
|
110100: "北京市",
|
||||||
120100: "天津市",
|
120100: "天津市",
|
||||||
440300: "深圳市",
|
440300: "深圳市",
|
||||||
500100: "重庆市",
|
500100: "重庆市",
|
||||||
9441900: "东莞",
|
441900: "东莞",
|
||||||
}
|
}
|
||||||
|
|
||||||
PrinterVendorInfo = map[int][]string{
|
PrinterVendorInfo = map[int][]string{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user