Merge remote-tracking branch 'origin/jdshop' into qidongsheng

This commit is contained in:
平凡梦
2020-07-13 15:09:28 +08:00
5 changed files with 2245 additions and 2336 deletions

View File

@@ -2542,6 +2542,7 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri
fromTimeP time.Time
toTimeP time.Time
db = dao.GetDB()
skuIDs []int
)
if fromTime != "" {
fromTimeP = utils.Time2Date(utils.Str2Time(fromTime))
@@ -2552,66 +2553,75 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri
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)
retVal = []int{v.ID}
}
if partner.IsMultiStore(vendorID) {
for _, v := range skuIDs {
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
switch step {
case 0:
taskFunc := 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)
retVal = []int{v.ID}
}
if partner.IsMultiStore(vendorID) {
for _, v := range skuIDs {
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
}
}
}
}
}
return retVal, err
}
return retVal, err
}, nameIDs)
tasksch.HandleTask(task, nil, true).Run()
if isAsync {
hint = task.GetID()
} else {
var skuIDs []int
result, err2 := task.GetResult(0)
err = err2
if len(result) > 0 {
for _, v := range result {
skuIDs = append(skuIDs, int(utils.Interface2Int64WithDefault(v, 0)))
taskParallel := tasksch.NewParallelTask("UpdateSkuExinfoMap", tasksch.NewParallelConfig().SetParallelCount(parallelCount), ctx, taskFunc, nameIDs)
tasksch.HandleTask(taskParallel, task, true).Run()
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) {
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 result, err
}
taskSeq := tasksch.NewSeqTask2("更新商品前缀", ctx, isContinueWhenError, taskSeqFunc, 2)
tasksch.HandleTask(taskSeq, nil, true).Run()
if !isAsync {
_, err = taskSeq.GetResult(0)
hint = "1"
} else {
hint = taskSeq.GetID()
}
return hint, err
}

View File

@@ -1257,7 +1257,6 @@ func SyncSkuExperfixAndWatermark(ctx *jxcontext.Context) (err error) {
if time.Now().Sub(skuExinfo.EndAt) > 0 {
skuExinfo.DeletedAt = time.Now()
dao.UpdateEntity(db, skuExinfo, "DeletedAt")
return retVal, err
}
skus, err := dao.GetSkus(db, nil, []int{skuExinfo.NameID}, nil, nil, nil)
var skuIDs []int

View File

@@ -1523,188 +1523,67 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
// }
// }
///建店
// beginTime := utils.Str2Time("2020-05-18")
// endTime := utils.Str2Time("2020-05-24")
// result, _ := misc.GetStoreTotalScoreList(nil, 0, "", beginTime, endTime, true, 50, 100, 1, 700)
// for _, v := range result.StoreTotalScoreList {
// storeMaps, _ := dao.GetStoresMapList(db, []int{model.VendorIDJX}, []int{v.StoreID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "")
// if len(storeMaps) == 0 {
// stores, _ := dao.GetStoreList(db, []int{v.StoreID}, nil, nil, nil, "")
// store := stores[0]
// if store.Status != model.StoreStatusDisabled && !strings.Contains(store.Name, "不做") {
// pricePercentagePack := ""
// if store.PayPercentage >= 90 {
// pricePercentagePack = "京西100"
// } else if store.PayPercentage >= 80 {
// pricePercentagePack = "京西80"
// } else {
// pricePercentagePack = "京西70"
// }
// storeMap := &model.StoreMap{
// Status: 1,
// VendorID: model.VendorIDJX,
// AutoPickup: 1,
// DeliveryCompetition: 1,
// PricePercentage: 100,
// IsSync: 1,
// VendorStoreID: utils.Int2Str(v.StoreID),
// PricePercentagePack: pricePercentagePack,
// }
// _, err = cms.AddStoreVendorMap(ctx, db, model.VendorIDJX, "", v.StoreID, storeMap)
// if err != nil {
// continue
//京东商城商品不同
// 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
// }
//京东商城街道name
// var stores []*model.Store
// 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")
// }
// for k, _ := range vendorMap {
// if localMap[k] == nil {
// deleteList = append(deleteList, k)
// }
// }
// var stores []*model.Store
// sql := `
// SELECT a.*
// 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)
// fmt.Println("addList2", addList)
// fmt.Println("updateList2", utils.Format4Output(updateList, false))
// fmt.Println("deleteList2", deleteList)
cms.SyncSkuExperfixAndWatermark(jxcontext.AdminCtx)
return err
}

View File

@@ -152,12 +152,12 @@ var (
}
ZXCityCodeMap = map[int]string{
310100: "上海市",
110100: "北京市",
120100: "天津市",
440300: "深圳市",
500100: "重庆市",
9441900: "东莞",
310100: "上海市",
110100: "北京市",
120100: "天津市",
440300: "深圳市",
500100: "重庆市",
441900: "东莞",
}
PrinterVendorInfo = map[int][]string{

File diff suppressed because it is too large Load Diff