package admin import ( "app/commons/constant" "app/commons/model/entity" "app/commons/services" "github.com/gin-gonic/gin" ) // CreateNodeBanner 创建节点Banner func (s *Server) CreateNodeBanner(ctx *gin.Context) { c := s.FromContext(ctx) type Request struct { Name string `json:"name" binding:"required"` Url string `json:"url" binding:"required"` Sort int `json:"sort"` Remark string `json:"remark"` } req := new(Request) if err := c.ShouldBindJSON(&req); err != nil { c.Fail(constant.ErrorParams) return } banner := &entity.NodeBanner{ Name: req.Name, Url: req.Url, Sort: req.Sort, Remark: req.Remark, } if err := s.DB().Create(banner).Error; err != nil { c.Fail(err.Error()) return } c.Resp(banner) } // UpdateNodeBanner 更新节点Banner func (s *Server) UpdateNodeBanner(ctx *gin.Context) { c := s.FromContext(ctx) type Request struct { Id int64 `json:"id" binding:"required"` Name *string `json:"name"` Url *string `json:"url"` Sort *int `json:"sort"` Remark *string `json:"remark"` } req := new(Request) if err := c.ShouldBindJSON(&req); err != nil { c.Fail(constant.ErrorParams) return } banner := &entity.NodeBanner{} if err := s.DB().First(banner, req.Id).Error; err != nil { c.Fail(constant.ErrorInfo) return } updates := make(map[string]interface{}) if req.Name != nil { updates["name"] = *req.Name } if req.Url != nil { updates["url"] = *req.Url } if req.Sort != nil { updates["sort"] = *req.Sort } if req.Remark != nil { updates["remark"] = *req.Remark } if err := s.DB().Model(banner).Updates(updates).Error; err != nil { c.Fail(err.Error()) return } c.Resp(banner) } // DeleteNodeBanner 删除节点Banner func (s *Server) DeleteNodeBanner(ctx *gin.Context) { c := s.FromContext(ctx) type Request struct { Id int64 `json:"id" binding:"required"` } req := new(Request) if err := c.ShouldBindJSON(&req); err != nil { c.Fail(constant.ErrorParams) return } if err := s.DB().Delete(&entity.NodeBanner{}, req.Id).Error; err != nil { c.Fail(err.Error()) return } c.Resp(nil) } // GetNodeBanner 获取节点Banner详情 func (s *Server) GetNodeBanner(ctx *gin.Context) { c := s.FromContext(ctx) type Request struct { Id int64 `json:"id" form:"id" binding:"required"` } req := new(Request) if err := c.ShouldBind(&req); err != nil { c.Fail(constant.ErrorParams) return } banner := &entity.NodeBanner{} if err := s.DB().First(banner, req.Id).Error; err != nil { c.Fail(constant.ErrorInfo) return } c.Resp(banner) } // FindNodeBanner 分页查询节点Banner func (s *Server) FindNodeBanner(ctx *gin.Context) { c := s.FromContext(ctx) type Request struct { services.Pagination Name string `json:"name" form:"name"` BeginTime int64 `json:"beginTime" form:"beginTime"` EndTime int64 `json:"endTime" form:"endTime"` Order string `json:"order" form:"order"` IsExport bool `json:"isExport" form:"isExport"` Fields string `json:"fields" form:"fields"` } req := new(Request) if err := c.ShouldBind(&req); err != nil { c.Fail(constant.ErrorParams) return } db := s.DB().Model(&entity.NodeBanner{}) // 条件查询 if req.Name != "" { db = db.Where("name LIKE ?", "%"+req.Name+"%") } if req.BeginTime > 0 { db = db.Where("created_at >= ?", req.BeginTime) } if req.EndTime > 0 { db = db.Where("created_at <= ?", req.EndTime) } // 排序 if req.Order == "" { req.Order = "id desc" } db = db.Order(req.Order) // 分页查询 list, err := s.PageNodeBanner(db, &req.Pagination) if err != nil { c.Fail(err.Error()) return } // 可导出字段列表 cols := []map[string]string{ {"field": "id", "label": "ID"}, {"field": "name", "label": "Banner名称"}, {"field": "url", "label": "Banner URL"}, {"field": "sort", "label": "排序"}, {"field": "remark", "label": "备注"}, {"field": "createdAt", "label": "创建时间"}, } c.Resp(gin.H{ "list": list, "pagination": req.Pagination, "cols": cols, }) }