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"
"github.com/astaxie/beego"
"strconv"
"fmt"
)
type BlogController struct {
@ -22,7 +23,7 @@ func (this *BlogController) Save() {
if err == nil {
this.Data["json"] = blog
} else {
this.Data["json"] = models.ReurnError(500,"保存失败")
this.Data["json"] = models.ReurnError(500, "保存失败")
}
this.ServeJSON()
return
@ -46,9 +47,29 @@ func (this *BlogController) Blog1() {
}
func (this *BlogController) BlogsPage() {
blogs,_ := service.FindBlogs()
this.Data["Blogs"] = blogs
num, _ := this.GetInt("num")
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.TplName = "blogs.html"
}
}

7
main.go

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

39
service/BlogService.go

@ -3,11 +3,26 @@ package service
import (
"github.com/astaxie/beego/orm"
"beeblog/models"
"beeblog/utils"
)
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) {
o := orm.NewOrm()
blog := &models.Blog{Id: id}
@ -18,15 +33,31 @@ func GetBlog(id int64) (*models.Blog, error) {
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()
qs := o.QueryTable(&models.Blog{})
var blogs []*models.Blog
_, err := qs.Filter("Delflag", 0).All(&blogs)
qs = qs.Filter("Delflag", 0)
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 {
return nil, err
}
return blogs, nil
page.List = blogs
return page, nil
}
func SaveBlog(blog *models.Blog, strs []string) error {

19
utils/PageUtil.go

@ -1,5 +1,10 @@
package utils
import (
"strconv"
"fmt"
)
type Page struct {
PageNo int
PageSize int
@ -10,10 +15,16 @@ type Page struct {
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
if count % pageSize > 0 {
tp = count / pageSize + 1
if count%pageSize > 0 {
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>
<hr style="height:1px;border:none;border-top:1px solid lightgray;"/>
</div>
{{range .Blogs}}
{{range .Page.List}}
<div>
<div class="home-content">
<div class="home-content-title cursor">
@ -65,17 +65,19 @@
<nav>
<div class="pagination pagination-lg">
<ul>
{{if .Page.FirstPage}}
{{else}}
<li class="prev">
<a href="#">&laquo;</a>
<a href="/blogs?num={{ .Page.PageNo | NAdd -1}}&flag={{.Flag}}&cat={{.Cat}}">&laquo;</a>
</li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li class="active"><a href="#">4</a></li>
<li><a href="#">5</a></li>
{{end}}
<li class="active"><a href="javascript:void(0)">{{.Page.PageNo}}</a></li>
{{if .Page.LastPage}}
{{else}}
<li class="next">
<a href="#">&raquo;</a>
<a href="/blogs?num={{ .Page.PageNo | NAdd +1}}&flag={{.Flag}}&cat={{.Cat}}">&raquo;</a>
</li>
{{end}}
</ul>
</div>
</nav>

Loading…
Cancel
Save