From db5abbc0741bae7d4499b03a47a6aa9e5da7f720 Mon Sep 17 00:00:00 2001 From: yirenyishi Date: Wed, 21 Nov 2018 22:04:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E4=BA=86=E7=8B=97=E7=9A=84=E5=88=86?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/BlogController.go | 29 ++++++++++++++++++++++---- main.go | 7 +++++-- service/BlogService.go | 39 +++++++++++++++++++++++++++++++---- utils/PageUtil.go | 19 +++++++++++++---- views/blogs.html | 18 +++++++++------- 5 files changed, 90 insertions(+), 22 deletions(-) diff --git a/controllers/BlogController.go b/controllers/BlogController.go index 979f116..4dc0428 100644 --- a/controllers/BlogController.go +++ b/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" -} \ No newline at end of file +} diff --git a/main.go b/main.go index 6666e32..3f4136d 100644 --- a/main.go +++ b/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 +} diff --git a/service/BlogService.go b/service/BlogService.go index c61b272..31ecf49 100644 --- a/service/BlogService.go +++ b/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 { diff --git a/utils/PageUtil.go b/utils/PageUtil.go index 83e09ae..c633f56 100644 --- a/utils/PageUtil.go +++ b/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} } diff --git a/views/blogs.html b/views/blogs.html index 7719a73..041466d 100644 --- a/views/blogs.html +++ b/views/blogs.html @@ -42,7 +42,7 @@
- {{range .Blogs}} + {{range .Page.List}}
@@ -65,17 +65,19 @@