Bladeren bron

products 检索更新

shen 4 jaren geleden
bovenliggende
commit
7ee82b6aa4
1 gewijzigde bestanden met toevoegingen van 32 en 39 verwijderingen
  1. 32 39
      go/gopath/src/fohow.com/apps/models/product_model/product.go

+ 32 - 39
go/gopath/src/fohow.com/apps/models/product_model/product.go

@@ -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