2024-08-05 14:21:29 +08:00

128 lines
2.6 KiB
Go

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)
}