针对cid大于0
(pageIndex, pageSize int, orderType BookOrder, lang string, cid int, fields ...string)
| 458 | |
| 459 | //针对cid大于0 |
| 460 | func (m *Book) homeData(pageIndex, pageSize int, orderType BookOrder, lang string, cid int, fields ...string) (books []Book, totalCount int, err error) { |
| 461 | o := orm.NewOrm() |
| 462 | order := "" //排序 |
| 463 | condStr := "" //查询条件 |
| 464 | cond := []string{"b.privately_owned=0", "b.order_index>=0"} |
| 465 | if len(fields) == 0 { |
| 466 | fields = append(fields, "book_id", "book_name", "identify", "cover", "order_index") |
| 467 | } |
| 468 | switch orderType { |
| 469 | case OrderRecommend: //推荐 |
| 470 | cond = append(cond, "b.order_index>0") |
| 471 | order = "b.order_index desc" |
| 472 | case OrderPopular: //受欢迎 |
| 473 | order = "b.star desc,b.vcnt desc" |
| 474 | case OrderLatest, OrderNew: //最新发布 |
| 475 | order = "b.release_time desc" |
| 476 | case OrderScore: //评分 |
| 477 | order = "b.score desc" |
| 478 | case OrderComment: //评论 |
| 479 | order = "b.cnt_comment desc" |
| 480 | case OrderStar: //收藏 |
| 481 | order = "b.star desc" |
| 482 | case OrderView: //收藏 |
| 483 | order = "b.vcnt desc" |
| 484 | } |
| 485 | if cid > 0 { |
| 486 | cond = append(cond, "c.category_id="+strconv.Itoa(cid)) |
| 487 | } |
| 488 | if len(cond) > 0 { |
| 489 | condStr = " where " + strings.Join(cond, " and ") |
| 490 | } |
| 491 | lang = strings.ToLower(lang) |
| 492 | switch lang { |
| 493 | case "zh", "en", "other": |
| 494 | default: |
| 495 | lang = "" |
| 496 | } |
| 497 | if strings.TrimSpace(lang) != "" { |
| 498 | condStr = condStr + " and `lang` = '" + lang + "'" |
| 499 | } |
| 500 | sqlFmt := "select %v from md_books b left join md_book_category c on b.book_id=c.book_id" + condStr |
| 501 | fieldStr := "b." + strings.Join(fields, ",b.") |
| 502 | sql := fmt.Sprintf(sqlFmt, fieldStr) + " order by " + order + fmt.Sprintf(" limit %v offset %v", pageSize, (pageIndex-1)*pageSize) |
| 503 | sqlCount := fmt.Sprintf(sqlFmt, "count(*) cnt") |
| 504 | var params []orm.Params |
| 505 | if _, err := o.Raw(sqlCount).Values(¶ms); err == nil { |
| 506 | if len(params) > 0 { |
| 507 | totalCount, _ = strconv.Atoi(params[0]["cnt"].(string)) |
| 508 | } |
| 509 | } |
| 510 | _, err = o.Raw(sql).QueryRows(&books) |
| 511 | return |
| 512 | } |
| 513 | |
| 514 | //分页查找系统首页数据. |
| 515 | func (m *Book) FindForHomeToPager(pageIndex, pageSize, member_id int, orderType string) (books []*BookResult, totalCount int, err error) { |