│ go.mod
│ go.sum
│ main.go
│
├───controller
│ common.go
│ user.go
│
├───dao
│ dao.go
│
├───module
│ user.go
│
└───router
router.go
main.go
package main
import (
"demoProject/router"
"fmt"
log "github.com/sirupsen/logrus"
)
func main() {
fmt.Println("Hello World")
err := router.Router().Run(":8088")
if err != nil {
log.Error(err.Error())
return
}
}
controller/common.go
package controller
import (
"github.com/gin-gonic/gin"
"net/http"
)
type JsonResponseDTO struct {
Code int `json:"code"`
Message interface{} `json:"message"`
Data interface{} `json:"data"`
Count int64 `json:"count"`
}
type JsonErrorDTO struct {
Code int `json:"code"`
Message interface{} `json:"message"`
}
func Success(c *gin.Context, data interface{}, count int64) {
json := &JsonResponseDTO{Code: 0, Message: "success", Data: data, Count: count}
c.JSON(http.StatusOK, json)
}
func Fail(c *gin.Context, msg interface{}) {
json := &JsonErrorDTO{Code: -1, Message: msg}
c.JSON(http.StatusOK, json)
}
func ErrorRecover(c *gin.Context) {
if r := recover(); r != nil {
Fail(c, r.(error).Error())
}
}
controller/user.go
package controller
import (
"demoProject/module"
"github.com/gin-gonic/gin"
"strconv"
)
type UserController struct {
}
type UserSearch struct {
Id int `json:"id"`
UserName string `json:"name"`
}
func (u UserController) GetUser(c *gin.Context) {
defer ErrorRecover(c)
id := c.Param("id")
//name := c.PostForm("name")
//name := c.PostFormMap("name")
idInt, err := strconv.Atoi(id)
if err != nil {
panic(err)
}
userInfo := module.GetUserById(idInt)
Success(c, userInfo, 1)
}
func (u UserController) PutUser(c *gin.Context) {
defer ErrorRecover(c)
param := make(map[string]interface{})
err := c.ShouldBindJSON(¶m)
if err != nil {
Fail(c, err.Error())
return
}
Success(c, "add success", 1)
}
func (u UserController) SearchUser(c *gin.Context) {
defer ErrorRecover(c)
param := &UserSearch{}
err := c.ShouldBindJSON(¶m)
if err != nil {
Fail(c, err.Error())
return
}
Success(c, "search success", 1)
}
func (u UserController) GetUserFail(c *gin.Context) {
Fail(c, "未找到用户")
}
dao/dao.go
package dao
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
var (
Db *gorm.DB
err error
)
func init() {
//dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
//db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
Db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
if Db.Error != nil {
panic("database error ")
}
//Db.DB().setMaxIdleCounts(10)
}
module/user.go
package module
import "gorm.io/gorm"
import "demoProject/dao"
type UserModule struct {
gorm.Model
Name string `gorm:"type:varchar(255)"`
Age int `gorm:"type:int"`
}
func (u UserModule) TableName() string {
return "sys_user"
}
func GetUserById(id int) (u UserModule) {
err := dao.Db.Where("id=?", id).First(&u).Error
if err != nil {
panic("未找到id")
}
return
}
router/router.go
package router
import (
"demoProject/controller"
"github.com/gin-gonic/gin"
"net/http"
)
func Router() *gin.Engine {
r := gin.Default()
r.GET("/hi", func(c *gin.Context) {
c.String(http.StatusOK, "Hello World")
})
user := r.Group("/user")
{
user.GET("/info/:id", controller.UserController{}.GetUser)
user.GET("/err", controller.UserController{}.GetUserFail)
}
return r
}