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