package admin import ( "blog/internal/model/AjaxResult" "blog/internal/model/admin" "blog/internal/service" "blog/third_party/SessionUtil" "html/template" "log" "net/http" "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/mvc" "github.com/kataras/iris/v12/sessions" ) /* 文章管理 */ type ArticleController struct { Ctx iris.Context Session *sessions.Session } func (ctrl *ArticleController) Get() { ctrl.Ctx.View("/admin/article/index.html") } func (ctrl *ArticleController) GetEditor() { contentType := ctrl.Ctx.Params().Get("contentType") id := ctrl.Ctx.Params().Get("id") if id != "" { // log.Println("修改文章") article := service.ArticleService.GetAdminArticle(id) content, _ := service.ContentService.GetContentByDb(id) ctrl.Ctx.ViewData("blogArticle", article) ctrl.Ctx.ViewData("blogContent", content) ctrl.Ctx.ViewData("content", template.HTML(content.Content)) } ctrl.Ctx.View("/admin/article/editor/" + contentType + ".html") } func (ctrl *ArticleController) PostSubmit() { user := SessionUtil.GetUser(ctrl.Session) log.Println("保存文章") var articel admin.AdminArticle if err := ctrl.Ctx.ReadBody(&articel); err != nil { ctrl.Ctx.JSON(AjaxResult.Error("保存文章失败")) return } if articel.Id == "" { log.Println("文章ID不存在,新增文章") articel.CreateBy = user.Id articel.Author = user.Username service.ArticleService.CreateArticle(&articel) } else { log.Println("文章ID存在,更新文章") articel.UpdateBy = user.Id service.ArticleService.UpdateArticle(&articel) } ctrl.Ctx.JSON(AjaxResult.OkMsg("保存文章完成", nil)) } func (ctrl *ArticleController) GetPublish() { id := ctrl.Ctx.Params().Get("id") err := service.ArticleService.PublishArticle(id) if err != nil { ctrl.Ctx.JSON(AjaxResult.Error(err.Error())) return } ctrl.Ctx.JSON(AjaxResult.OkMsg("发布成功", nil)) } func (ctrl *ArticleController) GetUnPublish() { id := ctrl.Ctx.Params().Get("id") err := service.ArticleService.UnPublishArticle(id) if err != nil { ctrl.Ctx.JSON(AjaxResult.Error(err.Error())) return } ctrl.Ctx.JSON(AjaxResult.OkMsg("撤稿成功", nil)) } func (ctrl *ArticleController) DelArticle() { id := ctrl.Ctx.Params().Get("id") err := service.ArticleService.DelArticle(id) if err != nil { ctrl.Ctx.JSON(AjaxResult.Error(err.Error())) return } ctrl.Ctx.JSON(AjaxResult.OkMsg("删除文章成功", nil)) } func (ctrl *ArticleController) GetList() { page := ctrl.Ctx.URLParamIntDefault("page", 0) itemsPerPage := ctrl.Ctx.URLParamIntDefault("itemsPerPage", 10) pages := service.ArticleService.PageAdminArticle(page, itemsPerPage) ctrl.Ctx.JSON(pages) } func (c *ArticleController) BeforeActivation(activation mvc.BeforeActivation) { // log.Println("before") activation.Handle(http.MethodGet, "/editor/{contentType}", "GetEditor") activation.Handle(http.MethodGet, "/editor/{contentType}/{id}", "GetEditor") activation.Handle(http.MethodGet, "/publish/{id}", "GetPublish") activation.Handle(http.MethodGet, "/unPublish/{id}", "GetUnPublish") activation.Handle(http.MethodDelete, "/del/{id}", "DelArticle") } func (c *ArticleController) AfterActivation(activation mvc.AfterActivation) { // log.Println("after") }