controllers

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 19, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HealthCheck

func HealthCheck(c *gin.Context)

HealthCheck 健康检查 @Summary 健康检查 @Description 检查服务是否正常运行 @Tags 系统 @Produce json @Success 200 {object} success.DataResponse "data={"status": "ok"}" @Router /health [get]

Types

type AddOrDelImageToAlbumRequset

type AddOrDelImageToAlbumRequset struct {
	IDs     []uint `json:"ids" binding:"required"`
	AlbumID uint   `json:"album_id" binding:"required"`
}

type AddOrDelImageToAlbumResponse

type AddOrDelImageToAlbumResponse struct {
	SuccessIDs map[uint]string `json:"success_ids"`
	ErrorIDs   map[uint]string `json:"error_ids"`
}

type AlbumController

type AlbumController struct {
	// contains filtered or unexported fields
}

AlbumController

func NewAlbumController

func NewAlbumController(albumService *services.AlbumService) *AlbumController

NewAlbumController

func (*AlbumController) CreateAlbum

func (h *AlbumController) CreateAlbum(c *gin.Context)

CreateAlbum 创建相册 @Summary 创建相册 @Description 创建新的相册 @Tags 相册管理 @Accept json @Produce json @Security ApiKeyAuth @Param album body AlbumRequest true "相册信息" @Success 200 {object} success.DataResponse{data=services.AlbumResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/albums [post]

func (*AlbumController) DeleteAlbum

func (h *AlbumController) DeleteAlbum(c *gin.Context)

DeleteAlbum 删除相册 @Summary 删除相册,只删除相册与图片的关联信息,不删除图片 @Description 删除指定的相册(不会删除图片) @Tags 相册管理 @Produce json @Security ApiKeyAuth @Param id path int true "相册ID" @Success 200 {object} success.SuccessResponse @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/albums/{id} [delete]

func (*AlbumController) GetAlbum

func (h *AlbumController) GetAlbum(c *gin.Context)

GetAlbum 获取相册详情 @Summary 获取相册详情 @Description 获取指定相册的详细信息 @Tags 相册管理 @Produce json @Security ApiKeyAuth @Param id path int true "相册ID" @Success 200 {object} success.DataResponse{data=services.AlbumResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/albums/{id} [get]

func (*AlbumController) GetAlbumImages

func (h *AlbumController) GetAlbumImages(c *gin.Context)

GetAlbumImages 获取相册中的图片列表 @Summary 获取相册中的图片 @Description 获取指定相册中的所有图片 @Tags 相册管理 @Produce json @Security ApiKeyAuth @Param id path int true "相册ID" @Param page query int false "页码" default(1) @Param page_size query int false "每页数量" default(10) @Success 200 {object} success.DataResponse{data=services.GetAlbumImagesResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/albums/{id}/images [get]

func (*AlbumController) GetAlbums

func (h *AlbumController) GetAlbums(c *gin.Context)

GetAlbums 获取相册列表 @Summary 获取相册列表 @Description 获取当前用户的相册列表 @Tags 相册管理 @Produce json @Security ApiKeyAuth @Param page query int false "页码" default(1) @Param page_size query int false "每页数量" default(10) @Success 200 {object} success.DataResponse{data=services.GetAlbumsResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/albums [get]

func (*AlbumController) GetNotInAnyAlbum

func (h *AlbumController) GetNotInAnyAlbum(c *gin.Context)

GetNotInAnyAlbum 获取不在任何相册中的图片列表 @Summary 获取不在任何相册中的图片 @Description 获取所有不在任何相册中的图片 @Tags 相册管理 @Produce json @Security ApiKeyAuth @Param page query int false "页码" default(1) @Param page_size query int false "每页数量" default(10) @Success 200 {object} success.DataResponse{data=services.GetAlbumImagesResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/albums/images/not-in-any [get]

func (*AlbumController) UpdateAlbum

func (h *AlbumController) UpdateAlbum(c *gin.Context)

UpdateAlbum 更新相册 @Summary 更新相册 @Description 更新指定相册的信息 @Tags 相册管理 @Accept json @Produce json @Security ApiKeyAuth @Param id path int true "相册ID" @Param album body AlbumRequest true "相册信息" @Success 200 {object} success.DataResponse{data=services.AlbumResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/albums/{id} [put]

type AlbumRequest

type AlbumRequest struct {
	Name           string `json:"name" binding:"required,min=1,max=100"`
	Description    string `json:"description" binding:"max=500"`
	GalleryEnabled bool   `json:"gallery_enabled"`
	SerialNumber   int    `json:"serial_number"`
}

type AuthController

type AuthController struct {
	// contains filtered or unexported fields
}

func NewAuthController

func NewAuthController(authService *services.AuthService, cfg *config.Config) *AuthController

func (*AuthController) Login

func (h *AuthController) Login(c *gin.Context)

Login 用户登录 @Summary 用户登录 @Description 用户登录获取JWT令牌和刷新令牌 @Tags 认证 @Accept json @Produce json @Param user body LoginRequest true "用户登录信息" @Success 200 {object} success.DataResponse{data=services.LoginResponse} "登录成功,返回用户信息和访问令牌和刷新令牌" @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/auth/login [post]

func (*AuthController) Logout

func (h *AuthController) Logout(c *gin.Context)

Logout 用户登出 @Summary 用户登出 @Description 将刷新令牌添加到黑名单,防止再次使用 @Tags 认证 @Accept json @Produce json @Param request body LogoutRequest true "刷新令牌" @Success 200 {object} success.SuccessResponse "Logout successful" @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/auth/logout [post]

func (*AuthController) RefreshToken

func (h *AuthController) RefreshToken(c *gin.Context)

RefreshToken 刷新访问令牌 @Summary 刷新访问令牌 @Description 使用刷新令牌获取新的访问令牌和刷新令牌 @Tags 认证 @Accept json @Produce json @Param request body RefreshTokenRequest true "刷新令牌" @Success 200 {object} success.DataResponse{data=services.TokenResponse} "刷新成功,返回新的访问令牌和刷新令牌" @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/auth/refresh [post]

func (*AuthController) Register

func (h *AuthController) Register(c *gin.Context)

Register 用户注册 @Summary 用户注册 @Description 创建新用户,默认获得user角色 @Tags 认证 @Accept json @Produce json @Param user body RegisterRequest true "用户注册信息(默认user角色)" @Success 200 {object} success.SuccessResponse @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/auth/register [post]

func (*AuthController) RequestPasswordReset

func (h *AuthController) RequestPasswordReset(c *gin.Context)

RequestPasswordReset 请求密码重置 @Summary 请求密码重置 @Description 发送密码重置邮件 @Tags 认证 @Accept json @Produce json @Param request body RequestPasswordResetRequest true "邮箱地址" @Success 200 {object} success.SuccessResponse @Failure 400 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/auth/reset-password/request [post]

func (*AuthController) ResetPassword

func (h *AuthController) ResetPassword(c *gin.Context)

ResetPassword 重置密码 @Summary 重置密码 @Description 使用验证码设置新密码 @Tags 认证 @Accept json @Produce json @Param request body ResetPasswordRequest true "邮箱、验证码和新密码" @Success 200 {object} success.SuccessResponse @Failure 400 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/auth/reset-password [post]

func (*AuthController) VerifyEmail

func (h *AuthController) VerifyEmail(c *gin.Context)

VerifyEmail 邮箱验证 @Summary 邮箱验证 @Description 使用验证令牌激活用户账号 @Tags 认证 @Accept json @Produce json @Param token query string true "验证令牌" @Success 200 {object} success.SuccessResponse @Failure 400 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/auth/verify-email [get]

type GalleryController

type GalleryController struct {
	// contains filtered or unexported fields
}

func NewGalleryController

func NewGalleryController(galleryService *services.GalleryService, galleryConfig *models.GalleryConfig) *GalleryController

func (*GalleryController) GetGalleryConfig

func (h *GalleryController) GetGalleryConfig(c *gin.Context)

GetGalleryConfig 获取画廊配置 @Summary 获取画廊配置 @Description 获取画廊配置数据 @Tags 画廊 @Produce json @Success 200 {object} success.DataResponse{data=models.GalleryConfig} @Failure 500 {object} cerrors.ErrorResponse @Router /api/gallery/config [get]

func (*GalleryController) GetGalleryImages

func (h *GalleryController) GetGalleryImages(c *gin.Context)

GetGalleryImages 获取画廊相册图片 @Summary 获取画廊相册图片 @Description 获取画廊相册图片 @Tags 画廊 @Produce json @Param user_name path string true "用户名" @Param album_id path int true "相册ID" @Param page query int false "页码" default(1) @Param page_size query int false "每页数量" default(10) @Success 200 {object} success.DataResponse{data=services.GetAlbumImagesResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/gallery/images/{user_name}/{album_id} [get]

func (*GalleryController) GetGallerys

func (h *GalleryController) GetGallerys(c *gin.Context)

GetGallerys 获取所有画廊相册 @Summary 获取所有画廊相册 @Description 获取所有画廊相册 @Tags 画廊 @Produce json @Param user_name path string true "用户名" @Success 200 {object} success.DataResponse{data=services.GetAlbumsResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/gallery/albums/{user_name} [get]

func (*GalleryController) SearchGalleryImages

func (h *GalleryController) SearchGalleryImages(c *gin.Context)

SearchGalleryImages 搜索画廊相册图片 @Summary 搜索画廊相册图片 @Description 搜索画廊相册图片 @Tags 画廊 @Produce json @Param user_name path string true "用户名" @Param query query string true "搜索查询" @Param page query int false "页码" default(1) @Param page_size query int false "每页数量" default(10) @Success 200 {object} success.DataResponse{data=services.GetGalleryImagesResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/gallery/search/{user_name} [get]

type ImageController

type ImageController struct {
	// contains filtered or unexported fields
}

func NewImageController

func NewImageController(imageService *services.ImageService, hub *websocket.Hub) *ImageController

func (*ImageController) AddImageToAlbum

func (h *ImageController) AddImageToAlbum(c *gin.Context)

AddImageToAlbum 批量添加图片到相册 @Summary 添加图片到相册 @Description 将图片添加到指定相册 @Tags 图片管理 @Accept json @Produce json @Security ApiKeyAuth @Param req body AddOrDelImageToAlbumRequset true "添加图片到相册请求" @Success 200 {object} success.DataResponse{data=AddOrDelImageToAlbumResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/images/albums [post]

func (*ImageController) DeleteImage

func (h *ImageController) DeleteImage(c *gin.Context)

DeleteImage 删除图片 @Summary 删除图片 @Description 删除指定的图片 @Tags 图片管理 @Produce json @Security ApiKeyAuth @Param ids body []uint true "图片ID" @Success 200 {object} success.NewSuccessResponse @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/images [delete]

func (*ImageController) GetImage

func (h *ImageController) GetImage(c *gin.Context)

GetImage 获取单张图片详情 @Summary 获取图片详情 @Description 获取指定图片的详细信息 @Tags 图片管理 @Produce json @Security ApiKeyAuth @Param id path int true "图片ID" @Success 200 {object} success.DataResponse{data=services.ImageResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/images/{id} [get]

func (*ImageController) GetImages

func (h *ImageController) GetImages(c *gin.Context)

GetImages 获取图片列表 @Summary 获取图片列表 @Description 获取当前用户的图片列表 @Tags 图片管理 @Produce json @Security ApiKeyAuth @Param page query int false "页码" default(1) @Param page_size query int false "每页数量" default(10) @Success 200 {object} success.DataResponse{data=services.GetImagesResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/images [get]

func (*ImageController) RemoveImageFromAlbum

func (h *ImageController) RemoveImageFromAlbum(c *gin.Context)

RemoveImageFromAlbum 将图片从指定相册移除 @Summary 从相册移除图片 @Description 将图片从指定相册移除 @Tags 图片管理 @Accept json @Produce json @Security ApiKeyAuth @Param req body AddOrDelImageToAlbumRequset true "从相册移除图片请求" @Success 200 {object} success.DataResponse{data=AddOrDelImageToAlbumResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/images/albums [delete]

func (*ImageController) SearchImagesByTagsOrTitle

func (h *ImageController) SearchImagesByTagsOrTitle(c *gin.Context)

SearchImagesByTagsOrTitle 标签或标题模糊搜索图片8 @Summary 标签或标题模糊搜索图片 @Description 标签、标题只提供其一可针对提供值的字段进行模糊搜索,若都提供则对两个值进行模糊搜索 @Tags 图片管理 @Produce json @Security ApiKeyAuth @Param search_key query string false "搜索关键词" @Param page query int false "页码" default(1) @Param page_size query int false "每页数量" default(10) @Success 200 {object} success.DataResponse{data=services.GetImagesResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/images/search [get]

func (*ImageController) UpdateImage

func (h *ImageController) UpdateImage(c *gin.Context)

UpdateImage 更新图片 @Summary 更新图片 @Description 更新指定图片的信息 @Tags 图片管理 @Accept json @Produce json @Security ApiKeyAuth @Param image body UpdateRequest true "图片信息" @Success 200 {object} success.DataResponse{data=UpdateResponse} @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/images [put]

func (*ImageController) UploadImage

func (h *ImageController) UploadImage(c *gin.Context)

UploadImage 批量上传图片 @Summary 批量上传图片 @Description 上传图片文件 @Tags 图片管理 @Accept multipart/form-data @Produce json @Security ApiKeyAuth @Param file formData []file true "图片文件" @Param tags formData []string false "标签列表" @Param album_ids formData []int false "相册ID列表" @Success 200 {object} success.SuccessResponse @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/images/upload [post]

type LoginRequest

type LoginRequest struct {
	Username string `json:"username" binding:"required"`
	Password string `json:"password" binding:"required"`
}

LoginRequest 登录请求结构体

type LogoutRequest

type LogoutRequest struct {
	RefreshToken string `json:"refresh_token" binding:"required"`
}

LogoutRequest 登出请求结构体

type RefreshTokenRequest

type RefreshTokenRequest struct {
	RefreshToken string `json:"refresh_token" binding:"required"`
}

RefreshTokenRequest 刷新令牌请求结构体

type RegisterRequest

type RegisterRequest struct {
	Username string `json:"username" binding:"required,min=3,max=30"`
	Password string `json:"password" binding:"required,min=6"`
	Email    string `json:"email" binding:"required,email"`
	Locale   string `json:"locale" binding:"required,oneof=zh en"`
}

RegisterRequest 注册请求结构体

type RequestPasswordResetRequest

type RequestPasswordResetRequest struct {
	Email  string `json:"email" binding:"required,email"`
	Locale string `json:"locale" binding:"required,oneof=zh en"`
}

RequestPasswordResetRequest 请求密码重置结构体

type ResetPasswordRequest

type ResetPasswordRequest struct {
	Email       string `json:"email" binding:"required,email"`
	Code        string `json:"code" binding:"required,len=6"`
	NewPassword string `json:"new_password" binding:"required,min=6"`
}

ResetPasswordRequest 重置密码结构体

type UpdateRequest

type UpdateRequest struct {
	IDs          []uint   `json:"ids" binding:"required"`
	OriginalName string   `json:"original_name" binding:"omitempty"`
	Tags         []string `json:"tags" binding:"omitempty"`
}

type UpdateResponse

type UpdateResponse struct {
	SuccessIDs map[uint]*services.ImageResponse `json:"success_ids"`
	ErrorIDs   map[uint]string                  `json:"error_ids"`
}

type UploadRequest

type UploadRequest struct {
	Tags     []string `form:"tags" binding:"omitempty"`
	AlbumIDs []uint   `form:"album_ids" binding:"omitempty"`
}

type UserController

type UserController struct {
	// contains filtered or unexported fields
}

func NewUserController

func NewUserController(userService *services.UserService) *UserController

func (*UserController) GetImagesTagsCloud

func (h *UserController) GetImagesTagsCloud(c *gin.Context)

GetImagesTagsCloud 获取用户图片标签云 @Summary 获取用户图片标签云 @Description 获取当前登录用户所有图片的标签云(标签及出现次数) @Tags 用户查询 @Produce json @Security ApiKeyAuth @Success 200 {object} []services.TagCloudItem @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/users/me/tags-cloud [get]

func (*UserController) GetMe

func (h *UserController) GetMe(c *gin.Context)

GetMe 获取当前用户信息 @Summary 获取当前用户信息 @Description 获取当前登录用户的信息 @Tags 用户查询 @Produce json @Security ApiKeyAuth @Success 200 {array} models.User @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/users/me [get]

func (*UserController) GetStorageUsage

func (h *UserController) GetStorageUsage(c *gin.Context)

GetStorageUsage 获取当前用户存储空间使用情况 @Summary 获取当前用户存储空间使用情况 @Description 获取当前登录用户的存储空间使用情况 @Tags 用户查询 @Produce json @Security ApiKeyAuth @Success 200 {object} services.StorageUsage @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/users/me/storage [get]

func (*UserController) UpdateMe

func (h *UserController) UpdateMe(c *gin.Context)

UpdateMe 更新当前用户信息 @Summary 更新当前用户信息 @Description 更新当前登录用户的信息 @Tags 用户查询 @Accept json @Produce json @Security ApiKeyAuth @Param user body UserRequest true "用户信息" @Success 200 {object} models.User @Failure 400 {object} cerrors.ErrorResponse @Failure 401 {object} cerrors.ErrorResponse @Failure 403 {object} cerrors.ErrorResponse @Failure 404 {object} cerrors.ErrorResponse @Failure 500 {object} cerrors.ErrorResponse @Router /api/users/me [put]

type UserRequest

type UserRequest struct {
	Username string `json:"username" binding:"required,min=3,max=50"`
	Password string `json:"password" binding:"omitempty,min=6"`
}

UserRequest 用户管理请求结构体

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL