golang

1.创建项目文件夹

mkdir gin_project
cd gin_project

2.初始化 Go 模块

// 在 gin_project 目录下运行:
go mod init gin_project
// 这会在当前目录创建一个 go.mod 文件,管理 Go 依赖项。

3.安装 Gin(指定版本)

go get github.com/gin-gonic/gin@v1.10.0
//安装完成后,你可以运行:go mod tidy 来清理和管理依赖项。(不运行好像也没什么问题)

4.创建main.go文件,添加一下内容:

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/spf13/viper"
	"os"
	"scanMint/Common"
	"scanMint/Controller"
	"scanMint/Cron"
	"scanMint/Event"
	"scanMint/Middleware"
)

func main() {
	InitConfig()
	db := Common.InitDB()
	defer db.DB()
	r := gin.Default()
	r = CollectRouter(r)
	Cron.Cron()
	port := viper.GetString("server.port")
	if port != "" {
		r.Run(":" + port)
	}
	Event.ListenEvent()
	//r.Run("") // 监听并在 0.0.0.0:8080 上启动服务
}

func InitConfig() {
	workDir, _ := os.Getwd()
	viper.SetConfigName("setting")
	viper.SetConfigType("yml")
	viper.AddConfigPath(workDir)
	err := viper.ReadInConfig()
	if err != nil {
		fmt.Println(err)
	}
	viper.WatchConfig()
}

func CollectRouter(r *gin.Engine) *gin.Engine {
	r.Use(Middleware.Cors())
	r.POST("/api/get_token_balance", Middleware.IsRunning(), Controller.GetTokenBalance)          //获取用户当前LP数量
	r.POST("/api/is_address_exist", Middleware.IsRunning(), Controller.IsAddressExist)            //查询地址是否存在
	r.POST("/api/record_address", Middleware.IsRunning(), Controller.RecordAddress)               //保存地址
	r.POST("/api/get_user_reward", Middleware.IsRunning(), Controller.GetUserReward)              //获取用户当前未提取挖矿奖励
	r.POST("/api/admin_set_reward", Middleware.IsRunning(), Controller.AdminSetReward)            //管理员写入挖矿奖励接口
	r.POST("/api/get_user_share_reward", Middleware.IsRunning(), Controller.GetUserShareReward)   //获取用户当前未提取分享奖励
	r.POST("/api/admin_set_share_reward", Middleware.IsRunning(), Controller.AdminSetShareReward) //管理员写入分享奖励接口
	r.POST("/api/get_user_node_reward", Middleware.IsRunning(), Controller.GetUseNodeReward)      //获取用户当前未提取节点奖励
	r.POST("/api/admin_set_node_reward", Middleware.IsRunning(), Controller.AdminSetNodeReward)   //管理员写入分享节点接口

	r.POST("/api/get_node_address", Middleware.IsRunning(), Controller.GetNodeAddress) //获取节点地址列表接口

	//工具类
	r.POST("/api/get_empty_data", Middleware.IsRunning(), Controller.GetEmptyData)           //
	r.POST("/api/insert_reward_tool", Middleware.IsRunning(), Controller.InsertRewardTool)   //获取昨天合约增长余额
	r.POST("/api/count_reward", Middleware.IsRunning(), Controller.CountReward)              //获取昨天合约增长余额
	r.POST("/api/count_bigInt", Middleware.IsRunning(), Controller.CountBigInt)              //获取昨天合约增长余额
	r.POST("/api/set_reward", Middleware.IsRunning(), Controller.SetReward)                  //获取昨天合约增长余额
	r.POST("/api/balance_is_maintain", Middleware.IsRunning(), Controller.BalanceIsMaintain) //获取昨天合约增长余额
	r.POST("/api/get_all_rewards", Middleware.IsRunning(), Controller.GetAllRewards)         //获取昨天合约增长余额
	r.POST("/api/get_all_withdraw", Middleware.IsRunning(), Controller.GetAllWithdraw)       //获取昨天合约增长余额
	r.POST("/api/get_user_all_reward", Middleware.IsRunning(), Controller.GetUserAllReward)  //获取昨天合约增长余额
	return r
}


5.go项目打包linux二进制文件:

// linux(-o myapp:指定生成的二进制文件名为myapp)
// CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o createToken main.go
// CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o createLiquility main.go
// CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o fundingRecord main.go
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp main.go
// windows exe
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build .

6.打包abi文件

// --abi abi.json 为我们要通过abigen生成go文件的 源文件路径
// --pkg main 为我们要生成go文件里面的包名(生成的go文件第一行代码 如:package main)
// --type Token 为我们生成go文件里可操作对象/方法/变量的组成部分,
// 不写默认是包名,使用就是instance, err := Abi.NewAbi(mintAddress, client)
// 这里写是Token,使用就是instance, err := Abi.NewToken(mintAddress, client)

abigen --abi=token.abi --pkg=Abi --type=Token --out=token.go

其他:

// 项目开启模块支持:
go env -w GO111MODULE=on

// goland无法解析目录:
// 关闭项目,删除项目目录里的.idea文件夹,重新打开

golang版本管理器g的使用:

// 查看当前可供安装的stable状态的go版本
g ls-remote stable
// 安装指定版本的go
g install 1.23.7
//切换到指定go版本
g use 1.23.7
上一篇
下一篇