代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。