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

@@ -18,11 +18,11 @@ ENV GOMODCACHE=/workspace/.cache/gomod
# ========================================== # ==========================================
# 2. Codex 配置 (更换时修改这里重新 build) # 2. Codex 配置 (更换时修改这里重新 build)
# ========================================== # ==========================================
ENV CODEX_BASE_URL="http://fast.jnm.lol/v1" ENV CODEX_BASE_URL="https://api.jucode.cn/v1"
ENV CODEX_MODEL="gpt-5.4" ENV CODEX_MODEL="gpt-5.4"
ENV OPENAI_API_KEY="pk_live_d15iVqaSMxD_XLHh0nrFPJ_fzFZy8IfR4Cd62bERl8g" ENV OPENAI_API_KEY="sk-E0ZZIFNnD0RkhMC9pT2AGMutz9vNy2VLNrgyyobT5voa81pQ"
# ========================================== # ==========================================
# 3. 安装系统依赖GolangCode-server # 3. 安装系统依赖GolangCode-server

View File

@@ -26,12 +26,11 @@ func (h Controller) EggGamePlay(data1 *C2S_EGG_GAME_PLAY, c *player.Player) (res
if data1.EggNum > 10 || data1.EggNum <= 0 { if data1.EggNum > 10 || data1.EggNum <= 0 {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError) return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
} }
if r < 0 { if r <= 0 || data1.EggNum >= r {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrGachaTicketsInsufficient) return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrGachaTicketsInsufficient)
} }
if data1.EggNum > r { if err := c.Service.Item.UPDATE(400501, int(-data1.EggNum)); err != nil {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrGachaTicketsInsufficient) return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrGachaTicketsInsufficient)
} }
result = &S2C_EGG_GAME_PLAY{ListInfo: []data.ItemInfo{}} result = &S2C_EGG_GAME_PLAY{ListInfo: []data.ItemInfo{}}
if grand.Meet(int(data1.EggNum), 100) { if grand.Meet(int(data1.EggNum), 100) {
@@ -52,8 +51,6 @@ func (h Controller) EggGamePlay(data1 *C2S_EGG_GAME_PLAY, c *player.Player) (res
for _, item := range addedItems { for _, item := range addedItems {
result.ListInfo = append(result.ListInfo, data.ItemInfo{ItemId: item.ItemId, ItemCnt: item.ItemCnt}) result.ListInfo = append(result.ListInfo, data.ItemInfo{ItemId: item.ItemId, ItemCnt: item.ItemCnt})
} }
c.Service.Item.UPDATE(400501, int(-data1.EggNum))
return return
} }

View File

@@ -48,7 +48,11 @@ func init() {
} }
havs := itemService.CheakItem(400501) 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)) ctx.Send("扭蛋币不足,当前扭蛋币数量:" + gconv.String(havs))
return return
} }
@@ -140,8 +144,6 @@ func init() {
buf.WriteString("恭喜你获得 " + xmlres.ItemsMAP[int(item.ItemId)].Name + ":" + gconv.String(item.ItemCnt) + "\n") 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())) 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" dictservice "blazing/modules/dict/service"
"github.com/gogf/gf/v2/database/gdb" "github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/frame/g"
) )
@@ -58,12 +59,28 @@ func (s *ItemService) UPDATE(id uint32, count int) error {
return err return err
} }
if ok { 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 { if err != nil {
return err return err
} }
affected, err := result.RowsAffected()
if err != nil {
return err
}
if affected == 0 {
return gerror.New("item update failed: no rows affected")
}
} else { } else {
if count <= 0 {
return gerror.New("item update failed: cannot insert non-positive item count")
}
m := s.dbm(s.Model) m := s.dbm(s.Model)
data := g.Map{ data := g.Map{
"player_id": s.userid, "player_id": s.userid,