user.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package handler
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/go-nunu/nunu-layout-advanced/internal/model"
  5. "github.com/go-nunu/nunu-layout-advanced/internal/service"
  6. "github.com/go-nunu/nunu-layout-advanced/pkg/helper/resp"
  7. "go.uber.org/zap"
  8. "net/http"
  9. )
  10. type UserHandler struct {
  11. *Handler
  12. userService *service.UserService
  13. }
  14. func NewUserHandler(handler *Handler, userService *service.UserService) *UserHandler {
  15. return &UserHandler{
  16. Handler: handler,
  17. userService: userService,
  18. }
  19. }
  20. func (c *UserHandler) CreateUser(ctx *gin.Context) {
  21. var params struct {
  22. Username string `json:"username" binding:"required,min=2,max=20"`
  23. Email string `json:"email" binding:"required,email"`
  24. }
  25. if err := ctx.ShouldBind(&params); err != nil {
  26. resp.HandleError(ctx, http.StatusBadRequest, 1, err.Error(), nil)
  27. return
  28. }
  29. user, err := c.userService.CreateUser(&model.User{
  30. Username: params.Username,
  31. Email: params.Email,
  32. })
  33. c.logger.Info("CreateUser", zap.Any("user", user))
  34. if err != nil {
  35. resp.HandleError(ctx, http.StatusInternalServerError, 1, err.Error(), nil)
  36. return
  37. }
  38. resp.HandleSuccess(ctx, user)
  39. }
  40. func (c *UserHandler) GetUserById(ctx *gin.Context) {
  41. var params struct {
  42. Id int64 `form:"id" binding:"required"`
  43. }
  44. if err := ctx.ShouldBind(&params); err != nil {
  45. resp.HandleError(ctx, http.StatusBadRequest, 1, err.Error(), nil)
  46. return
  47. }
  48. user, err := c.userService.GetUserById(params.Id)
  49. c.logger.Info("GetUserByID", zap.Any("user", user))
  50. if err != nil {
  51. resp.HandleError(ctx, http.StatusInternalServerError, 1, err.Error(), nil)
  52. return
  53. }
  54. resp.HandleSuccess(ctx, user)
  55. }
  56. func (c *UserHandler) UpdateUser(ctx *gin.Context) {
  57. resp.HandleSuccess(ctx, nil)
  58. }