分页全局搜索.
(keyword string, pageIndex, pageSize, memberId int)
| 41 | |
| 42 | //分页全局搜索. |
| 43 | func (m *DocumentSearchResult) FindToPager(keyword string, pageIndex, pageSize, memberId int) (searchResult []*DocumentSearchResult, totalCount int, err error) { |
| 44 | o := orm.NewOrm() |
| 45 | |
| 46 | offset := (pageIndex - 1) * pageSize |
| 47 | keyword = "%" + keyword + "%" |
| 48 | |
| 49 | if memberId <= 0 { |
| 50 | sql1 := `SELECT count(doc.document_id) as total_count FROM md_documents AS doc |
| 51 | LEFT JOIN md_books as book ON doc.book_id = book.book_id |
| 52 | WHERE book.privately_owned = 0 AND (doc.document_name LIKE ? OR doc.release LIKE ?) ` |
| 53 | |
| 54 | sql2 := `SELECT doc.document_id,doc.modify_time,doc.create_time,doc.document_name,doc.identify,doc.release as description,doc.modify_time,book.identify as book_identify,book.book_name,rel.member_id,member.account AS author FROM md_documents AS doc |
| 55 | LEFT JOIN md_books as book ON doc.book_id = book.book_id |
| 56 | LEFT JOIN md_relationship AS rel ON book.book_id = rel.book_id AND rel.role_id = 0 |
| 57 | LEFT JOIN md_members as member ON rel.member_id = member.member_id |
| 58 | WHERE book.privately_owned = 0 AND (doc.document_name LIKE ? OR doc.release LIKE ?) |
| 59 | ORDER BY doc.document_id DESC LIMIT ?,? ` |
| 60 | |
| 61 | err = o.Raw(sql1, keyword, keyword).QueryRow(&totalCount) |
| 62 | if err != nil { |
| 63 | return |
| 64 | } |
| 65 | _, err = o.Raw(sql2, keyword, keyword, offset, pageSize).QueryRows(&searchResult) |
| 66 | if err != nil { |
| 67 | return |
| 68 | } |
| 69 | } else { |
| 70 | sql1 := `SELECT count(doc.document_id) as total_count FROM md_documents AS doc |
| 71 | LEFT JOIN md_books as book ON doc.book_id = book.book_id |
| 72 | LEFT JOIN md_relationship AS rel ON doc.book_id = rel.book_id AND rel.role_id = 0 |
| 73 | LEFT JOIN md_relationship AS rel1 ON doc.book_id = rel1.book_id AND rel1.member_id = ? |
| 74 | WHERE (book.privately_owned = 0 OR rel1.relationship_id > 0) AND (doc.document_name LIKE ? OR doc.release LIKE ?) ` |
| 75 | |
| 76 | sql2 := `SELECT doc.document_id,doc.modify_time,doc.create_time,doc.document_name,doc.identify,doc.release as description,doc.modify_time,book.identify as book_identify,book.book_name,rel.member_id,member.account AS author FROM md_documents AS doc |
| 77 | LEFT JOIN md_books as book ON doc.book_id = book.book_id |
| 78 | LEFT JOIN md_relationship AS rel ON book.book_id = rel.book_id AND rel.role_id = 0 |
| 79 | LEFT JOIN md_members as member ON rel.member_id = member.member_id |
| 80 | LEFT JOIN md_relationship AS rel1 ON doc.book_id = rel1.book_id AND rel1.member_id = ? |
| 81 | WHERE (book.privately_owned = 0 OR rel1.relationship_id > 0) AND (doc.document_name LIKE ? OR doc.release LIKE ?) |
| 82 | ORDER BY doc.document_id DESC LIMIT ?,? ` |
| 83 | |
| 84 | err = o.Raw(sql1, memberId, keyword, keyword).QueryRow(&totalCount) |
| 85 | if err != nil { |
| 86 | return |
| 87 | } |
| 88 | _, err = o.Raw(sql2, memberId, keyword, keyword, offset, pageSize).QueryRows(&searchResult) |
| 89 | if err != nil { |
| 90 | return |
| 91 | } |
| 92 | } |
| 93 | return |
| 94 | } |
| 95 | |
| 96 | //书籍内搜索. |
| 97 | func (m *DocumentSearchResult) SearchDocument(keyword string, bookId int, page, size int) (docs []*DocumentSearchResult, cnt int, err error) { |
nothing calls this directly
no outgoing calls
no test coverage detected