fix: 修复扭蛋道具扣除逻辑
Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed

This commit is contained in:
xinian
2026-04-14 11:06:04 +08:00
parent 74ac6ce940
commit ddbfe91d8b
4 changed files with 27 additions and 11 deletions

View File

@@ -48,7 +48,11 @@ func init() {
}
havs := itemService.CheakItem(400501)
if havs < int64(count) {
if havs <= int64(count) {
ctx.Send("扭蛋币不足,当前扭蛋币数量:" + gconv.String(havs))
return
}
if err := itemService.UPDATE(400501, -count); err != nil {
ctx.Send("扭蛋币不足,当前扭蛋币数量:" + gconv.String(havs))
return
}
@@ -140,8 +144,6 @@ func init() {
buf.WriteString("恭喜你获得 " + xmlres.ItemsMAP[int(item.ItemId)].Name + ":" + gconv.String(item.ItemCnt) + "\n")
}
itemService.UPDATE(400501, -count)
ctx.SendChain(message.At(ctx.Event.Sender.ID), message.Reply(ctx.Event.MessageID), message.Text(buf.String()))
})
}

View File

@@ -10,6 +10,7 @@ import (
dictservice "blazing/modules/dict/service"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
)
@@ -58,12 +59,28 @@ func (s *ItemService) UPDATE(id uint32, count int) error {
return err
}
if ok {
_, err := s.dbm(s.Model).Where("item_id", id).Increment("item_cnt", count)
updateModel := s.dbm(s.Model).Where("item_id", id)
if count < 0 {
updateModel = updateModel.Where("item_cnt + ? > 0", count)
}
result, err := updateModel.Increment("item_cnt", count)
if err != nil {
return err
}
affected, err := result.RowsAffected()
if err != nil {
return err
}
if affected == 0 {
return gerror.New("item update failed: no rows affected")
}
} else {
if count <= 0 {
return gerror.New("item update failed: cannot insert non-positive item count")
}
m := s.dbm(s.Model)
data := g.Map{
"player_id": s.userid,