package handler import ( "net/http" "soul-api/internal/database" "soul-api/internal/model" "github.com/gin-gonic/gin" ) // DBVipRolesList GET /api/db/vip-roles 角色列表(管理端 Set VIP 下拉用) func DBVipRolesList(c *gin.Context) { db := database.DB() var roles []model.VipRole if err := db.Order("sort ASC, id ASC").Find(&roles).Error; err != nil { c.JSON(http.StatusOK, gin.H{"success": false, "error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"success": true, "data": roles}) } // DBVipRolesAction POST /api/db/vip-roles 新增角色;PUT 更新;DELETE 删除 func DBVipRolesAction(c *gin.Context) { db := database.DB() method := c.Request.Method if method == "POST" { var body struct { Name string `json:"name" binding:"required"` Sort int `json:"sort"` } if err := c.ShouldBindJSON(&body); err != nil { c.JSON(http.StatusOK, gin.H{"success": false, "error": "name 不能为空"}) return } role := model.VipRole{Name: body.Name, Sort: body.Sort} if err := db.Create(&role).Error; err != nil { c.JSON(http.StatusOK, gin.H{"success": false, "error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"success": true, "data": role}) return } if method == "PUT" { var body struct { ID int `json:"id" binding:"required"` Name *string `json:"name"` Sort *int `json:"sort"` } if err := c.ShouldBindJSON(&body); err != nil { c.JSON(http.StatusOK, gin.H{"success": false, "error": "id 不能为空"}) return } updates := map[string]interface{}{} if body.Name != nil { updates["name"] = *body.Name } if body.Sort != nil { updates["sort"] = *body.Sort } if len(updates) == 0 { c.JSON(http.StatusOK, gin.H{"success": true, "message": "没有需要更新的字段"}) return } if err := db.Model(&model.VipRole{}).Where("id = ?", body.ID).Updates(updates).Error; err != nil { c.JSON(http.StatusOK, gin.H{"success": false, "error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"success": true, "message": "更新成功"}) return } if method == "DELETE" { id := c.Query("id") if id == "" { c.JSON(http.StatusOK, gin.H{"success": false, "error": "id 不能为空"}) return } if err := db.Where("id = ?", id).Delete(&model.VipRole{}).Error; err != nil { c.JSON(http.StatusOK, gin.H{"success": false, "error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"success": true, "message": "删除成功"}) return } c.JSON(http.StatusOK, gin.H{"success": false, "error": "不支持的请求方法"}) }