|
|
@@ -132,31 +132,30 @@ func GetLatest(page, perPage, recommend, priceSort, saleSort int64, ptype string
|
|
|
var priceSql, saleSql string
|
|
|
if priceSort == int64(1) {
|
|
|
//降序
|
|
|
- priceSql = "-price"
|
|
|
+ priceSql = "price desc"
|
|
|
} else if priceSort == int64(2) {
|
|
|
//升序
|
|
|
- priceSql = "price"
|
|
|
+ priceSql = "price asc"
|
|
|
}
|
|
|
if saleSort == int64(1) {
|
|
|
//降序
|
|
|
- saleSql = "-virtual_sold_count"
|
|
|
+ saleSql = "(virtual_sold_count+sale_nums) desc"
|
|
|
} else if priceSort == int64(2) {
|
|
|
- saleSql = "virtual_sold_count"
|
|
|
+ saleSql = "(virtual_sold_count+sale_nums) asc"
|
|
|
}
|
|
|
if len(priceSql) <= 0 && len(saleSql) <= 0 {
|
|
|
- saleSql = "-created_at"
|
|
|
- priceSql = "-recommend"
|
|
|
+ saleSql = "created_at desc"
|
|
|
+ priceSql = "recommend desc"
|
|
|
}
|
|
|
- o := orm.NewOrm()
|
|
|
- qs := o.QueryTable(new(Product)).Filter("status", 1).Filter("recommend__gt", recommend).Filter("show_flag", true).Filter("ptype", ptype)
|
|
|
- if len(priceSql) <= 0 {
|
|
|
- qs = qs.OrderBy(saleSql)
|
|
|
- } else if len(saleSql) <= 0 {
|
|
|
- qs = qs.OrderBy(priceSql)
|
|
|
- } else {
|
|
|
- qs = qs.OrderBy(saleSql, priceSql)
|
|
|
- }
|
|
|
- _, err := qs.Limit(perPage, (page-1)*perPage).All(&products)
|
|
|
+ sql := `
|
|
|
+ select * from products
|
|
|
+ where status = ? and recommend > ? and show_flag=? and ptype=?
|
|
|
+ order by %s,%s limit %d, %d ;
|
|
|
+ `
|
|
|
+ sql = fmt.Sprintf(sql, priceSql, saleSql, (page-1)*perPage, perPage)
|
|
|
+ beego.BeeLogger.Warn("sql=%s", sql)
|
|
|
+ _, err := orm.NewOrm().Raw(sql, 1, recommend, true, ptype).QueryRows(&products)
|
|
|
+
|
|
|
if err != nil {
|
|
|
beego.BeeLogger.Debug("GetLatest err=%s", err)
|
|
|
}
|
|
|
@@ -216,45 +215,39 @@ func GetProductsByCatId(cId, page, perPage, priceSort, saleSort int64, words str
|
|
|
var priceSql, saleSql string
|
|
|
if priceSort == int64(1) {
|
|
|
//降序
|
|
|
- priceSql = "-price"
|
|
|
+ priceSql = "price desc"
|
|
|
} else if priceSort == int64(2) {
|
|
|
//升序
|
|
|
- priceSql = "price"
|
|
|
+ priceSql = "price asc"
|
|
|
}
|
|
|
if saleSort == int64(1) {
|
|
|
//降序
|
|
|
- saleSql = "-sale_nums"
|
|
|
+ saleSql = "(virtual_sold_count+sale_nums) desc"
|
|
|
} else if priceSort == int64(2) {
|
|
|
- saleSql = "sale_nums"
|
|
|
+ saleSql = "(virtual_sold_count+sale_nums) asc"
|
|
|
}
|
|
|
if len(priceSql) <= 0 && len(saleSql) <= 0 {
|
|
|
- saleSql = "-created_at"
|
|
|
- priceSql = "-recommend"
|
|
|
- }
|
|
|
-
|
|
|
- o := orm.NewOrm()
|
|
|
- qs := o.QueryTable(new(Product)).Filter("status", 1).Filter("show_flag", true).Filter("ptype", TYPE_DIRECT_SALE)
|
|
|
- if len(priceSql) <= 0 {
|
|
|
- qs = qs.OrderBy(saleSql)
|
|
|
- } else if len(saleSql) <= 0 {
|
|
|
- qs = qs.OrderBy(priceSql)
|
|
|
- } else {
|
|
|
- qs = qs.OrderBy(saleSql, priceSql)
|
|
|
+ saleSql = "created_at desc"
|
|
|
+ priceSql = "recommend desc"
|
|
|
}
|
|
|
+ var cidSql string
|
|
|
if cId != 0 {
|
|
|
- qs = qs.Filter("category_id", cId)
|
|
|
+ cidSql = fmt.Sprintf("and category_id=%d", cId)
|
|
|
}
|
|
|
- if len(words) > 0 {
|
|
|
- qs = qs.Filter("key_words__icontains", words)
|
|
|
- }
|
|
|
- _, err := qs.Limit(perPage, (page-1)*perPage).All(&products)
|
|
|
+ sql := `
|
|
|
+ select * from products
|
|
|
+ where status = ? and show_flag=? and ptype=? %s
|
|
|
+ order by %s,%s limit %d, %d ;
|
|
|
+ `
|
|
|
+ sql = fmt.Sprintf(sql, cidSql, priceSql, saleSql, (page-1)*perPage, perPage)
|
|
|
+ beego.BeeLogger.Warn("cate sql=%s", sql)
|
|
|
+ _, err := orm.NewOrm().Raw(sql, 1, true, TYPE_DIRECT_SALE).QueryRows(&products)
|
|
|
+
|
|
|
if err != nil {
|
|
|
beego.BeeLogger.Debug("GetProductsByCatId err=%s", err)
|
|
|
}
|
|
|
for _, pd := range products {
|
|
|
pd.Cover = GetCoverByPId(pd.Id, useCache)
|
|
|
- //TODO: 订单相关
|
|
|
- // pd.SaleCount = pd.GetSaleCount()
|
|
|
}
|
|
|
cache.Cache.Put(k, products, 10*time.Minute)
|
|
|
return products
|