Commit 42827c44 authored by vicotor's avatar vicotor

add api for tx status

parent deeb57a3
...@@ -215,6 +215,36 @@ func (d *Dao) GetHistoryInfo(user string) (history apiModel.History, err error) ...@@ -215,6 +215,36 @@ func (d *Dao) GetHistoryInfo(user string) (history apiModel.History, err error)
return history, nil return history, nil
} }
func (d *Dao) GetTxStatus(tx string) (result apiModel.TxStatusResult, err error) {
collection := d.db.Collection(new(dbModel.BridgeEvent).TableName())
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
result = apiModel.TxStatusResult{
Status: constant.TransferChainNoProcess.String(),
}
cursor, err := collection.Find(ctx, bson.M{"from_chain_tx_hash": tx})
if err != nil {
return result, nil
}
defer cursor.Close(ctx)
var events []dbModel.BridgeEvent
err = cursor.All(ctx, &events)
if err != nil {
return result, nil
}
if len(events) == 0 {
return result, nil
}
event := events[0]
result.Status = constant.TransferStatus(event.ToChainStatus).String()
return result, nil
}
type tokenBalance struct { type tokenBalance struct {
Name string Name string
Decimals int Decimals int
......
...@@ -129,11 +129,16 @@ type QuoteResult struct { ...@@ -129,11 +129,16 @@ type QuoteResult struct {
Payload string `json:"payload"` Payload string `json:"payload"`
} }
type TxStatusResult struct {
Status string `json:"status"`
}
type Querier interface { type Querier interface {
GetBridgeConfig() (config BridgeConfig, err error) GetBridgeConfig() (config BridgeConfig, err error)
GetAllChainSwapConfig() (map[int64]*ChainSwapConfig, error) GetAllChainSwapConfig() (map[int64]*ChainSwapConfig, error)
GetSwapConfig(int64) (*ChainSwapConfig, error) GetSwapConfig(int64) (*ChainSwapConfig, error)
GetHistoryInfo(user string) (history History, err error) GetHistoryInfo(user string) (history History, err error)
GetTxStatus(tx string) (result TxStatusResult, err error)
GetTokenBalance(chainId int64, user string, tokens []string) (balances TokenBalances, err error) GetTokenBalance(chainId int64, user string, tokens []string) (balances TokenBalances, err error)
GetBridgeTokenBalance(chainId int64, user string) (balances TokenBalances, err error) GetBridgeTokenBalance(chainId int64, user string) (balances TokenBalances, err error)
QuoteBridge(param QuoteBridgeParam) (quote QuoteResult, err error) QuoteBridge(param QuoteBridgeParam) (quote QuoteResult, err error)
......
...@@ -48,6 +48,25 @@ func getHistory(c *gin.Context) { ...@@ -48,6 +48,25 @@ func getHistory(c *gin.Context) {
c.JSON(200, withSuccess(history)) c.JSON(200, withSuccess(history))
} }
func getTxStatus(c *gin.Context) {
txHashStr := c.DefaultQuery("txhash", "")
txHash := common.HexToHash(txHashStr)
if _querier == nil {
log.Error("querier is nil")
c.JSON(500, withError(constant.InternalError))
return
}
status, err := _querier.GetTxStatus(strings.ToLower(txHash.String()))
if err != nil {
log.Errorf("get history error: %v", err)
c.JSON(500, withError(constant.InternalError))
return
}
c.JSON(200, withSuccess(status))
}
func bridgeRouters(c *gin.Context) { func bridgeRouters(c *gin.Context) {
if _querier == nil { if _querier == nil {
log.Error("querier is nil") log.Error("querier is nil")
......
...@@ -17,6 +17,7 @@ func initRouter(conf *config.Config, e *gin.Engine) { ...@@ -17,6 +17,7 @@ func initRouter(conf *config.Config, e *gin.Engine) {
{ {
user := v1.Group("/user") user := v1.Group("/user")
user.GET("/history", getHistory) user.GET("/history", getHistory)
user.GET("/txstatus", getTxStatus)
} }
{ {
bridge := v1.Group("/bridge") bridge := v1.Group("/bridge")
......
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