本文已参与「新人创作礼」活动,一起开启创作之路。
接上文:/post/710135…
写了这么多,可能有点乱,先看一下项目文件结构吧

路由配置
server.go
package logic import ( "github.com/gin-gonic/gin" // 导入web服务框架 ) func Start(addr, webDir string) (err error) { // 使用gin框架提供的默认web服务引擎 r := gin.Default() // 静态文件服务 if len(webDir) > 0 { // 将一个目录下的静态文件,并注册到web服务器 r.Static("/web", webDir) } // api接口服务,定义了路由组 /faucePath faucetPath := r.Group("awesomeProject") { //定义接口,并注册到web服务器 faucetPath.POST("", gainData) faucetPath.POST("/getAccount",getAccount) faucetPath.POST("/HaveAccount",haveAccount) } // 启动web服务 err = r.Run(addr) return err } // 封装函数,用于向客户端返回正确信息 func respOK(c *gin.Context, data interface{}) { c.JSON(200, gin.H{ "code": 0, "data": data, }) } // 封装函数,用于向客户端返回错误消息 func respError(c *gin.Context, msg interface{}) { c.JSON(200, gin.H{ "code": 1, "message": msg, }) }
2、 控制器方法分离
1、控制器方法 gainData.go
package logic import ( x "awesomeProject/db" "awesomeProject/solidity" "fmt" "github.com/ethereum/go-ethereum/common" "github.com/gin-gonic/gin" ) func gainData(c *gin.Context) { //结构体模板 FaucetDB:=x.FAUCET{} //获取前端form表单传来的值 Account :=c.PostForm("account") FaucetDB.Account=Account //使用链url client,err := solidity.HaveClient() if err != nil{ respError(c,err) return } ins,_ :=solidity.HaveFaucet(client) //发送以太币 common.HexToAddress() :string转address add,err:=solidity.SendFaucetETH(client,ins,common.HexToAddress(FaucetDB.Account)) if err != nil{ respError(c,err) fmt.Println(err) return }else{ fmt.Println(add) //数据库操作 err= x.UpLimitTimes() if err != nil { respError(c,err) return } //数据库操作 err= x.UpdataETH() if err != nil { respError(c,err) return } //数据库操作 err =x.InsertFaucet(Account) if err != nil { respError(c,err) return } } //获取合约余额 blance,err:=solidity.GetBlance(client) if err != nil { respError(c,err) return }else{ fmt.Println(blance) //合约余额存入数据库,数据库操作 err=x.BlanceVal(blance) } }
2、控制器方法 getAccount
package logic import ( "awesomeProject/db" "github.com/gin-gonic/gin" ) func getAccount(c *gin.Context) { //将数据库中的数据赋值给x x,err:=db.ListAcc() if err != nil { respError(c, err.Error()) return } //数据传给前端 respOK(c, x) }
3、控制器方法
package logic import ( "awesomeProject/db" "fmt" "github.com/gin-gonic/gin" ) func haveAccount(c *gin.Context){ //把合约相关的数据库赋值给x x,err:=db.HaveAccount() fmt.Println("sssss",x) if err != nil { respError(c, err.Error()) return } //传值给前端展示 respOK(c, x) }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)