go+solidity+web写一个简单的水龙头项目4

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

接上文:https://juejin.cn/post/7101353913076416519

写了这么多,可能有点乱,先看一下项目文件结构吧 image.png static文件夹中的是web静态文件,就不过多阐述了。

路由配置

server.go ```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、控制器方法

```go 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值