归档搜索
1. 归档
http.HandleFunc("/pigeonhole",views.HTML.Pigeonhole)
1
package views
import (
"ms-go-blog/common"
"ms-go-blog/service"
"net/http"
)
func (*HTMLApi) Pigeonhole(w http.ResponseWriter,r *http.Request) {
pigeonhole := common.Template.Pigeonhole
pigeonholeRes := service.FindPostPigeonhole()
pigeonhole.WriteData(w,pigeonholeRes)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package service
import (
"ms-go-blog/config"
"ms-go-blog/dao"
"ms-go-blog/models"
)
func FindPostPigeonhole() models.PigeonholeRes {
//查询所有的文章 进行月份的整理
//查询所有的分类
posts,_ := dao.GetPostAll()
pigeonholeMap := make(map[string][]models.Post)
for _,post :=range posts{
at := post.CreateAt
month := at.Format("2006-01")
pigeonholeMap[month] = append(pigeonholeMap[month],post)
}
categorys,_ := dao.GetAllCategory()
return models.PigeonholeRes{
config.Cfg.Viewer,
config.Cfg.System,
categorys,
pigeonholeMap,
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2. 自定义页面
package views
import (
"errors"
"log"
"ms-go-blog/common"
"ms-go-blog/service"
"net/http"
"strconv"
"strings"
)
func (*HTMLApi) Index(w http.ResponseWriter,r *http.Request) {
index := common.Template.Index
//页面上涉及到的所有的数据,必须有定义
//数据库查询
if err := r.ParseForm();err != nil{
log.Println("表单获取失败:",err)
index.WriteError(w,errors.New("系统错误,请联系管理员!!"))
return
}
pageStr := r.Form.Get("page")
page := 1
if pageStr != "" {
page,_ = strconv.Atoi(pageStr)
}
//每页显示的数量
pageSize := 10
path := r.URL.Path
slug := strings.TrimPrefix(path,"/")
hr,err := service.GetAllIndexInfo(slug,page,pageSize)
if err != nil {
log.Println("Index获取数据出错:",err)
index.WriteError(w,errors.New("系统错误,请联系管理员!!"))
}
index.WriteData(w,hr)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package service
import (
"html/template"
"ms-go-blog/config"
"ms-go-blog/dao"
"ms-go-blog/models"
)
func GetAllIndexInfo(slug string,page,pageSize int) (*models.HomeResponse,error){
categorys,err := dao.GetAllCategory()
if err != nil {
return nil, err
}
var posts []models.Post
var total int
if slug == "" {
posts,err = dao.GetPostPage(page,pageSize)
total = dao.CountGetAllPost()
}else{
posts,err = dao.GetPostPageBySlug(slug,page,pageSize)
total = dao.CountGetAllPostBySlug(slug)
}
var postMores []models.PostMore
for _,post := range posts{
categoryName := dao.GetCategoryNameById(post.CategoryId)
userName := dao.GetUserNameById(post.UserId)
content := []rune(post.Content)
if len(content) > 100 {
content = content[0:100]
}
postMore := models.PostMore{
post.Pid,
post.Title,
post.Slug,
template.HTML(content),
post.CategoryId,
categoryName,
post.UserId,
userName,
post.ViewCount,
post.Type,
models.DateDay(post.CreateAt),
models.DateDay(post.UpdateAt),
}
postMores = append(postMores,postMore)
}
//11 10 2 10 1 9 1 21 3
// (11-1)/10 + 1 = 2
pagesCount := (total-1)/10 + 1
var pages []int
for i := 0;i<pagesCount;i++ {
pages = append(pages,i+1)
}
var hr = &models.HomeResponse{
config.Cfg.Viewer,
categorys,
postMores,
total,
page,
pages,
page != pagesCount,
}
return hr,nil
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
func GetPostPageBySlug(slug string,page,pageSize int) ([]models.Post,error) {
page = (page-1) * pageSize
rows, err := DB.Query("select * from blog_post where slug = ? limit ?,?",slug,page,pageSize)
if err != nil {
return nil,err
}
var posts []models.Post
for rows.Next() {
var post models.Post
err := rows.Scan(
&post.Pid,
&post.Title,
&post.Content,
&post.Markdown,
&post.CategoryId,
&post.UserId,
&post.ViewCount,
&post.Type,
&post.Slug,
&post.CreateAt,
&post.UpdateAt,
)
if err != nil {
return nil, err
}
posts = append(posts,post)
}
return posts,nil
}
func CountGetAllPostBySlug(slug string) (count int) {
rows := DB.QueryRow("select count(1) from blog_post where slug=?",slug)
_ = rows.Scan(&count)
return
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
3. 搜索
func GetPostSearch(condition string) ([]models.Post,error) {
rows, err := DB.Query("select * from blog_post where title like ?","%"+condition+"%")
if err != nil {
return nil,err
}
var posts []models.Post
for rows.Next() {
var post models.Post
err := rows.Scan(
&post.Pid,
&post.Title,
&post.Content,
&post.Markdown,
&post.CategoryId,
&post.UserId,
&post.ViewCount,
&post.Type,
&post.Slug,
&post.CreateAt,
&post.UpdateAt,
)
if err != nil {
return nil, err
}
posts = append(posts,post)
}
return posts,nil
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
http.HandleFunc("/api/v1/post/search",api.API.SearchPost)
1
func (*Api) SearchPost(w http.ResponseWriter,r *http.Request) {
_ = r.ParseForm()
condition := r.Form.Get("val")
searchResp := service.SearchPost(condition)
common.Success(w,searchResp)
}
1
2
3
4
5
6
2
3
4
5
6
func SearchPost(condition string) []models.SearchResp {
posts,_ := dao.GetPostSearch(condition)
var searchResps []models.SearchResp
for _,post := range posts{
searchResps = append(searchResps,models.SearchResp{
post.Pid,
post.Title,
})
}
return searchResps
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11