cms_menu.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  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/admin/model_service"
  7. "gfast/app/service/cache_service"
  8. "gfast/library/response"
  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. // @Summary 栏目列表
  17. // @Description 分页列表
  18. // @Tags 栏目管理
  19. // @Param data body cms_category.ReqSearchList true "data"
  20. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  21. // @Router /system/cms/menu/list [get]
  22. // @Security
  23. func (c *CmsMenu) List(r *ghttp.Request) {
  24. var req *cms_category.ReqSearchList
  25. //获取参数
  26. if err := r.Parse(&req); err != nil {
  27. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  28. }
  29. menus, err := cms_service.GetMenuListSearch(req)
  30. if err != nil {
  31. response.FailJson(true, r, err.Error())
  32. }
  33. //栏目显示状态
  34. statusOptions, err := dict_service.GetDictWithDataByType("sys_show_hide", "", "")
  35. if err != nil {
  36. response.FailJson(true, r, err.Error())
  37. }
  38. //栏目类型
  39. typeOptions, err := dict_service.GetDictWithDataByType("cms_category_type", "", "")
  40. if err != nil {
  41. response.FailJson(true, r, err.Error())
  42. }
  43. res := g.Map{
  44. "list": menus,
  45. "statusOptions": statusOptions,
  46. "typeOptions": typeOptions,
  47. }
  48. response.SusJson(true, r, "ok", res)
  49. }
  50. // @Summary 添加栏目
  51. // @Description 添加栏目
  52. // @Tags 栏目管理
  53. // @Param data body cms_category.ReqAdd true "data"
  54. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  55. // @Router /system/cms/menu/add [post]
  56. // @Security
  57. func (c *CmsMenu) Add(r *ghttp.Request) {
  58. if r.Method == "POST" {
  59. var req *cms_category.ReqAdd
  60. //获取参数
  61. if err := r.Parse(&req); err != nil {
  62. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  63. }
  64. _, err := cms_service.AddSave(req)
  65. if err != nil {
  66. response.FailJson(true, r, err.Error())
  67. }
  68. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  69. response.SusJson(true, r, "栏目添加成功")
  70. }
  71. //获取上级分类(频道)
  72. menus, err := cms_service.GetMenuListChannel()
  73. if err != nil {
  74. response.FailJson(true, r, err.Error())
  75. }
  76. res := g.Map{
  77. "parentList": menus,
  78. }
  79. response.SusJson(true, r, "添加栏目", res)
  80. }
  81. // @Summary 修改栏目
  82. // @Description 修改栏目
  83. // @Tags 栏目管理
  84. // @Param data body cms_category.ReqEdit true "data"
  85. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  86. // @Router /system/cms/menu/edit [post]
  87. // @Security
  88. func (c *CmsMenu) Edit(r *ghttp.Request) {
  89. if r.Method == "POST" {
  90. var req *cms_category.ReqEdit
  91. //获取参数
  92. if err := r.Parse(&req); err != nil {
  93. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  94. }
  95. _, err := cms_service.EditSave(req)
  96. if err != nil {
  97. response.FailJson(true, r, err.Error())
  98. }
  99. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  100. response.SusJson(true, r, "栏目修改成功")
  101. }
  102. //获取栏目数据
  103. id := r.GetInt("id")
  104. menuInfo, err := cms_service.GetMenuInfoById(id)
  105. if err != nil {
  106. response.FailJson(true, r, err.Error())
  107. }
  108. if menuInfo == nil {
  109. response.FailJson(true, r, "参数错误")
  110. }
  111. //获取上级分类(频道)
  112. menus, err := cms_service.GetMenuListChannel()
  113. if err != nil {
  114. response.FailJson(true, r, err.Error())
  115. }
  116. res := g.Map{
  117. "menuInfo": menuInfo,
  118. "parentList": menus,
  119. }
  120. response.SusJson(true, r, "修改栏目", res)
  121. }
  122. // @Summary 栏目排序
  123. // @Description 栏目排序
  124. // @Tags 栏目管理
  125. // @Param data body string true "data"
  126. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  127. // @Router /system/cms/menu/sort [post]
  128. // @Security
  129. func (c *CmsMenu) Sort(r *ghttp.Request) {
  130. sorts := r.Get("sorts")
  131. s := gconv.Map(sorts)
  132. if s == nil {
  133. response.FailJson(true, r, "排序失败")
  134. }
  135. for k, v := range s {
  136. cms_category.Model.Where("id=?", k).Data("list_order", v).Update()
  137. }
  138. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  139. response.SusJson(true, r, "排序成功")
  140. }
  141. // @Summary 删除栏目
  142. // @Description 删除栏目
  143. // @Tags 栏目管理
  144. // @Param ids body integer true "ids"
  145. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  146. // @Router /system/cms/menu/delete [delete]
  147. // @Security
  148. func (c *CmsMenu) Delete(r *ghttp.Request) {
  149. ids := r.GetInts("ids")
  150. if len(ids) == 0 {
  151. response.FailJson(true, r, "删除失败")
  152. }
  153. err := cms_service.DeleteMenuByIds(ids)
  154. if err != nil {
  155. response.FailJson(true, r, "删除失败")
  156. }
  157. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  158. response.SusJson(true, r, "删除信息成功", ids)
  159. }
  160. // @Summary 栏目模型选项
  161. // @Description 栏目模型选项
  162. // @Tags 栏目管理
  163. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  164. // @Router /system/cms/menu/modelOptions [get]
  165. // @Security
  166. func (c *CmsMenu) ModelOptions(r *ghttp.Request) {
  167. //栏目模型分类
  168. modelOptions, err := dict_service.GetDictWithDataByType("cms_cate_models", "", "")
  169. if err != nil {
  170. response.FailJson(true, r, err.Error())
  171. }
  172. values := gconv.SliceAny(modelOptions["values"])
  173. keys := make([]int, len(values))
  174. for k, val := range values {
  175. data := gconv.Map(val)
  176. keys[k] = gconv.Int(data["key"])
  177. }
  178. //获取对应模型
  179. models, err := model_service.GetModelsByCateIds(keys)
  180. if err != nil {
  181. response.FailJson(true, r, err.Error())
  182. }
  183. response.SusJson(true, r, "ok", models)
  184. }