diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index e3b69c634..3a501bb1a 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -888,7 +888,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf } } } - skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil) + skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil) if err = err2; err == nil { for _, v := range skuList { sku := &v.Sku @@ -959,7 +959,7 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int return 0, err } - skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil) + skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil, nil) if err = err2; err == nil { for _, v := range skuList { sku := &v.Sku @@ -1407,7 +1407,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro payload["exPrefixEnd"] = nil _, err = UpdateSkuName(ctx, nameID, payload, false) } else { - skuList, err := dao.GetSkus(db, nil, []int{nameID}, nil, nil) + 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) @@ -1440,7 +1440,7 @@ func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fro case 1: if (now.Sub(toTimeP) <= 0 && now.Sub(fromTimeP) >= 0) || (now.Sub(fromTimeP) > 0 && now.Sub(toTimeP) > 0) { var skuIDs []int - skuList, err2 := dao.GetSkus(db, nil, nameIDs, nil, nil) + skuList, err2 := dao.GetSkus(db, nil, nameIDs, nil, nil, nil) if err = err2; err == nil { if len(skuList) > 0 { for _, v := range skuList { diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 110eb62c7..555054714 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -192,9 +192,10 @@ type tUpdateSkuSpecTag struct { } type MatterStock struct { - SkuID int `json:"skuID"` - Name string `json:"name"` - Stock int `json:"stock"` + SkuID int `json:"skuID"` + SkuNameID int `json:"skuNameID"` + Name string `json:"name"` + Stock int `json:"stock"` } const ( @@ -2406,7 +2407,7 @@ func GetTopSkusByCityCode(ctx *jxcontext.Context, cityCode, storeID int) (skuNam var skuList []*model.SkuAndName storeSkuSyncInfo, _ := dao.GetStoreSkusAndSkuName(db, []int{storeID}, nil, []int{v.ID}) for _, storeSkuSync := range storeSkuSyncInfo { - sku, _ := dao.GetSkus(db, []int{storeSkuSync.ID}, nil, nil, nil) + sku, _ := dao.GetSkus(db, []int{storeSkuSync.ID}, nil, nil, nil, nil) sku[0].Price = int(storeSkuSync.Price) skuList = append(skuList, sku...) } @@ -3019,7 +3020,7 @@ func FocusStoreSkusByExcelBin(ctx *jxcontext.Context, reader io.Reader, isAsync, for k, _ := range skuMap { skuIDs = append(skuIDs, k) } - skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil) + skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil, nil) storeList, err := dao.GetStoreList(db, nil, nil, nil, nil, "") if err != nil && len(skuList) == 0 { return result, err @@ -3132,7 +3133,7 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBindInf if err != nil { return retVal, err } - skuList, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil) + skuList, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil) if err != nil { return retVal, err } @@ -3318,7 +3319,7 @@ func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync } var skuBindSkuList []*StoreSkuBindSkuInfo skuMap := make(map[int]int) - skuList, _ := dao.GetSkus(db, nil, []int{v.NameID}, nil, nil) + skuList, _ := dao.GetSkus(db, nil, []int{v.NameID}, nil, nil, nil) if len(v.Skus) != len(skuList) { for _, skus := range v.Skus { skuMap[skus.SkuID] = 1 @@ -3624,7 +3625,7 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, } err = dao.GetRows(db, &cats, sql, sqlParams...) if len(cats) > 0 { - skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil) + skus, err = dao.GetSkus(db, []int{int(cats[0].ThingID)}, nil, nil, nil, nil) if err != nil || len(skus) == 0 { return result, fmt.Errorf("没有找到该京西skuID!,京西skuID :[%v]", cats[0].ThingID) } @@ -3684,7 +3685,7 @@ func RefreshJxPriceByVendor(ctx *jxcontext.Context, jdStoreSkus []*JdStoreSkus, var ( pricePercentagePack []*model.PricePercentageItem ) - skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil) + skus, _ := dao.GetSkus(db, []int{v.JdSkuID}, nil, nil, nil, nil) if len(skus) == 0 { continue } @@ -3837,7 +3838,7 @@ func getSkuNamePrice(db *dao.DaoDB, skuID int, orgPrice int64) (price int64, nam var ( specQuality float64 ) - skuList, _ := dao.GetSkus(db, []int{skuID}, nil, nil, nil) + skuList, _ := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil) for _, v := range skuList { if v.Unit == model.SpecialUnit { if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] { @@ -3934,7 +3935,74 @@ func ReturnStoreSkuBind(ctx *jxcontext.Context, snapshotAt string, storeIDs, sku return err } -func RefreshMatterStock(ctx *jxcontext.Context, skuID int) (matterStock []*MatterStock, err error) { - // api.JdEclpAPI.SearchShopStock(searchShopStockParam) - return matterStock, err +func RefreshMatterStock(ctx *jxcontext.Context, skuID int) (err error) { + var ( + db = dao.GetDB() + skuBindInfos []*StoreSkuBindInfo + ) + if skuID != 0 { + skus, err := dao.GetSkus(db, []int{skuID}, nil, nil, nil, nil) + if err != nil || len(skus) == 0 { + return err + } + result, err := api.JdEclpAPI.SearchShopStock(skus[0].EclpID) + if err != nil || result == nil { + return err + } + var isSale = 0 + if utils.Str2Int64(result.Data[0].StockNum) > 0 { + isSale = 1 + } else { + isSale = -1 + } + storeSkuList, _ := dao.GetStoresSkusInfo(db, nil, []int{skuID}) + for _, vv := range storeSkuList { + var storeSkuBindSkus []*StoreSkuBindSkuInfo + storeSkuBindSku := &StoreSkuBindSkuInfo{ + SkuID: vv.SkuID, + IsSale: isSale, + } + storeSkuBindSkus = append(storeSkuBindSkus, storeSkuBindSku) + storeSkuBind := &StoreSkuBindInfo{ + StoreID: vv.StoreID, + // NameID: v.SkuNameID, + Skus: storeSkuBindSkus, + } + skuBindInfos = append(skuBindInfos, storeSkuBind) + } + } else { + result, err := api.JdEclpAPI.SearchShopStock("") + if err != nil { + return err + } + for _, v := range result.Data { + skus, err := dao.GetSkus(db, nil, nil, nil, nil, []string{v.GoodsNo}) + if err != nil || len(skus) == 0 { + continue + } + var isSale = 0 + if utils.Str2Int64(result.Data[0].StockNum) > 0 { + isSale = 1 + } else { + isSale = -1 + } + storeSkuList, _ := dao.GetStoresSkusInfo(db, nil, []int{skus[0].ID}) + for _, vv := range storeSkuList { + var storeSkuBindSkus []*StoreSkuBindSkuInfo + storeSkuBindSku := &StoreSkuBindSkuInfo{ + SkuID: vv.SkuID, + IsSale: isSale, + } + storeSkuBindSkus = append(storeSkuBindSkus, storeSkuBindSku) + storeSkuBind := &StoreSkuBindInfo{ + StoreID: vv.StoreID, + // NameID: v.SkuNameID, + Skus: storeSkuBindSkus, + } + skuBindInfos = append(skuBindInfos, storeSkuBind) + } + } + } + UpdateStoresSkusByBind(ctx, nil, skuBindInfos, true, true) + return err } diff --git a/business/jxstore/cms/store_sku_check.go b/business/jxstore/cms/store_sku_check.go index 03347715a..af4fe0995 100644 --- a/business/jxstore/cms/store_sku_check.go +++ b/business/jxstore/cms/store_sku_check.go @@ -433,7 +433,7 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin func FilterJxDepotUnSaleSkuID() { db := dao.GetDB() filterJxDepotUnSaleSkuIds = filterJxDepotUnSaleSkuIds[0:0] - skuList, _ := dao.GetSkus(db, filterVendorDepotUnSaleSkuIds, []int{}, []int{}, []int{}) + skuList, _ := dao.GetSkus(db, filterVendorDepotUnSaleSkuIds, []int{}, []int{}, []int{}, nil) filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList) for skuid, jxSkuInfo := range filterJxSkuInfoMap2 { //过滤掉平台库下架,且京西库下架的商品,为下面比较门店商品用 @@ -456,7 +456,7 @@ func CompareJxAndMultiVenderDepot(ctx *jxcontext.Context, vendorMap map[int]bool FilterJxDepotUnSaleSkuID() filterVendorSkuInfoMap := GetFilterVendorSkuInfoMap(skuNameInfoList) skuNameInfoList = skuNameInfoList[0:0] - skuList, _ := dao.GetSkus(db, []int{}, []int{}, []int{}, []int{}) + skuList, _ := dao.GetSkus(db, []int{}, []int{}, []int{}, []int{}, nil) filterJxSkuInfoMap2 := GetFilterJxSkuInfoMap2(skuList) for skuid, jxSkuInfo := range filterJxSkuInfoMap2 { var jxSkuDetailName string diff --git a/business/jxstore/misc/store_sku_sales.go b/business/jxstore/misc/store_sku_sales.go index 2f7e677fe..0e42e5eb1 100644 --- a/business/jxstore/misc/store_sku_sales.go +++ b/business/jxstore/misc/store_sku_sales.go @@ -133,7 +133,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales //输出商品销量统计结果 skuAndNameMapData := make(map[int]*model.SkuAndName) if len(storeSkuMapData) < len(citySkuIDs) { - skuAndNameList, err := dao.GetSkus(db, citySkuIDs, nil, nil, nil) + skuAndNameList, err := dao.GetSkus(db, citySkuIDs, nil, nil, nil, nil) if err == nil { for _, value := range skuAndNameList { skuAndNameMapData[value.ID] = value @@ -149,7 +149,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales if storeSkuInfo != nil { skuName := storeSkuInfo.SkuName skuInfo := storeSkuInfo.Skus[0] - storeSkuSales.SkuName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, skuInfo.Comment, skuName.Unit, skuInfo.SkuSpecQuality, skuInfo.SkuSpecUnit, 0,skuName.ExPrefix,skuName.ExPrefixBegin,skuName.ExPrefixEnd) + storeSkuSales.SkuName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, skuInfo.Comment, skuName.Unit, skuInfo.SkuSpecQuality, skuInfo.SkuSpecUnit, 0, skuName.ExPrefix, skuName.ExPrefixBegin, skuName.ExPrefixEnd) storeSkuSales.SkuImage = storeSkuInfo.Img storeSkuSales.SkuPrice = jxutils.IntPrice2StandardCurrencyString(int64(storeSkuInfo.Skus[0].BindPrice)) } else if skuAndNameInfo != nil { @@ -159,7 +159,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales storeSkuSales.SkuImage = skuNameList[0].Img prefix = skuNameList[0].Prefix } - storeSkuSales.SkuName = jxutils.ComposeSkuName(prefix, skuAndNameInfo.Name, skuAndNameInfo.Comment, skuAndNameInfo.Unit, skuAndNameInfo.SpecQuality, skuAndNameInfo.SpecUnit, 0,skuAndNameInfo.ExPrefix,skuAndNameInfo.ExPrefixBegin,skuAndNameInfo.ExPrefixEnd) + storeSkuSales.SkuName = jxutils.ComposeSkuName(prefix, skuAndNameInfo.Name, skuAndNameInfo.Comment, skuAndNameInfo.Unit, skuAndNameInfo.SpecQuality, skuAndNameInfo.SpecUnit, 0, skuAndNameInfo.ExPrefix, skuAndNameInfo.ExPrefixBegin, skuAndNameInfo.ExPrefixEnd) storeSkuSales.SkuPrice = "N/A" } else { storeSkuSales.SkuName = "N/A" diff --git a/business/jxstore/yonghui/yonghui.go b/business/jxstore/yonghui/yonghui.go index ee8b945c6..a56207879 100644 --- a/business/jxstore/yonghui/yonghui.go +++ b/business/jxstore/yonghui/yonghui.go @@ -312,7 +312,7 @@ func LoadExcelBinByYongHui(ctx *jxcontext.Context, reader io.Reader, isAsync, is //如果微盟商品里找得到excel中的商品 if skuMap[spuCode] != nil { //获取京西库商品 - skuList, _ := dao.GetSkus(db, nil, []int{int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode))}, nil, nil) + skuList, _ := dao.GetSkus(db, nil, []int{int(utils.Str2Int64(goodsDetail.SkuMap.SingleSku.OuterSkuCode))}, nil, nil, nil) if len(skuList) == 0 { outPutData := DataFailed{ GoodsID: spuCode, diff --git a/business/model/dao/report.go b/business/model/dao/report.go index 5ef8d3c20..ca0e7542e 100644 --- a/business/model/dao/report.go +++ b/business/model/dao/report.go @@ -307,7 +307,7 @@ func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int, skuNameID int, sn totalCount = GetLastTotalRowCount(db) } for _, v := range priceReferSnapshot { - skuList, err2 := GetSkus(db, []int{v.SkuID}, nil, nil, nil) + skuList, err2 := GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) err = err2 if len(skuList) > 0 { skuAndName := skuList[0] diff --git a/business/model/dao/sku.go b/business/model/dao/sku.go index c9a970c72..c0814d63f 100644 --- a/business/model/dao/sku.go +++ b/business/model/dao/sku.go @@ -76,7 +76,7 @@ func GetCategories(db *DaoDB, parentID, level int, catIDs []int, isExd bool) (ca return cats, GetRows(db, &cats, sql, params) } -func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int) (skuList []*model.SkuAndName, err error) { +func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int, eclpIDs []string) (skuList []*model.SkuAndName, err error) { sql := ` SELECT t1.*, t2.name, t2.unit, t2.prefix, t2.is_spu, t2.ex_prefix, t2.ex_prefix_begin, t2.ex_prefix_end FROM sku t1 @@ -110,6 +110,10 @@ func GetSkus(db *DaoDB, skuIDs, nameIDs, statuss, catIDs []int) (skuList []*mode sqlWhere += " OR t3p.id IN (" + GenQuestionMarks(len(catIDs)) + ") )" sqlParams = append(sqlParams, catIDs, catIDs) } + if len(eclpIDs) > 0 { + sqlWhere += " AND t1.eclp_id IN (" + GenQuestionMarks(len(eclpIDs)) + ") AND t2.status IN (" + GenQuestionMarks(len(statuss)) + ")" + sqlParams = append(sqlParams, eclpIDs) + } sql += sqlWhere if err = GetRows(db, &skuList, sql, sqlParams...); err == nil { return skuList, nil @@ -137,7 +141,7 @@ func GetSkuNames(db *DaoDB, nameIDs []int) (skuNameList []*model.SkuName, err er } func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) { - skuList, err := GetSkus(db, nil, nameIDs, nil, nil) + skuList, err := GetSkus(db, nil, nameIDs, nil, nil, nil) if err == nil { for _, sku := range skuList { skuIDs = append(skuIDs, sku.ID) @@ -147,7 +151,7 @@ func GetSkuIDByNames(db *DaoDB, nameIDs []int) (skuIDs []int, err error) { } func GetSkuByCats(db *DaoDB, catIDs []int) (skuList []*model.Sku, err error) { - skuExList, err := GetSkus(db, nil, nil, nil, catIDs) + skuExList, err := GetSkus(db, nil, nil, nil, catIDs, nil) if err == nil { for _, v := range skuExList { skuList = append(skuList, &v.Sku) diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 49373042c..ace7ddffc 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -451,7 +451,7 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64 } } - skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil) + skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil, nil) if err != nil { return nil, nil, err } @@ -613,7 +613,7 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) { return err } for _, v := range goods[0].Skus { - skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil) + skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) if err != nil || len(skus) == 0 { continue } diff --git a/business/userstore/food_recipe.go b/business/userstore/food_recipe.go index e64ae900b..5359a94eb 100644 --- a/business/userstore/food_recipe.go +++ b/business/userstore/food_recipe.go @@ -40,7 +40,7 @@ func updateFoodRecipeItemAndStep(ctx *jxcontext.Context, db *dao.DaoDB, recipeID if len(v.SkuIDs) == 0 { return fmt.Errorf("SkuIDs必须要有值") } - skuIDs, err2 := dao.GetSkus(db, v.SkuIDs, nil, nil, nil) + skuIDs, err2 := dao.GetSkus(db, v.SkuIDs, nil, nil, nil, nil) if err = err2; err != nil { return err } diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index ae7b5953a..0a17595b8 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -756,7 +756,7 @@ func (c *StoreSkuController) ReturnStoreSkuBind() { // @router /RefreshMatterStock [post] func (c *StoreSkuController) RefreshMatterStock() { c.callRefreshMatterStock(func(params *tStoreSkuRefreshMatterStockParams) (retVal interface{}, errCode string, err error) { - retVal, err = cms.RefreshMatterStock(params.Ctx, 0) + err = cms.RefreshMatterStock(params.Ctx, 0) return retVal, "", err }) } diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 6e3ae6663..1de6a474a 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1953,6 +1953,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], + beego.ControllerComments{ + Method: "RefreshMatterStock", + Router: `/RefreshMatterStock`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], beego.ControllerComments{ Method: "RefreshStoresSkuByVendor",