index.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. package home
  2. import (
  3. "gfast/app/model/admin/plug_link"
  4. "gfast/app/service/admin/plug_link_service"
  5. "gfast/app/service/admin/plug_service"
  6. "gfast/library/response"
  7. "gfast/library/response/plugin/blog"
  8. "gfast/plugin/blog/model/blog_classification"
  9. "gfast/plugin/blog/model/blog_comment"
  10. "gfast/plugin/blog/model/blog_log"
  11. "gfast/plugin/blog/service/blog_service"
  12. "github.com/gogf/gf/frame/g"
  13. "github.com/gogf/gf/net/ghttp"
  14. "github.com/gogf/gf/util/gvalid"
  15. )
  16. type Index struct{}
  17. type Classification struct {
  18. *blog_classification.Entity
  19. Children []*Classification
  20. }
  21. // 首页
  22. func (c *Index) Index(r *ghttp.Request) {
  23. // 查询文章列表
  24. var req = new(blog_log.SelectPageReq)
  25. req.PageSize = 8
  26. req.Status = 1
  27. _, _, logList, err := blog_service.SelectLogListByPage(req)
  28. if err != nil {
  29. g.Log().Error(err)
  30. }
  31. // 查询3篇置顶文章列表
  32. topList, err := blog_service.FindSizeArticleBySign(3, 1, 1, 0)
  33. if err != nil {
  34. g.Log().Error(err)
  35. }
  36. // 查询3篇幻灯
  37. slideList, err := blog_service.FindSizeArticleBySign(3, 1, 2, 0)
  38. if err != nil {
  39. g.Log().Error(err)
  40. }
  41. // 查询10篇根据点击数排序的文章用于排行榜
  42. hitsList, err := blog_service.FindArticleByHits(10, 1)
  43. if err != nil {
  44. g.Log().Error(err)
  45. }
  46. // 查询友情链接
  47. linkList, err := plug_link_service.ListByTypeId(13, 6, 1)
  48. if err != nil {
  49. g.Log().Error(err)
  50. }
  51. // 查询赞助分类
  52. coffeeArticle, err := plug_service.GetSizeAd(2, 1, 21)
  53. if err != nil {
  54. g.Log().Error(err)
  55. }
  56. // 查询推荐文章
  57. recommendList, err := blog_service.FindSizeArticleBySign(4, 1, 3, 0)
  58. if err != nil {
  59. g.Log().Error(err)
  60. }
  61. // 查询最新文章
  62. newList, err := blog_service.FindSizeArticleBySign(4, 1, 0, 0)
  63. if err != nil {
  64. g.Log().Error(err)
  65. }
  66. // 查询所有状态为正常的分类
  67. classificationList, err := blog_service.FindAllList()
  68. if err != nil {
  69. g.Log().Error(err)
  70. }
  71. classifications := getClassificationgList(classificationList, 0)
  72. blog.Response(r, "homePage.html", g.Map{
  73. "logList": logList,
  74. "topList": topList,
  75. "slideList": slideList,
  76. "hitsList": hitsList,
  77. "linkList": linkList,
  78. "coffeeArticle": coffeeArticle,
  79. "recommendList": recommendList,
  80. "newList": newList,
  81. "classificationList": classifications,
  82. })
  83. }
  84. func getClassificationgList(classificationList []*blog_classification.Entity, pid uint) (cList []*Classification) {
  85. cList = make([]*Classification, 0, len(classificationList))
  86. for _, c1 := range classificationList {
  87. var cl *Classification
  88. if c1.ClassificationPid == pid {
  89. cl = &Classification{Entity: c1}
  90. cl.Children = getClassificationgList(classificationList, c1.ClassificationId)
  91. cList = append(cList, cl)
  92. }
  93. }
  94. return
  95. }
  96. // 分类、搜索
  97. func (c *Index) BlogList(r *ghttp.Request) {
  98. // 根据条件查询当前分类下的文章
  99. var req = new(blog_log.SelectPageReq)
  100. req.PageNum = r.GetInt64("page")
  101. pageSize := 10
  102. req.PageSize = int64(pageSize)
  103. req.LogTitle = r.GetString("keyboard")
  104. req.Status = 1
  105. cateId := r.GetInt("cateId")
  106. req.CateTypeId = cateId
  107. total, _, list, err := blog_service.SelectLogListByPage(req)
  108. if err != nil {
  109. g.Log().Error(err)
  110. }
  111. // 根据分类id查询分类(分类名用于导航)
  112. classification, err := blog_service.GetClassificationByID(int64(cateId))
  113. if err != nil {
  114. g.Log().Error(err)
  115. }
  116. // 以下为右边侧栏所需数据
  117. // 查询10篇根据点击数排序的文章用于排行榜
  118. hitsList, err := blog_service.FindArticleByHits(10, 1)
  119. if err != nil {
  120. g.Log().Error(err)
  121. }
  122. // 查询友情链接
  123. linkList, err := plug_link_service.ListByTypeId(13, 6, 1)
  124. if err != nil {
  125. g.Log().Error(err)
  126. }
  127. // 查询赞助分类
  128. coffeeArticle, err := plug_service.GetSizeAd(2, 1, 21)
  129. if err != nil {
  130. g.Log().Error(err)
  131. }
  132. // 查询推荐文章
  133. recommendList, err := blog_service.FindSizeArticleBySign(4, 1, 3, 0)
  134. if err != nil {
  135. g.Log().Error(err)
  136. }
  137. // 查询最新文章
  138. newList, err := blog_service.FindSizeArticleBySign(4, 1, 0, 0)
  139. if err != nil {
  140. g.Log().Error(err)
  141. }
  142. // 查询所有状态为正常的分类
  143. classificationList, err := blog_service.FindAllList()
  144. if err != nil {
  145. g.Log().Error(err)
  146. }
  147. classifications := getClassificationgList(classificationList, 0)
  148. tplData := g.Map{
  149. "list": list,
  150. "pageStyle": r.GetPage(total, pageSize).GetContent(3),
  151. "classificationList": classifications,
  152. "hitsList": hitsList,
  153. "linkList": linkList,
  154. "coffeeArticle": coffeeArticle,
  155. "recommendList": recommendList,
  156. "newList": newList,
  157. "classification": classification,
  158. }
  159. if classification != nil && classification.ClassificationType == 4 {
  160. //单页
  161. blog.Response(r, "content.html", tplData)
  162. } else {
  163. blog.Response(r, "blogList.html", tplData)
  164. }
  165. }
  166. // 内容页面(关于博主)
  167. func (c *Index) Content(r *ghttp.Request) {
  168. logId := r.GetInt("logId")
  169. // 根据id查询对应博客日志
  170. log, err := blog_service.GetLogByID(int64(logId))
  171. if err != nil {
  172. g.Log().Error(err)
  173. }
  174. // 更新点击数
  175. log.LogHits += 1
  176. blog_log.Model.Save(log.Entity)
  177. if log.LogUrl != "" {
  178. //跳转连接
  179. r.Response.RedirectTo(log.LogUrl)
  180. r.Exit()
  181. }
  182. // 查询4篇相关文章(同一分类下最新的4篇)
  183. relevantList, err := blog_service.FindSizeArticle(4, 1, log.LogType)
  184. if err != nil {
  185. g.Log().Error(err)
  186. }
  187. // 查询10篇根据点击数排序的文章用于排行榜
  188. hitsList, err := blog_service.FindArticleByHits(10, 1)
  189. if err != nil {
  190. g.Log().Error(err)
  191. }
  192. // 查询友情链接
  193. linkList, err := plug_link_service.ListByTypeId(13, 6, 1)
  194. if err != nil {
  195. g.Log().Error(err)
  196. }
  197. // 查询赞助分类
  198. coffeeArticle, err := plug_service.GetSizeAd(2, 1, 21)
  199. if err != nil {
  200. g.Log().Error(err)
  201. }
  202. // 查询推荐文章
  203. recommendList, err := blog_service.FindSizeArticleBySign(4, 1, 3, 0)
  204. if err != nil {
  205. g.Log().Error(err)
  206. }
  207. // 查询最新文章
  208. newList, err := blog_service.FindSizeArticleBySign(4, 1, 0, 0)
  209. if err != nil {
  210. g.Log().Error(err)
  211. }
  212. // 查询所有状态为正常的分类
  213. classificationList, err := blog_service.FindAllList()
  214. if err != nil {
  215. g.Log().Error(err)
  216. }
  217. classifications := getClassificationgList(classificationList, 0)
  218. // 查询当前日志的未停用评论
  219. req := new(blog_comment.SelectPageReq)
  220. req.Status = "1"
  221. req.PageSize = 5
  222. req.Flag = 1
  223. req.PageNum = r.GetInt64("page")
  224. req.CommentLogIds = append(req.CommentLogIds, logId)
  225. total, _, commentList, err := blog_service.SelectCommentListByPage(req) // 分页查询一级评论
  226. commentList, err = blog_service.GetChildren(commentList) // 查出二级评论(回复)
  227. blog.Response(r, "content.html", g.Map{
  228. "classificationList": classifications,
  229. "log": log,
  230. "hitsList": hitsList,
  231. "linkList": linkList,
  232. "coffeeArticle": coffeeArticle,
  233. "recommendList": recommendList,
  234. "newList": newList,
  235. "pageStyle": r.GetPage(total, int(req.PageSize)).GetContent(3),
  236. "commentList": commentList,
  237. "relevantList": relevantList,
  238. })
  239. }
  240. // 新增评论
  241. func (c *Index) AddComment(r *ghttp.Request) {
  242. if r.Method == "POST" {
  243. var req *blog_comment.AddReq
  244. err := r.Parse(&req)
  245. if err != nil {
  246. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  247. }
  248. err = blog_service.AddCommentSave(req)
  249. if err != nil {
  250. response.FailJson(true, r, err.Error())
  251. }
  252. response.SusJson(true, r, "添加成功")
  253. }
  254. }
  255. // 友情链接申请
  256. func (c *Index) Link(r *ghttp.Request) {
  257. // 查询10篇根据点击数排序的文章用于排行榜
  258. hitsList, err := blog_service.FindArticleByHits(10, 1)
  259. if err != nil {
  260. g.Log().Error(err)
  261. }
  262. // 查询友情链接
  263. linkList, err := plug_link_service.ListByTypeId(13, 6, 1)
  264. if err != nil {
  265. g.Log().Error(err)
  266. }
  267. // 查询赞助分类
  268. coffeeArticle, err := plug_service.GetSizeAd(2, 1, 21)
  269. if err != nil {
  270. g.Log().Error(err)
  271. }
  272. // 查询推荐文章
  273. recommendList, err := blog_service.FindSizeArticleBySign(4, 1, 3, 0)
  274. if err != nil {
  275. g.Log().Error(err)
  276. }
  277. // 查询最新文章
  278. newList, err := blog_service.FindSizeArticleBySign(4, 1, 0, 0)
  279. if err != nil {
  280. g.Log().Error(err)
  281. }
  282. // 查询所有状态为正常的分类
  283. classificationList, err := blog_service.FindAllList()
  284. if err != nil {
  285. g.Log().Error(err)
  286. }
  287. classifications := getClassificationgList(classificationList, 0)
  288. blog.Response(r, "link.html", g.Map{
  289. "classificationList": classifications,
  290. "hitsList": hitsList,
  291. "linkList": linkList,
  292. "coffeeArticle": coffeeArticle,
  293. "recommendList": recommendList,
  294. "newList": newList,
  295. })
  296. }
  297. // 添加申请友情链接
  298. func (c *Index) AddLink(r *ghttp.Request) {
  299. if r.Method == "POST" {
  300. var req = new(plug_link.AddReq)
  301. err := r.Parse(req)
  302. req.LinkOpen = 0
  303. req.LinkTarget = "_blank"
  304. if err != nil {
  305. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  306. }
  307. err = plug_link_service.AddSavePlugLink(req)
  308. if err != nil {
  309. response.FailJson(true, r, err.Error())
  310. }
  311. response.SusJson(true, r, "提交成功")
  312. }
  313. }