MCPcopy Index your code
hub / github.com/TruthHun/BookStack / homeData

Method homeData

models/book.go:460–512  ·  view source on GitHub ↗

针对cid大于0

(pageIndex, pageSize int, orderType BookOrder, lang string, cid int, fields ...string)

Source from the content-addressed store, hash-verified

458
459//针对cid大于0
460func (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(&params); 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//分页查找系统首页数据.
515func (m *Book) FindForHomeToPager(pageIndex, pageSize, member_id int, orderType string) (books []*BookResult, totalCount int, err error) {

Callers 1

HomeDataMethod · 0.95

Calls 1

appendFunction · 0.50

Tested by

no test coverage detected