分页全局搜索.
(keyword string, pageIndex, pageSize, memberId int)
| 552 | |
| 553 | //分页全局搜索. |
| 554 | func (m *Book) FindForLabelToPager(keyword string, pageIndex, pageSize, memberId int) (books []*BookResult, totalCount int, err error) { |
| 555 | o := orm.NewOrm() |
| 556 | |
| 557 | keyword = "%" + keyword + "%" |
| 558 | offset := (pageIndex - 1) * pageSize |
| 559 | //如果是登录用户 |
| 560 | if memberId > 0 { |
| 561 | sql1 := "SELECT COUNT(*) FROM md_books AS book LEFT JOIN md_relationship AS rel ON rel.book_id = book.book_id AND rel.member_id = ? WHERE (relationship_id > 0 OR book.privately_owned = 0) AND (book.label LIKE ? or book.book_name like ?) limit 1" |
| 562 | if err = o.Raw(sql1, memberId, keyword, keyword).QueryRow(&totalCount); err != nil { |
| 563 | return |
| 564 | } |
| 565 | |
| 566 | sql2 := `SELECT book.*,rel1.*,member.account AS create_name FROM md_books AS book |
| 567 | LEFT JOIN md_relationship AS rel ON rel.book_id = book.book_id AND rel.member_id = ? |
| 568 | LEFT JOIN md_relationship AS rel1 ON rel1.book_id = book.book_id AND rel1.role_id = 0 |
| 569 | LEFT JOIN md_members AS member ON rel1.member_id = member.member_id |
| 570 | WHERE (rel.relationship_id > 0 OR book.privately_owned = 0) AND (book.label LIKE ? or book.book_name like ?) ORDER BY order_index DESC ,book.book_id DESC LIMIT ?,?` |
| 571 | |
| 572 | _, err = o.Raw(sql2, memberId, keyword, keyword, offset, pageSize).QueryRows(&books) |
| 573 | return |
| 574 | } |
| 575 | |
| 576 | sql1 := "select COUNT(*) from md_books where privately_owned=0 and (label LIKE ? or book_name like ?) limit 1" |
| 577 | if err = o.Raw(sql1, keyword, keyword).QueryRow(&totalCount); err != nil { |
| 578 | return |
| 579 | } |
| 580 | |
| 581 | sql := `SELECT book.*,rel.*,member.account AS create_name FROM md_books AS book |
| 582 | LEFT JOIN md_relationship AS rel ON rel.book_id = book.book_id AND rel.role_id = 0 |
| 583 | LEFT JOIN md_members AS member ON rel.member_id = member.member_id |
| 584 | WHERE book.privately_owned = 0 AND (book.label LIKE ? or book.book_name LIKE ?) ORDER BY order_index DESC ,book.book_id DESC LIMIT ?,?` |
| 585 | |
| 586 | _, err = o.Raw(sql, keyword, keyword, offset, pageSize).QueryRows(&books) |
| 587 | return |
| 588 | } |
| 589 | |
| 590 | func (book *Book) ToBookResult() (m *BookResult) { |
| 591 | m = &BookResult{} |