package adm_controller import ( "Blog/internal/model" "Blog/internal/model/result" "Blog/internal/service" "Blog/internal/utils" "html/template" "net/http" "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/mvc" "github.com/kataras/iris/v12/sessions" "github.com/sirupsen/logrus" ) /* 文章管理 */ 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 != "" { // logrus.Info("修改文章") article := service.ArticleService.GetArticle(id) content := service.TextContentService.GetContent(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 := utils.SessionUtil.GetUser(ctrl.Session) logrus.Info("保存文章") var articel model.BlogArticle if err := ctrl.Ctx.ReadBody(&articel); err != nil { ctrl.Ctx.JSON(result.Error("保存文章失败")) return } if articel.Id == "" { logrus.Info("文章ID不存在,新增文章") articel.CreateBy = user.Id articel.Author = user.Username service.ArticleService.CreateArticle(&articel) } else { logrus.Info("文章ID存在,更新文章") articel.UpdateBy = user.Id service.ArticleService.UpdateArticle(&articel) } ctrl.Ctx.JSON(result.OkMsg("保存文章完成", nil)) } // 后台文章发布 func (ctrl *ArticleController) GetPublish() { id := ctrl.Ctx.Params().Get("id") err := service.ArticleService.PublishArticle(id) if err != nil { ctrl.Ctx.JSON(result.Error(err.Error())) return } ctrl.Ctx.JSON(result.OkMsg("发布成功", nil)) } // 后台文章撤回 func (ctrl *ArticleController) GetUnPublish() { id := ctrl.Ctx.Params().Get("id") err := service.ArticleService.UnPublishArticle(id) if err != nil { ctrl.Ctx.JSON(result.Error(err.Error())) return } ctrl.Ctx.JSON(result.OkMsg("撤稿成功", nil)) } // 后台文章删除 func (ctrl *ArticleController) DelArticle() { id := ctrl.Ctx.Params().Get("id") err := service.ArticleService.DelArticle(id) if err != nil { ctrl.Ctx.JSON(result.Error(err.Error())) return } ctrl.Ctx.JSON(result.OkMsg("删除文章成功", nil)) } // 后台文章列表 func (ctrl *ArticleController) GetList() { page := ctrl.Ctx.URLParamIntDefault("page", 0) itemsPerPage := ctrl.Ctx.URLParamIntDefault("itemsPerPage", 10) pages := service.ArticleService.PageArticle(page, itemsPerPage) // pages.Content.(model.BlogArticle) ctrl.Ctx.JSON(pages) } func (c *ArticleController) BeforeActivation(activation mvc.BeforeActivation) { // logrus.Info("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) { // logrus.Info("after") }