127 lines
3.4 KiB
Go
127 lines
3.4 KiB
Go
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")
|
|
}
|