Commit 9f66803a authored by shajiaiming's avatar shajiaiming

Merge branch 'feature/optimize' into develop

parents a674b6bb fbb06b8c
package models
import (
"bwallet/pkg/setting"
"github.com/jinzhu/gorm"
)
type CoinGas struct {
CoinName string `json:"coin_name"`
Low string `json:"low"`
Average string `json:"average"`
High string `json:"high"`
Switch int8 `json:"switch"`
}
func (c CoinGas) TableName() string {
return setting.DatabaseSetting.Name_Sources + ".wallet_coin_gas"
}
func GetCoinsGas(maps interface{}) ([]*CoinGas, error) {
var ct []*CoinGas
err := db.Where(maps).Find(&ct).Error
if err != nil && err != gorm.ErrRecordNotFound {
return nil, err
}
return ct, nil
}
func AddCoinGas(data map[string]interface{}) (error) {
CoinGas := CoinGas{
CoinName: data["coin_name"].(string),
Low: data["low"].(string),
Average: data["average"].(string),
High: data["high"].(string),
Switch: data["switch"].(int8),
}
if err := db.Debug().Create(&CoinGas).Error; err != nil {
return err
}
return nil
}
func EditCoinGas(maps interface{}, data interface{}) error {
if err := db.Model(&CoinGas{}).Where(maps).Updates(data).Error; err != nil {
return err
}
return nil
}
func DeleteCoinGas(id int) error {
if err := db.Where("id = ?", id).Delete(CoinGas{}).Error; err != nil {
return err
}
return nil
}
func GetCoinGas(coin_name string) (*CoinGas, error) {
var gas CoinGas
err := db.Where("coin_name = ? and switch = ?", coin_name, 1).First(&gas).Error
if err != nil && err != gorm.ErrRecordNotFound {
return nil, err
}
err = db.Model(&gas).Error
if err != nil && err != gorm.ErrRecordNotFound {
return nil, err
}
return &gas, nil
}
func Exist(coin_name string) (bool, error) {
var coinGas CoinGas
err := db.Where("coin_name = ?", coin_name).First(&coinGas).Error
if err != nil && err != gorm.ErrRecordNotFound {
return false, err
}
if coinGas.CoinName != "" {
return true, nil
}
return false, nil
}
package cron package cron
import ( import (
"bwallet/service/coin_gas_service"
"bwallet/service/red_packet_service" "bwallet/service/red_packet_service"
"github.com/robfig/cron" "github.com/robfig/cron"
) )
...@@ -11,9 +10,9 @@ var c *cron.Cron ...@@ -11,9 +10,9 @@ var c *cron.Cron
func Setup() { func Setup() {
c = cron.New() c = cron.New()
c.AddFunc("* * * * * *", func() { //c.AddFunc("* * * * * *", func() {
coin_gas_service.TokenView() // coin_gas_service.TokenView()
}) //})
c.AddFunc("* * * * * *", func() { c.AddFunc("* * * * * *", func() {
red_packet_service.UpdateReceive() red_packet_service.UpdateReceive()
......
...@@ -214,6 +214,13 @@ var ( ...@@ -214,6 +214,13 @@ var (
ErrDeleteCoinTicker = &Errno{Code: 20104, Message: "The coin ticker delete error."} ErrDeleteCoinTicker = &Errno{Code: 20104, Message: "The coin ticker delete error."}
ErrExistCoinTicker = &Errno{Code: 20105, Message: "The coin ticker already exists."} ErrExistCoinTicker = &Errno{Code: 20105, Message: "The coin ticker already exists."}
// coin gas errors
ErrCoinGasNotFound = &Errno{Code: 20101, Message: "The coin gas was not found."}
ErrAddCoinGas = &Errno{Code: 20102, Message: "The coin gas add error."}
ErrUpdateCoinGas = &Errno{Code: 20103, Message: "The coin gas update error."}
ErrDeleteCoinGas = &Errno{Code: 20104, Message: "The coin gas delete error."}
ErrExistCoinGas = &Errno{Code: 20105, Message: "The coin gas already exists."}
// red packet errors // red packet errors
ErrRedPacketNotFound = &Errno{Code: 20101, Message: "The red packet was not found."} ErrRedPacketNotFound = &Errno{Code: 20101, Message: "The red packet was not found."}
ErrCountRedPacket = &Errno{Code: 20102, Message: "The red packet statistic error."} ErrCountRedPacket = &Errno{Code: 20102, Message: "The red packet statistic error."}
......
package backend
import (
"bwallet/pkg/errno"
"bwallet/pkg/handler"
"bwallet/pkg/util"
"bwallet/service/coin_gas_service"
"bwallet/validate_service"
"github.com/Unknwon/com"
"github.com/astaxie/beego/validation"
"github.com/gin-gonic/gin"
"strings"
)
func CoinsGas(c *gin.Context) {
token := c.Request.Header.Get("Token")
user, _ := util.ParseToken(token)
group := user.UserInfo.Group
if ("administrator" != group) {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return
}
CoinGasService := coin_gas_service.CoinGas{}
coins_gas, err := CoinGasService.GetAll()
if err != nil {
handler.SendResponse(c, errno.InternalServerError, nil)
return
}
handler.SendResponse(c, nil, coins_gas)
}
func AddCoinGas(c *gin.Context) {
token := c.Request.Header.Get("Token")
user, _ := util.ParseToken(token)
group := user.UserInfo.Group
if ("administrator" != group) {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return
}
coin_gas := validate_service.CoinGas{}
c.ShouldBindJSON(&coin_gas)
if ok, errors := validate_service.ValidateInputs(coin_gas); !ok {
for _, err := range errors {
handler.SendResponse(c, errno.ErrBind, strings.Join(err, " "))
return
}
}
CoinGasService := coin_gas_service.CoinGas{
CoinName: coin_gas.CoinName,
Low: coin_gas.Low,
Average: coin_gas.Average,
High: coin_gas.High,
Switch: coin_gas.Switch,
}
if err := CoinGasService.Add(); err != nil {
handler.SendResponse(c, errno.ErrAddCoinTicker, nil)
return
}
handler.SendResponse(c, nil, nil)
}
func UpdateCoinGas(c *gin.Context) {
token := c.Request.Header.Get("Token")
user, _ := util.ParseToken(token)
group := user.UserInfo.Group
if ("administrator" != group) {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return
}
coin_gas := validate_service.CoinGas{}
c.ShouldBindJSON(&coin_gas)
if ok, errors := validate_service.ValidateInputs(coin_gas); !ok {
for _, err := range errors {
handler.SendResponse(c, errno.ErrBind, strings.Join(err, " "))
return
}
}
CoinGasValidateService := coin_gas_service.CoinGas{
CoinName: coin_gas.CoinName,
}
exist, _ := CoinGasValidateService.Exist()
if !exist {
handler.SendResponse(c, errno.ErrCoinGasNotFound, nil)
return
}
CoinGasService := coin_gas_service.CoinGas{
Low: coin_gas.Low,
Average: coin_gas.Average,
High: coin_gas.High,
Switch: coin_gas.Switch,
}
if err := CoinGasService.Edit(); err != nil {
handler.SendResponse(c, errno.ErrAddCoinGas, nil)
return
}
handler.SendResponse(c, nil, nil)
}
func DeleteCoinGas(c *gin.Context) {
token := c.Request.Header.Get("Token")
user, _ := util.ParseToken(token)
group := user.UserInfo.Group
if ("administrator" != group) {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return
}
id := com.StrTo(c.DefaultQuery("id", "0")).MustInt()
valid := validation.Validation{}
valid.Min(id, 1, "id").Message("ID必须大于0")
if valid.HasErrors() {
handler.SendResponse(c, errno.ErrValidation, nil)
return
}
CoinGasService := coin_gas_service.CoinGas{
Id: id,
}
exists, err := CoinGasService.Exist()
if err != nil {
handler.SendResponse(c, errno.ErrValidation, nil)
return
}
if !exists {
handler.SendResponse(c, errno.ErrCoinGasNotFound, nil)
return
}
err = CoinGasService.Delete()
if err != nil {
handler.SendResponse(c, errno.ErrDeleteCoinTicker, nil)
return
}
handler.SendResponse(c, nil, nil)
}
...@@ -10,6 +10,7 @@ import ( ...@@ -10,6 +10,7 @@ import (
"github.com/Unknwon/com" "github.com/Unknwon/com"
"github.com/astaxie/beego/validation" "github.com/astaxie/beego/validation"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"strconv"
"strings" "strings"
) )
...@@ -77,51 +78,40 @@ func AddSupportedChain(c *gin.Context) { ...@@ -77,51 +78,40 @@ func AddSupportedChain(c *gin.Context) {
} }
} }
coinService := coin_service.Coin{ var platform_id int
Name: chain.CoinName, platform_id = user.UserInfo.PlatformId
Chain: strings.ToUpper(chain.CoinName), if ("administrator" == group) {
if chain.PlatformId != 0 {
platform_id = chain.PlatformId
}
} }
coin, err := coinService.Find()
if err != nil { for _, id := range strings.Split(chain.CoinIds, ",") {
handler.SendResponse(c, errno.ErrCoinNotFound, nil) if id == "" {
return continue
} }
if "" == coin.Name { coin_id, err := strconv.Atoi(id)
if (nil != err) {
continue
}
coinService := coin_service.Coin{ coinService := coin_service.Coin{
Name: chain.CoinName, Id: coin_id,
Chain: "BTY",
} }
coin, err = coinService.Find() exists, err := coinService.ExistById()
if err != nil { if err != nil || !exists {
handler.SendResponse(c, errno.ErrCoinNotFound, nil) continue
return
} }
}
if "" == coin.Name {
handler.SendResponse(c, errno.ErrCoinNotFound, nil)
return
}
chainService := supported_chain_service.SupportedChain{ supportedChainValidate := supported_chain_service.SupportedChain{
PlatformId: chain.PlatformId, CoinId: coin_id,
CoinId: coin.ID, PlatformId: platform_id,
} }
total, err := supportedChainValidate.Count()
total, err := chainService.Count() if err != nil || total > 0 {
if err != nil { continue
handler.SendResponse(c, errno.ErrCountCoin, nil) }
return
}
if 0 != total {
handler.SendResponse(c, errno.ErrExistCoin, nil)
return
}
if err := chainService.Add(); err != nil { supportedChainValidate.Add()
handler.SendResponse(c, errno.ErrAddSupportedChain, nil)
return
} }
handler.SendResponse(c, nil, nil) handler.SendResponse(c, nil, nil)
......
...@@ -161,6 +161,11 @@ func InitRouter() *gin.Engine { ...@@ -161,6 +161,11 @@ func InitRouter() *gin.Engine {
api.POST("/manager", backend.AddManager) api.POST("/manager", backend.AddManager)
api.PUT("/manager", backend.EditManager) api.PUT("/manager", backend.EditManager)
api.DELETE("/manager", backend.DeleteManager) api.DELETE("/manager", backend.DeleteManager)
api.GET("/coins-gas", backend.CoinsGas)
api.POST("/coin-gas", backend.AddCoinGas)
api.PUT("/coin-gas", backend.UpdateCoinGas)
api.DELETE("/coin-gas", backend.DeleteCoinGas)
} }
return r return r
......
package coin_gas_service package coin_gas_service
import ( import (
"bwallet/models"
"bwallet/pkg/errno" "bwallet/pkg/errno"
"bwallet/pkg/gredis" "bwallet/pkg/gredis"
"bwallet/pkg/util" "bwallet/pkg/util"
"encoding/json" "encoding/json"
"fmt"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"net/url" "net/url"
...@@ -26,7 +28,7 @@ type Data struct { ...@@ -26,7 +28,7 @@ type Data struct {
func GetTransactionGas(name string) (map[string]interface{}, error) { func GetTransactionGas(name string) (map[string]interface{}, error) {
data := make(map[string]interface{}) data := make(map[string]interface{})
items_fee := []string{"BTC", "BCH", "LTC", "ZEC", "ZCASH", "DCR", "NEO", "TRX", "ATOM", "BTY", "ETC", "ETH", "HT", "ETHTOKEN", "BNB"} items_fee := []string{"BTC", "BCH", "LTC", "ZEC", "ZCASH", "DCR", "NEO", "TRX", "ATOM", "BTY", "ETC", "ETH", "HT", "ETHTOKEN", "BNB", "DOGE", "YCC"}
_, found_fee := util.Contains(items_fee, strings.ToUpper(name)) _, found_fee := util.Contains(items_fee, strings.ToUpper(name))
...@@ -34,11 +36,27 @@ func GetTransactionGas(name string) (map[string]interface{}, error) { ...@@ -34,11 +36,27 @@ func GetTransactionGas(name string) (map[string]interface{}, error) {
return nil, errno.ErrCoinNotFound return nil, errno.ErrCoinNotFound
} }
var coin_gas *models.CoinGas
coin_gas, err := models.GetCoinGas(name)
if err != nil {
return nil, err
}
if coin_gas.CoinName != "" {
data["name"] = strings.ToUpper(coin_gas.CoinName)
data["low"] = coin_gas.Low
data["average"] = coin_gas.Average
data["high"] = coin_gas.High
return data, nil
}
if "ETC" == strings.ToUpper(name) || "HT" == strings.ToUpper(name) { if "ETC" == strings.ToUpper(name) || "HT" == strings.ToUpper(name) {
fee, _ := gredis.HashGet("ETC_GAS", "gasPrice", 3) fee, _ := gredis.HashGet("ETC_GAS", "gasPrice", 3)
low := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*30000*0.000000001*30*1.1, 8) low := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*30000*0.000000001*30*1.1, 8)
average := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*30000*0.000000001*30*1.2, 8) average := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*30000*0.000000001*30*1.2, 8)
high := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*30000*0.000000001*30*1.3, 8) high := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*30000*0.000000001*30*6, 8)
data["name"] = strings.ToUpper(name) data["name"] = strings.ToUpper(name)
data["low"] = low data["low"] = low
...@@ -49,9 +67,9 @@ func GetTransactionGas(name string) (map[string]interface{}, error) { ...@@ -49,9 +67,9 @@ func GetTransactionGas(name string) (map[string]interface{}, error) {
} }
} else if "ETH" == strings.ToUpper(name) { } else if "ETH" == strings.ToUpper(name) {
fee, _ := gredis.HashGet(strings.ToUpper(name)+"_GAS", "gasPrice", 3) fee, _ := gredis.HashGet(strings.ToUpper(name)+"_GAS", "gasPrice", 3)
low := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*21000*0.000000001, 8) low := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*33000*0.000000001, 8)
average := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*21000*0.000000001*1.1, 8) average := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*33000*0.000000001*1.1, 8)
high := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*21000*0.000000001*1.2, 8) high := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*33000*0.000000001*6, 8)
data["name"] = strings.ToUpper(name) data["name"] = strings.ToUpper(name)
data["low"] = low data["low"] = low
...@@ -67,9 +85,9 @@ func GetTransactionGas(name string) (map[string]interface{}, error) { ...@@ -67,9 +85,9 @@ func GetTransactionGas(name string) (map[string]interface{}, error) {
data["high"] = "0.002" data["high"] = "0.002"
} else if "ETHTOKEN" == strings.ToUpper(name) { } else if "ETHTOKEN" == strings.ToUpper(name) {
fee, _ := gredis.HashGet("ETH_GAS", "gasPrice", 3) fee, _ := gredis.HashGet("ETH_GAS", "gasPrice", 3)
low := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*80000*0.000000001, 8) low := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*130000*0.000000001, 8)
average := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*80000*0.000000001*1.1, 8) average := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*130000*0.000000001*1.1, 8)
high := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*80000*0.000000001*1.2, 8) high := util.FormatFloat(util.ToFloat64(string(fee))/1000000000*130000*0.000000001*6, 8)
data["name"] = strings.ToUpper(name) data["name"] = strings.ToUpper(name)
data["low"] = low data["low"] = low
...@@ -82,7 +100,7 @@ func GetTransactionGas(name string) (map[string]interface{}, error) { ...@@ -82,7 +100,7 @@ func GetTransactionGas(name string) (map[string]interface{}, error) {
fee, _ := gredis.HashGet(strings.ToUpper(name)+"_GAS", "txFee", 3) fee, _ := gredis.HashGet(strings.ToUpper(name)+"_GAS", "txFee", 3)
low := util.FormatFloat(util.ToFloat64(string(fee))*1.1, 8) low := util.FormatFloat(util.ToFloat64(string(fee))*1.1, 8)
average := util.FormatFloat(util.ToFloat64(string(fee))*1.2, 8) average := util.FormatFloat(util.ToFloat64(string(fee))*1.2, 8)
high := util.FormatFloat(util.ToFloat64(string(fee))*1.3, 8) high := util.FormatFloat(util.ToFloat64(string(fee))*6, 8)
data["name"] = strings.ToUpper(name) data["name"] = strings.ToUpper(name)
data["low"] = low data["low"] = low
...@@ -216,6 +234,10 @@ func TokenView() error { ...@@ -216,6 +234,10 @@ func TokenView() error {
gredis.HashSet("DCR_GAS", "txFee", val.TxFee, 3) gredis.HashSet("DCR_GAS", "txFee", val.TxFee, 3)
gredis.HashSet("DCR_GAS", "time", val.Time, 3) gredis.HashSet("DCR_GAS", "time", val.Time, 3)
} }
if "DOGE" == strings.ToUpper(val.Network) {
gredis.HashSet("DOGE_GAS", "txFee", val.TxFee, 3)
gredis.HashSet("DOGE_GAS", "time", val.Time, 3)
}
if "ETC" == strings.ToUpper(val.Network) { if "ETC" == strings.ToUpper(val.Network) {
gredis.HashSet("ETC_GAS", "gasPrice", val.GasPrice, 3) gredis.HashSet("ETC_GAS", "gasPrice", val.GasPrice, 3)
gredis.HashSet("ETC_GAS", "time", val.Time, 3) gredis.HashSet("ETC_GAS", "time", val.Time, 3)
...@@ -229,3 +251,64 @@ func TokenView() error { ...@@ -229,3 +251,64 @@ func TokenView() error {
} }
return nil return nil
} }
type CoinGas struct {
Id int
CoinName string
Low string
Average string
High string
Switch int8
}
func (g *CoinGas) GetAll() ([]*models.CoinGas, error) {
coins_gas, err := models.GetCoinsGas(g.getMaps())
if err != nil {
return nil, err
}
return coins_gas, nil
}
func (g *CoinGas) Add() error {
CoinGas := map[string]interface{}{
"coin_name": g.CoinName,
"low": g.Low,
"average": g.Average,
"high": g.High,
"switch": g.Switch,
}
fmt.Println(CoinGas)
if err := models.AddCoinGas(CoinGas); err != nil {
return err
}
return nil
}
func (g *CoinGas) Edit() error {
return models.EditCoinGas(g.getMaps(), map[string]interface{}{
"low": g.Low,
"average": g.Average,
"high": g.High,
"switch": g.Switch,
})
}
func (g *CoinGas) Delete() error {
return models.DeleteCoinGas(g.Id)
}
func (g *CoinGas) Exist() (bool, error) {
return models.Exist(g.CoinName)
}
func (c *CoinGas) getMaps() (map[string]interface{}) {
maps := make(map[string]interface{})
if c.CoinName != "" {
maps["coin_name"] = c.CoinName
}
return maps
}
...@@ -85,6 +85,7 @@ type RedPacket struct { ...@@ -85,6 +85,7 @@ type RedPacket struct {
type RedPacketResp struct { type RedPacketResp struct {
PacketId string `json:"packet_id"` PacketId string `json:"packet_id"`
UserId string `json:"user_id"`
CoinName string `json:"coin_name"` CoinName string `json:"coin_name"`
Amount float32 `json:"amount"` Amount float32 `json:"amount"`
Size uint8 `json:"size"` Size uint8 `json:"size"`
...@@ -112,6 +113,7 @@ func (r *RedPacket) GetRedPackets() ([]*RedPacketResp, error) { ...@@ -112,6 +113,7 @@ func (r *RedPacket) GetRedPackets() ([]*RedPacketResp, error) {
} }
tmp := &RedPacketResp{} tmp := &RedPacketResp{}
tmp.PacketId = val.PacketId tmp.PacketId = val.PacketId
tmp.UserId = val.UserId
tmp.CoinName = val.CoinName tmp.CoinName = val.CoinName
tmp.Amount = val.Amount tmp.Amount = val.Amount
tmp.Size = val.Size tmp.Size = val.Size
...@@ -230,7 +232,7 @@ func UpdateReceive() error { ...@@ -230,7 +232,7 @@ func UpdateReceive() error {
if redPacketReceiveDetailResp.Error.Code != 0 { if redPacketReceiveDetailResp.Error.Code != 0 {
continue continue
} }
var receive = []int{20063} var receive = []int{}
for _, item := range redPacketReceiveDetailResp.Result.Rows { for _, item := range redPacketReceiveDetailResp.Result.Rows {
receive = append(receive, util.ToInt(item.UserId)) receive = append(receive, util.ToInt(item.UserId))
} }
...@@ -292,16 +294,16 @@ func UpdateInfo() error { ...@@ -292,16 +294,16 @@ func UpdateInfo() error {
if redPacketResp.Error.Code != 0 { if redPacketResp.Error.Code != 0 {
fmt.Println(redPacketResp.Error.Message) fmt.Println(redPacketResp.Error.Message)
} }
if val.UpdateAt != redPacketResp.Result.UpdateAt { //if val.UpdateAt != redPacketResp.Result.UpdateAt {
redPacket := map[string]interface{}{ redPacket := map[string]interface{}{
"remain": redPacketResp.Result.Remain, "remain": redPacketResp.Result.Remain,
"status": redPacketResp.Result.Status, "status": redPacketResp.Result.Status,
"update_at": redPacketResp.Result.UpdateAt, "update_at": redPacketResp.Result.UpdateAt,
}
condition := make(map[string]interface{})
condition["id"] = val.ID
models.EditRedPacket(condition, redPacket)
} }
condition := make(map[string]interface{})
condition["id"] = val.ID
models.EditRedPacket(condition, redPacket)
//}
} }
return nil return nil
......
...@@ -14,9 +14,12 @@ type SupportedChain struct { ...@@ -14,9 +14,12 @@ type SupportedChain struct {
} }
type SupportedChainResp struct { type SupportedChainResp struct {
ID int `json:"id"` ID int `json:"id"`
Name string `json:"name"` Name string `json:"name"`
CoinId int `json:"coin_id"` CoinId int `json:"coin_id"`
Icon string `json:"icon"`
Platform string `json:"platform"`
Chain string `json:"chain"`
} }
func (c *SupportedChain) Get() (*models.SupportedChain, error) { func (c *SupportedChain) Get() (*models.SupportedChain, error) {
...@@ -40,6 +43,9 @@ func (c *SupportedChain) GetAll() ([]*SupportedChainResp, error) { ...@@ -40,6 +43,9 @@ func (c *SupportedChain) GetAll() ([]*SupportedChainResp, error) {
tmp.ID = val.ID tmp.ID = val.ID
tmp.Name = val.CoinInfo.Name tmp.Name = val.CoinInfo.Name
tmp.CoinId = val.CoinId tmp.CoinId = val.CoinId
tmp.Icon = val.CoinInfo.Icon
tmp.Platform = val.CoinInfo.Platform
tmp.Chain = val.CoinInfo.Chain
coinsResp = append(coinsResp, tmp) coinsResp = append(coinsResp, tmp)
} }
......
package validate_service
type CoinGas struct {
CoinName string `json:"coin_name" validate:"required"`
Low string `json:"low" validate:"required"`
Average string `json:"average" validate:"required"`
High string `json:"high" validate:"required"`
Switch int8 `json:"switch" validate:"required"`
}
...@@ -2,5 +2,5 @@ package validate_service ...@@ -2,5 +2,5 @@ package validate_service
type SupportedChain struct { type SupportedChain struct {
PlatformId int `json:"platform_id" validate:"required"` PlatformId int `json:"platform_id" validate:"required"`
CoinName string `json:"coin_name" validate:"required"` CoinIds string `json:"coin_ids" validate:"required"`
} }
...@@ -5,7 +5,7 @@ type Wallet struct { ...@@ -5,7 +5,7 @@ type Wallet struct {
DownloadUrl string `json:"download_url" validate:"required,url"` DownloadUrl string `json:"download_url" validate:"required,url"`
Introduce string `json:"introduce" validate:"required"` Introduce string `json:"introduce" validate:"required"`
Summary string `json:"summary, omitempty"` Summary string `json:"summary, omitempty"`
ChainId int `json:"chain_id" validate:"required"` ChainId int `json:"chain_id, omitempty`
IssueCharge float32 `json:"issue_charge, omitempty"` IssueCharge float32 `json:"issue_charge, omitempty"`
ChargeUnit string `json:"charge_unit, omitempty"` ChargeUnit string `json:"charge_unit, omitempty"`
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment