mirror of
https://github.com/mindoc-org/mindoc.git
synced 2025-05-06 22:57:57 +08:00
80 lines
3.0 KiB
Go
80 lines
3.0 KiB
Go
![]() |
package models
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"github.com/astaxie/beego/orm"
|
||
|
)
|
||
|
|
||
|
type DocumentSearchResult struct {
|
||
|
DocumentId int `json:"doc_id"`
|
||
|
DocumentName string `json:"doc_name"`
|
||
|
// Identify 文档唯一标识
|
||
|
Identify string `json:"identify"`
|
||
|
Description string `json:"description"`
|
||
|
Author string `json:"author"`
|
||
|
ModifyTime time.Time `json:"modify_time"`
|
||
|
CreateTime time.Time `json:"create_time"`
|
||
|
BookId int `json:"book_id"`
|
||
|
BookName string `json:"book_name"`
|
||
|
BookIdentify string `json:"book_identify"`
|
||
|
|
||
|
}
|
||
|
|
||
|
func NewDocumentSearchResult() *DocumentSearchResult {
|
||
|
return &DocumentSearchResult{}
|
||
|
}
|
||
|
|
||
|
func (m *DocumentSearchResult) FindToPager(keyword string,page_index,page_size,member_id int) (search_result []*DocumentSearchResult,total_count int,err error) {
|
||
|
o := orm.NewOrm()
|
||
|
|
||
|
offset := (page_index - 1) * page_size
|
||
|
|
||
|
if member_id <= 0 {
|
||
|
sql1 := `SELECT count(doc.document_id) as total_count FROM md_documents AS doc
|
||
|
LEFT JOIN md_books as book ON doc.book_id = book.book_id
|
||
|
WHERE book.privately_owned = 0 AND (doc.document_name LIKE '%?%' OR doc.release LIKE '%?%') `
|
||
|
|
||
|
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
|
||
|
LEFT JOIN md_books as book ON doc.book_id = book.book_id
|
||
|
LEFT JOIN md_relationship AS rel ON book.book_id = rel.book_id AND role_id = 0
|
||
|
LEFT JOIN md_members as member ON rel.member_id = member.member_id
|
||
|
WHERE book.privately_owned = 0 AND (doc.document_name LIKE '%?%' OR doc.release LIKE '%?%')
|
||
|
ORDER BY doc.document_id DESC LIMIT ?,? `
|
||
|
|
||
|
err = o.Raw(sql1,keyword,keyword).QueryRow(&total_count)
|
||
|
if err != nil{
|
||
|
return
|
||
|
}
|
||
|
_,err = o.Raw(sql2,keyword,keyword,offset,page_size).QueryRows(&search_result)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
}else{
|
||
|
sql1 := `SELECT count(doc.document_id) as total_count FROM md_documents AS doc
|
||
|
LEFT JOIN md_books as book ON doc.book_id = book.book_id
|
||
|
LEFT JOIN md_relationship AS rel ON doc.book_id = rel.book_id AND role_id = 0
|
||
|
WHERE (book.privately_owned = 0 OR rel.relationship_id > 0) AND (doc.document_name LIKE ? OR doc.release LIKE ?) `
|
||
|
|
||
|
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
|
||
|
LEFT JOIN md_books as book ON doc.book_id = book.book_id
|
||
|
LEFT JOIN md_relationship AS rel ON book.book_id = rel.book_id AND role_id = 0
|
||
|
LEFT JOIN md_members as member ON rel.member_id = member.member_id
|
||
|
WHERE (book.privately_owned = 0 OR rel.relationship_id > 0) AND (doc.document_name LIKE ? OR doc.release LIKE ?)
|
||
|
ORDER BY doc.document_id DESC LIMIT ?,? `
|
||
|
|
||
|
keyword = "%"+keyword+"%"
|
||
|
|
||
|
err = o.Raw(sql1,keyword,keyword).QueryRow(&total_count)
|
||
|
if err != nil{
|
||
|
return
|
||
|
}
|
||
|
_,err = o.Raw(sql2,keyword,keyword,offset,page_size).QueryRows(&search_result)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|