|
|
@@ -60,10 +60,52 @@ func grabRedPacket(callback *tgbotapi.CallbackQuery, packetNo string) {
|
|
|
amount := record.Amount.InexactFloat64()
|
|
|
answerCallback(callback.ID, fmt.Sprintf("🎉 恭喜抢到 %.2f VND!", amount))
|
|
|
|
|
|
- // 更新原消息
|
|
|
- editText := fmt.Sprintf("%s\n\n✅ @%s 抢到了 %.2f VND",
|
|
|
- callback.Message.Text, username, amount)
|
|
|
- editMessage(callback.Message.Chat.ID, callback.Message.MessageID, editText)
|
|
|
+ // 从数据库查询完整的红包信息和所有领取记录,构建实时消息
|
|
|
+ packet, records, _ := redPacketService.GetRedPacketDetail(packetNo)
|
|
|
+ if packet == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建红包头部信息
|
|
|
+ var packetTypeText string
|
|
|
+ if packet.PacketType == 1 {
|
|
|
+ packetTypeText = "普通红包"
|
|
|
+ } else {
|
|
|
+ packetTypeText = "手气红包"
|
|
|
+ }
|
|
|
+ editText := fmt.Sprintf("🧧 红包\n💰 %s\n\n总金额: %.2f VND | 个数: %d | %s",
|
|
|
+ packet.BlessingWords,
|
|
|
+ packet.TotalAmount.InexactFloat64(),
|
|
|
+ packet.TotalCount,
|
|
|
+ packetTypeText)
|
|
|
+
|
|
|
+ // 追加每个人的领取记录
|
|
|
+ editText += fmt.Sprintf("\n\n📋 领取明细 (%d/%d):", packet.GrabbedCount, packet.TotalCount)
|
|
|
+ for _, r := range records {
|
|
|
+ displayName := r.TelegramUsername
|
|
|
+ if displayName != "" {
|
|
|
+ displayName = "@" + displayName
|
|
|
+ } else {
|
|
|
+ displayName = fmt.Sprintf("用户%d", r.TelegramId)
|
|
|
+ }
|
|
|
+ editText += fmt.Sprintf("\n✅ %s — %.2f VND", displayName, r.Amount.InexactFloat64())
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据剩余情况决定是否保留按钮
|
|
|
+ if packet.RemainCount > 0 {
|
|
|
+ keyboard := tgbotapi.NewInlineKeyboardMarkup(
|
|
|
+ tgbotapi.NewInlineKeyboardRow(
|
|
|
+ tgbotapi.NewInlineKeyboardButtonData(
|
|
|
+ fmt.Sprintf("🎁 抢红包 (%d/%d)", packet.GrabbedCount, packet.TotalCount),
|
|
|
+ fmt.Sprintf("grab_%s", packetNo),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ editMessageWithKeyboard(callback.Message.Chat.ID, callback.Message.MessageID, editText, keyboard)
|
|
|
+ } else {
|
|
|
+ editText += "\n\n🎊 红包已抢完!"
|
|
|
+ editMessage(callback.Message.Chat.ID, callback.Message.MessageID, editText)
|
|
|
+ }
|
|
|
|
|
|
core.Log.Infof("抢红包 - 用户: %s(userId:%d), 红包: %s, 金额: %s, 结果: 成功",
|
|
|
username, userId, packetNo, record.Amount.String())
|