update readme

This commit is contained in:
yedongfu 2021-07-10 16:36:05 +08:00
parent 844d3ce2be
commit edd2470102
2 changed files with 7 additions and 13 deletions

View File

@ -23,13 +23,13 @@ DTM是首款golang的分布式事务管理器优雅的解决了幂等、空
+ XA
### 文档与介绍(更新中)
* [DTM简介](https://zhuanlan.zhihu.com/p/386770520)
* [分布式事务简介](https://zhuanlan.zhihu.com/p/387487859)
* 分布式事务模式
- [XA事务模式](https://zhuanlan.zhihu.com/p/384756957)
- [SAGA事务模式](https://zhuanlan.zhihu.com/p/385594256)
- TCC事务模式
- [TCC事务模式](https://zhuanlan.zhihu.com/p/388357329)
- 可靠消息事务模式
* 子事务屏障
* [子事务屏障](https://zhuanlan.zhihu.com/p/388444465)
* FAQ
* 部署指南

View File

@ -9,7 +9,6 @@ import (
"github.com/sirupsen/logrus"
"github.com/yedf/dtm/common"
"github.com/yedf/dtm/dtmcli"
"gorm.io/gorm"
)
// 事务参与者的服务地址
@ -70,7 +69,7 @@ const transOutUid = 2
func adjustTrading(sdb *sql.DB, uid int, amount int) (interface{}, error) {
db := common.SqlDB2DB(sdb)
dbr := db.Exec("update dtm_busi.user_account_trading t join dtm_busi.user_account a on t.user_id=a.user_id and t.user_id=? set t.trading_balance=t.trading_balance + ? where a.balance + t.trading_balance + ? > 0", uid, amount, amount)
dbr := db.Exec("update dtm_busi.user_account_trading t join dtm_busi.user_account a on t.user_id=a.user_id and t.user_id=? set t.trading_balance=t.trading_balance + ? where a.balance + t.trading_balance + ? >= 0", uid, amount, amount)
if dbr.Error == nil && dbr.RowsAffected == 0 {
return nil, fmt.Errorf("update error, maybe balance not enough")
}
@ -79,15 +78,10 @@ func adjustTrading(sdb *sql.DB, uid int, amount int) (interface{}, error) {
func adjustBalance(sdb *sql.DB, uid int, amount int) (interface{}, error) {
db := common.SqlDB2DB(sdb)
dbr := db.Exec("update dtm_busi.user_account_trading t join dtm_busi.user_account a on t.user_id=a.user_id and t.user_id=? set t.trading_balance=t.trading_balance + ? where a.balance + t.trading_balance + ? > 0", uid, -amount, -amount)
if dbr.Error != nil {
return nil, dbr.Error
dbr := db.Exec("update dtm_busi.user_account_trading t join dtm_busi.user_account a on t.user_id=a.user_id and t.user_id=? set t.trading_balance=t.trading_balance + ?", uid, -amount, -amount)
if dbr.Error == nil && dbr.RowsAffected == 1 {
dbr = db.Exec("update dtm_busi.user_account set balance=balance+? where user_id=?", amount, uid)
}
if dbr.RowsAffected == 0 {
return nil, fmt.Errorf("update trading error")
}
dbr = db.Model(&UserAccount{}).Where("user_id = ?", uid).
Update("balance", gorm.Expr("balance + ?", amount))
if dbr.Error != nil {
return nil, dbr.Error
}