response.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package home
  2. import (
  3. "gfast/app/model/admin/cms_category"
  4. "gfast/app/model/admin/cms_category_news"
  5. "gfast/app/model/admin/cms_news"
  6. "gfast/app/service/admin/cms_service"
  7. "gfast/app/service/home/menu_service"
  8. "gfast/app/service/home/news_service"
  9. "gfast/library/response"
  10. "gfast/library/utils"
  11. "github.com/gogf/gf/container/gvar"
  12. "github.com/gogf/gf/frame/g"
  13. "github.com/gogf/gf/net/ghttp"
  14. "github.com/gogf/gf/os/gview"
  15. "github.com/gogf/gf/util/gconv"
  16. )
  17. func Response(r *ghttp.Request, tpl string, params ...gview.Params) error {
  18. v := g.View()
  19. v.SetPath("template/cms")
  20. //绑定模板中需要用到的方法
  21. v.BindFuncMap(g.Map{
  22. //获取导航菜单列表
  23. "GetNav": func(activeId uint64) string {
  24. nav, err := menu_service.GetNav(activeId)
  25. if err != nil {
  26. g.Log().Error(err)
  27. }
  28. return nav
  29. },
  30. //获取文章调用参数
  31. "GetNewsParams": func(args interface{}) *cms_news.ReqListSearchParams {
  32. params := new(cms_news.ReqListSearchParams)
  33. err := gconv.Struct(args, params)
  34. if err != nil {
  35. g.Log().Error(err)
  36. }
  37. return params
  38. },
  39. //设置文章参数
  40. "SetNewsParams": func(params g.Map, key string, value interface{}) g.Map {
  41. if params != nil {
  42. params[key] = value
  43. } else {
  44. params = g.Map{key: value}
  45. }
  46. return params
  47. },
  48. //获取文章列表
  49. "GetNewsList": func(cateId int, pageSize int, attr ...*cms_news.ReqListSearchParams) []*cms_news.NewsList {
  50. list, err := news_service.GetNewsList(cateId, pageSize, attr...)
  51. if err != nil {
  52. g.Log().Error(err)
  53. }
  54. return list
  55. },
  56. //
  57. "GetVarsValue": func(val *gvar.Var) map[string]string {
  58. return val.MapStrStr()
  59. },
  60. //获取栏目面包树
  61. "GetMenuBreadTree": func(menu *cms_category.Entity) g.List {
  62. // 获取所有栏目
  63. menus, err := cms_service.GetMenuList()
  64. if err != nil {
  65. g.Log().Error(err)
  66. }
  67. menuList := make(g.List, len(menus))
  68. for k, m := range menus {
  69. menuList[k] = gconv.Map(m)
  70. }
  71. breadMenus := utils.FindParentBySonPid(menuList, gconv.Int(menu.Id), "filter", "parent_id", nil, "id")
  72. //获取最顶级
  73. var topMenus g.Map
  74. if menu != nil {
  75. topMenus = utils.FindTopParent(menuList, gconv.Int64(menu.Id), "parent_id", "id")
  76. }
  77. breadMenus = utils.ParentSonSort(breadMenus, topMenus["parent_id"], 1, "parent_id")
  78. return breadMenus
  79. },
  80. "getArticleCateId": func(cateList *gvar.Var) int {
  81. val := gconv.Map(cateList.Val())
  82. for index, _ := range val {
  83. return gconv.Int(index)
  84. }
  85. return 0
  86. },
  87. "isSon": func(id, menus interface{}) bool {
  88. i := gconv.Int(id)
  89. m := gconv.SliceMap(menus)
  90. for _, v := range m {
  91. if gconv.Int(v["parent_id"]) == i {
  92. return true
  93. }
  94. }
  95. return false
  96. },
  97. "getThumb": func(more interface{}) string {
  98. m := gconv.Map(more)
  99. m1 := gconv.String(m["thumb"])
  100. return m1
  101. },
  102. // 通过文章id获取所属栏目id
  103. "getCateIdByArticleId": func(articleId interface{}) int {
  104. aid := gconv.Uint64(articleId)
  105. cateIds, _ := cms_category_news.GetCheckedCategoryIdByNewsId(aid)
  106. return cateIds[0]
  107. },
  108. // 取出视频格式
  109. "getVideoFormat": func(videoName interface{}) string {
  110. data := []byte(gconv.String(videoName))
  111. var data2 []byte
  112. for i := len(data) - 3; i < len(data); i++ {
  113. data2 = append(data2, data[i])
  114. }
  115. videoFormat := string(data2)
  116. return videoFormat
  117. },
  118. })
  119. //文章参数
  120. params = append(params, g.Map{"newsParams": g.Map{}})
  121. return response.WriteTpl(r, tpl, v, params...)
  122. }