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)
# ==========================================
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 OPENAI_API_KEY="pk_live_d15iVqaSMxD_XLHh0nrFPJ_fzFZy8IfR4Cd62bERl8g"
ENV OPENAI_API_KEY="sk-E0ZZIFNnD0RkhMC9pT2AGMutz9vNy2VLNrgyyobT5voa81pQ"
# ==========================================
# 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 {
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
}
if r < 0 {
if r <= 0 || data1.EggNum >= r {
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)
}
result = &S2C_EGG_GAME_PLAY{ListInfo: []data.ItemInfo{}}
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 {
result.ListInfo = append(result.ListInfo, data.ItemInfo{ItemId: item.ItemId, ItemCnt: item.ItemCnt})
}
c.Service.Item.UPDATE(400501, int(-data1.EggNum))
return
}

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,