diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index b0fb0615c..36fab2723 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -206,7 +206,14 @@ func GetStoreSkus(ctx *jxcontext.Context, storeID int, isFocus bool, keyword str ORDER BY t1.id DESC LIMIT ? OFFSET ?` pageSize = jxutils.FormalizePageSize(pageSize) - sqlParams = append(sqlParams, pageSize, offset) + sqlOffset := offset + sqlPageSize := pageSize + isSaleInfo := params["stFromTime"] != nil + if isSaleInfo { + sqlOffset = 0 + sqlPageSize = jxutils.FormalizePageSize(-1) + } + sqlParams = append(sqlParams, sqlPageSize, sqlOffset) skuNamesInfo = &StoreSkuNamesInfo{} // globals.SugarLogger.Debug(sqlData) dao.Begin(db) @@ -237,7 +244,7 @@ func GetStoreSkus(ctx *jxcontext.Context, storeID int, isFocus bool, keyword str } } } - if params["stFromTime"] != nil { + if isSaleInfo { var ( saleInfoList []*SkuSaleInfo skuIDs []int @@ -258,12 +265,12 @@ func GetStoreSkus(ctx *jxcontext.Context, storeID int, isFocus bool, keyword str dao.Rollback(db) return nil, err } - // if params["stFromCount"] != nil { - // fromCount = params["stFromCount"].(int) - // } - // if params["stToCount"] != nil { - // toCount = params["stToCount"].(int) - // } + if params["stFromCount"] != nil { + fromCount = params["stFromCount"].(int) + } + if params["stToCount"] != nil { + toCount = params["stToCount"].(int) + } if saleInfoList, err = GetStoresSkusSaleInfo(ctx, []int{storeID}, skuIDs, timeList[0], timeList[1], fromCount, toCount); err != nil { dao.Rollback(db) return nil, err @@ -272,24 +279,34 @@ func GetStoreSkus(ctx *jxcontext.Context, storeID int, isFocus bool, keyword str saleInfoMap[int64(saleInfo.StoreID)*100000+int64(saleInfo.SkuID)] = saleInfo } storeID2 := int64(storeID) * 100000 - // var newSkuNames []*StoreSkuNameExt + var newSkuNames []*StoreSkuNameExt for _, skuName := range skuNamesInfo.SkuNames { - // var newSkus []map[string]interface{} + var newSkus []map[string]interface{} for _, sku := range skuName.Skus { saleInfo := saleInfoMap[storeID2+utils.MustInterface2Int64(sku["id"])] - if saleInfo == nil { + if saleInfo == nil && fromCount == 0 { saleInfo = &SkuSaleInfo{} - // newSkus = append(newSkus, sku) } - sku["times"] = saleInfo.Times - sku["count"] = saleInfo.Count + if saleInfo != nil { + sku["times"] = saleInfo.Times + sku["count"] = saleInfo.Count + newSkus = append(newSkus, sku) + } + } + if len(newSkus) > 0 { + skuName.Skus = newSkus + newSkuNames = append(newSkuNames, skuName) } - // skuName.Skus = newSkus - // if len(newSkus) > 0 { - // newSkuNames = append(newSkuNames, skuName) - // } } - // skuNamesInfo.SkuNames = newSkuNames + skuNamesInfo.TotalCount = len(newSkuNames) + skuNamesInfo.SkuNames = nil + if offset < skuNamesInfo.TotalCount { + endIndex := offset + pageSize + if endIndex > skuNamesInfo.TotalCount { + endIndex = skuNamesInfo.TotalCount + } + skuNamesInfo.SkuNames = newSkuNames[offset:endIndex] + } } } } @@ -305,7 +322,6 @@ func GetStoresSkusSaleInfo(ctx *jxcontext.Context, storeIDs []int, skuIDs []int, JOIN goods_order t2 ON t1.vendor_order_id = t2.vendor_order_id AND t1.vendor_id = t2.vendor_id AND t2.status IN (?, ?) WHERE t1.order_created_at >= ? AND t1.order_created_at <= ? AND IF(t2.jx_store_id <> 0, jx_store_id, store_id) IN (` + dao.GenQuestionMarks(len(storeIDs)) + `) - AND IF(t1.jx_sku_id <> 0, t1.jx_sku_id, t1.sku_id) IN (` + dao.GenQuestionMarks(len(skuIDs)) + `) ` if jxutils.IsTimeEmpty(toTime) { toTime = time.Now() @@ -316,8 +332,16 @@ func GetStoresSkusSaleInfo(ctx *jxcontext.Context, storeIDs []int, skuIDs []int, fromTime, toTime, storeIDs, - skuIDs, } + if len(skuIDs) > 0 { + sql += ` + AND IF(t1.jx_sku_id <> 0, t1.jx_sku_id, t1.sku_id) IN (` + dao.GenQuestionMarks(len(skuIDs)) + `)` + sqlParams = append(sqlParams, skuIDs) + } + sql += ` + GROUP BY 1,2 + HAVING 1 = 1 + ` if fromCount > 0 { sql += " AND times >= ?" sqlParams = append(sqlParams, fromCount) @@ -326,7 +350,6 @@ func GetStoresSkusSaleInfo(ctx *jxcontext.Context, storeIDs []int, skuIDs []int, sql += " AND times <= ?" sqlParams = append(sqlParams, toCount) } - sql += " GROUP BY 1,2" // fmt.Println(sql) // fmt.Println(utils.Format4Output(sqlParams, false)) if err = dao.GetRows(db, &saleInfoList, sql, sqlParams...); err == nil { diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 1e4b08fb8..bd164f2ca 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -14,9 +14,6 @@ type StoreSkuController struct { beego.Controller } -// @Param stFromCount query int false "统计SKU,结果集起始数量(包括)" -// @Param stToToCount query int false "统计SKU,结果集结束数量(包括)" - // @Title 得到商家商品信息 // @Description 得到商家商品信息,如下条件之间是与的关系。对于没有认领的商品,按城市限制。但对于已经认领的商品就不限制了,因为已经在平台上可售,可以操作(改价等等) // @Param token header string true "认证token" @@ -34,6 +31,8 @@ type StoreSkuController struct { // @Param toStatus query int false "查询结束状态(0:不可售,1:可售)" // @Param stFromTime query string false "统计SKU开始时间" // @Param stToTime query string false "统计SKU结束时间" +// @Param stFromCount query int false "统计SKU,结果集起始数量(包括)" +// @Param stToToCount query int false "统计SKU,结果集结束数量(包括)" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult