|
@@ -4,6 +4,7 @@ import (
|
|
|
"time"
|
|
|
|
|
|
"github.com/astaxie/beego/orm"
|
|
|
+ "github.com/astaxie/beego"
|
|
|
)
|
|
|
|
|
|
type DocumentSearchResult struct {
|
|
@@ -18,6 +19,7 @@ type DocumentSearchResult struct {
|
|
|
BookId int `json:"book_id"`
|
|
|
BookName string `json:"book_name"`
|
|
|
BookIdentify string `json:"book_identify"`
|
|
|
+ SearchType string `json:"search_type"`
|
|
|
}
|
|
|
|
|
|
func NewDocumentSearchResult() *DocumentSearchResult {
|
|
@@ -36,19 +38,67 @@ func (m *DocumentSearchResult) FindToPager(keyword string, pageIndex, pageSize,
|
|
|
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 rel.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 ?,? `
|
|
|
+ sql2 := `SELECT *
|
|
|
+FROM (
|
|
|
+ SELECT
|
|
|
+ doc.document_id,
|
|
|
+ doc.modify_time,
|
|
|
+ doc.create_time,
|
|
|
+ doc.document_name,
|
|
|
+ doc.identify,
|
|
|
+ doc.release AS description,
|
|
|
+ book.identify AS book_identify,
|
|
|
+ book.book_name,
|
|
|
+ rel.member_id,
|
|
|
+ member.account AS author,
|
|
|
+ 'document' AS search_type
|
|
|
+ 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 rel.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 ?)
|
|
|
+ UNION ALL
|
|
|
+ SELECT
|
|
|
+ blog.blog_id,
|
|
|
+ blog.modify_time,
|
|
|
+ blog.create_time,
|
|
|
+ blog.blog_title,
|
|
|
+ blog.blog_identify,
|
|
|
+ blog.blog_release,
|
|
|
+ blog.blog_identify,
|
|
|
+ blog.blog_title,
|
|
|
+ blog.member_id,
|
|
|
+ member.account,
|
|
|
+ 'blog' AS search_type
|
|
|
+ FROM md_blogs AS blog
|
|
|
+ LEFT JOIN md_members AS member ON blog.member_id = member.member_id
|
|
|
+ WHERE blog.blog_status = 'public' AND (blog.blog_release LIKE ? OR blog.blog_title LIKE ?)
|
|
|
+ ) AS union_table
|
|
|
+ORDER BY create_time DESC
|
|
|
+LIMIT ?, ?;`
|
|
|
|
|
|
err = o.Raw(sql1, keyword, keyword).QueryRow(&totalCount)
|
|
|
if err != nil {
|
|
|
+ beego.Error("查询搜索结果失败 -> ",err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sql3 := ` SELECT
|
|
|
+ count(*)
|
|
|
+ FROM md_blogs AS blog
|
|
|
+ WHERE blog.blog_status = 'public' AND (blog.blog_release LIKE ? OR blog.blog_title LIKE ?);`
|
|
|
+
|
|
|
+ c := 0
|
|
|
+ err = o.Raw(sql3, keyword, keyword).QueryRow(&c)
|
|
|
+ if err != nil {
|
|
|
+ beego.Error("查询搜索结果失败 -> ",err)
|
|
|
return
|
|
|
}
|
|
|
- _, err = o.Raw(sql2, keyword, keyword, offset, pageSize).QueryRows(&searchResult)
|
|
|
+
|
|
|
+ totalCount += c
|
|
|
+
|
|
|
+ _, err = o.Raw(sql2, keyword, keyword,keyword,keyword, offset, pageSize).QueryRows(&searchResult)
|
|
|
if err != nil {
|
|
|
+ beego.Error("查询搜索结果失败 -> ",err)
|
|
|
return
|
|
|
}
|
|
|
} else {
|
|
@@ -62,23 +112,78 @@ WHERE book.privately_owned = 0 AND (doc.document_name LIKE ? OR doc.release LIKE
|
|
|
on team.book_id = book.book_id
|
|
|
WHERE (book.privately_owned = 0 OR rel1.relationship_id > 0 or team.team_member_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 rel.role_id = 0
|
|
|
- LEFT JOIN md_members as member ON rel.member_id = member.member_id
|
|
|
- LEFT JOIN md_relationship AS rel1 ON doc.book_id = rel1.book_id AND rel1.member_id = ?
|
|
|
- left join (select * from (select book_id,team_member_id,role_id
|
|
|
- from md_team_relationship as mtr
|
|
|
- left join md_team_member as mtm on mtm.team_id=mtr.team_id and mtm.member_id=? order by role_id desc )as t group by t.role_id,t.team_member_id,t.book_id) as team
|
|
|
- on team.book_id = book.book_id
|
|
|
-WHERE (book.privately_owned = 0 OR rel1.relationship_id > 0 or team.team_member_id > 0) AND (doc.document_name LIKE ? OR doc.release LIKE ?)
|
|
|
- ORDER BY doc.document_id DESC LIMIT ?,? `
|
|
|
+ sql2 := `SELECT *
|
|
|
+FROM (
|
|
|
+ SELECT
|
|
|
+ doc.document_id,
|
|
|
+ doc.modify_time,
|
|
|
+ doc.create_time,
|
|
|
+ doc.document_name,
|
|
|
+ doc.identify,
|
|
|
+ doc.release AS description,
|
|
|
+ book.identify AS book_identify,
|
|
|
+ book.book_name,
|
|
|
+ rel.member_id,
|
|
|
+ member.account AS author,
|
|
|
+ 'document' AS search_type
|
|
|
+ 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 rel.role_id = 0
|
|
|
+ LEFT JOIN md_members AS member ON rel.member_id = member.member_id
|
|
|
+ LEFT JOIN md_relationship AS rel1 ON doc.book_id = rel1.book_id AND rel1.member_id = ?
|
|
|
+ LEFT JOIN (SELECT *
|
|
|
+ FROM (SELECT
|
|
|
+ book_id,
|
|
|
+ team_member_id,
|
|
|
+ role_id
|
|
|
+ FROM md_team_relationship AS mtr
|
|
|
+ LEFT JOIN md_team_member AS mtm ON mtm.team_id = mtr.team_id AND mtm.member_id = ?
|
|
|
+ ORDER BY role_id DESC) AS t
|
|
|
+ GROUP BY t.role_id, t.team_member_id, t.book_id) AS team
|
|
|
+ ON team.book_id = book.book_id
|
|
|
+ WHERE (book.privately_owned = 0 OR rel1.relationship_id > 0 OR team.team_member_id > 0) AND
|
|
|
+ (doc.document_name LIKE ? OR doc.release LIKE ?)
|
|
|
+ UNION ALL
|
|
|
+
|
|
|
+ SELECT
|
|
|
+ blog.blog_id,
|
|
|
+ blog.modify_time,
|
|
|
+ blog.create_time,
|
|
|
+ blog.blog_title,
|
|
|
+ blog.blog_identify,
|
|
|
+ blog.blog_release,
|
|
|
+ blog.blog_identify,
|
|
|
+ blog.blog_title,
|
|
|
+ blog.member_id,
|
|
|
+ member.account,
|
|
|
+ 'blog' AS search_type
|
|
|
+ FROM md_blogs AS blog
|
|
|
+ LEFT JOIN md_members AS member ON blog.member_id = member.member_id
|
|
|
+ WHERE (blog.blog_status = 'public' OR blog.member_id = ?) AND blog.blog_type = 0 AND
|
|
|
+ (blog.blog_release LIKE ? OR blog.blog_title LIKE ?)
|
|
|
+ ) AS union_table
|
|
|
+ORDER BY create_time DESC
|
|
|
+LIMIT ?, ?;`
|
|
|
|
|
|
err = o.Raw(sql1, memberId, memberId, keyword, keyword).QueryRow(&totalCount)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
- _, err = o.Raw(sql2, memberId, memberId, keyword, keyword, offset, pageSize).QueryRows(&searchResult)
|
|
|
+ sql3 := ` SELECT
|
|
|
+ count(*)
|
|
|
+ FROM md_blogs AS blog
|
|
|
+ WHERE (blog.blog_status = 'public' OR blog.member_id = ?) AND blog.blog_type = 0 AND
|
|
|
+ (blog.blog_release LIKE ? OR blog.blog_title LIKE ?);`
|
|
|
+
|
|
|
+ c := 0
|
|
|
+ err = o.Raw(sql3,memberId, keyword, keyword).QueryRow(&c)
|
|
|
+ if err != nil {
|
|
|
+ beego.Error("查询搜索结果失败 -> ",err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ totalCount += c
|
|
|
+ _, err = o.Raw(sql2, memberId, memberId, keyword, keyword,memberId,keyword, keyword, offset, pageSize).QueryRows(&searchResult)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|