package handler import ( "strconv" "gotest/internal/model" "github.com/gin-gonic/gin" "gorm.io/gorm" ) // ShowcaseHandler App 候选码 & 业务系统管理 type ShowcaseHandler struct { db *gorm.DB } func NewShowcaseHandler(db *gorm.DB) *ShowcaseHandler { return &ShowcaseHandler{db: db} } // ========== App 候选码 ========== func (h *ShowcaseHandler) ListAppShowcase(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) if page < 1 { page = 1 } if pageSize < 1 || pageSize > 100 { pageSize = 20 } var total int64 h.db.Model(&model.AppShowcase{}).Where("status = 1").Count(&total) var items []model.AppShowcase h.db.Where("status = 1").Order("sort ASC, id DESC"). Offset((page - 1) * pageSize).Limit(pageSize).Find(&items) Success(c, gin.H{ "list": items, "total": total, "page": page, "page_size": pageSize, }) } func (h *ShowcaseHandler) AdminListAppShowcase(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) if page < 1 { page = 1 } if pageSize < 1 || pageSize > 100 { pageSize = 20 } var total int64 h.db.Model(&model.AppShowcase{}).Count(&total) var items []model.AppShowcase h.db.Order("sort ASC, id DESC"). Offset((page - 1) * pageSize).Limit(pageSize).Find(&items) Success(c, gin.H{ "list": items, "total": total, "page": page, "page_size": pageSize, }) } func (h *ShowcaseHandler) CreateAppShowcase(c *gin.Context) { var item model.AppShowcase if err := c.ShouldBindJSON(&item); err != nil { FailBadRequest(c, "参数错误") return } if err := h.db.Create(&item).Error; err != nil { FailInternal(c, "创建失败: "+err.Error()) return } Success(c, item) } func (h *ShowcaseHandler) UpdateAppShowcase(c *gin.Context) { id := c.Param("id") var item model.AppShowcase if err := h.db.First(&item, id).Error; err != nil { Fail(c, 404, "记录不存在") return } if err := c.ShouldBindJSON(&item); err != nil { FailBadRequest(c, "参数错误") return } if err := h.db.Save(&item).Error; err != nil { FailInternal(c, "更新失败: "+err.Error()) return } Success(c, item) } func (h *ShowcaseHandler) DeleteAppShowcase(c *gin.Context) { id := c.Param("id") if err := h.db.Delete(&model.AppShowcase{}, id).Error; err != nil { FailInternal(c, "删除失败: "+err.Error()) return } SuccessMsg(c, "删除成功") } // ========== 业务系统 ========== func (h *ShowcaseHandler) ListBizSystem(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) if page < 1 { page = 1 } if pageSize < 1 || pageSize > 100 { pageSize = 20 } var total int64 h.db.Model(&model.BizSystem{}).Where("status = 1").Count(&total) var items []model.BizSystem h.db.Where("status = 1").Order("sort ASC, id DESC"). Offset((page - 1) * pageSize).Limit(pageSize).Find(&items) Success(c, gin.H{ "list": items, "total": total, "page": page, "page_size": pageSize, }) } func (h *ShowcaseHandler) AdminListBizSystem(c *gin.Context) { page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "20")) if page < 1 { page = 1 } if pageSize < 1 || pageSize > 100 { pageSize = 20 } var total int64 h.db.Model(&model.BizSystem{}).Count(&total) var items []model.BizSystem h.db.Order("sort ASC, id DESC"). Offset((page - 1) * pageSize).Limit(pageSize).Find(&items) Success(c, gin.H{ "list": items, "total": total, "page": page, "page_size": pageSize, }) } func (h *ShowcaseHandler) CreateBizSystem(c *gin.Context) { var item model.BizSystem if err := c.ShouldBindJSON(&item); err != nil { FailBadRequest(c, "参数错误") return } if err := h.db.Create(&item).Error; err != nil { FailInternal(c, "创建失败: "+err.Error()) return } Success(c, item) } func (h *ShowcaseHandler) UpdateBizSystem(c *gin.Context) { id := c.Param("id") var item model.BizSystem if err := h.db.First(&item, id).Error; err != nil { Fail(c, 404, "记录不存在") return } if err := c.ShouldBindJSON(&item); err != nil { FailBadRequest(c, "参数错误") return } if err := h.db.Save(&item).Error; err != nil { FailInternal(c, "更新失败: "+err.Error()) return } Success(c, item) } func (h *ShowcaseHandler) DeleteBizSystem(c *gin.Context) { id := c.Param("id") if err := h.db.Delete(&model.BizSystem{}, id).Error; err != nil { FailInternal(c, "删除失败: "+err.Error()) return } SuccessMsg(c, "删除成功") }