response.go 3.7 KB

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