@ -37,7 +37,7 @@ const transInUID = 1
const transOutUID = 2
const transOutUID = 2
func adjustTrading ( db dtmcli . DB , uid int , amount int ) error {
func adjustTrading ( db dtmcli . DB , uid int , amount int ) error {
affected , err := dtmcli . DBExec ( db , "update dtm_busi.user_account set trading_balance=trading_balance + ? where user_id=? and trading_balance + ? + balance >= 0" , amount , uid , amount )
affected , err := dtmcli . DBExec ( db , "update dtm_busi.user_account set trading_balance=trading_balance+? where user_id=? and trading_balance + ? + balance >= 0" , amount , uid , amount )
if err == nil && affected == 0 {
if err == nil && affected == 0 {
return fmt . Errorf ( "update error, maybe balance not enough" )
return fmt . Errorf ( "update error, maybe balance not enough" )
}
}
@ -45,7 +45,7 @@ func adjustTrading(db dtmcli.DB, uid int, amount int) error {
}
}
func adjustBalance ( db dtmcli . DB , uid int , amount int ) error {
func adjustBalance ( db dtmcli . DB , uid int , amount int ) error {
affected , err := dtmcli . DBExec ( db , "update dtm_busi.user_account set trading_balance = trading_balance - ?, balance=balance+? where user_id=?;" , amount , amount , uid )
affected , err := dtmcli . DBExec ( db , "update dtm_busi.user_account set trading_balance=trading_balance-?, balance=balance+? where user_id=?;" , amount , amount , uid )
if err == nil && affected == 0 {
if err == nil && affected == 0 {
return fmt . Errorf ( "update user_account 0 rows" )
return fmt . Errorf ( "update user_account 0 rows" )
}
}
@ -58,22 +58,19 @@ func tccBarrierTransInTry(c *gin.Context) (interface{}, error) {
if req . TransInResult != "" {
if req . TransInResult != "" {
return req . TransInResult , nil
return req . TransInResult , nil
}
}
barrier := MustBarrierFromGin ( c )
return dtmcli . MapSuccess , MustBarrierFromGin ( c ) . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return dtmcli . MapSuccess , barrier . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return adjustTrading ( db , transInUID , req . Amount )
return adjustTrading ( db , transInUID , req . Amount )
} )
} )
}
}
func tccBarrierTransInConfirm ( c * gin . Context ) ( interface { } , error ) {
func tccBarrierTransInConfirm ( c * gin . Context ) ( interface { } , error ) {
barrier := MustBarrierFromGin ( c )
return dtmcli . MapSuccess , MustBarrierFromGin ( c ) . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return dtmcli . MapSuccess , barrier . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return adjustBalance ( db , transInUID , reqFrom ( c ) . Amount )
return adjustBalance ( db , transInUID , reqFrom ( c ) . Amount )
} )
} )
}
}
func tccBarrierTransInCancel ( c * gin . Context ) ( interface { } , error ) {
func tccBarrierTransInCancel ( c * gin . Context ) ( interface { } , error ) {
barrier := MustBarrierFromGin ( c )
return dtmcli . MapSuccess , MustBarrierFromGin ( c ) . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return dtmcli . MapSuccess , barrier . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return adjustTrading ( db , transInUID , - reqFrom ( c ) . Amount )
return adjustTrading ( db , transInUID , - reqFrom ( c ) . Amount )
} )
} )
}
}
@ -83,23 +80,20 @@ func tccBarrierTransOutTry(c *gin.Context) (interface{}, error) {
if req . TransInResult != "" {
if req . TransInResult != "" {
return req . TransInResult , nil
return req . TransInResult , nil
}
}
barrier := MustBarrierFromGin ( c )
return dtmcli . MapSuccess , MustBarrierFromGin ( c ) . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return dtmcli . MapSuccess , barrier . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return adjustTrading ( db , transOutUID , - req . Amount )
return adjustTrading ( db , transOutUID , - req . Amount )
} )
} )
}
}
func tccBarrierTransOutConfirm ( c * gin . Context ) ( interface { } , error ) {
func tccBarrierTransOutConfirm ( c * gin . Context ) ( interface { } , error ) {
barrier := MustBarrierFromGin ( c )
return dtmcli . MapSuccess , MustBarrierFromGin ( c ) . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return dtmcli . MapSuccess , barrier . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return adjustBalance ( db , transOutUID , - reqFrom ( c ) . Amount )
return adjustBalance ( db , transOutUID , - reqFrom ( c ) . Amount )
} )
} )
}
}
// TccBarrierTransOutCancel will be use in test
// TccBarrierTransOutCancel will be use in test
func TccBarrierTransOutCancel ( c * gin . Context ) ( interface { } , error ) {
func TccBarrierTransOutCancel ( c * gin . Context ) ( interface { } , error ) {
barrier := MustBarrierFromGin ( c )
return dtmcli . MapSuccess , MustBarrierFromGin ( c ) . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return dtmcli . MapSuccess , barrier . Call ( txGet ( ) , func ( db dtmcli . DB ) error {
return adjustTrading ( db , transOutUID , reqFrom ( c ) . Amount )
return adjustTrading ( db , transOutUID , reqFrom ( c ) . Amount )
} )
} )
}
}