package redpacket import ( "app/commons/constant" "fmt" "github.com/gin-gonic/gin" ) // GrabRedPacket 抢红包 func (s *Server) GrabRedPacket(ctx *gin.Context) { c := s.FromContext(ctx) type request struct { PacketNo string `json:"packetNo" binding:"required"` // 红包编号 TelegramId int64 `json:"telegramId" binding:"required"` // Telegram用户ID TelegramUsername string `json:"telegramUsername"` // Telegram用户名 } req := new(request) if err := c.ShouldBindBodyWithJSON(req); err != nil { c.Fail(constant.ErrorParams) return } // 抢红包 record, err := s.RedPacketService.GrabRedPacket( req.PacketNo, c.UserId(), req.TelegramId, req.TelegramUsername, ) if err != nil { c.Fail(err.Error()) return } c.Resp(gin.H{ "amount": record.Amount, "sequence": record.Sequence, "message": fmt.Sprintf("恭喜你抢到 %s VND!", record.Amount.String()), }) }