package api import ( "log/slog" "net/http" jwt "github.com/appleboy/gin-jwt/v2" "github.com/gin-gonic/gin" "joylink.club/bj-rtsts-server/db/model" "joylink.club/bj-rtsts-server/dto" "joylink.club/bj-rtsts-server/middleware" "joylink.club/bj-rtsts-server/service" "joylink.club/bj-rtsts-server/sys_error" ) func InitUserRouter(api *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { unauthed := api.Group("/v1/user") unauthed.POST("/login", login(authMiddleware)) unauthed.POST("/register", register) authed := api.Group("/v1/user").Use(authMiddleware.MiddlewareFunc(), middleware.PermissMiddleware) authed.GET("/paging", pageQueryUser) authed.GET("/current", findUserInfo) } // 用户注册 // // @Summary 用户注册 // @Description 用户注册 // @Tags 用户Api // @Accept json // @Produce json // @Param loginInfo body dto.RegisterUser true "用户注册信息" // @Success 200 {object} string // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/user/register [post] func register(c *gin.Context) { user := &dto.RegisterUser{} err := c.BindJSON(user) if err != nil { panic(sys_error.New("注册失败,参数错误", err)) } err = service.Register(user) if err != nil { panic(sys_error.New("注册失败", err)) } c.JSON(http.StatusOK, "ok") } // 获取当前登录用户信息 // // @Summary 获取当前登录用户信息 // @Description 获取当前登录用户信息 // @Tags 用户Api // @Accept json // @Produce json // // @Param Authorization header string true "JWT Token" // // @Success 200 {object} dto.UserRspDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/user/current [get] func findUserInfo(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) userId := user.(*model.User).ID userInfo := service.FindUserInfo(userId) c.JSON(http.StatusOK, userInfo) } // 用户登录 // // @Summary 用户登录 // @Description 用户登录 // @Tags 用户Api // @Accept json // @Produce json // @Param loginInfo body dto.LoginDto true "登录信息" // @Success 200 {object} dto.TokenRespDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/user/login [post] func login(authMiddleware *jwt.GinJWTMiddleware) func(*gin.Context) { return authMiddleware.LoginHandler } // 分页查询用户 // // @Summary 分页查询用户 // // @Security JwtAuth // // @Description 可以通过用户名称过滤,分页查询用户 // @Tags 用户Api // @Accept json // @Produce json // @Param id query dto.PageUserReqDto true "用户查询条件" // @Success 200 {object} dto.PageDto // @Failure 401 {object} dto.ErrorDto // @Failure 404 {object} dto.ErrorDto // @Failure 500 {object} dto.ErrorDto // @Router /api/v1/user/paging [get] func pageQueryUser(c *gin.Context) { user, _ := c.Get(middleware.IdentityKey) slog.Debug("分页查询用户", user) req := dto.PageUserReqDto{} if err := c.ShouldBind(&req); err != nil { slog.Warn("分页查询参数绑定错误,使用默认参数", err) req.Default() } slog.Debug("分页查用户参数", req) page, _ := service.PagingQueryUser(&req) c.JSON(http.StatusOK, page) }