/
main.go
131 lines (108 loc) · 3.86 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package main
import (
"log"
"net/http"
"time"
"github.com/gin-gonic/gin"
"github.com/golang/sync/errgroup"
_ "github.com/jinzhu/gorm/dialects/mysql"
"github.com/Eric-GreenComb/x-server/config"
"github.com/Eric-GreenComb/x-server/ether"
"github.com/Eric-GreenComb/x-server/handler"
"github.com/Eric-GreenComb/x-server/persist"
)
var (
g errgroup.Group
)
func main() {
if config.ServerConfig.Mode == "release" {
gin.SetMode(gin.ReleaseMode)
}
persist.InitDatabase()
ether.LoadEthClient()
router := gin.Default()
// Set a lower memory limit for multipart forms (default is 32 MiB)
// router.MaxMultipartMemory = 8 << 20 // 8 MiB
router.MaxMultipartMemory = 64 << 20 // 64 MiB
router.Use(Cors())
/* api base */
r0 := router.Group("/")
{
r0.GET("", handler.Index)
r0.GET("health", handler.Health)
r0.POST("login", Login)
}
// api
r1 := router.Group("/api/v1")
{
// 用户
r1.POST("/users/create", handler.CreateUser)
r1.GET("/users/:userid", handler.UserInfo)
r1.POST("/users/updatepasswd/:userid/:old/:new", handler.UpdateUserPasswd)
r1.GET("/user/list/:search/:page", handler.ListUser)
r1.GET("/user/count", handler.CountUser)
// 账户
r1.POST("/account/create/:userid/:name/:password", handler.CreateAccount)
r1.GET("/account/list/:userid", handler.ListAccount)
r1.GET("/account/info/:address", handler.GetKeystore)
r1.POST("/account/updatepwd/:addr/:password/:newpassword", handler.UpdateAccountPwd)
r1.POST("/account/recover/:addr/:newpassword", handler.RecoverAccountPwd)
// 用户-账户-token视图
r1.POST("/view/create/:userid/:address/:tokenaddress", handler.CreateUserAddressTokens)
r1.POST("/view/delete/:userid/:address/:tokenaddress", handler.DeleteUserAddressTokens)
r1.GET("/view/info/:userid/:address/:tokenaddress", handler.GetUserAddressTokens)
r1.GET("/view/list/:userid/:address", handler.ListUserAddressTokens)
r1.GET("/view/balance/:userid/:address", handler.ListUserAddressTokenBanlance)
// ether
r1.POST("/token/deploy", handler.DeployToken)
r1.POST("/token/selfdeploy", handler.SelfDeployToken)
r1.POST("/token/balance/:addr", handler.BalanceOfToken)
r1.POST("/token/transfer", handler.TransferToken)
// db - token
r1.POST("/token/create", handler.CreateToken)
r1.GET("/token/info/:address", handler.TokenInfo)
r1.POST("/token/weight/:address/:weight", handler.UpdateTokenWeight)
r1.GET("/token/list/:search/:page", handler.ListToken)
r1.GET("/token/count", handler.CountToken)
// db - transfer
r1.POST("/token/transfer/create", handler.CreateTokenTransfer)
r1.GET("/token/transfer/list/:tokenaddress/:address/:page", handler.ListTokenTransfer)
r1.GET("/token/transfer/all/:tokenaddress/:page", handler.AllTokenTransfer)
r1.GET("/token/transfer/count/:tokenaddress", handler.CountTokenTransfer)
r1.GET("/token/transfer/allcount", handler.CountAllTokenTransfer)
r1.GET("/token/transfer/allsum", handler.SumAllTokenTransfer)
r1.POST("/badger/set/:key/:value", handler.SetBadgerKey)
r1.POST("/badger/setwithttl/:key/:value", handler.SetBadgerKeyTTL)
r1.GET("/badger/get/:key", handler.GetBadgerKey)
}
// auth api
r2 := router.Group("/api/auth/v1")
r2.Use(JWTAuth())
{
r2.GET("/hello", handler.GetHello)
r2.POST("/hello", handler.PostHello)
r2.GET("/refresh_token", RefreshToken)
}
// admin api
r3 := router.Group("/api/admin/v1")
{
r3.POST("/users/create", handler.CreateAdminUser)
r3.GET("/users/:userid", handler.AdminUserInfo)
r3.POST("/users/updatepasswd/:userid/:old/:new", handler.UpdateAdminUserPasswd)
r3.POST("login", AdminLogin)
}
for _, _port := range config.ServerConfig.Port {
server := &http.Server{
Addr: ":" + _port,
Handler: router,
ReadTimeout: 300 * time.Second,
WriteTimeout: 300 * time.Second,
}
g.Go(func() error {
return server.ListenAndServe()
})
}
if err := g.Wait(); err != nil {
log.Fatal(err)
}
}