From ec2f3bbe03d464a31f6e91254c357cedcb2d31e1 Mon Sep 17 00:00:00 2001 From: yirenyishi Date: Mon, 26 Nov 2018 21:53:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8D=9A=E5=AE=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/BlogController.go | 56 +++++++++++++++++ controllers/PageController.go | 5 ++ models/User.go | 4 ++ routers/BlogRouter.go | 2 + service/BlogService.go | 37 ++++++++++- service/UserService.go | 6 +- views/403.html | 10 +++ views/editblog.html | 114 ++++++++++++++++++++++++++++++++++ views/newblog.html | 1 + views/ublogs.html | 10 +-- views/ulike.html | 9 ++- 11 files changed, 244 insertions(+), 10 deletions(-) create mode 100644 views/403.html create mode 100644 views/editblog.html diff --git a/controllers/BlogController.go b/controllers/BlogController.go index d217a7d..5e478e4 100644 --- a/controllers/BlogController.go +++ b/controllers/BlogController.go @@ -5,12 +5,34 @@ import ( "beeblog/service" "github.com/astaxie/beego" "strconv" + "time" ) type BlogController struct { beego.Controller } +func (this *BlogController) EditPage() { + uid := this.GetSession("userid") + if uid == nil { + this.Redirect("/login", 302) + return + } + idStr := this.Ctx.Input.Param(":id") + id, _ := strconv.ParseInt(idStr, 10, 64) + blog, err := service.GetBlog(id) + if err != nil { + this.Redirect("/500", 302) + return + } + if blog.UserId != uid.(int64) { + this.Redirect("/403", 302) + return + } + this.Data["Blog"] = blog + this.TplName = "editblog.html" +} + func (this *BlogController) Save() { uid := this.GetSession("userid") if uid == nil { @@ -25,6 +47,40 @@ func (this *BlogController) Save() { labels := this.GetStrings("labels[]") blog := &models.Blog{Title: title, BlogHtml: blogHtml, CategoryId: catoryId, UserId: uid.(int64)} err := service.SaveBlog(blog, labels) + if err == nil { + this.Data["json"] = models.ReurnData("",blog.Id) + } else { + this.Data["json"] = models.ReurnError(500, "保存失败") + } + this.ServeJSON() + service.CountBlog(uid.(int64)) + return +} + +func (this *BlogController) Edit() { + uid := this.GetSession("userid") + if uid == nil { + this.Data["json"] = models.ReurnError(401, "") + this.ServeJSON() + return + } + id,_ := this.GetInt64("id") + title := this.GetString("title") + blogHtml := this.GetString("blogHtml") + catory := this.GetString("catory") + catoryId, _ := strconv.ParseInt(catory, 10, 64) + labels := this.GetStrings("labels[]") + blog,err :=service.GetBlog(id) + if err != nil { + this.Data["json"] = models.ReurnError(500, "保存失败") + this.ServeJSON() + return + } + blog.Title = title + blog.BlogHtml = blogHtml + blog.CategoryId = catoryId + blog.Utime = time.Now() + err = service.EditBlog(blog, labels) if err == nil { this.Data["json"] = models.ReurnSuccess("") } else { diff --git a/controllers/PageController.go b/controllers/PageController.go index 4c0dfae..0ab6a06 100644 --- a/controllers/PageController.go +++ b/controllers/PageController.go @@ -52,3 +52,8 @@ func (this *PageController) PageNotFound() { func (this *PageController) ServerError() { this.TplName = "500.html" } + +// @router /403 [get] +func (this *PageController) ServerDemined() { + this.TplName = "403.html" +} diff --git a/models/User.go b/models/User.go index 50607df..3d9ac97 100644 --- a/models/User.go +++ b/models/User.go @@ -23,3 +23,7 @@ type User struct { BlogComment int `orm:"default(0)"` BlogLike int `orm:"default(0)"` } + +func (u *User) TableName() string { + return "auth_user" +} \ No newline at end of file diff --git a/routers/BlogRouter.go b/routers/BlogRouter.go index 4d1b206..4150160 100644 --- a/routers/BlogRouter.go +++ b/routers/BlogRouter.go @@ -7,6 +7,8 @@ import ( func init() { beego.Router("/blog/new", &controllers.BlogController{}, "post:Save") + beego.Router("/blog/edit", &controllers.BlogController{}, "post:Edit") + beego.Router("/blog/edit/:id([0-9]+)", &controllers.BlogController{}, "get:EditPage") beego.Router("/blog/:id([0-9]+)", &controllers.BlogController{}, "get:Get") beego.Router("/blog/del/:id([0-9]+)", &controllers.BlogController{}, "post:Del") beego.Router("/blogs", &controllers.BlogController{}, "get:BlogsPage") diff --git a/service/BlogService.go b/service/BlogService.go index 630a059..9818110 100644 --- a/service/BlogService.go +++ b/service/BlogService.go @@ -6,7 +6,6 @@ import ( "beeblog/utils" ) - func count(num int, size int, cat int64) (*utils.Page, error) { o := orm.NewOrm() qs := o.QueryTable(&models.Blog{}) @@ -44,7 +43,7 @@ func EditBlogBrows(id int64) { func TopBlogByUser(uid int64) ([]*models.Blog, error) { o := orm.NewOrm() var blogs []*models.Blog - o.QueryTable(models.Blog{}).Filter("UserId",uid).Limit(12,0).OrderBy("-Browses").All(&blogs) + o.QueryTable(models.Blog{}).Filter("UserId", uid).Limit(12, 0).OrderBy("-Browses").All(&blogs) return blogs, nil } @@ -141,6 +140,30 @@ func SaveBlog(blog *models.Blog, strs []string) error { return nil } +func EditBlog(blog *models.Blog, strs []string) error { + o := orm.NewOrm() + o.Begin() + id, eror := o.Update(blog) + if eror != nil { + o.Rollback() + return eror + } else { + o.QueryTable(models.NLabel{}).Filter("BlogId",blog.Id).Delete() + if strs != nil && len(strs) > 0 { + nlabels := make([]*models.NLabel, len(strs)) + for i := 0; i < len(strs); i++ { + nlabels[i] = &models.NLabel{Title: strs[i], BlogId: id, UserId: blog.UserId} + } + if _, err := o.InsertMulti(len(nlabels), nlabels); err != nil { + o.Rollback() + return err + } + } + o.Commit() + } + return nil +} + func MeBlogs(num int, size int, flag int, uid int64) (*utils.Page, error) { page, err := countByUser(num, size, uid) if err != nil { @@ -164,3 +187,13 @@ func MeBlogs(num int, size int, flag int, uid int64) (*utils.Page, error) { page.List = blogs return page, nil } + +func GetNLabel(id int64) ([]*models.NLabel, error) { + var labels []*models.NLabel + o := orm.NewOrm() + _, err := o.QueryTable(&models.NLabel{}).Filter("BlogId", id).All(&labels) + if err != nil { + return labels, err + } + return labels, nil +} diff --git a/service/UserService.go b/service/UserService.go index 7ccd3bf..b551c00 100644 --- a/service/UserService.go +++ b/service/UserService.go @@ -44,13 +44,13 @@ func SaveUser(user *models.User) error { func CountBlog(uid int64) { o := orm.NewOrm() browses := 0 - o.Raw("UPDATE `user` SET `blog_count` = (SELECT count(id) FROM blog where delflag = 0 and user_id =?1 ) WHERE `id` = ?2 ", uid, uid).QueryRow(&browses) + o.Raw("UPDATE `auth_user` SET `blog_count` = (SELECT count(id) FROM blog where delflag = 0 and user_id =? ) WHERE `id` = ? ", uid, uid).QueryRow(&browses) return } func CountBrows(uid int64) { o := orm.NewOrm() browses := 0 - o.Raw("UPDATE `user` SET `blog_browes` = (select SUM(browses) browses from blog where user_id = ?1) WHERE `id` = ?2 ", uid, uid).QueryRow(&browses) //获取总条数 + o.Raw("UPDATE `auth_user` SET `blog_browes` = (select SUM(browses) browses from blog where user_id = ?) WHERE `id` = ? ", uid, uid).QueryRow(&browses) //获取总条数 return } func CountComments(uid int64) { @@ -59,7 +59,7 @@ func CountComments(uid int64) { func CountLike(uid int64) { o := orm.NewOrm() browses := 0 - o.Raw("UPDATE `user` SET `blog_like` = (select count(id) from like where user_id = ?1) WHERE `id` = ?2 ", uid, uid).QueryRow(&browses) + o.Raw("UPDATE `auth_user` SET `blog_like` = (select count(id) from like where user_id = ?) WHERE `id` = ?", uid, uid).QueryRow(&browses) return } diff --git a/views/403.html b/views/403.html new file mode 100644 index 0000000..bb5d2c8 --- /dev/null +++ b/views/403.html @@ -0,0 +1,10 @@ + + + + + Title + + +

404

+ + \ No newline at end of file diff --git a/views/editblog.html b/views/editblog.html new file mode 100644 index 0000000..75e19f7 --- /dev/null +++ b/views/editblog.html @@ -0,0 +1,114 @@ +{{template "header"}} +博客 - 个人随笔 + + + + +
+
+ + +
+
+ +
+ +
+ + + \ No newline at end of file diff --git a/views/newblog.html b/views/newblog.html index cb4b26a..f57774c 100644 --- a/views/newblog.html +++ b/views/newblog.html @@ -94,6 +94,7 @@ storage.removeItem("blogTitle"); layer.msg("保存成功", {icon: 6}); callback(true) + window.location.href = "/blog/"+ data.Data } else if (data.Status == 401) { window.location.href = "login" } else if (data.Status == 500) { diff --git a/views/ublogs.html b/views/ublogs.html index 443ca59..a77af82 100644 --- a/views/ublogs.html +++ b/views/ublogs.html @@ -11,8 +11,8 @@
{{range .Page.List}}
@@ -22,7 +22,7 @@ 浏览量:{{.Browses}} 删除 - 编辑 + 编辑

@@ -49,7 +49,9 @@ - {{template "footer"}} + diff --git a/views/ulike.html b/views/ulike.html index 6ef8a2b..5bb9045 100644 --- a/views/ulike.html +++ b/views/ulike.html @@ -9,6 +9,11 @@
+ {{range .Page.List}}

{{.Blog.Title}}

@@ -43,7 +48,9 @@
- {{template "footer"}} +