test/backend/internal/handlers/points_handler.go
2025-11-21 16:03:52 +08:00

49 lines
1.2 KiB
Go

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": "删除成功"})
}