Browse Source

日了狗的分页

layui
yirenyishi 6 years ago
parent
commit
db5abbc074
  1. 29
      controllers/BlogController.go
  2. 7
      main.go
  3. 39
      service/BlogService.go
  4. 19
      utils/PageUtil.go
  5. 18
      views/blogs.html

29
controllers/BlogController.go

@ -5,6 +5,7 @@ import (
"beeblog/service" "beeblog/service"
"github.com/astaxie/beego" "github.com/astaxie/beego"
"strconv" "strconv"
"fmt"
) )
type BlogController struct { type BlogController struct {
@ -22,7 +23,7 @@ func (this *BlogController) Save() {
if err == nil { if err == nil {
this.Data["json"] = blog this.Data["json"] = blog
} else { } else {
this.Data["json"] = models.ReurnError(500,"保存失败") this.Data["json"] = models.ReurnError(500, "保存失败")
} }
this.ServeJSON() this.ServeJSON()
return return
@ -46,9 +47,29 @@ func (this *BlogController) Blog1() {
} }
func (this *BlogController) BlogsPage() { func (this *BlogController) BlogsPage() {
blogs,_ := service.FindBlogs() num, _ := this.GetInt("num")
this.Data["Blogs"] = blogs size, _ := this.GetInt("size")
cat, _ := this.GetInt64("cat")
flag, _ := this.GetInt("flag")
if num <= 0 {
num = 1
}
if size < 5 {
size = 5
}
if cat <= 0 {
cat = -1
}
fmt.Println("nelson page", num, size, cat)
pages, err := service.FindBlogs(num, size, cat, flag)
if err != nil {
this.Redirect("500.html", 302)
return
}
this.Data["Page"] = pages
this.Data["Cat"] = cat
this.Data["Flag"] = flag
this.Data["IsBlog"] = true this.Data["IsBlog"] = true
this.TplName = "blogs.html" this.TplName = "blogs.html"
} }

7
main.go

@ -15,8 +15,11 @@ func init() {
} }
func main() { func main() {
orm.Debug = true orm.Debug = true
orm.RunSyncdb("default",false,true) orm.RunSyncdb("default", false, true)
beego.BConfig.WebConfig.Session.SessionOn = true beego.AddFuncMap("NAdd",NAdd)
beego.Run() beego.Run()
} }
func NAdd(n1 int, n2 int) int{
return n1 + n2
}

39
service/BlogService.go

@ -3,11 +3,26 @@ package service
import ( import (
"github.com/astaxie/beego/orm" "github.com/astaxie/beego/orm"
"beeblog/models" "beeblog/models"
"beeblog/utils"
) )
type BlogService struct { type BlogService struct {
} }
func count(num int, size int, cat int64) (*utils.Page, error) {
o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{})
qs.Filter("Delflag", 0)
if cat != -1 {
qs = qs.Filter("CategoryId", cat)
}
totalCount, err := qs.Count()
if err != nil {
return nil, err
}
return utils.PageUtil(totalCount, num, size), nil
}
func GetBlog(id int64) (*models.Blog, error) { func GetBlog(id int64) (*models.Blog, error) {
o := orm.NewOrm() o := orm.NewOrm()
blog := &models.Blog{Id: id} blog := &models.Blog{Id: id}
@ -18,15 +33,31 @@ func GetBlog(id int64) (*models.Blog, error) {
return blog, nil return blog, nil
} }
func FindBlogs() ([]*models.Blog, error) { func FindBlogs(num int, size int, cat int64, flag int) (*utils.Page, error) {
page, err := count(num, size, cat)
if err != nil {
return nil, err
}
var blogs []*models.Blog
o := orm.NewOrm() o := orm.NewOrm()
qs := o.QueryTable(&models.Blog{}) qs := o.QueryTable(&models.Blog{})
var blogs []*models.Blog qs = qs.Filter("Delflag", 0)
_, err := qs.Filter("Delflag", 0).All(&blogs) if cat != -1 {
qs = qs.Filter("CategoryId", cat)
}
if flag == 0 {
qs = qs.OrderBy("-Ctime")
} else {
qs = qs.OrderBy("-Browses")
}
qs = qs.Limit(size,page.PageNo)
_, err = qs.All(&blogs)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return blogs, nil page.List = blogs
return page, nil
} }
func SaveBlog(blog *models.Blog, strs []string) error { func SaveBlog(blog *models.Blog, strs []string) error {

19
utils/PageUtil.go

@ -1,5 +1,10 @@
package utils package utils
import (
"strconv"
"fmt"
)
type Page struct { type Page struct {
PageNo int PageNo int
PageSize int PageSize int
@ -10,10 +15,16 @@ type Page struct {
List interface{} List interface{}
} }
func PageUtil(count int, pageNo int, pageSize int, list interface{}) Page { func PageUtil(count64 int64, pageNo int, pageSize int) *Page {
string := strconv.FormatInt(count64, 10)
count, _ := strconv.Atoi(string)
tp := count / pageSize tp := count / pageSize
if count % pageSize > 0 { if count%pageSize > 0 {
tp = count / pageSize + 1 tp += 1
}
fmt.Println("tp:",tp,"num",pageNo)
if tp < pageNo {
pageNo = tp
} }
return Page{PageNo: pageNo, PageSize: pageSize, TotalPage: tp, TotalCount: count, FirstPage: pageNo == 1, LastPage: pageNo == tp, List: list} return &Page{PageNo: pageNo, PageSize: pageSize, TotalPage: tp, TotalCount: count, FirstPage: pageNo == 1, LastPage: pageNo == tp}
} }

18
views/blogs.html

@ -42,7 +42,7 @@
</div> </div>
<hr style="height:1px;border:none;border-top:1px solid lightgray;"/> <hr style="height:1px;border:none;border-top:1px solid lightgray;"/>
</div> </div>
{{range .Blogs}} {{range .Page.List}}
<div> <div>
<div class="home-content"> <div class="home-content">
<div class="home-content-title cursor"> <div class="home-content-title cursor">
@ -65,17 +65,19 @@
<nav> <nav>
<div class="pagination pagination-lg"> <div class="pagination pagination-lg">
<ul> <ul>
{{if .Page.FirstPage}}
{{else}}
<li class="prev"> <li class="prev">
<a href="#">&laquo;</a> <a href="/blogs?num={{ .Page.PageNo | NAdd -1}}&flag={{.Flag}}&cat={{.Cat}}">&laquo;</a>
</li> </li>
<li><a href="#">1</a></li> {{end}}
<li><a href="#">2</a></li> <li class="active"><a href="javascript:void(0)">{{.Page.PageNo}}</a></li>
<li><a href="#">3</a></li> {{if .Page.LastPage}}
<li class="active"><a href="#">4</a></li> {{else}}
<li><a href="#">5</a></li>
<li class="next"> <li class="next">
<a href="#">&raquo;</a> <a href="/blogs?num={{ .Page.PageNo | NAdd +1}}&flag={{.Flag}}&cat={{.Cat}}">&raquo;</a>
</li> </li>
{{end}}
</ul> </ul>
</div> </div>
</nav> </nav>

Loading…
Cancel
Save