1 Star 1 Fork 0

yanpin-dev / propeller

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
handler.go 2.37 KB
一键复制 编辑 原始数据 按行查看 历史
zh_season 提交于 2021-03-31 15:30 . add update example.
package example
import (
"gitee.com/yanpin-dev/propeller/app"
"github.com/gin-gonic/gin"
"net/http"
"strconv"
)
type userCtrl struct {
svc Service
}
func NewUserCtrl(svc Service) app.Handler {
return &userCtrl{
svc: svc,
}
}
func (c *userCtrl) MapRoutes(group *gin.RouterGroup) {
group.GET("/users/:id", c.GetByID)
group.GET("/users", c.GetAll)
group.POST("/users", c.Create)
group.PUT("/users/:id", c.Update)
group.DELETE("/users/:id", c.Delete)
group.POST("/users/_update-password", c.UpdatePassword)
}
func (c *userCtrl) GetAll(ctx *gin.Context) {
users, err := c.svc.FindAll()
if err != nil {
ctx.Error(err)
return
}
ctx.JSON(http.StatusOK, users)
}
func (c *userCtrl) GetByID(ctx *gin.Context) {
idParam := ctx.Param("id")
id, err := strconv.Atoi(idParam)
if err != nil {
ctx.Error(err)
return
}
user, err := c.svc.FindByID(uint64(id))
if err != nil {
ctx.Error(err)
return
}
ctx.JSON(http.StatusOK, user)
}
func (c *userCtrl) Create(ctx *gin.Context) {
user := &User{}
if err := ctx.ShouldBindJSON(user); err != nil {
ctx.Error(err)
return
}
if err := c.svc.Create(user); err != nil {
ctx.Error(err)
return
}
ctx.Status(http.StatusCreated)
}
func (c *userCtrl) Update(ctx *gin.Context) {
user := &User{}
if err := ctx.ShouldBindJSON(user); err != nil {
ctx.Error(err)
return
}
idParam := ctx.Param("id")
id, err := strconv.Atoi(idParam)
if err != nil {
ctx.Error(err)
return
}
user.ID = uint64(id)
if _, err := c.svc.FindByID(uint64(id)); err != nil {
ctx.Error(err)
return
}
if err := c.svc.Update(user); err != nil {
ctx.Error(err)
return
}
ctx.Status(http.StatusOK)
}
func (c *userCtrl) Delete(ctx *gin.Context) {
id, err := c.getId(ctx)
if err != nil {
ctx.Error(err)
return
}
err = c.svc.Delete(id)
if err != nil {
ctx.Error(err)
return
}
ctx.Status(http.StatusOK)
}
type UpdatePasswdReq struct {
Username string `json:"username"`
NewPassword string `json:"new_password"`
}
func (c *userCtrl) UpdatePassword(ctx *gin.Context) {
var req = &UpdatePasswdReq{}
if err := ctx.ShouldBindJSON(req); err != nil {
ctx.Error(err)
return
}
if err := c.svc.UpdatePassword(req.Username, req.NewPassword); err != nil {
ctx.Error(err)
return
}
}
func (c *userCtrl) getId(ctx *gin.Context) (uint64, error) {
idParam := ctx.Param("id")
id, err := strconv.Atoi(idParam)
return uint64(id), err
}
Go
1
https://gitee.com/yanpin-dev/propeller.git
git@gitee.com:yanpin-dev/propeller.git
yanpin-dev
propeller
propeller
v0.3.2

搜索帮助