Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
fef294df
Commit
fef294df
authored
Jan 30, 2019
by
张振华
Committed by
vipwzw
Jan 30, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gosec fix
parent
8dcb142c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
63 additions
and
42 deletions
+63
-42
exec_del_local.go
plugin/dapp/guess/executor/exec_del_local.go
+25
-16
exec_local.go
plugin/dapp/guess/executor/exec_local.go
+27
-18
guessdb.go
plugin/dapp/guess/executor/guessdb.go
+11
-8
No files found.
plugin/dapp/guess/executor/exec_del_local.go
View file @
fef294df
...
@@ -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
())
table
j
oin
,
err
:=
table
.
NewJoinTable
(
userTable
,
gameTable
,
[]
string
{
"addr#status"
})
table
J
oin
,
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
,
_
=
tablej
oin
.
Save
()
kvs
,
err
=
tableJ
oin
.
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
=
table
j
oin
.
MustGetTable
(
"game"
)
.
Replace
(
game
)
err
=
table
J
oin
.
MustGetTable
(
"game"
)
.
Replace
(
game
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
return
nil
,
err
}
}
err
=
table
j
oin
.
MustGetTable
(
"user"
)
.
Del
([]
byte
(
fmt
.
Sprintf
(
"%018d"
,
log
.
Index
)))
err
=
table
J
oin
.
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
...
)
}
}
}
}
...
...
plugin/dapp/guess/executor/exec_local.go
View file @
fef294df
...
@@ -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
())
table
j
oin
,
err
:=
table
.
NewJoinTable
(
userTable
,
gameTable
,
[]
string
{
"addr#status"
})
table
J
oin
,
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
=
table
j
oin
.
MustGetTable
(
"game"
)
.
Replace
(
game
)
err
=
table
J
oin
.
MustGetTable
(
"game"
)
.
Replace
(
game
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
return
nil
,
err
}
}
err
=
table
j
oin
.
MustGetTable
(
"user"
)
.
Add
(
userBet
)
err
=
table
J
oin
.
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
=
table
j
oin
.
MustGetTable
(
"game"
)
.
Replace
(
game
)
err
=
table
J
oin
.
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
...
)
}
}
}
}
...
...
plugin/dapp/guess/executor/guessdb.go
View file @
fef294df
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment