package handlers import ( "github.com/gin-gonic/gin" "gorm.io/gorm" "soda-api/backend/internal/models" "soda-api/backend/internal/utils" ) type PointsHandler struct { db *gorm.DB } func NewPointsHandler(db *gorm.DB) *PointsHandler { return &PointsHandler{db: db} } func (h *PointsHandler) List(c *gin.Context) { var records []models.PointTransaction if err := h.db.Preload("Member").Order("id desc").Find(&records).Error; err != nil { utils.JSONError(c, 500, "获取积分记录失败") return } utils.JSONSuccess(c, records) } func (h *PointsHandler) Create(c *gin.Context) { var record models.PointTransaction if err := c.ShouldBindJSON(&record); err != nil { utils.JSONError(c, 400, "请填写积分变更信息") return } if err := h.db.Create(&record).Error; err != nil { utils.JSONError(c, 500, "写入失败") return } h.db.Model(&models.Member{}).Where("id = ?", record.MemberID).UpdateColumn("points", gorm.Expr("points + ?", record.Change)) utils.JSONSuccess(c, record) } func (h *PointsHandler) Delete(c *gin.Context) { if err := h.db.Delete(&models.PointTransaction{}, c.Param("id")).Error; err != nil { utils.JSONError(c, 500, "删除失败") return } utils.JSONSuccess(c, gin.H{"message": "删除成功"}) }