49 lines
1.2 KiB
Go
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": "删除成功"})
|
|
}
|