拆分服务
This commit is contained in:
parent
7145c4f651
commit
3f034f86c7
@ -4,6 +4,8 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
"studyGin/bubble/dao"
|
||||||
"studyGin/bubble/models"
|
"studyGin/bubble/models"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -44,3 +46,48 @@ func FindById(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, todo)
|
c.JSON(http.StatusOK, todo)
|
||||||
}
|
}
|
||||||
|
func FindAll(c *gin.Context) {
|
||||||
|
todoList := &[]models.Todo{}
|
||||||
|
if err := dao.DB.Find(todoList).Error; err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
|
"error": err.Error,
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.Println(*todoList)
|
||||||
|
c.JSON(http.StatusOK, *todoList)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Update(c *gin.Context) {
|
||||||
|
id, ok := c.Params.Get("id")
|
||||||
|
if !ok {
|
||||||
|
c.JSON(http.StatusInternalServerError, "无效id")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
todo := &models.Todo{}
|
||||||
|
if err := dao.DB.Where("id=?", id).Find(todo).Error; err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
|
"error": err.Error(),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.BindJSON(todo)
|
||||||
|
if err := dao.DB.Save(todo).Error; err != nil {
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{
|
||||||
|
"error": err.Error(),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, todo)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Delete(c *gin.Context) {
|
||||||
|
id, ok := c.Params.Get("id")
|
||||||
|
ID, _ := strconv.Atoi(id)
|
||||||
|
if !ok {
|
||||||
|
c.JSON(http.StatusInternalServerError, "无效id")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
dao.DB.Delete(&models.Todo{Id: ID})
|
||||||
|
c.JSON(http.StatusOK, "删除成功")
|
||||||
|
}
|
||||||
|
12
bubble/controller/v2Controller.go
Normal file
12
bubble/controller/v2Controller.go
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package controller
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Get(c *gin.Context) {
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"msg": "ok",
|
||||||
|
})
|
||||||
|
}
|
128
bubble/main.go
128
bubble/main.go
@ -1,139 +1,23 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
|
||||||
_ "github.com/jinzhu/gorm/dialects/mysql"
|
_ "github.com/jinzhu/gorm/dialects/mysql"
|
||||||
"log"
|
|
||||||
"net/http"
|
|
||||||
"strconv"
|
|
||||||
"studyGin/bubble/dao"
|
"studyGin/bubble/dao"
|
||||||
"studyGin/bubble/models"
|
"studyGin/bubble/models"
|
||||||
|
"studyGin/bubble/routers"
|
||||||
)
|
)
|
||||||
|
|
||||||
func CreateTodo(todo *models.Todo) error {
|
func init() {
|
||||||
tx := dao.DB.Begin()
|
|
||||||
defer func() {
|
|
||||||
if r := recover(); r != nil {
|
|
||||||
tx.Rollback()
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
if err := tx.Error; err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := tx.Create(todo).Error; err != nil {
|
|
||||||
log.Fatalln("创建清单失败")
|
|
||||||
tx.Rollback()
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return tx.Commit().Error
|
|
||||||
}
|
|
||||||
func main() {
|
|
||||||
//链接数据库
|
//链接数据库
|
||||||
err := dao.InitMySQL()
|
err := dao.InitMySQL()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
func main() {
|
||||||
defer dao.Close()
|
defer dao.Close()
|
||||||
dao.DB.AutoMigrate(&models.Todo{})
|
dao.DB.AutoMigrate(&models.Todo{})
|
||||||
|
//路由
|
||||||
r := gin.Default()
|
r := routers.Router()
|
||||||
//告诉滚、框架模板文件引用的静态文件去哪里找
|
|
||||||
r.Static("/static", "static")
|
|
||||||
//告诉gin框架 去哪里找模板文件
|
|
||||||
r.LoadHTMLGlob("templates/**")
|
|
||||||
|
|
||||||
r.GET("/", func(c *gin.Context) {
|
|
||||||
c.HTML(http.StatusOK, "index.html", nil)
|
|
||||||
})
|
|
||||||
|
|
||||||
v1Group := r.Group("/v1")
|
|
||||||
{
|
|
||||||
//待办事项
|
|
||||||
//添加
|
|
||||||
v1Group.POST("/todo", func(c *gin.Context) {
|
|
||||||
todo := &models.Todo{}
|
|
||||||
err := c.BindJSON(todo)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln("获取todo数据失败")
|
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
err = CreateTodo(todo)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln("创建代办失败")
|
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
c.JSON(http.StatusOK, todo)
|
|
||||||
})
|
|
||||||
//查看所有
|
|
||||||
v1Group.GET("/todo", func(c *gin.Context) {
|
|
||||||
todoList := &[]models.Todo{}
|
|
||||||
if err := dao.DB.Find(todoList).Error; err != nil {
|
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
|
||||||
"error": err.Error,
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.Println(*todoList)
|
|
||||||
c.JSON(http.StatusOK, *todoList)
|
|
||||||
})
|
|
||||||
//通过id查看
|
|
||||||
v1Group.GET("/todo/:id", func(c *gin.Context) {
|
|
||||||
id, ok := c.Params.Get("id")
|
|
||||||
if !ok {
|
|
||||||
c.JSON(http.StatusInternalServerError, "无效id")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
todo := &models.Todo{}
|
|
||||||
todo, err := models.FindById(id)
|
|
||||||
if err != nil {
|
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
c.JSON(http.StatusOK, todo)
|
|
||||||
})
|
|
||||||
//修改
|
|
||||||
v1Group.PUT("/todo/:id", func(c *gin.Context) {
|
|
||||||
id, ok := c.Params.Get("id")
|
|
||||||
if !ok {
|
|
||||||
c.JSON(http.StatusInternalServerError, "无效id")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
todo := &models.Todo{}
|
|
||||||
if err := dao.DB.Where("id=?", id).Find(todo).Error; err != nil {
|
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
c.BindJSON(todo)
|
|
||||||
if err := dao.DB.Save(todo).Error; err != nil {
|
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
c.JSON(http.StatusOK, todo)
|
|
||||||
})
|
|
||||||
//删除
|
|
||||||
v1Group.DELETE("/todo/:id", func(c *gin.Context) {
|
|
||||||
id, ok := c.Params.Get("id")
|
|
||||||
ID, _ := strconv.Atoi(id)
|
|
||||||
if !ok {
|
|
||||||
c.JSON(http.StatusInternalServerError, "无效id")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
dao.DB.Delete(&models.Todo{Id: ID})
|
|
||||||
c.JSON(http.StatusOK, "删除成功")
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
r.Run(":9029")
|
r.Run(":9029")
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,15 @@ func FindAll() (*[]Todo, error) {
|
|||||||
func FindById(id string) (*Todo, error) {
|
func FindById(id string) (*Todo, error) {
|
||||||
todo := &Todo{}
|
todo := &Todo{}
|
||||||
if err := dao.DB.Where("id=?", id).Find(todo).Error; err != nil {
|
if err := dao.DB.Where("id=?", id).Find(todo).Error; err != nil {
|
||||||
return nil, err
|
return &Todo{}, err
|
||||||
}
|
}
|
||||||
return todo, nil
|
return todo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteById(id int) error {
|
||||||
|
return dao.DB.Delete(&Todo{Id: id}).Error
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateTodo(todo *Todo) error {
|
||||||
|
return dao.DB.Save(todo).Error
|
||||||
|
}
|
||||||
|
21
bubble/routers/routers.go
Normal file
21
bubble/routers/routers.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package routers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Router() *gin.Engine {
|
||||||
|
r := gin.Default()
|
||||||
|
//告诉滚、框架模板文件引用的静态文件去哪里找
|
||||||
|
r.Static("/static", "static")
|
||||||
|
//告诉gin框架 去哪里找模板文件
|
||||||
|
r.LoadHTMLGlob("templates/**")
|
||||||
|
|
||||||
|
r.GET("/", func(c *gin.Context) {
|
||||||
|
c.HTML(http.StatusOK, "index.html", nil)
|
||||||
|
})
|
||||||
|
V1(r)
|
||||||
|
V2(r)
|
||||||
|
return r
|
||||||
|
}
|
24
bubble/routers/v1.go
Normal file
24
bubble/routers/v1.go
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package routers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"studyGin/bubble/controller"
|
||||||
|
)
|
||||||
|
|
||||||
|
func V1(e *gin.Engine) {
|
||||||
|
//v1
|
||||||
|
v1Group := e.Group("/v1")
|
||||||
|
{
|
||||||
|
//待办事项
|
||||||
|
//添加
|
||||||
|
v1Group.POST("/todo", controller.AddTodo)
|
||||||
|
//查看所有
|
||||||
|
v1Group.GET("/todo", controller.FindAll)
|
||||||
|
//通过id查看
|
||||||
|
v1Group.GET("/todo/:id", controller.FindById)
|
||||||
|
//修改
|
||||||
|
v1Group.PUT("/todo/:id", controller.Update)
|
||||||
|
//删除
|
||||||
|
v1Group.DELETE("/todo/:id", controller.Delete)
|
||||||
|
}
|
||||||
|
}
|
15
bubble/routers/v2.go
Normal file
15
bubble/routers/v2.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package routers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"studyGin/bubble/controller"
|
||||||
|
)
|
||||||
|
|
||||||
|
func V2(e *gin.Engine) {
|
||||||
|
//v1
|
||||||
|
v1Group := e.Group("/v2")
|
||||||
|
{
|
||||||
|
//查看所有
|
||||||
|
v1Group.GET("/ok", controller.Get)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user