Commit fef294df authored by 张振华's avatar 张振华 Committed by vipwzw

gosec fix

parent 8dcb142c
......@@ -55,23 +55,23 @@ func (g *Guess) rollbackGame(game *gty.GuessGame, log *gty.ReceiptGuessGame) {
}
}
func (g *Guess) rollbackIndex(log *gty.ReceiptGuessGame) (kvs []*types.KeyValue) {
func (g *Guess) rollbackIndex(log *gty.ReceiptGuessGame) (kvs []*types.KeyValue, err error) {
userTable := gty.NewGuessUserTable(g.GetLocalDB())
gameTable := gty.NewGuessGameTable(g.GetLocalDB())
tablejoin, err := table.NewJoinTable(userTable, gameTable, []string{"addr#status"})
tableJoin, err := table.NewJoinTable(userTable, gameTable, []string{"addr#status"})
if err != nil {
return nil
return nil, err
}
if log.Status == gty.GuessGameStatusStart {
//新创建游戏回滚,game表删除记录
err = gameTable.Del([]byte(fmt.Sprintf("%018d", log.StartIndex)))
if err != nil {
return nil
return nil, err
}
kvs, _ = tablejoin.Save()
return kvs
kvs, err = tableJoin.Save()
return kvs, err
} else if log.Status == gty.GuessGameStatusBet {
//下注阶段,需要更新游戏信息,回滚下注信息
game := log.Game
......@@ -80,17 +80,20 @@ func (g *Guess) rollbackIndex(log *gty.ReceiptGuessGame) (kvs []*types.KeyValue)
//先回滚游戏信息,再进行更新
g.rollbackGame(game, log)
err = tablejoin.MustGetTable("game").Replace(game)
err = tableJoin.MustGetTable("game").Replace(game)
if err != nil {
return nil
return nil, err
}
err = tablejoin.MustGetTable("user").Del([]byte(fmt.Sprintf("%018d", log.Index)))
err = tableJoin.MustGetTable("user").Del([]byte(fmt.Sprintf("%018d", log.Index)))
if err != nil {
return nil
return nil, err
}
kvs, _ = tablejoin.Save()
kvs, err = tableJoin.Save()
if err != nil {
return nil, err
}
} else if log.StatusChange {
//如果是其他状态下仅发生了状态变化,则需要恢复游戏状态,并更新游戏记录。
game := log.Game
......@@ -99,14 +102,17 @@ func (g *Guess) rollbackIndex(log *gty.ReceiptGuessGame) (kvs []*types.KeyValue)
//先回滚游戏信息,再进行更新
g.rollbackGame(game, log)
err = tablejoin.MustGetTable("game").Replace(game)
err = tableJoin.MustGetTable("game").Replace(game)
if err != nil {
return nil, err
}
kvs, err = tableJoin.Save()
if err != nil {
return nil
return nil, err
}
kvs, _ = tablejoin.Save()
}
return kvs
return kvs, nil
}
func (g *Guess) execDelLocal(receipt *types.ReceiptData) (*types.LocalDBSet, error) {
......@@ -122,7 +128,10 @@ func (g *Guess) execDelLocal(receipt *types.ReceiptData) (*types.LocalDBSet, err
if err := types.Decode(log.Log, receiptGame); err != nil {
return nil, err
}
kv := g.rollbackIndex(receiptGame)
kv, err := g.rollbackIndex(receiptGame)
if err != nil {
return nil, err
}
dbSet.KV = append(dbSet.KV, kv...)
}
}
......
......@@ -24,12 +24,12 @@ func (g *Guess) getUserBet(log *gty.ReceiptGuessGame) (userBet *gty.UserBet) {
return userBet
}
func (g *Guess) updateIndex(log *gty.ReceiptGuessGame) (kvs []*types.KeyValue) {
func (g *Guess) updateIndex(log *gty.ReceiptGuessGame) (kvs []*types.KeyValue, err error) {
userTable := gty.NewGuessUserTable(g.GetLocalDB())
gameTable := gty.NewGuessGameTable(g.GetLocalDB())
tablejoin, err := table.NewJoinTable(userTable, gameTable, []string{"addr#status"})
tableJoin, err := table.NewJoinTable(userTable, gameTable, []string{"addr#status"})
if err != nil {
return nil
return nil, err
}
if log.Status == gty.GuessGameStatusStart {
......@@ -39,44 +39,50 @@ func (g *Guess) updateIndex(log *gty.ReceiptGuessGame) (kvs []*types.KeyValue) {
err = gameTable.Add(game)
if err != nil {
return nil
return nil, err
}
kvs, _ = gameTable.Save()
return kvs
kvs, err = gameTable.Save()
if err != nil {
return nil, err
}
} else if log.Status == gty.GuessGameStatusBet {
//用户下注,game表发生更新(game中下注信息有更新),user表新增下注记录
game := log.Game
log.Game = nil
userBet := g.getUserBet(log)
err = tablejoin.MustGetTable("game").Replace(game)
err = tableJoin.MustGetTable("game").Replace(game)
if err != nil {
return nil
return nil, err
}
err = tablejoin.MustGetTable("user").Add(userBet)
err = tableJoin.MustGetTable("user").Add(userBet)
if err != nil {
return nil
return nil, err
}
kvs, _ = tablejoin.Save()
return kvs
kvs, err = tableJoin.Save()
if err != nil {
return nil, err
}
} else if log.StatusChange {
//其他状态,游戏状态变化,只需要更新game表
game := log.Game
log.Game = nil
err = tablejoin.MustGetTable("game").Replace(game)
err = tableJoin.MustGetTable("game").Replace(game)
if err != nil {
return nil
return nil, err
}
kvs, _ = tablejoin.Save()
return kvs
kvs, err = tableJoin.Save()
if err != nil {
return nil, err
}
}
return kvs
return kvs, nil
}
func (g *Guess) execLocal(receipt *types.ReceiptData) (*types.LocalDBSet, error) {
......@@ -92,7 +98,10 @@ func (g *Guess) execLocal(receipt *types.ReceiptData) (*types.LocalDBSet, error)
if err != nil {
return nil, err
}
kvs := g.updateIndex(&gameLog)
kvs, err := g.updateIndex(&gameLog)
if err != nil {
return nil, err
}
dbSet.KV = append(dbSet.KV, kvs...)
}
}
......
......@@ -204,7 +204,10 @@ func queryJoinTableData(talbeJoin *table.JoinTable, indexName string, prefix, pr
func (action *Action) saveGame(game *gty.GuessGame) (kvset []*types.KeyValue) {
value := types.Encode(game)
action.db.Set(Key(game.GetGameID()), value)
err := action.db.Set(Key(game.GetGameID()), value)
if err != nil {
logger.Error("saveGame have err:", err.Error())
}
kvset = append(kvset, &types.KeyValue{Key: Key(game.GameID), Value: value})
return kvset
}
......@@ -268,7 +271,7 @@ func (action *Action) readGame(id string) (*gty.GuessGame, error) {
}
// 新建一局游戏
func (action *Action) newGame(gameID string, start *gty.GuessGameStart) (*gty.GuessGame, error) {
func (action *Action) newGame(gameID string, start *gty.GuessGameStart) (*gty.GuessGame) {
game := &gty.GuessGame{
GameID: gameID,
Status: gty.GuessGameStatusStart,
......@@ -291,7 +294,7 @@ func (action *Action) newGame(gameID string, start *gty.GuessGameStart) (*gty.Gu
DrivenByAdmin: start.DrivenByAdmin,
}
return game, nil
return game
}
//GameStart 创建游戏动作执行
......@@ -345,7 +348,7 @@ func (action *Action) GameStart(start *gty.GuessGameStart) (*types.Receipt, erro
}
gameID := common.ToHex(action.txhash)
game, _ := action.newGame(gameID, start)
game := action.newGame(gameID, start)
game.StartTime = action.blocktime
game.StartHeight = action.mainHeight
game.AdminAddr = action.fromaddr
......@@ -576,7 +579,7 @@ func (action *Action) GamePublish(publish *gty.GuessGamePublish) (*types.Receipt
receipt, err = action.coinsAccount.ExecTransfer(player.Addr, game.AdminAddr, action.execaddr, value)
if err != nil {
action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, value) // rollback
//action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, value) // rollback
logger.Error("GamePublish", "addr", player.Addr, "execaddr", action.execaddr,
"amount", value, "err", err)
return nil, err
......@@ -612,7 +615,7 @@ func (action *Action) GamePublish(publish *gty.GuessGamePublish) (*types.Receipt
devFee = totalBetsNumber * game.DevFeeFactor / 1000
receipt, err := action.coinsAccount.ExecTransfer(game.AdminAddr, devAddr, action.execaddr, devFee)
if err != nil {
action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, devFee) // rollback
//action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, devFee) // rollback
logger.Error("GamePublish", "adminAddr", game.AdminAddr, "execaddr", action.execaddr,
"amount", devFee, "err", err)
return nil, err
......@@ -625,7 +628,7 @@ func (action *Action) GamePublish(publish *gty.GuessGamePublish) (*types.Receipt
platFee = totalBetsNumber * game.PlatFeeFactor / 1000
receipt, err := action.coinsAccount.ExecTransfer(game.AdminAddr, platAddr, action.execaddr, platFee)
if err != nil {
action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, platFee) // rollback
//action.coinsAccount.ExecFrozen(game.AdminAddr, action.execaddr, platFee) // rollback
logger.Error("GamePublish", "adminAddr", game.AdminAddr, "execaddr", action.execaddr,
"amount", platFee, "err", err)
return nil, err
......@@ -642,7 +645,7 @@ func (action *Action) GamePublish(publish *gty.GuessGamePublish) (*types.Receipt
value := player.Bet.BetsNumber * winValue / winBetsNumber
receipt, err := action.coinsAccount.ExecTransfer(game.AdminAddr, player.Addr, action.execaddr, value)
if err != nil {
action.coinsAccount.ExecFrozen(player.Addr, action.execaddr, value) // rollback
//action.coinsAccount.ExecFrozen(player.Addr, action.execaddr, value) // rollback
logger.Error("GamePublish", "addr", player.Addr, "execaddr", action.execaddr,
"amount", value, "err", err)
return nil, err
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment