grab.go 964 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package redpacket
  2. import (
  3. "app/commons/constant"
  4. "fmt"
  5. "github.com/gin-gonic/gin"
  6. )
  7. // GrabRedPacket 抢红包
  8. func (s *Server) GrabRedPacket(ctx *gin.Context) {
  9. c := s.FromContext(ctx)
  10. type request struct {
  11. PacketNo string `json:"packetNo" binding:"required"` // 红包编号
  12. TelegramId int64 `json:"telegramId" binding:"required"` // Telegram用户ID
  13. TelegramUsername string `json:"telegramUsername"` // Telegram用户名
  14. }
  15. req := new(request)
  16. if err := c.ShouldBindBodyWithJSON(req); err != nil {
  17. c.Fail(constant.ErrorParams)
  18. return
  19. }
  20. // 抢红包
  21. record, err := s.RedPacketService.GrabRedPacket(
  22. req.PacketNo,
  23. c.UserId(),
  24. req.TelegramId,
  25. req.TelegramUsername,
  26. )
  27. if err != nil {
  28. c.Fail(err.Error())
  29. return
  30. }
  31. c.Resp(gin.H{
  32. "amount": record.Amount,
  33. "sequence": record.Sequence,
  34. "message": fmt.Sprintf("恭喜你抢到 %s VND!", record.Amount.String()),
  35. })
  36. }