Bladeren bron

[dev] 迁移consts&model,补全defi返回参数缺失

Zhangzhenhua 1 week geleden
bovenliggende
commit
25be7b6f51

+ 1 - 0
go.mod

@@ -14,6 +14,7 @@ require (
 	github.com/fsnotify/fsnotify v1.7.0 // indirect
 	github.com/go-logr/logr v1.2.3 // indirect
 	github.com/go-logr/stdr v1.2.2 // indirect
+	github.com/gogf/gf v1.16.9 // indirect
 	github.com/gorilla/websocket v1.5.1 // indirect
 	github.com/grokify/html-strip-tags-go v0.1.0 // indirect
 	github.com/magiconair/properties v1.8.7 // indirect

+ 33 - 0
go.sum

@@ -1,10 +1,15 @@
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
 github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/clbanning/mxj v1.8.5-0.20200714211355-ff02cfb8ea28/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng=
 github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
 github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
 github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
 github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
 github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
 github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
@@ -12,19 +17,28 @@ github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
 github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/gogf/gf v1.16.9 h1:Q803UmmRo59+Ws08sMVFOcd8oNpkSWL9vS33hlo/Cyk=
+github.com/gogf/gf v1.16.9/go.mod h1:8Q/kw05nlVRp+4vv7XASBsMe9L1tsVKiGoeP2AHnlkk=
 github.com/gogf/gf/v2 v2.7.1 h1:Ukp7vzwh6VKnivEEx/xiMc61dL1HVZqCCHl//3GBRxc=
 github.com/gogf/gf/v2 v2.7.1/go.mod h1:3oyGjyLHtSSo8kQ57Nj1TPdUNc0e2HS0A2J+KkXoW+I=
+github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0=
+github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
 github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
+github.com/grokify/html-strip-tags-go v0.0.1/go.mod h1:2Su6romC5/1VXOQMaWL2yb618ARB8iVo6/DR99A6d78=
 github.com/grokify/html-strip-tags-go v0.1.0 h1:03UrQLjAny8xci+R+qjCce/MYnpNXCtgzltlQbOBae4=
 github.com/grokify/html-strip-tags-go v0.1.0/go.mod h1:ZdzgfHEzAfz9X6Xe5eBLVblWIxXfYSQ40S/VKrAOGpc=
 github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
 github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
 github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
 github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
+github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
 github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
@@ -33,22 +47,41 @@ github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m
 github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
 github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
+go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg=
 go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
 go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
 go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY=
 go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM=
+go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs=
 go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M=
 go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8=
+golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
 golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
 golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
 golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 4 - 5
internal/library/birdeye/common.go

@@ -1,19 +1,18 @@
 package birdeye
 
 import (
-	"birdcall/internal/consts"
 	"io"
 	"net/http"
 	"os"
 )
 
 func MakeHeader(req *http.Request, chain_name ...string) *http.Request {
-	apiKey := os.Getenv(consts.BIRD_EYE_API_KEY)
+	apiKey := os.Getenv(BIRD_EYE_API_KEY)
 
-	req.Header.Add(consts.ACCEPT, consts.APPLICATION_JSON)
-	req.Header.Add(consts.X_API_KEY, apiKey)
+	req.Header.Add(ACCEPT, APPLICATION_JSON)
+	req.Header.Add(X_API_KEY, apiKey)
 	if len(chain_name) > 0 {
-		req.Header.Add(consts.X_CHAIN, chain_name[0])
+		req.Header.Add(X_CHAIN, chain_name[0])
 	}
 	return req
 }

+ 2 - 1
internal/consts/consts.go → internal/library/birdeye/consts.go

@@ -1,4 +1,4 @@
-package consts
+package birdeye
 
 const (
 	GET  string = "GET"
@@ -32,4 +32,5 @@ const (
 	TX_LIST              string = "tx_list"
 	WALLET               string = "wallet"
 	BEFORE               string = "before"
+	TEN                  int    = 10
 )

+ 31 - 30
internal/library/birdeye/defi/defi.go

@@ -9,9 +9,9 @@ import (
 	"strconv"
 	"strings"
 
-	"birdcall/internal/consts"
 	"birdcall/internal/library/birdeye"
-	"birdcall/internal/model/birdeye/defi"
+
+	"github.com/gogf/gf/v2/util/gconv"
 )
 
 type Defi struct{}
@@ -19,12 +19,12 @@ type Defi struct{}
 // 获取当前支持的网络
 // @return *birdeye.CommonRes
 // @return error
-func (d *Defi) Support() (*defi.NetWorkRes, error) {
+func (d *Defi) Support() (*NetWorkRes, error) {
 	//构建基本请求连接
-	baseURL := os.Getenv(consts.DEFI_URL)
-	fullURL := baseURL + consts.NET_WORKS
+	baseURL := os.Getenv(birdeye.DEFI_URL)
+	fullURL := baseURL + birdeye.NET_WORKS
 
-	apiReq, err := http.NewRequest(consts.GET, fullURL, nil)
+	apiReq, err := http.NewRequest(birdeye.GET, fullURL, nil)
 	if err != nil {
 		return nil, err
 	}
@@ -36,8 +36,8 @@ func (d *Defi) Support() (*defi.NetWorkRes, error) {
 	}
 
 	//处理返回数据
-	var res *defi.NetWorkRes
-	err = json.Unmarshal([]byte(body), &res)
+	var res *NetWorkRes
+	err = gconv.Struct(body, &res)
 	if err != nil {
 		return nil, err
 	}
@@ -50,16 +50,16 @@ func (d *Defi) Support() (*defi.NetWorkRes, error) {
 //		@param address
 //		@return *birdeye.CommonRes
 //		@return error
-func (d *Defi) Price(chain_name string, check_liquidity float64, include_liquidity bool, address string) (*defi.PriceRes, error) {
+func (d *Defi) Price(chain_name string, check_liquidity float64, include_liquidity bool, address string) (*PriceRes, error) {
 	//构建基本请求连接
-	baseURL := os.Getenv(consts.DEFI_URL)
+	baseURL := os.Getenv(birdeye.DEFI_URL)
 	params := url.Values{}
-	params.Add(consts.CheckLiquidity, strconv.FormatFloat(check_liquidity, 'f', 2, 64))
-	params.Add(consts.IncludeLiquidity, strconv.FormatBool(include_liquidity))
-	params.Add(consts.ADDRESS, address)
-	fullURL := baseURL + consts.PRICE + consts.QUESTION_MARK + params.Encode()
+	params.Add(birdeye.CheckLiquidity, strconv.FormatFloat(check_liquidity, 'f', 2, 64))
+	params.Add(birdeye.IncludeLiquidity, strconv.FormatBool(include_liquidity))
+	params.Add(birdeye.ADDRESS, address)
+	fullURL := baseURL + birdeye.PRICE + birdeye.QUESTION_MARK + params.Encode()
 
-	apiReq, err := http.NewRequest(consts.GET, fullURL, nil)
+	apiReq, err := http.NewRequest(birdeye.GET, fullURL, nil)
 	if err != nil {
 		return nil, err
 	}
@@ -72,8 +72,9 @@ func (d *Defi) Price(chain_name string, check_liquidity float64, include_liquidi
 		return nil, err
 	}
 	//处理返回数据
-	var res *defi.PriceRes
-	err = json.Unmarshal([]byte(body), &res)
+	var res *PriceRes
+	//TODO :gfcover
+	err = gconv.Struct(body, &res)
 	if err != nil {
 		return nil, err
 	}
@@ -83,21 +84,21 @@ func (d *Defi) Price(chain_name string, check_liquidity float64, include_liquidi
 // dc:一次获取多个token的价格
 // @return *birdeye.CommonRes
 // @return error
-func (d *Defi) MultiplePrice(chain_name string, check_liquidity float64, include_liquidity bool, address []string, method string) (*defi.MultiplePriceRes, error) {
+func (d *Defi) MultiplePrice(chain_name string, check_liquidity float64, include_liquidity bool, address []string, method string) (*MultiplePriceRes, error) {
 	//构建基本请求连接
-	baseURL := os.Getenv(consts.DEFI_URL)
+	baseURL := os.Getenv(birdeye.DEFI_URL)
 	params := url.Values{}
-	params.Add(consts.CheckLiquidity, strconv.FormatFloat(check_liquidity, 'f', 2, 64))
-	params.Add(consts.IncludeLiquidity, strconv.FormatBool(include_liquidity))
+	params.Add(birdeye.CheckLiquidity, strconv.FormatFloat(check_liquidity, 'f', 2, 64))
+	params.Add(birdeye.IncludeLiquidity, strconv.FormatBool(include_liquidity))
 
 	var ApiReq *http.Request
 	var payload *bytes.Buffer = nil
 
 	//判断请求类型
-	if method == consts.GET {
-		addresses := strings.Join(address, consts.COMMAS)
-		params.Add(consts.LIST_ADDRESS, addresses)
-	} else if method == consts.POST {
+	if method == birdeye.GET {
+		addresses := strings.Join(address, birdeye.COMMAS)
+		params.Add(birdeye.LIST_ADDRESS, addresses)
+	} else if method == birdeye.POST {
 		data, err := json.Marshal(address)
 		if err != nil {
 			return nil, err
@@ -105,15 +106,15 @@ func (d *Defi) MultiplePrice(chain_name string, check_liquidity float64, include
 		payload = bytes.NewBuffer(data)
 	}
 
-	fullURL := baseURL + consts.MULTIPLE_PRICE + consts.QUESTION_MARK + params.Encode()
+	fullURL := baseURL + birdeye.MULTIPLE_PRICE + birdeye.QUESTION_MARK + params.Encode()
 
-	if method == consts.GET {
+	if method == birdeye.GET {
 		apiReq, err := http.NewRequest(method, fullURL, nil)
 		if err != nil {
 			return nil, err
 		}
 		ApiReq = apiReq
-	} else if method == consts.POST {
+	} else if method == birdeye.POST {
 		apiReq, err := http.NewRequest(method, fullURL, payload)
 		if err != nil {
 			return nil, err
@@ -129,8 +130,8 @@ func (d *Defi) MultiplePrice(chain_name string, check_liquidity float64, include
 	if err != nil {
 		return nil, err
 	}
-	var res *defi.MultiplePriceRes
-	err = json.Unmarshal([]byte(body), &res)
+	var res *MultiplePriceRes
+	err = gconv.Struct(body, &res)
 	if err != nil {
 		return nil, err
 	}

+ 1 - 0
internal/model/birdeye/defi/defi.go → internal/library/birdeye/defi/defi_res.go

@@ -21,4 +21,5 @@ type Price struct {
 	UpdateUnixTime  uint32  `json:"updateUnixTime"`
 	UpdateHumanTime string  `json:"updateHumanTime"`
 	PriceChange24h  float64 `json:"priceChange24h"`
+	PriceInNative   uint32  `json:"priceInNative"`
 }

+ 18 - 19
internal/library/birdeye/token/token.go

@@ -1,14 +1,13 @@
 package token
 
 import (
-	"birdcall/internal/consts"
 	"birdcall/internal/library/birdeye"
-	"birdcall/internal/model/birdeye/token"
-	"encoding/json"
 	"net/http"
 	"net/url"
 	"os"
 	"strconv"
+
+	"github.com/gogf/gf/util/gconv"
 )
 
 type Token struct{}
@@ -23,18 +22,18 @@ type Token struct{}
 //	@param min_liquidity
 //	@return *token.ListRes
 //	@return error
-func (t *Token) GetListV1(chain_name string, sort_by string, sort_type string, offset uint64, limit uint64, min_liquidity uint64) (*token.ListRes, error) {
+func (t *Token) GetListV1(chain_name string, sort_by string, sort_type string, offset uint64, limit uint64, min_liquidity uint64) (*ListRes, error) {
 	//构建基本请求连接
-	baseURL := os.Getenv(consts.TOKEN_URL)
+	baseURL := os.Getenv(birdeye.TOKEN_URL)
 	params := url.Values{}
-	params.Add(consts.SORT_BY, sort_by)
-	params.Add(consts.SORT_TYPE, sort_type)
-	params.Add(consts.OFFSET, strconv.FormatUint(offset, 10))
-	params.Add(consts.LIMIT, strconv.FormatUint(limit, 10))
-	params.Add(consts.MIN_LIQUIDITY, strconv.FormatUint(min_liquidity, 10))
+	params.Add(birdeye.SORT_BY, sort_by)
+	params.Add(birdeye.SORT_TYPE, sort_type)
+	params.Add(birdeye.OFFSET, strconv.FormatUint(offset, birdeye.TEN))
+	params.Add(birdeye.LIMIT, strconv.FormatUint(limit, birdeye.TEN))
+	params.Add(birdeye.MIN_LIQUIDITY, strconv.FormatUint(min_liquidity, birdeye.TEN))
 
-	fullURL := baseURL + consts.TOKEN_LIST + consts.QUESTION_MARK + params.Encode()
-	apiReq, err := http.NewRequest(consts.GET, fullURL, nil)
+	fullURL := baseURL + birdeye.TOKEN_LIST + birdeye.QUESTION_MARK + params.Encode()
+	apiReq, err := http.NewRequest(birdeye.GET, fullURL, nil)
 	if err != nil {
 		return nil, err
 	}
@@ -47,19 +46,19 @@ func (t *Token) GetListV1(chain_name string, sort_by string, sort_type string, o
 	}
 
 	//处理返回数据
-	var res *token.ListRes
-	err = json.Unmarshal([]byte(body), &res)
+	var res *ListRes
+	err = gconv.Struct(body, &res)
 	if err != nil {
 		return nil, err
 	}
 	return res, nil
 }
 
-func (t *Token) GetListV2(chain_name string) (*token.ListRes, error) {
+func (t *Token) GetListV2(chain_name string) (*ListRes, error) {
 	//构建基本请求连接
-	baseURL := os.Getenv(consts.TOKEN_LIST_V2_URL)
+	baseURL := os.Getenv(birdeye.TOKEN_LIST_V2_URL)
 
-	apiReq, err := http.NewRequest(consts.POST, baseURL, nil)
+	apiReq, err := http.NewRequest(birdeye.POST, baseURL, nil)
 	if err != nil {
 		return nil, err
 	}
@@ -71,8 +70,8 @@ func (t *Token) GetListV2(chain_name string) (*token.ListRes, error) {
 		return nil, err
 	}
 	//处理返回数据
-	var res *token.ListRes
-	err = json.Unmarshal([]byte(body), &res)
+	var res *ListRes
+	err = gconv.Struct(body, &res)
 	if err != nil {
 		return nil, err
 	}

+ 5 - 5
internal/model/birdeye/token/token.go → internal/library/birdeye/token/token_res.go

@@ -6,13 +6,13 @@ type ListRes struct {
 }
 
 type List struct {
-	UpdateUnixTime uint32  `json:"updateUnixTime"`
-	UpdateTime     uint32  `json:"updateime"`
-	Tokens         []Token `json:"tokens"`
-	Total          uint64  `json:"total"`
+	UpdateUnixTime uint32      `json:"updateUnixTime"`
+	UpdateTime     uint32      `json:"updateime"`
+	Tokens         []TokenData `json:"tokens"`
+	Total          uint64      `json:"total"`
 }
 
-type Token struct {
+type TokenData struct {
 	Address           string  `json:"address" dc:"代币地址"`
 	Decimals          int     `json:"decimals" dc:"小数位数"`
 	LastTradeUnixTime int64   `json:"lastTradeUnixTime" dc:"最后交易时间的 Unix 时间戳"`

+ 17 - 18
internal/library/birdeye/wallet/wallet.go

@@ -1,24 +1,23 @@
 package wallet
 
 import (
-	"birdcall/internal/consts"
 	"birdcall/internal/library/birdeye"
-	w1 "birdcall/internal/model/birdeye/wallet"
-	"encoding/json"
 	"net/http"
 	"net/url"
 	"os"
 	"strconv"
+
+	"github.com/gogf/gf/util/gconv"
 )
 
 type Wallet struct{}
 
-func (w *Wallet) Support() (*w1.SupportRes, error) {
+func (w *Wallet) Support() (*SupportRes, error) {
 	//构建基本请求连接
-	baseURL := os.Getenv(consts.WALLET_URL)
-	fullURL := baseURL + consts.LIST_SUPPORTED_CHAIN
+	baseURL := os.Getenv(birdeye.WALLET_URL)
+	fullURL := baseURL + birdeye.LIST_SUPPORTED_CHAIN
 
-	apiReq, err := http.NewRequest(consts.GET, fullURL, nil)
+	apiReq, err := http.NewRequest(birdeye.GET, fullURL, nil)
 	if err != nil {
 		return nil, err
 	}
@@ -31,8 +30,8 @@ func (w *Wallet) Support() (*w1.SupportRes, error) {
 	}
 
 	//处理返回数据
-	var res *w1.SupportRes
-	err = json.Unmarshal([]byte(body), &res)
+	var res *SupportRes
+	err = gconv.Struct(body, &res)
 	if err != nil {
 		return nil, err
 	}
@@ -45,17 +44,17 @@ func (w *Wallet) Support() (*w1.SupportRes, error) {
 //		@param before
 //		@return *w1.TransactionHistoryRes
 //		@return error
-func (w *Wallet) TransactionHistory(wallet string, limit int64, before string) (*w1.TransactionHistoryRes, error) {
+func (w *Wallet) TransactionHistory(wallet string, limit int64, before string) (*TransactionHistoryRes, error) {
 	//构建基本请求连接
-	baseURL := os.Getenv(consts.WALLET_URL)
+	baseURL := os.Getenv(birdeye.WALLET_URL)
 	params := url.Values{}
-	params.Add(consts.WALLET, wallet)
-	params.Add(consts.LIMIT, strconv.FormatInt(limit, 10))
-	params.Add(consts.BEFORE, before)
+	params.Add(birdeye.WALLET, wallet)
+	params.Add(birdeye.LIMIT, strconv.FormatInt(limit, 10))
+	params.Add(birdeye.BEFORE, before)
 
-	fullURL := baseURL + consts.TX_LIST + consts.QUESTION_MARK + params.Encode()
+	fullURL := baseURL + birdeye.TX_LIST + birdeye.QUESTION_MARK + params.Encode()
 
-	apiReq, err := http.NewRequest(consts.GET, fullURL, nil)
+	apiReq, err := http.NewRequest(birdeye.GET, fullURL, nil)
 	if err != nil {
 		return nil, err
 	}
@@ -68,8 +67,8 @@ func (w *Wallet) TransactionHistory(wallet string, limit int64, before string) (
 	}
 
 	//处理返回数据
-	var res *w1.TransactionHistoryRes
-	err = json.Unmarshal([]byte(body), &res)
+	var res *TransactionHistoryRes
+	err = gconv.Struct(body, &res)
 	if err != nil {
 		return nil, err
 	}

+ 1 - 1
internal/model/birdeye/wallet/wallet.go → internal/library/birdeye/wallet/wallet_res.go

@@ -11,7 +11,7 @@ type TransactionHistoryRes struct {
 }
 
 type ContractLabelMetadata struct {
-	Icon string `json:"icon" dc:"合约标签元数据图标"` // 图标 URL
+	Icon string `json:"icon" dc:"合约标签元数据图标"`
 }
 
 type ContractLabel struct {

+ 1 - 3
internal/logic/chain/chain.go

@@ -3,7 +3,6 @@ package chain
 import (
 	v1 "birdcall/api/chain/v1"
 	"birdcall/internal/library/birdeye/defi"
-	"birdcall/internal/library/birdeye/token"
 	"birdcall/internal/service"
 	"context"
 
@@ -17,7 +16,6 @@ func init() {
 }
 
 var dm defi.Defi
-var tk token.Token
 
 func (s *sChain) NetWork(ctx context.Context, req *v1.NetWorkReq) (*v1.CommonRes, error) {
 
@@ -35,7 +33,7 @@ func (s *sChain) NetWork(ctx context.Context, req *v1.NetWorkReq) (*v1.CommonRes
 }
 
 func (s *sChain) TokenPrice(ctx context.Context, req *v1.TokenPriceReq) (*v1.CommonRes, error) {
-	birdRes, err := tk.GetListV1(req.ChainName, "v24hUSD", "desc", 0, 50, 100)
+	birdRes, err := dm.Price(req.ChainName, 100, true, req.Address[0])
 	if err != nil {
 		return nil, err
 	}