|
|
|
@ -17,29 +17,29 @@ import ( |
|
|
|
) |
|
|
|
|
|
|
|
func init() { |
|
|
|
setupFuncs["TccBarrierSetup"] = func(app *gin.Engine) { |
|
|
|
setupFuncs["BarrierSetup"] = func(app *gin.Engine) { |
|
|
|
app.POST(BusiAPI+"/SagaBTransIn", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
barrier := MustBarrierFromGin(c) |
|
|
|
return dtmcli.MapSuccess, barrier.Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return sagaAdjustBalance(tx, transInUID, reqFrom(c).Amount, reqFrom(c).TransInResult) |
|
|
|
return SagaAdjustBalance(tx, TransInUID, reqFrom(c).Amount, reqFrom(c).TransInResult) |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/SagaBTransInCompensate", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
barrier := MustBarrierFromGin(c) |
|
|
|
return dtmcli.MapSuccess, barrier.Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return sagaAdjustBalance(tx, transInUID, -reqFrom(c).Amount, "") |
|
|
|
return SagaAdjustBalance(tx, TransInUID, -reqFrom(c).Amount, "") |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/SagaBTransOut", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
barrier := MustBarrierFromGin(c) |
|
|
|
return dtmcli.MapSuccess, barrier.Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return sagaAdjustBalance(tx, transOutUID, -reqFrom(c).Amount, reqFrom(c).TransOutResult) |
|
|
|
return SagaAdjustBalance(tx, TransOutUID, -reqFrom(c).Amount, reqFrom(c).TransOutResult) |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/SagaBTransOutCompensate", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
barrier := MustBarrierFromGin(c) |
|
|
|
return dtmcli.MapSuccess, barrier.Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return sagaAdjustBalance(tx, transOutUID, reqFrom(c).Amount, "") |
|
|
|
return SagaAdjustBalance(tx, TransOutUID, reqFrom(c).Amount, "") |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/SagaBTransOutGorm", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
@ -47,7 +47,7 @@ func init() { |
|
|
|
barrier := MustBarrierFromGin(c) |
|
|
|
tx := dbGet().DB.Begin() |
|
|
|
return dtmcli.MapSuccess, barrier.Call(tx.Statement.ConnPool.(*sql.Tx), func(tx1 *sql.Tx) error { |
|
|
|
return tx.Exec("update dtm_busi.user_account set balance = balance + ? where user_id = ?", -req.Amount, transOutUID).Error |
|
|
|
return tx.Exec("update dtm_busi.user_account set balance = balance + ? where user_id = ?", -req.Amount, TransOutUID).Error |
|
|
|
}) |
|
|
|
})) |
|
|
|
|
|
|
|
@ -57,17 +57,17 @@ func init() { |
|
|
|
return req.TransInResult, nil |
|
|
|
} |
|
|
|
return dtmcli.MapSuccess, MustBarrierFromGin(c).Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return tccAdjustTrading(tx, transInUID, req.Amount) |
|
|
|
return tccAdjustTrading(tx, TransInUID, req.Amount) |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/TccBTransInConfirm", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
return dtmcli.MapSuccess, MustBarrierFromGin(c).Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return tccAdjustBalance(tx, transInUID, reqFrom(c).Amount) |
|
|
|
return tccAdjustBalance(tx, TransInUID, reqFrom(c).Amount) |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/TccBTransInCancel", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
return dtmcli.MapSuccess, MustBarrierFromGin(c).Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return tccAdjustTrading(tx, transInUID, -reqFrom(c).Amount) |
|
|
|
return tccAdjustTrading(tx, TransInUID, -reqFrom(c).Amount) |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/TccBTransOutTry", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
@ -76,12 +76,12 @@ func init() { |
|
|
|
return req.TransOutResult, nil |
|
|
|
} |
|
|
|
return dtmcli.MapSuccess, MustBarrierFromGin(c).Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return tccAdjustTrading(tx, transOutUID, -req.Amount) |
|
|
|
return tccAdjustTrading(tx, TransOutUID, -req.Amount) |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/TccBTransOutConfirm", dtmutil.WrapHandler(func(c *gin.Context) (interface{}, error) { |
|
|
|
return dtmcli.MapSuccess, MustBarrierFromGin(c).Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return tccAdjustBalance(tx, transOutUID, -reqFrom(c).Amount) |
|
|
|
return tccAdjustBalance(tx, TransOutUID, -reqFrom(c).Amount) |
|
|
|
}) |
|
|
|
})) |
|
|
|
app.POST(BusiAPI+"/TccBTransOutCancel", dtmutil.WrapHandler(TccBarrierTransOutCancel)) |
|
|
|
@ -91,34 +91,34 @@ func init() { |
|
|
|
// TccBarrierTransOutCancel will be use in test
|
|
|
|
func TccBarrierTransOutCancel(c *gin.Context) (interface{}, error) { |
|
|
|
return dtmcli.MapSuccess, MustBarrierFromGin(c).Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return tccAdjustTrading(tx, transOutUID, reqFrom(c).Amount) |
|
|
|
return tccAdjustTrading(tx, TransOutUID, reqFrom(c).Amount) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func (s *busiServer) TransInBSaga(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { |
|
|
|
barrier := MustBarrierFromGrpc(ctx) |
|
|
|
return &emptypb.Empty{}, barrier.Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return sagaGrpcAdjustBalance(tx, transInUID, in.Amount, in.TransInResult) |
|
|
|
return sagaGrpcAdjustBalance(tx, TransInUID, in.Amount, in.TransInResult) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func (s *busiServer) TransOutBSaga(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { |
|
|
|
barrier := MustBarrierFromGrpc(ctx) |
|
|
|
return &emptypb.Empty{}, barrier.Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return sagaGrpcAdjustBalance(tx, transOutUID, -in.Amount, in.TransOutResult) |
|
|
|
return sagaGrpcAdjustBalance(tx, TransOutUID, -in.Amount, in.TransOutResult) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func (s *busiServer) TransInRevertBSaga(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { |
|
|
|
barrier := MustBarrierFromGrpc(ctx) |
|
|
|
return &emptypb.Empty{}, barrier.Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return sagaGrpcAdjustBalance(tx, transInUID, -in.Amount, "") |
|
|
|
return sagaGrpcAdjustBalance(tx, TransInUID, -in.Amount, "") |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func (s *busiServer) TransOutRevertBSaga(ctx context.Context, in *BusiReq) (*emptypb.Empty, error) { |
|
|
|
barrier := MustBarrierFromGrpc(ctx) |
|
|
|
return &emptypb.Empty{}, barrier.Call(txGet(), func(tx *sql.Tx) error { |
|
|
|
return sagaGrpcAdjustBalance(tx, transOutUID, in.Amount, "") |
|
|
|
return sagaGrpcAdjustBalance(tx, TransOutUID, in.Amount, "") |
|
|
|
}) |
|
|
|
} |
|
|
|
|