From 347052da0504087c53461a176abc2fda3f233e64 Mon Sep 17 00:00:00 2001 From: yirenyishi Date: Sat, 26 Jan 2019 17:31:52 +0800 Subject: [PATCH] api --- controllers/BlogController.go | 8 +- controllers/PageController.go | 4 +- controllers/UserController.go | 16 +-- main.go | 8 ++ mcontrollers/MBlogController.go | 191 ++++++++++++++++++++++++++++++++ models/Result.go | 3 + routers/MBlogRouter.go | 10 ++ routers/router.go | 4 +- 8 files changed, 228 insertions(+), 16 deletions(-) create mode 100644 mcontrollers/MBlogController.go create mode 100644 routers/MBlogRouter.go diff --git a/controllers/BlogController.go b/controllers/BlogController.go index 0a65ac8..d0f1b5e 100644 --- a/controllers/BlogController.go +++ b/controllers/BlogController.go @@ -22,7 +22,7 @@ func (this *BlogController) EditPage() { id, _ := strconv.ParseInt(idStr, 10, 64) blog, err := service.GetBlog(id) if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } if blog.UserId != uid.(int64) { @@ -96,7 +96,7 @@ func (this *BlogController) Get() { id, _ := strconv.ParseInt(idStr, 10, 64) blog, err := service.GetBlog(id) if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } if uid := this.GetSession("userid"); uid != nil { @@ -167,7 +167,7 @@ func (this *BlogController) New() { func (this *BlogController) BlogsPage() { cats, errcat := service.GetCats() if errcat != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } num, _ := this.GetInt("num") @@ -185,7 +185,7 @@ func (this *BlogController) BlogsPage() { } pages, err := service.FindBlogs(num, size, cat, flag) if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } this.Data["UserId"] = this.GetSession("userid") diff --git a/controllers/PageController.go b/controllers/PageController.go index cdb55be..36f23bd 100644 --- a/controllers/PageController.go +++ b/controllers/PageController.go @@ -14,7 +14,7 @@ type PageController struct { func (this *PageController) Blog() { cats, err := service.GetCats() if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } this.Data["Cats"] = cats @@ -64,7 +64,7 @@ func (this *PageController) PageNotFound() { this.TplName = "404.html" } -// @router /500 [get] +// @router /404 [get] func (this *PageController) ServerError() { this.TplName = "500.html" } diff --git a/controllers/UserController.go b/controllers/UserController.go index 1545830..fb07cc2 100644 --- a/controllers/UserController.go +++ b/controllers/UserController.go @@ -27,7 +27,7 @@ func (this *UserController) UserInfo() { id, _ := strconv.ParseInt(idStr, 10, 64) user, err := service.GetUser(id) if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } size := 15 @@ -62,12 +62,12 @@ func (this *UserController) PersonBlog() { flag, _ := this.GetInt("flag") page, err := service.MeBlogs(num, size, flag, uid.(int64)) if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } user, uerr := service.GetUser(uid.(int64)) if uerr != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } this.Data["UserId"] = this.GetSession("userid") @@ -99,13 +99,13 @@ func (this *UserController) PersonNote() { notColl = make([]*models.NoteColl, 0) } if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } user, uerr := service.GetUser(uid.(int64)) if uerr != nil { if uid == nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } } @@ -132,13 +132,13 @@ func (this *UserController) PersonLike() { } page, err := service.MeLikes(num, size, uid.(int64)) if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } user, uerr := service.GetUser(uid.(int64)) if uerr != nil { if uid == nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } } @@ -160,7 +160,7 @@ func (this *UserController) PersonInfo() { } user, err := service.GetUser(uid.(int64)) if err != nil { - this.Redirect("/500", 302) + this.Redirect("/404", 302) return } this.Data["IsLogin"] = this.GetSession("nickname") != nil diff --git a/main.go b/main.go index a57a021..7271eb0 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "beeblog/models" "github.com/astaxie/beego/orm" "beeblog/filter" + "github.com/astaxie/beego/plugins/cors" ) func init() { @@ -19,6 +20,13 @@ func main() { beego.AddFuncMap("NAdd",NAdd) beego.SetLevel(beego.LevelInformational) beego.SetLogger("file", `{"filename":"/opt/logs/aiprose.log"}`) + beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{ + AllowAllOrigins: true, + AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, + AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"}, + ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"}, + AllowCredentials: true, + })) beego.Run() } diff --git a/mcontrollers/MBlogController.go b/mcontrollers/MBlogController.go new file mode 100644 index 0000000..4b5e379 --- /dev/null +++ b/mcontrollers/MBlogController.go @@ -0,0 +1,191 @@ +package mcontrollers + +import ( + "beeblog/models" + "beeblog/service" + "github.com/astaxie/beego" + "strconv" + "time" +) + +type MBlogController struct { + beego.Controller +} + +func (this *MBlogController) BlogsPage() { + num, _ := this.GetInt("num") + size, _ := this.GetInt("size") + cat, _ := this.GetInt64("cat") + flag, _ := this.GetInt("flag") + if num <= 0 { + num = 1 + } + if size < 15 { + size = 15 + } + if cat <= 0 { + cat = -1 + } + pages, err := service.FindBlogs(num, size, cat, flag) + if err != nil { + this.Data["json"] = models.ReurnServerError(500) + this.ServeJSON() + return + } + this.Data["json"] = models.ReurnData("",pages) + this.ServeJSON() + return +} + + +func (this *MBlogController) 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("/404", 302) + return + } + if blog.UserId != uid.(int64) { + this.Redirect("/403", 302) + return + } + this.Data["Blog"] = blog + this.TplName = "editblog.html" +} + +func (this *MBlogController) Save() { + uid := this.GetSession("userid") + if uid == nil { + this.Data["json"] = models.ReurnError(401, "") + this.ServeJSON() + return + } + title := this.GetString("title") + blogHtml := this.GetString("blogHtml") + catory := this.GetString("catory") + catoryId, _ := strconv.ParseInt(catory, 10, 64) + 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 *MBlogController) 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 { + this.Data["json"] = models.ReurnError(500, "保存失败") + } + this.ServeJSON() + service.CountBlog(uid.(int64)) + return +} + +func (this *MBlogController) Get() { + idStr := this.Ctx.Input.Param(":id") + id, _ := strconv.ParseInt(idStr, 10, 64) + blog, err := service.GetBlog(id) + if err != nil { + this.Redirect("/404", 302) + return + } + if uid := this.GetSession("userid"); uid != nil { + if blog.UserId == uid.(int64) { + this.Data["IsAuthor"] = true + } + if flag, err := service.IsLike(id, uid.(int64)); err == nil { + this.Data["IsLike"] = flag + } + } + if blogs, err := service.TopBlogByUser(blog.UserId); err == nil { + this.Data["Top"] = blogs + } + this.Data["Blog"] = blog + this.Data["UserId"] = this.GetSession("userid") + this.Data["HeadImg"] = this.GetSession("headimg") + this.Data["NickName"] = this.GetSession("nickname") + this.Data["UserId"] = this.GetSession("userid") + this.Data["IsLogin"] = this.GetSession("nickname") != nil + this.TplName = "blog.html" + service.CountBrows(blog.UserId) + service.EditBlogBrows(id) + return +} + +func (this *MBlogController) Del() { + uid := this.GetSession("userid") + if uid == nil { + this.Data["json"] = models.ReurnError(401, "") + this.ServeJSON() + return + } + idStr := this.Ctx.Input.Param(":id") + id, _ := strconv.ParseInt(idStr, 10, 64) + blog, err := service.GetBlog(id) + if err != nil { + this.Data["json"] = models.ReurnError(500, "") + this.ServeJSON() + return + } + if blog.UserId != uid.(int64) { + this.Data["json"] = models.ReurnError(503, "") + this.ServeJSON() + return + } + blog.Delflag = 1 + err = service.DelBlog(blog) + if err != nil { + this.Data["json"] = models.ReurnError(500, "") + this.ServeJSON() + return + } + this.Data["json"] = models.ReurnSuccess("") + this.ServeJSON() + service.CountBlog(uid.(int64)) + return +} + +func (this *MBlogController) New() { + uid := this.GetSession("userid") + if uid == nil { + this.Redirect("/login", 302) + return + } + this.TplName = "newblog.html" +} \ No newline at end of file diff --git a/models/Result.go b/models/Result.go index 5d39fd6..b51dc8d 100644 --- a/models/Result.go +++ b/models/Result.go @@ -4,6 +4,9 @@ type Error struct { Status int Msg string } +func ReurnServerError(status int) *Error { + return &Error{Status: status, Msg: "服务器异常"} +} func ReurnError(status int, msg string) *Error { if msg == "" { diff --git a/routers/MBlogRouter.go b/routers/MBlogRouter.go new file mode 100644 index 0000000..d5c92d3 --- /dev/null +++ b/routers/MBlogRouter.go @@ -0,0 +1,10 @@ +package routers + +import ( + "beeblog/mcontrollers" + "github.com/astaxie/beego" +) + +func init() { + beego.Router("/api/blogs", &mcontrollers.MBlogController{}, "get:BlogsPage") +} diff --git a/routers/router.go b/routers/router.go index 9d8071c..36bf7d2 100644 --- a/routers/router.go +++ b/routers/router.go @@ -7,8 +7,8 @@ import ( func init() { beego.Router("/", &controllers.IndexController{}) - beego.Router("/500", &controllers.PageController{},"get:PageNotFound") beego.Router("/404", &controllers.PageController{},"get:PageNotFound") + beego.Router("/500", &controllers.PageController{},"get:ServerError") beego.Router("/map", &controllers.MapController{}) beego.Router("/us", &controllers.PageController{},"get:UsPage") beego.Router("/iframe/note", &controllers.PageController{},"get:IframeNote") @@ -16,5 +16,5 @@ func init() { beego.Router("/iframe/blog", &controllers.PageController{},"get:Blog") beego.Router("/file/upload", &controllers.FileController{}, "post:Upload") beego.Router("/himg/upload", &controllers.FileController{}, "post:HeadImgUpload") - beego.Include(&controllers.PageController{}) + //beego.Include(&controllers.PageController{}) }