质押查询

This commit is contained in:
yangduo 2024-07-09 17:29:04 +08:00
parent 9c1e3693d4
commit 4a5733841b
2 changed files with 115 additions and 1 deletions

View File

@ -0,0 +1,111 @@
package market
import (
"f5"
"fmt"
"main/common"
"main/constant"
. "main/global"
"net/http"
"q5"
"github.com/gin-gonic/gin"
)
func (this *MarketApi) LockList(c *gin.Context) {
netId := q5.ToInt64(c.Param("net_id"))
owner := c.Param("owner_address")
reqJson := struct {
PageSize interface{} `json:"page_size"`
Cursor interface{} `json:"cursor"`
Search struct {
} `json:"search"`
Filter struct {
ItemIds []interface{} `json:"item_ids"`
} `json:"filter"`
Sort struct {
Fields [] struct {
} `json:"fields"`
} `json:"sort"`
}{}
if err := c.ShouldBindJSON(&reqJson); err != nil {
c.JSON(http.StatusOK, gin.H{
"code": 1,
"message": err.Error(),
})
return
}
pageSize := q5.AdjustRangeValue(q5.SafeToInt32(reqJson.PageSize), 1, 20)
cursor := q5.SafeToInt64(reqJson.Cursor)
sql := fmt.Sprintf(`
SELECT * FROM t_nft WHERE idx > %d AND net_id = %d AND owner_address = '%s' AND owner_address = last_lock_address
`,
cursor, netId, owner)
subFilters := []f5.DbQueryFilter{}
{
itemIds := map[int32]int32{}
for _, val := range(reqJson.Filter.ItemIds) {
itemId := q5.SafeToInt32(val)
itemIds[itemId] = 1
}
if len(itemIds) > 0 {
inSub := `item_id IN (`
i := 0
for key, _ := range(itemIds) {
if i == 0 {
inSub += q5.ToString(key)
} else {
inSub += "," + q5.ToString(key)
}
i += 1
}
inSub += ")"
q5.AppendSlice(&subFilters, f5.GetDbFilter().Custom(inSub).And())
}
}
rspObj := struct {
ErrCode int32 `json:"errcode"`
ErrMsg string `json:"errmsg"`
Page common.StreamPagination `json:"page"`
Rows []struct{
Event interface{} `json:"event"`
Nft interface{} `json:"nft"`
} `json:"rows"`
}{}
q5.NewSlice(&rspObj.Rows, 0, 10)
nfts := []*common.NftDto{}
orderBy := ""
f5.GetGoStyleDb().StreamPageQuery(
constant.BCNFT_DB,
pageSize,
cursor,
sql,
[]string{
},
f5.GetDbFilter().Comp(subFilters...),
orderBy,
func (err error, pagination *f5.StreamPagination) {
rspObj.Page.FillPage(pagination)
},
func (ds *f5.DataSet) {
p := new(common.NftDto)
p.NetId = q5.ToInt32(ds.GetByName("net_id"))
p.ContractAddress = ds.GetByName("contract_address")
p.TokenId = ds.GetByName("token_id")
p.Payload = map[string]interface{}{}
q5.AppendSlice(&nfts, p)
})
GetCacheMgr().GetNfts(nfts)
{
for _, val := range nfts {
p := q5.NewSliceElement(&rspObj.Rows)
p.Event = val.Payload
p.Nft = val.NftCache.GetJsonData()
}
}
c.JSON(200, rspObj)
}

View File

@ -2,7 +2,7 @@ package market
import (
"f5"
"main/api/v1"
v1 "main/api/v1"
"main/middleware"
)
@ -23,4 +23,7 @@ func (this *MarketRouter) InitRouter() {
f5.GetApp().GetGinEngine().GET("/api/market/product/goods/:net_id/:contract_address/:token_id",
middleware.MaybeJwtAuth,
api.MarketApi.Goods)
f5.GetApp().GetGinEngine().POST("/api/market/product/lock/:net_id/:owner_address/",
middleware.MaybeJwtAuth,
api.MarketApi.LockList)
}