diff --git a/.ide/Dockerfile b/.ide/Dockerfile index 2e93a3b19..a267b1266 100644 --- a/.ide/Dockerfile +++ b/.ide/Dockerfile @@ -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. 安装系统依赖、Golang、Code-server diff --git a/logic/controller/action_扭蛋.go b/logic/controller/action_扭蛋.go index cb0d9999b..6defce712 100644 --- a/logic/controller/action_扭蛋.go +++ b/logic/controller/action_扭蛋.go @@ -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 } diff --git a/modules/player/controller/robot/egg.go b/modules/player/controller/robot/egg.go index d74a22e53..bd685828b 100644 --- a/modules/player/controller/robot/egg.go +++ b/modules/player/controller/robot/egg.go @@ -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())) }) } diff --git a/modules/player/service/item.go b/modules/player/service/item.go index e2c129f1d..470502a77 100644 --- a/modules/player/service/item.go +++ b/modules/player/service/item.go @@ -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,