cms_menu.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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. //获取分类栏目模板
  77. ListTemp, contentTemp := cms_service.GetCmsTemplate()
  78. res := g.Map{
  79. "parentList": menus,
  80. "listTemp": ListTemp,
  81. "contentTemp": contentTemp,
  82. }
  83. response.SusJson(true, r, "添加栏目", res)
  84. }
  85. // @Summary 修改栏目
  86. // @Description 修改栏目
  87. // @Tags 栏目管理
  88. // @Param data body cms_category.ReqEdit true "data"
  89. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  90. // @Router /system/cms/menu/edit [post]
  91. // @Security
  92. func (c *CmsMenu) Edit(r *ghttp.Request) {
  93. if r.Method == "POST" {
  94. var req *cms_category.ReqEdit
  95. //获取参数
  96. if err := r.Parse(&req); err != nil {
  97. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  98. }
  99. _, err := cms_service.EditSave(req)
  100. if err != nil {
  101. response.FailJson(true, r, err.Error())
  102. }
  103. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  104. response.SusJson(true, r, "栏目修改成功")
  105. }
  106. //获取栏目数据
  107. id := r.GetInt("id")
  108. menuInfo, err := cms_service.GetMenuInfoById(id)
  109. if err != nil {
  110. response.FailJson(true, r, err.Error())
  111. }
  112. if menuInfo == nil {
  113. response.FailJson(true, r, "参数错误")
  114. }
  115. //获取上级分类(频道)
  116. menus, err := cms_service.GetMenuListChannel()
  117. if err != nil {
  118. response.FailJson(true, r, err.Error())
  119. }
  120. //获取分类栏目模板
  121. ListTemp, contentTemp := cms_service.GetCmsTemplate()
  122. res := g.Map{
  123. "menuInfo": menuInfo,
  124. "parentList": menus,
  125. "listTemp": ListTemp,
  126. "contentTemp": contentTemp,
  127. }
  128. response.SusJson(true, r, "修改栏目", res)
  129. }
  130. // @Summary 栏目排序
  131. // @Description 栏目排序
  132. // @Tags 栏目管理
  133. // @Param data body string true "data"
  134. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  135. // @Router /system/cms/menu/sort [post]
  136. // @Security
  137. func (c *CmsMenu) Sort(r *ghttp.Request) {
  138. sorts := r.Get("sorts")
  139. s := gconv.Map(sorts)
  140. if s == nil {
  141. response.FailJson(true, r, "排序失败")
  142. }
  143. for k, v := range s {
  144. cms_category.Model.Where("id=?", k).Data("list_order", v).Update()
  145. }
  146. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  147. response.SusJson(true, r, "排序成功")
  148. }
  149. // @Summary 删除栏目
  150. // @Description 删除栏目
  151. // @Tags 栏目管理
  152. // @Param ids body integer true "ids"
  153. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  154. // @Router /system/cms/menu/delete [delete]
  155. // @Security
  156. func (c *CmsMenu) Delete(r *ghttp.Request) {
  157. ids := r.GetInts("ids")
  158. if len(ids) == 0 {
  159. response.FailJson(true, r, "删除失败")
  160. }
  161. err := cms_service.DeleteMenuByIds(ids)
  162. if err != nil {
  163. response.FailJson(true, r, "删除失败")
  164. }
  165. cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
  166. response.SusJson(true, r, "删除信息成功", ids)
  167. }
  168. // @Summary 栏目模型选项
  169. // @Description 栏目模型选项
  170. // @Tags 栏目管理
  171. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  172. // @Router /system/cms/menu/modelOptions [get]
  173. // @Security
  174. func (c *CmsMenu) ModelOptions(r *ghttp.Request) {
  175. //栏目模型分类
  176. modelOptions, err := dict_service.GetDictWithDataByType("cms_cate_models", "", "")
  177. if err != nil {
  178. response.FailJson(true, r, err.Error())
  179. }
  180. values := gconv.SliceAny(modelOptions["values"])
  181. keys := make([]int, len(values))
  182. for k, val := range values {
  183. data := gconv.Map(val)
  184. keys[k] = gconv.Int(data["key"])
  185. }
  186. //获取对应模型
  187. models, err := model_service.GetModelsByCateIds(keys)
  188. if err != nil {
  189. response.FailJson(true, r, err.Error())
  190. }
  191. response.SusJson(true, r, "ok", models)
  192. }