diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 528341157..976775815 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1048,7 +1048,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs if user := ctx.GetFullUser(); user != nil { isUserCanDirectChangePrice = user.Type&model.UserTypeOperator != 0 } - + fmt.Println("test1") userName := ctx.GetUserName() needSyncIDMap := make(map[int]int) dao.Begin(db) @@ -1065,6 +1065,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs dao.Rollback(db) return nil, err } + fmt.Println("test2") scaleFactor := float64(1) if isScale { scaleFactor = 100 / float64(jxutils.ConstrainPayPercentage(storeDetail.PayPercentage)) @@ -1111,6 +1112,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs sqlParams = append(sqlParams, skuBindInfo.NameID, utils.DefaultTimeValue) // globals.SugarLogger.Debug(sql) if err = dao.GetRows(db, &allBinds, sql, sqlParams...); err == nil { + fmt.Println("test3") if len(allBinds) > 0 { // globals.SugarLogger.Debug(utils.Format4Output(allBinds, false)) inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds)) @@ -4613,12 +4615,12 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto if len(storeAudits) > 0 { storeAudits[0].DeletedAt = time.Now() dao.UpdateEntity(db, storeAudits[0], "DeletedAt") - if globals.IsProductEnv() { - skuAndNames, err := dao.GetSkus(db, nil, []int{skuBindInfo.NameID}, nil, nil, nil) - if len(skuAndNames) > 0 && err == nil { - weixinmsg.NotifyStoreOpRequestStatus(true, storeID, skuBindInfo.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, skuBindInfo.UnitPrice, "") - } - } + // if globals.IsProductEnv() { + // skuAndNames, err := dao.GetSkus(db, nil, []int{skuBindInfo.NameID}, nil, nil, nil) + // if len(skuAndNames) > 0 && err == nil { + // weixinmsg.NotifyStoreOpRequestStatus(true, storeID, skuBindInfo.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, skuBindInfo.UnitPrice, "") + // } + // } } globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 6cbfa5985..a1fee52af 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -1249,7 +1249,7 @@ 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) + skuExinfos, err := dao.GetSkuExinfos(db, nil, []int{model.VendorIDMTWM, model.VendorIDEBAI, model.VendorIDJD, model.VendorIDJDShop}, "", 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) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 4a74159d5..c8e3c1fa4 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -354,7 +354,7 @@ func syncStoreSku() { }) errList.AddErr(err) - _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, partner.GetMultiStoreVendorIDs(), nil, false, nil, []int{27379}, syncFlag, true, true) + _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{0}, nil, false, nil, []int{27379}, syncFlag, true, true) // _, err = cms.CurVendorSync.FullSyncStoresSkus(jxcontext.AdminCtx, db, partner.GetMultiStoreVendorIDs(), nil, false, []int{27379}, true, true) errList.AddErr(err) case 1: diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index bb1f341db..113ccb824 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1610,30 +1610,30 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // 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)) + // 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) @@ -1646,6 +1646,65 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // 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 } diff --git a/business/partner/delivery/jdeclp/waybill.go b/business/partner/delivery/jdeclp/waybill.go index 7015c38b6..c88bf0b47 100644 --- a/business/partner/delivery/jdeclp/waybill.go +++ b/business/partner/delivery/jdeclp/waybill.go @@ -56,20 +56,21 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee return bill, fmt.Errorf("未查询到该门店! 门店id :[%v]", storeID) } vendorWaybillID, err := api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{ - SalePlat: jdeclpapi.SalePlatSourceDelivery, - CustomerCode: jdeclpapi.CustomerCode, - OrderID: order.VendorOrderID, - SenderName: order.StoreName, - SenderAddress: stores[0].Address, - SenderTel: stores[0].Tel1, - ReceiveName: order.ConsigneeName, - ReceiveAddress: order.ConsigneeAddress, - ReceiveTel: order.ConsigneeMobile, - Weight: order.Weight, - Vloumn: order.Weight, - PackageCount: 1, - Description: "生鲜", - Aging: 5, + SalePlat: jdeclpapi.SalePlatSourceDelivery, + CustomerCode: jdeclpapi.CustomerCode, + OrderID: order.VendorOrderID, + SenderName: order.StoreName, + SenderAddress: stores[0].Address, + SenderTel: stores[0].Tel1, + ReceiveName: order.ConsigneeName, + ReceiveAddress: order.ConsigneeAddress, + ReceiveTel: order.ConsigneeMobile, + Weight: order.Weight, + Vloumn: order.Weight, + PackageCount: 1, + Description: "生鲜", + Aging: 5, + PromiseTimeType: 1, //特惠送 }) waybill := &model.Waybill{ VendorOrderID: order.VendorOrderID, diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index cd0295bdc..7bbf19c26 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -143,8 +143,14 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v } updateWareParam.Introduction = desc updateWareParam.MobileDesc = desc - if v.Img != "" { - pic1, err2 := uploadImg2(v.Img, name, "1") + img := "" + if v.ImgMix != "" { + img = v.ImgMix + } else { + img = v.Img + } + if img != "" { + pic1, err2 := uploadImg2(img, name, "1") err = err2 err = api.JdShopAPI.ImageUpdate(v.JdsWareID, 1, pic1) if v.Img2 != "" { @@ -228,13 +234,13 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (skuNameList []*partner.SkuNameInfo, err error) { var ( pageNo = 1 - pageSize = 100 + pageSize = 20 ) - pageResult, err := api.JdShopAPI.SearchWare4Valid("", pageNo, pageSize) - for ; pageNo <= pageResult.TotalItem/pageSize+1; pageNo++ { - result, err := api.JdShopAPI.SearchWare4Valid("", pageNo, pageSize) + _, totalCount, err := api.JdShopAPI.SearchSkuList(pageNo, pageSize) + for ; pageNo <= totalCount/pageSize+1; pageNo++ { + result, _, err := api.JdShopAPI.SearchSkuList(pageNo, pageSize) if err == nil { - for _, v := range result.Data { + for _, v := range result { if skuName := vendorSku2Jx(v); skuName != nil { skuNameList = append(skuNameList, skuName) } @@ -403,18 +409,25 @@ func ybSkuStatus2Jx(ybStatus int) (jxSkuStatus int) { return jxSkuStatus } -func vendorSku2Jx(result *jdshopapi.SearchWare4ValidResultData) (skuName *partner.SkuNameInfo) { +func vendorSku2Jx(result *jdshopapi.SearchSkuListResult) (skuName *partner.SkuNameInfo) { if result == nil { globals.SugarLogger.Warnf("vendorSku2Jx, strange result:%s", utils.Format4Output(result, true)) return nil } - // prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(result.Title) skuName = &partner.SkuNameInfo{ - Name: result.Title, - VendorNameID: utils.Int64ToStr(result.WareID), - Status: result.WareStatus, - VendorCatIDList: []string{utils.Int2Str(result.CategoryID)}, - NameID: utils.Str2Int(result.OuterID), + VendorNameID: utils.Int64ToStr(result.WareID), + SkuList: []*partner.SkuInfo{ + &partner.SkuInfo{ + StoreSkuInfo: partner.StoreSkuInfo{ + SkuID: utils.Str2Int(result.OuterID), + VendorSkuID: utils.Int64ToStr(result.SkuID), + VendorNameID: utils.Int64ToStr(result.WareID), + Stock: result.StockNum, + VendorPrice: utils.Float64TwoInt64(result.JdPrice * 100), + }, + Comment: result.SaleAttrs[0].AttrValueAlias[0], + }, + }, } return skuName }