update qs example

This commit is contained in:
yedf2 2021-07-29 22:41:43 +08:00
parent e80f68c387
commit c5e3bc370d
8 changed files with 35 additions and 17 deletions

View File

@ -12,11 +12,10 @@ type testConfig struct {
var config = testConfig{}
var myinit int = func() int {
InitApp(GetProjectDir(), &config)
func init() {
InitConfig(GetProjectDir(), &config)
config.Mysql["database"] = ""
return 0
}()
}
func TestDb(t *testing.T) {
db := DbGet(config.Mysql)

View File

@ -207,8 +207,8 @@ func (f *formatter) Format(entry *logrus.Entry) ([]byte, error) {
return b.Bytes(), nil
}
// InitApp init config
func InitApp(dir string, config interface{}) {
// InitConfig init config
func InitConfig(dir string, config interface{}) {
logrus.SetFormatter(&formatter{})
cont, err := ioutil.ReadFile(dir + "/conf.yml")
if err != nil {

View File

@ -1,5 +1,7 @@
package dtmsvr
import "github.com/yedf/dtm/common"
type dtmsvrConfig struct {
TransCronInterval int64 `yaml:"TransCronInterval"` // 单位秒 当事务等待这个时间之后还没有变化则进行一轮处理包括prepared中的任务和committed的任务
Mysql map[string]string `yaml:"Mysql"`
@ -10,3 +12,8 @@ var config = &dtmsvrConfig{
}
var dbName = "dtm"
func init() {
common.InitConfig(common.GetProjectDir(), &config)
config.Mysql["database"] = ""
}

View File

@ -19,7 +19,7 @@ var app *gin.Engine
func TestMain(m *testing.M) {
TransProcessedTestChan = make(chan string, 1)
common.InitApp(common.GetProjectDir(), &config)
common.InitConfig(common.GetProjectDir(), &config)
config.Mysql["database"] = dbName
PopulateMysql(false)
examples.PopulateMysql(false)

View File

@ -20,8 +20,6 @@ func MainStart() {
// StartSvr StartSvr
func StartSvr() {
logrus.Printf("start dtmsvr")
common.InitApp(common.GetProjectDir(), &config)
config.Mysql["database"] = dbName
app := common.GetGinApp()
addRoute(app)
logrus.Printf("dtmsvr listen at: %d", dtmsvrPort)
@ -31,7 +29,5 @@ func StartSvr() {
// PopulateMysql setup mysql data
func PopulateMysql(skipDrop bool) {
common.InitApp(common.GetProjectDir(), &config)
config.Mysql["database"] = ""
examples.RunSQLScript(config.Mysql, common.GetCurrentCodeDir()+"/dtmsvr.sql", skipDrop)
}

View File

@ -1,5 +1,7 @@
package examples
import "github.com/yedf/dtm/common"
type exampleConfig struct {
Mysql map[string]string `yaml:"Mysql"`
}
@ -7,3 +9,8 @@ type exampleConfig struct {
var config = exampleConfig{}
var dbName = "dtm_busi"
func init() {
common.InitConfig(common.GetProjectDir(), &config)
config.Mysql["database"] = dbName
}

View File

@ -32,7 +32,5 @@ func RunSQLScript(mysql map[string]string, script string, skipDrop bool) {
// PopulateMysql populate example mysql data
func PopulateMysql(skipDrop bool) {
common.InitApp(common.GetProjectDir(), &config)
config.Mysql["database"] = dbName
RunSQLScript(config.Mysql, common.GetCurrentCodeDir()+"/examples.sql", skipDrop)
}

View File

@ -8,6 +8,7 @@ import (
"github.com/sirupsen/logrus"
"github.com/yedf/dtm/common"
"github.com/yedf/dtm/dtmcli"
"gorm.io/gorm"
)
// 启动命令go run app/main.go qs
@ -42,17 +43,27 @@ func QsFireRequest() string {
return saga.Gid
}
func qsAdjustBalance(uid int, amount int) (interface{}, error) {
err := dbGet().Transaction(func(tx *gorm.DB) error {
return tx.Model(&UserAccount{}).Where("user_id = ?", uid).Update("balance", gorm.Expr("balance + ?", amount)).Error
})
if err != nil {
return nil, err
}
return M{"dtm_result": "SUCCESS"}, nil
}
func qsAddRoute(app *gin.Engine) {
app.POST(qsBusiAPI+"/TransIn", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
return M{"dtm_result": "SUCCESS"}, nil
return qsAdjustBalance(2, 30)
}))
app.POST(qsBusiAPI+"/TransInCompensate", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
return M{"dtm_result": "SUCCESS"}, nil
return qsAdjustBalance(2, -30)
}))
app.POST(qsBusiAPI+"/TransOut", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
return M{"dtm_result": "SUCCESS"}, nil
return qsAdjustBalance(1, -30)
}))
app.POST(qsBusiAPI+"/TransOutCompensate", common.WrapHandler(func(c *gin.Context) (interface{}, error) {
return M{"dtm_result": "SUCCESS"}, nil
return qsAdjustBalance(1, 30)
}))
}