node_banner.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package admin
  2. import (
  3. "app/commons/constant"
  4. "app/commons/model/entity"
  5. "app/commons/services"
  6. "github.com/gin-gonic/gin"
  7. )
  8. // CreateNodeBanner 创建节点Banner
  9. func (s *Server) CreateNodeBanner(ctx *gin.Context) {
  10. c := s.FromContext(ctx)
  11. type Request struct {
  12. Name string `json:"name" binding:"required"`
  13. Url string `json:"url" binding:"required"`
  14. Sort int `json:"sort"`
  15. Remark string `json:"remark"`
  16. }
  17. req := new(Request)
  18. if err := c.ShouldBindJSON(&req); err != nil {
  19. c.Fail(constant.ErrorParams)
  20. return
  21. }
  22. banner := &entity.NodeBanner{
  23. Name: req.Name,
  24. Url: req.Url,
  25. Sort: req.Sort,
  26. Remark: req.Remark,
  27. }
  28. if err := s.DB().Create(banner).Error; err != nil {
  29. c.Fail(err.Error())
  30. return
  31. }
  32. c.Resp(banner)
  33. }
  34. // UpdateNodeBanner 更新节点Banner
  35. func (s *Server) UpdateNodeBanner(ctx *gin.Context) {
  36. c := s.FromContext(ctx)
  37. type Request struct {
  38. Id int64 `json:"id" binding:"required"`
  39. Name *string `json:"name"`
  40. Url *string `json:"url"`
  41. Sort *int `json:"sort"`
  42. Remark *string `json:"remark"`
  43. }
  44. req := new(Request)
  45. if err := c.ShouldBindJSON(&req); err != nil {
  46. c.Fail(constant.ErrorParams)
  47. return
  48. }
  49. banner := &entity.NodeBanner{}
  50. if err := s.DB().First(banner, req.Id).Error; err != nil {
  51. c.Fail(constant.ErrorInfo)
  52. return
  53. }
  54. updates := make(map[string]interface{})
  55. if req.Name != nil {
  56. updates["name"] = *req.Name
  57. }
  58. if req.Url != nil {
  59. updates["url"] = *req.Url
  60. }
  61. if req.Sort != nil {
  62. updates["sort"] = *req.Sort
  63. }
  64. if req.Remark != nil {
  65. updates["remark"] = *req.Remark
  66. }
  67. if err := s.DB().Model(banner).Updates(updates).Error; err != nil {
  68. c.Fail(err.Error())
  69. return
  70. }
  71. c.Resp(banner)
  72. }
  73. // DeleteNodeBanner 删除节点Banner
  74. func (s *Server) DeleteNodeBanner(ctx *gin.Context) {
  75. c := s.FromContext(ctx)
  76. type Request struct {
  77. Id int64 `json:"id" binding:"required"`
  78. }
  79. req := new(Request)
  80. if err := c.ShouldBindJSON(&req); err != nil {
  81. c.Fail(constant.ErrorParams)
  82. return
  83. }
  84. if err := s.DB().Delete(&entity.NodeBanner{}, req.Id).Error; err != nil {
  85. c.Fail(err.Error())
  86. return
  87. }
  88. c.Resp(nil)
  89. }
  90. // GetNodeBanner 获取节点Banner详情
  91. func (s *Server) GetNodeBanner(ctx *gin.Context) {
  92. c := s.FromContext(ctx)
  93. type Request struct {
  94. Id int64 `json:"id" form:"id" binding:"required"`
  95. }
  96. req := new(Request)
  97. if err := c.ShouldBind(&req); err != nil {
  98. c.Fail(constant.ErrorParams)
  99. return
  100. }
  101. banner := &entity.NodeBanner{}
  102. if err := s.DB().First(banner, req.Id).Error; err != nil {
  103. c.Fail(constant.ErrorInfo)
  104. return
  105. }
  106. c.Resp(banner)
  107. }
  108. // FindNodeBanner 分页查询节点Banner
  109. func (s *Server) FindNodeBanner(ctx *gin.Context) {
  110. c := s.FromContext(ctx)
  111. type Request struct {
  112. services.Pagination
  113. Name string `json:"name" form:"name"`
  114. BeginTime int64 `json:"beginTime" form:"beginTime"`
  115. EndTime int64 `json:"endTime" form:"endTime"`
  116. Order string `json:"order" form:"order"`
  117. IsExport bool `json:"isExport" form:"isExport"`
  118. Fields string `json:"fields" form:"fields"`
  119. }
  120. req := new(Request)
  121. if err := c.ShouldBind(&req); err != nil {
  122. c.Fail(constant.ErrorParams)
  123. return
  124. }
  125. db := s.DB().Model(&entity.NodeBanner{})
  126. // 条件查询
  127. if req.Name != "" {
  128. db = db.Where("name LIKE ?", "%"+req.Name+"%")
  129. }
  130. if req.BeginTime > 0 {
  131. db = db.Where("created_at >= ?", req.BeginTime)
  132. }
  133. if req.EndTime > 0 {
  134. db = db.Where("created_at <= ?", req.EndTime)
  135. }
  136. // 排序
  137. if req.Order == "" {
  138. req.Order = "id desc"
  139. }
  140. db = db.Order(req.Order)
  141. // 分页查询
  142. list, err := s.PageNodeBanner(db, &req.Pagination)
  143. if err != nil {
  144. c.Fail(err.Error())
  145. return
  146. }
  147. // 可导出字段列表
  148. cols := []map[string]string{
  149. {"field": "id", "label": "ID"},
  150. {"field": "name", "label": "Banner名称"},
  151. {"field": "url", "label": "Banner URL"},
  152. {"field": "sort", "label": "排序"},
  153. {"field": "remark", "label": "备注"},
  154. {"field": "createdAt", "label": "创建时间"},
  155. }
  156. c.Resp(gin.H{
  157. "list": list,
  158. "pagination": req.Pagination,
  159. "cols": cols,
  160. })
  161. }