118 lines
3.2 KiB
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")
|
|
}
|