package user import ( "f5" "fmt" "main/constant" "q5" "strings" "github.com/gin-gonic/gin" ) type UserApi struct { } func (this *UserApi) Info(c *gin.Context) { accountAddress := strings.ToLower(c.Param("account_address")) rspObj := struct { ErrCode int32 `json:"errcode"` ErrMsg string `json:"errmsg"` NickName string `json:"nickname"` Email string `json:"email"` ContributionPoint string `json:"contribution_point"` Gold string `json:"gold"` Diamond string `json:"diamond"` }{} var contributionPoint float64 var gold float64 var diamond float64 { var dbErr error f5.GetGoStyleDb().OrmSelectOne( constant.GAME_DB, "t_user", [][]string{ {"address", accountAddress}, }, func(err error, ds *f5.DataSet) { dbErr = err if err != nil { return } if ds.Next() { gold = q5.ToFloat64(ds.GetByName("gold")) diamond = q5.ToFloat64(ds.GetByName("diamond")) } }) if dbErr != nil { f5.RspErr(c, 500, "server internal error") return } } { var dbErr error f5.GetGoStyleDb().OrmSelectOne( constant.BCNFT_DB, "t_contribution", [][]string{ {"account_address", accountAddress}, }, func(err error, ds *f5.DataSet) { dbErr = err if err != nil { return } if ds.Next() { contributionPoint += q5.ToFloat64(ds.GetByName("contribution")) } }) if dbErr != nil { f5.RspErr(c, 500, "server internal error") return } } { var dbErr error sql := "SELECT SUM(contribution) FROM t_staking_daily_settlement WHERE account_address = ?" params := []string{ accountAddress, } f5.GetGoStyleDb().RawQuery( constant.BCNFT_DB, sql, params, func(err error, ds *f5.DataSet) { dbErr = err if err != nil { return } for ds.Next() { contributionPoint += q5.ToFloat64(ds.GetByIndex(0)) } }) if dbErr != nil { f5.RspErr(c, 500, "server internal error") return } } { var dbErr error sql := "SELECT SUM(diamond) FROM t_recharge_order WHERE passport_address = ? AND pay_status = 1 AND delivery_status = 0;" params := []string{ accountAddress, } f5.GetGoStyleDb().RawQuery( constant.BCNFT_DB, sql, params, func(err error, ds *f5.DataSet) { dbErr = err if err != nil { return } for ds.Next() { diamond += q5.ToFloat64(ds.GetByIndex(0)) } }) if dbErr != nil { f5.RspErr(c, 500, "server internal error") return } } rspObj.ContributionPoint = fmt.Sprintf("%.2f", contributionPoint) rspObj.Gold = fmt.Sprintf("%.2f", gold) rspObj.Diamond = fmt.Sprintf("%.2f", diamond) c.JSON(200, rspObj) }