blog/internal/controller/admin/ArticleController.go

118 lines
3.2 KiB
Go

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")
}