Files
gfast/plugin/blog/controller/home/index.go
T
2020-12-18 16:29:33 +08:00

324 lines
9.0 KiB
Go

package home
import (
"gfast/app/model/admin/plug_link"
"gfast/app/service/admin/plug_link_service"
"gfast/app/service/admin/plug_service"
"gfast/library/response"
"gfast/library/response/plugin/blog"
"gfast/plugin/blog/model/blog_classification"
"gfast/plugin/blog/model/blog_comment"
"gfast/plugin/blog/model/blog_log"
"gfast/plugin/blog/service/blog_service"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/util/gvalid"
)
type Index struct{}
type Classification struct {
*blog_classification.Entity
Children []*Classification
}
// 首页
func (c *Index) Index(r *ghttp.Request) {
// 查询文章列表
var req = new(blog_log.SelectPageReq)
req.PageSize = 8
req.Status = 1
_, _, logList, err := blog_service.SelectLogListByPage(req)
if err != nil {
g.Log().Error(err)
}
// 查询3篇置顶文章列表
topList, err := blog_service.FindSizeArticleBySign(3, 1, 1, 0)
if err != nil {
g.Log().Error(err)
}
// 查询3篇幻灯
slideList, err := blog_service.FindSizeArticleBySign(3, 1, 2, 0)
if err != nil {
g.Log().Error(err)
}
// 查询10篇根据点击数排序的文章用于排行榜
hitsList, err := blog_service.FindArticleByHits(10, 1)
if err != nil {
g.Log().Error(err)
}
// 查询友情链接
linkList, err := plug_link_service.ListByTypeId(13, 6, 1)
if err != nil {
g.Log().Error(err)
}
// 查询赞助分类
coffeeArticle, err := plug_service.GetSizeAd(2, 1, 21)
if err != nil {
g.Log().Error(err)
}
// 查询推荐文章
recommendList, err := blog_service.FindSizeArticleBySign(4, 1, 3, 0)
if err != nil {
g.Log().Error(err)
}
// 查询最新文章
newList, err := blog_service.FindSizeArticleBySign(4, 1, 0, 0)
if err != nil {
g.Log().Error(err)
}
// 查询所有状态为正常的分类
classificationList, err := blog_service.FindAllList()
if err != nil {
g.Log().Error(err)
}
classifications := getClassificationgList(classificationList, 0)
blog.Response(r, "homePage.html", g.Map{
"logList": logList,
"topList": topList,
"slideList": slideList,
"hitsList": hitsList,
"linkList": linkList,
"coffeeArticle": coffeeArticle,
"recommendList": recommendList,
"newList": newList,
"classificationList": classifications,
})
}
func getClassificationgList(classificationList []*blog_classification.Entity, pid uint) (cList []*Classification) {
cList = make([]*Classification, 0, len(classificationList))
for _, c1 := range classificationList {
var cl *Classification
if c1.ClassificationPid == pid {
cl = &Classification{Entity: c1}
cl.Children = getClassificationgList(classificationList, c1.ClassificationId)
cList = append(cList, cl)
}
}
return
}
// 分类、搜索
func (c *Index) BlogList(r *ghttp.Request) {
// 根据条件查询当前分类下的文章
var req = new(blog_log.SelectPageReq)
req.PageNum = r.GetInt64("page")
pageSize := 10
req.PageSize = int64(pageSize)
req.LogTitle = r.GetString("keyboard")
req.Status = 1
cateId := r.GetInt("cateId")
req.CateTypeId = cateId
total, _, list, err := blog_service.SelectLogListByPage(req)
if err != nil {
g.Log().Error(err)
}
// 根据分类id查询分类(分类名用于导航)
classification, err := blog_service.GetClassificationByID(int64(cateId))
if err != nil {
g.Log().Error(err)
}
// 以下为右边侧栏所需数据
// 查询10篇根据点击数排序的文章用于排行榜
hitsList, err := blog_service.FindArticleByHits(10, 1)
if err != nil {
g.Log().Error(err)
}
// 查询友情链接
linkList, err := plug_link_service.ListByTypeId(13, 6, 1)
if err != nil {
g.Log().Error(err)
}
// 查询赞助分类
coffeeArticle, err := plug_service.GetSizeAd(2, 1, 21)
if err != nil {
g.Log().Error(err)
}
// 查询推荐文章
recommendList, err := blog_service.FindSizeArticleBySign(4, 1, 3, 0)
if err != nil {
g.Log().Error(err)
}
// 查询最新文章
newList, err := blog_service.FindSizeArticleBySign(4, 1, 0, 0)
if err != nil {
g.Log().Error(err)
}
// 查询所有状态为正常的分类
classificationList, err := blog_service.FindAllList()
if err != nil {
g.Log().Error(err)
}
classifications := getClassificationgList(classificationList, 0)
tplData := g.Map{
"list": list,
"pageStyle": r.GetPage(total, pageSize).GetContent(3),
"classificationList": classifications,
"hitsList": hitsList,
"linkList": linkList,
"coffeeArticle": coffeeArticle,
"recommendList": recommendList,
"newList": newList,
"classification": classification,
}
if classification != nil && classification.ClassificationType == 4 {
//单页
blog.Response(r, "content.html", tplData)
} else {
blog.Response(r, "blogList.html", tplData)
}
}
// 内容页面(关于博主)
func (c *Index) Content(r *ghttp.Request) {
logId := r.GetInt("logId")
// 根据id查询对应博客日志
log, err := blog_service.GetLogByID(int64(logId))
if err != nil {
g.Log().Error(err)
}
// 更新点击数
log.LogHits += 1
blog_log.Model.Save(log.Entity)
if log.LogUrl != "" {
//跳转连接
r.Response.RedirectTo(log.LogUrl)
r.Exit()
}
// 查询4篇相关文章(同一分类下最新的4篇)
relevantList, err := blog_service.FindSizeArticle(4, 1, log.LogType)
if err != nil {
g.Log().Error(err)
}
// 查询10篇根据点击数排序的文章用于排行榜
hitsList, err := blog_service.FindArticleByHits(10, 1)
if err != nil {
g.Log().Error(err)
}
// 查询友情链接
linkList, err := plug_link_service.ListByTypeId(13, 6, 1)
if err != nil {
g.Log().Error(err)
}
// 查询赞助分类
coffeeArticle, err := plug_service.GetSizeAd(2, 1, 21)
if err != nil {
g.Log().Error(err)
}
// 查询推荐文章
recommendList, err := blog_service.FindSizeArticleBySign(4, 1, 3, 0)
if err != nil {
g.Log().Error(err)
}
// 查询最新文章
newList, err := blog_service.FindSizeArticleBySign(4, 1, 0, 0)
if err != nil {
g.Log().Error(err)
}
// 查询所有状态为正常的分类
classificationList, err := blog_service.FindAllList()
if err != nil {
g.Log().Error(err)
}
classifications := getClassificationgList(classificationList, 0)
// 查询当前日志的未停用评论
req := new(blog_comment.SelectPageReq)
req.Status = "1"
req.PageSize = 5
req.Flag = 1
req.PageNum = r.GetInt64("page")
req.CommentLogIds = append(req.CommentLogIds, logId)
total, _, commentList, err := blog_service.SelectCommentListByPage(req) // 分页查询一级评论
commentList, err = blog_service.GetChildren(commentList) // 查出二级评论(回复)
blog.Response(r, "content.html", g.Map{
"classificationList": classifications,
"log": log,
"hitsList": hitsList,
"linkList": linkList,
"coffeeArticle": coffeeArticle,
"recommendList": recommendList,
"newList": newList,
"pageStyle": r.GetPage(total, int(req.PageSize)).GetContent(3),
"commentList": commentList,
"relevantList": relevantList,
})
}
// 新增评论
func (c *Index) AddComment(r *ghttp.Request) {
if r.Method == "POST" {
var req *blog_comment.AddReq
err := r.Parse(&req)
if err != nil {
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
}
err = blog_service.AddCommentSave(req)
if err != nil {
response.FailJson(true, r, err.Error())
}
response.SusJson(true, r, "添加成功")
}
}
// 友情链接申请
func (c *Index) Link(r *ghttp.Request) {
// 查询10篇根据点击数排序的文章用于排行榜
hitsList, err := blog_service.FindArticleByHits(10, 1)
if err != nil {
g.Log().Error(err)
}
// 查询友情链接
linkList, err := plug_link_service.ListByTypeId(13, 6, 1)
if err != nil {
g.Log().Error(err)
}
// 查询赞助分类
coffeeArticle, err := plug_service.GetSizeAd(2, 1, 21)
if err != nil {
g.Log().Error(err)
}
// 查询推荐文章
recommendList, err := blog_service.FindSizeArticleBySign(4, 1, 3, 0)
if err != nil {
g.Log().Error(err)
}
// 查询最新文章
newList, err := blog_service.FindSizeArticleBySign(4, 1, 0, 0)
if err != nil {
g.Log().Error(err)
}
// 查询所有状态为正常的分类
classificationList, err := blog_service.FindAllList()
if err != nil {
g.Log().Error(err)
}
classifications := getClassificationgList(classificationList, 0)
blog.Response(r, "link.html", g.Map{
"classificationList": classifications,
"hitsList": hitsList,
"linkList": linkList,
"coffeeArticle": coffeeArticle,
"recommendList": recommendList,
"newList": newList,
})
}
// 添加申请友情链接
func (c *Index) AddLink(r *ghttp.Request) {
if r.Method == "POST" {
var req = new(plug_link.AddReq)
err := r.Parse(req)
req.LinkOpen = 0
req.LinkTarget = "_blank"
if err != nil {
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
}
err = plug_link_service.AddSavePlugLink(req)
if err != nil {
response.FailJson(true, r, err.Error())
}
response.SusJson(true, r, "提交成功")
}
}