cms_menu.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package admin
  2. import (
  3. "gfast/app/model/admin/cms_category"
  4. "gfast/app/service/admin/cms_service"
  5. "gfast/app/service/admin/dict_service"
  6. "gfast/app/service/cache_service"
  7. "gfast/library/response"
  8. "gfast/library/utils"
  9. "github.com/gogf/gf/frame/g"
  10. "github.com/gogf/gf/net/ghttp"
  11. "github.com/gogf/gf/util/gconv"
  12. "github.com/gogf/gf/util/gvalid"
  13. )
  14. //cms栏目管理
  15. type CmsMenu struct{}
  16. func (c *CmsMenu) List(r *ghttp.Request) {
  17. var req *cms_category.ReqSearchList
  18. //获取参数
  19. if err := r.Parse(&req); err != nil {
  20. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  21. }
  22. var menus []*cms_category.Entity
  23. var err error
  24. var list g.List
  25. if req != nil && req.Name != "" {
  26. //按栏目名搜索
  27. menus, err = cms_service.GetMenuListSearch(req)
  28. if err != nil {
  29. response.FailJson(true, r, err.Error())
  30. }
  31. list = gconv.Maps(menus)
  32. } else {
  33. //获取所有栏目
  34. menus, err = cms_service.GetMenuList()
  35. if err != nil {
  36. response.FailJson(true, r, err.Error())
  37. }
  38. list = gconv.Maps(menus)
  39. list = utils.PushSonToParent(list, 0, "parent_id")
  40. }
  41. res := g.Map{
  42. "list": list,
  43. }
  44. response.SusJson(true, r, "ok", res)
  45. }
  46. //添加栏目分类
  47. func (c *CmsMenu) Add(r *ghttp.Request) {
  48. if r.Method == "POST" {
  49. var req *cms_category.ReqAdd
  50. //获取参数
  51. if err := r.Parse(&req); err != nil {
  52. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  53. }
  54. _, err := cms_service.AddSave(req)
  55. if err != nil {
  56. response.FailJson(true, r, err.Error())
  57. }
  58. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  59. response.SusJson(true, r, "栏目添加成功")
  60. }
  61. //获取上级分类(频道)
  62. menus, err := cms_service.GetMenuListChannel()
  63. if err != nil {
  64. response.FailJson(true, r, err.Error())
  65. }
  66. menuTop := []*cms_category.Entity{
  67. {
  68. Id: 0,
  69. ParentId: -1,
  70. Status: 1,
  71. Name: "最顶级",
  72. CateType: 1,
  73. },
  74. }
  75. menus = append(menuTop, menus...)
  76. list := gconv.Maps(menus)
  77. list = utils.PushSonToParent(list, -1, "parent_id")
  78. typeChecker, err := dict_service.GetDictWithDataByType("cms_category_type", "", "")
  79. if err != nil {
  80. response.FailJson(true, r, err.Error())
  81. }
  82. res := g.Map{
  83. "menus": list,
  84. "typeChecker": typeChecker,
  85. }
  86. response.SusJson(true, r, "添加栏目", res)
  87. }
  88. //修改栏目
  89. func (c *CmsMenu) Edit(r *ghttp.Request) {
  90. if r.Method == "POST" {
  91. var req *cms_category.ReqEdit
  92. //获取参数
  93. if err := r.Parse(&req); err != nil {
  94. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  95. }
  96. _, err := cms_service.EditSave(req)
  97. if err != nil {
  98. response.FailJson(true, r, err.Error())
  99. }
  100. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  101. response.SusJson(true, r, "栏目修改成功")
  102. }
  103. //获取栏目数据
  104. id := r.GetInt("id")
  105. menuInfo, err := cms_service.GetMenuInfoById(id)
  106. if err != nil {
  107. response.FailJson(true, r, err.Error())
  108. }
  109. if menuInfo == nil {
  110. response.FailJson(true, r, "参数错误")
  111. }
  112. //获取上级分类(频道)
  113. menus, err := cms_service.GetMenuListChannel()
  114. if err != nil {
  115. response.FailJson(true, r, err.Error())
  116. }
  117. menuTop := []*cms_category.Entity{
  118. {
  119. Id: 0,
  120. ParentId: -1,
  121. Status: 1,
  122. Name: "最顶级",
  123. CateType: 1,
  124. },
  125. }
  126. menus = append(menuTop, menus...)
  127. list := gconv.Maps(menus)
  128. list = utils.PushSonToParent(list, -1, "parent_id")
  129. typeChecker, err := dict_service.GetDictWithDataByType("cms_category_type", gconv.String(menuInfo.CateType), "")
  130. if err != nil {
  131. response.FailJson(true, r, err.Error())
  132. }
  133. res := g.Map{
  134. "menuInfo": menuInfo,
  135. "menus": list,
  136. "typeChecker": typeChecker,
  137. }
  138. response.SusJson(true, r, "修改栏目", res)
  139. }
  140. //栏目排序
  141. func (c *CmsMenu) Sort(r *ghttp.Request) {
  142. sorts := r.Get("sorts")
  143. s := gconv.Map(sorts)
  144. if s == nil {
  145. response.FailJson(true, r, "排序失败")
  146. }
  147. for k, v := range s {
  148. cms_category.Model.Where("id=?", k).Data("list_order", v).Update()
  149. }
  150. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  151. response.SusJson(true, r, "排序成功")
  152. }