- GetStoreSkus support manually pages

This commit is contained in:
gazebo
2018-11-29 15:39:35 +08:00
parent d9d10c1755
commit 8b7962f19e
2 changed files with 47 additions and 25 deletions

View File

@@ -206,7 +206,14 @@ func GetStoreSkus(ctx *jxcontext.Context, storeID int, isFocus bool, keyword str
ORDER BY t1.id DESC ORDER BY t1.id DESC
LIMIT ? OFFSET ?` LIMIT ? OFFSET ?`
pageSize = jxutils.FormalizePageSize(pageSize) 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{} skuNamesInfo = &StoreSkuNamesInfo{}
// globals.SugarLogger.Debug(sqlData) // globals.SugarLogger.Debug(sqlData)
dao.Begin(db) 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 ( var (
saleInfoList []*SkuSaleInfo saleInfoList []*SkuSaleInfo
skuIDs []int skuIDs []int
@@ -258,12 +265,12 @@ func GetStoreSkus(ctx *jxcontext.Context, storeID int, isFocus bool, keyword str
dao.Rollback(db) dao.Rollback(db)
return nil, err return nil, err
} }
// if params["stFromCount"] != nil { if params["stFromCount"] != nil {
// fromCount = params["stFromCount"].(int) fromCount = params["stFromCount"].(int)
// } }
// if params["stToCount"] != nil { if params["stToCount"] != nil {
// toCount = params["stToCount"].(int) toCount = params["stToCount"].(int)
// } }
if saleInfoList, err = GetStoresSkusSaleInfo(ctx, []int{storeID}, skuIDs, timeList[0], timeList[1], fromCount, toCount); err != nil { if saleInfoList, err = GetStoresSkusSaleInfo(ctx, []int{storeID}, skuIDs, timeList[0], timeList[1], fromCount, toCount); err != nil {
dao.Rollback(db) dao.Rollback(db)
return nil, err 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 saleInfoMap[int64(saleInfo.StoreID)*100000+int64(saleInfo.SkuID)] = saleInfo
} }
storeID2 := int64(storeID) * 100000 storeID2 := int64(storeID) * 100000
// var newSkuNames []*StoreSkuNameExt var newSkuNames []*StoreSkuNameExt
for _, skuName := range skuNamesInfo.SkuNames { for _, skuName := range skuNamesInfo.SkuNames {
// var newSkus []map[string]interface{} var newSkus []map[string]interface{}
for _, sku := range skuName.Skus { for _, sku := range skuName.Skus {
saleInfo := saleInfoMap[storeID2+utils.MustInterface2Int64(sku["id"])] saleInfo := saleInfoMap[storeID2+utils.MustInterface2Int64(sku["id"])]
if saleInfo == nil { if saleInfo == nil && fromCount == 0 {
saleInfo = &SkuSaleInfo{} saleInfo = &SkuSaleInfo{}
// newSkus = append(newSkus, sku)
} }
if saleInfo != nil {
sku["times"] = saleInfo.Times sku["times"] = saleInfo.Times
sku["count"] = saleInfo.Count sku["count"] = saleInfo.Count
newSkus = append(newSkus, sku)
} }
// skuName.Skus = newSkus
// if len(newSkus) > 0 {
// newSkuNames = append(newSkuNames, skuName)
// }
} }
// skuNamesInfo.SkuNames = newSkuNames if len(newSkus) > 0 {
skuName.Skus = newSkus
newSkuNames = append(newSkuNames, skuName)
}
}
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 (?, ?) 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 <= ? 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(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) { if jxutils.IsTimeEmpty(toTime) {
toTime = time.Now() toTime = time.Now()
@@ -316,8 +332,16 @@ func GetStoresSkusSaleInfo(ctx *jxcontext.Context, storeIDs []int, skuIDs []int,
fromTime, fromTime,
toTime, toTime,
storeIDs, 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 { if fromCount > 0 {
sql += " AND times >= ?" sql += " AND times >= ?"
sqlParams = append(sqlParams, fromCount) sqlParams = append(sqlParams, fromCount)
@@ -326,7 +350,6 @@ func GetStoresSkusSaleInfo(ctx *jxcontext.Context, storeIDs []int, skuIDs []int,
sql += " AND times <= ?" sql += " AND times <= ?"
sqlParams = append(sqlParams, toCount) sqlParams = append(sqlParams, toCount)
} }
sql += " GROUP BY 1,2"
// fmt.Println(sql) // fmt.Println(sql)
// fmt.Println(utils.Format4Output(sqlParams, false)) // fmt.Println(utils.Format4Output(sqlParams, false))
if err = dao.GetRows(db, &saleInfoList, sql, sqlParams...); err == nil { if err = dao.GetRows(db, &saleInfoList, sql, sqlParams...); err == nil {

View File

@@ -14,9 +14,6 @@ type StoreSkuController struct {
beego.Controller beego.Controller
} }
// @Param stFromCount query int false "统计SKU结果集起始数量包括"
// @Param stToToCount query int false "统计SKU结果集结束数量包括"
// @Title 得到商家商品信息 // @Title 得到商家商品信息
// @Description 得到商家商品信息,如下条件之间是与的关系。对于没有认领的商品,按城市限制。但对于已经认领的商品就不限制了,因为已经在平台上可售,可以操作(改价等等) // @Description 得到商家商品信息,如下条件之间是与的关系。对于没有认领的商品,按城市限制。但对于已经认领的商品就不限制了,因为已经在平台上可售,可以操作(改价等等)
// @Param token header string true "认证token" // @Param token header string true "认证token"
@@ -34,6 +31,8 @@ type StoreSkuController struct {
// @Param toStatus query int false "查询结束状态0不可售1可售" // @Param toStatus query int false "查询结束状态0不可售1可售"
// @Param stFromTime query string false "统计SKU开始时间" // @Param stFromTime query string false "统计SKU开始时间"
// @Param stToTime 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 offset query int false "门店列表起始序号以0开始缺省为0"
// @Param pageSize query int false "门店列表页大小缺省为50-1表示全部" // @Param pageSize query int false "门店列表页大小缺省为50-1表示全部"
// @Success 200 {object} controllers.CallResult // @Success 200 {object} controllers.CallResult