refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
package router
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
|
|
2026-04-22 16:01:59 +08:00
|
|
|
|
"with_you/internal/handler"
|
|
|
|
|
|
"with_you/internal/middleware"
|
|
|
|
|
|
"with_you/internal/model"
|
|
|
|
|
|
"with_you/internal/repository"
|
|
|
|
|
|
"with_you/internal/service"
|
2026-03-09 21:28:58 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
2026-05-04 13:07:03 +08:00
|
|
|
|
// RouterDeps 路由依赖
|
|
|
|
|
|
type RouterDeps struct {
|
|
|
|
|
|
UserRepo repository.UserRepository
|
|
|
|
|
|
UserHandler *handler.UserHandler
|
|
|
|
|
|
PostHandler *handler.PostHandler
|
|
|
|
|
|
CommentHandler *handler.CommentHandler
|
|
|
|
|
|
MessageHandler *handler.MessageHandler
|
|
|
|
|
|
NotificationHandler *handler.NotificationHandler
|
|
|
|
|
|
UploadHandler *handler.UploadHandler
|
|
|
|
|
|
PushHandler *handler.PushHandler
|
|
|
|
|
|
SystemMessageHandler *handler.SystemMessageHandler
|
|
|
|
|
|
GroupHandler *handler.GroupHandler
|
|
|
|
|
|
StickerHandler *handler.StickerHandler
|
|
|
|
|
|
VoteHandler *handler.VoteHandler
|
|
|
|
|
|
ChannelHandler *handler.ChannelHandler
|
|
|
|
|
|
ScheduleHandler *handler.ScheduleHandler
|
2026-05-12 01:28:18 +08:00
|
|
|
|
GradeHandler *handler.GradeHandler
|
|
|
|
|
|
ExamHandler *handler.ExamHandler
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
EmptyClassroomHandler *handler.EmptyClassroomHandler
|
2026-05-04 13:07:03 +08:00
|
|
|
|
RoleHandler *handler.RoleHandler
|
|
|
|
|
|
AdminUserHandler *handler.AdminUserHandler
|
|
|
|
|
|
AdminPostHandler *handler.AdminPostHandler
|
|
|
|
|
|
AdminCommentHandler *handler.AdminCommentHandler
|
|
|
|
|
|
AdminGroupHandler *handler.AdminGroupHandler
|
|
|
|
|
|
AdminDashboardHandler *handler.AdminDashboardHandler
|
|
|
|
|
|
AdminLogHandler *handler.AdminLogHandler
|
|
|
|
|
|
QRCodeHandler *handler.QRCodeHandler
|
|
|
|
|
|
MaterialHandler *handler.MaterialHandler
|
|
|
|
|
|
CallHandler *handler.CallHandler
|
2026-06-01 13:41:02 +08:00
|
|
|
|
LiveKitHandler *handler.LiveKitHandler
|
2026-05-04 13:07:03 +08:00
|
|
|
|
ReportHandler *handler.ReportHandler
|
|
|
|
|
|
AdminReportHandler *handler.AdminReportHandler
|
|
|
|
|
|
VerificationHandler *handler.VerificationHandler
|
|
|
|
|
|
AdminVerificationHandler *handler.AdminVerificationHandler
|
|
|
|
|
|
AdminProfileAuditHandler *handler.AdminProfileAuditHandler
|
|
|
|
|
|
SetupHandler *handler.SetupHandler
|
|
|
|
|
|
TradeHandler *handler.TradeHandler
|
|
|
|
|
|
WSHandler *handler.WSHandler
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
JWTService service.JWTService
|
2026-05-04 13:07:03 +08:00
|
|
|
|
LogService *service.LogService
|
|
|
|
|
|
ActivityService service.UserActivityService
|
|
|
|
|
|
CasbinService service.CasbinService
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
UserService service.UserService
|
2026-05-04 13:07:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// Router 路由配置
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
// 通过嵌入 RouterDeps 复用所有依赖字段,消除 RouterDeps 与 Router 之间的字段重复。
|
|
|
|
|
|
// 所有 deps 字段(如 userHandler、jwtService)经嵌入提升后仍以 r.UserHandler 形式访问。
|
2026-03-09 21:28:58 +08:00
|
|
|
|
type Router struct {
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
*RouterDeps
|
|
|
|
|
|
engine *gin.Engine
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// New 创建路由
|
2026-05-04 13:07:03 +08:00
|
|
|
|
func New(deps RouterDeps) *Router {
|
|
|
|
|
|
deps.UserHandler.SetJWTService(deps.JWTService)
|
|
|
|
|
|
deps.UserHandler.SetActivityService(deps.ActivityService)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
r := &Router{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
RouterDeps: &deps,
|
|
|
|
|
|
engine: gin.Default(),
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
r.setupRoutes()
|
|
|
|
|
|
return r
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// setupRoutes 设置路由
|
|
|
|
|
|
func (r *Router) setupRoutes() {
|
|
|
|
|
|
// 中间件
|
2026-04-30 12:26:25 +08:00
|
|
|
|
r.engine.Use(middleware.SecurityHeaders())
|
2026-03-09 21:28:58 +08:00
|
|
|
|
r.engine.Use(middleware.CORS())
|
|
|
|
|
|
|
|
|
|
|
|
// 健康检查
|
|
|
|
|
|
r.engine.GET("/health", func(c *gin.Context) {
|
|
|
|
|
|
c.JSON(200, gin.H{"status": "ok"})
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
// API v1
|
|
|
|
|
|
v1 := r.engine.Group("/api/v1")
|
|
|
|
|
|
{
|
2026-04-30 12:26:25 +08:00
|
|
|
|
// 认证路由(公开,按接口类型设置不同速率限制)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
auth := v1.Group("/auth")
|
2026-04-30 12:26:25 +08:00
|
|
|
|
auth.Use(middleware.GlobalAuthRateLimit())
|
|
|
|
|
|
auth.Use(middleware.IPBanMiddleware())
|
2026-03-09 21:28:58 +08:00
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
auth.POST("/register", middleware.RegisterRateLimit(), r.UserHandler.Register)
|
|
|
|
|
|
auth.POST("/register/send-code", middleware.SendCodeRateLimit(), r.UserHandler.SendRegisterCode)
|
|
|
|
|
|
auth.POST("/login", middleware.LoginRateLimit(), r.UserHandler.Login)
|
|
|
|
|
|
auth.POST("/password/send-code", middleware.PasswordResetRateLimit(), r.UserHandler.SendPasswordResetCode)
|
|
|
|
|
|
auth.POST("/password/reset", middleware.PasswordResetRateLimit(), r.UserHandler.ResetPassword)
|
|
|
|
|
|
auth.POST("/logout", r.UserHandler.Logout)
|
|
|
|
|
|
auth.POST("/refresh", r.UserHandler.RefreshToken)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-24 15:14:44 +08:00
|
|
|
|
// 初始化超级管理员(公开接口,只能使用一次)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.SetupHandler != nil {
|
|
|
|
|
|
v1.POST("/admin/setup-super-admin", r.SetupHandler.SetupSuperAdmin)
|
2026-04-24 15:14:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 需要认证的路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
authMiddleware := middleware.Auth(r.JWTService)
|
2026-03-15 02:25:10 +08:00
|
|
|
|
|
|
|
|
|
|
// === 访问日志中间件 ===
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminLogHandler != nil && r.LogService != nil {
|
2026-03-15 02:25:10 +08:00
|
|
|
|
accessLogConfig := &middleware.AccessLogConfig{
|
2026-03-15 20:38:22 +08:00
|
|
|
|
Enable: true,
|
|
|
|
|
|
SkipPaths: []string{"/health", "/api/v1/health"},
|
|
|
|
|
|
ServerIP: "0.0.0.0",
|
2026-03-15 02:25:10 +08:00
|
|
|
|
ServerPort: 8080,
|
|
|
|
|
|
}
|
|
|
|
|
|
r.engine.Use(middleware.AccessLogMiddleware(
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
r.LogService.OperationLog,
|
2026-03-15 02:25:10 +08:00
|
|
|
|
accessLogConfig,
|
|
|
|
|
|
))
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 用户路由
|
|
|
|
|
|
users := v1.Group("/users")
|
|
|
|
|
|
{
|
|
|
|
|
|
// 当前用户
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
users.GET("/me", authMiddleware, r.UserHandler.GetCurrentUser)
|
|
|
|
|
|
users.PUT("/me", authMiddleware, r.UserHandler.UpdateUser)
|
|
|
|
|
|
users.POST("/me/email/send-code", authMiddleware, r.UserHandler.SendEmailVerifyCode)
|
|
|
|
|
|
users.POST("/me/email/verify", authMiddleware, r.UserHandler.VerifyEmail)
|
|
|
|
|
|
users.POST("/me/avatar", authMiddleware, r.UploadHandler.UploadAvatar)
|
|
|
|
|
|
users.POST("/me/cover", authMiddleware, r.UploadHandler.UploadCover)
|
|
|
|
|
|
users.POST("/change-password/send-code", authMiddleware, r.UserHandler.SendChangePasswordCode)
|
|
|
|
|
|
users.POST("/change-password", authMiddleware, r.UserHandler.ChangePassword)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
2026-04-08 14:55:50 +08:00
|
|
|
|
// 隐私设置
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
users.GET("/me/privacy", authMiddleware, r.UserHandler.GetPrivacySettings)
|
|
|
|
|
|
users.PUT("/me/privacy", authMiddleware, r.UserHandler.UpdatePrivacySettings)
|
2026-04-08 14:55:50 +08:00
|
|
|
|
|
|
|
|
|
|
// 账号注销
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
users.POST("/me/deactivate", authMiddleware, r.UserHandler.RequestAccountDeletion)
|
|
|
|
|
|
users.DELETE("/me/deactivate", authMiddleware, r.UserHandler.CancelAccountDeletion)
|
|
|
|
|
|
users.GET("/me/deletion-status", authMiddleware, r.UserHandler.GetDeletionStatus)
|
2026-04-08 14:55:50 +08:00
|
|
|
|
|
2026-03-14 02:09:38 +08:00
|
|
|
|
// 当前用户角色
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.RoleHandler != nil {
|
|
|
|
|
|
users.GET("/me/roles", authMiddleware, r.RoleHandler.GetMyRoles)
|
2026-03-14 02:09:38 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 搜索用户
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
users.GET("/search", middleware.OptionalAuth(r.JWTService), r.UserHandler.Search)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 其他用户
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
users.GET("/:id", middleware.OptionalAuth(r.JWTService), r.UserHandler.GetUserByID)
|
|
|
|
|
|
users.POST("/:id/follow", authMiddleware, r.UserHandler.FollowUser)
|
|
|
|
|
|
users.DELETE("/:id/follow", authMiddleware, r.UserHandler.UnfollowUser)
|
|
|
|
|
|
users.POST("/:id/block", authMiddleware, r.UserHandler.BlockUser)
|
|
|
|
|
|
users.DELETE("/:id/block", authMiddleware, r.UserHandler.UnblockUser)
|
|
|
|
|
|
users.GET("/:id/block-status", authMiddleware, r.UserHandler.GetBlockStatus)
|
|
|
|
|
|
users.GET("/blocks", authMiddleware, r.UserHandler.GetBlockedUsers)
|
|
|
|
|
|
users.GET("/:id/following", authMiddleware, r.UserHandler.GetFollowingList)
|
|
|
|
|
|
users.GET("/:id/followers", authMiddleware, r.UserHandler.GetFollowersList)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 用户帖子 - 使用 OptionalAuth 获取当前用户点赞/收藏状态
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
users.GET("/:id/posts", middleware.OptionalAuth(r.JWTService), r.PostHandler.GetUserPosts)
|
|
|
|
|
|
users.GET("/:id/favorites", middleware.OptionalAuth(r.JWTService), r.PostHandler.GetFavorites)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-05 20:27:03 +08:00
|
|
|
|
// 身份认证路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.VerificationHandler != nil {
|
2026-04-05 20:27:03 +08:00
|
|
|
|
verification := v1.Group("/verification")
|
|
|
|
|
|
verification.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
verification.GET("/status", r.VerificationHandler.GetVerificationStatus)
|
|
|
|
|
|
verification.POST("/submit", r.VerificationHandler.SubmitVerification)
|
|
|
|
|
|
verification.GET("/records", r.VerificationHandler.GetVerificationRecords)
|
2026-04-05 20:27:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-20 12:23:28 +08:00
|
|
|
|
// 二维码登录(公开)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.QRCodeHandler != nil {
|
2026-03-20 12:23:28 +08:00
|
|
|
|
qrcode := v1.Group("/auth/qrcode")
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
qrcode.GET("", r.QRCodeHandler.GetQRCode)
|
|
|
|
|
|
qrcode.GET("/events", r.QRCodeHandler.WSEvents)
|
2026-03-20 12:23:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 二维码操作(需认证)
|
|
|
|
|
|
qrcodeAuth := v1.Group("/auth/qrcode")
|
|
|
|
|
|
qrcodeAuth.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
qrcodeAuth.POST("/scan", r.QRCodeHandler.Scan)
|
|
|
|
|
|
qrcodeAuth.POST("/confirm", r.QRCodeHandler.Confirm)
|
|
|
|
|
|
qrcodeAuth.POST("/cancel", r.QRCodeHandler.Cancel)
|
2026-03-20 12:23:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 认证路由(公开)
|
|
|
|
|
|
authPublic := v1.Group("/auth")
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
authPublic.GET("/check-username", r.UserHandler.CheckUsername)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 帖子路由
|
|
|
|
|
|
posts := v1.Group("/posts")
|
|
|
|
|
|
{
|
|
|
|
|
|
// 使用 OptionalAuth 中间件来获取用户登录状态
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
posts.GET("", middleware.OptionalAuth(r.JWTService), r.PostHandler.List)
|
|
|
|
|
|
posts.GET("/search", middleware.OptionalAuth(r.JWTService), r.PostHandler.Search)
|
|
|
|
|
|
posts.GET("/suggest", middleware.OptionalAuth(r.JWTService), r.PostHandler.Suggest)
|
|
|
|
|
|
posts.GET("/:id", middleware.OptionalAuth(r.JWTService), r.PostHandler.GetByID)
|
|
|
|
|
|
posts.POST("", authMiddleware, middleware.RequireVerified(r.UserService), r.PostHandler.Create)
|
|
|
|
|
|
posts.PUT("/:id", authMiddleware, middleware.RequireVerified(r.UserService), r.PostHandler.Update)
|
|
|
|
|
|
posts.DELETE("/:id", authMiddleware, middleware.RequireVerified(r.UserService), r.PostHandler.Delete)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 浏览量记录(可选认证,允许游客浏览)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
posts.POST("/:id/view", middleware.OptionalAuth(r.JWTService), r.PostHandler.RecordView)
|
2026-03-24 05:21:36 +08:00
|
|
|
|
// 分享计数(可选认证;仅已发布帖子生效)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
posts.POST("/:id/share", middleware.OptionalAuth(r.JWTService), r.PostHandler.RecordShare)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
2026-04-26 00:37:20 +08:00
|
|
|
|
// 内链相关路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
posts.GET("/:id/related", middleware.OptionalAuth(r.JWTService), r.PostHandler.GetRelatedPosts)
|
|
|
|
|
|
posts.GET("/:id/refs", middleware.OptionalAuth(r.JWTService), r.PostHandler.GetReferencedPosts)
|
|
|
|
|
|
posts.POST("/:id/ref-click", middleware.OptionalAuth(r.JWTService), r.PostHandler.RecordRefClick)
|
2026-04-26 00:37:20 +08:00
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 点赞
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
posts.POST("/:id/like", authMiddleware, middleware.RequireVerified(r.UserService), r.PostHandler.Like)
|
|
|
|
|
|
posts.DELETE("/:id/like", authMiddleware, middleware.RequireVerified(r.UserService), r.PostHandler.Unlike)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 收藏
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
posts.POST("/:id/favorite", authMiddleware, middleware.RequireVerified(r.UserService), r.PostHandler.Favorite)
|
|
|
|
|
|
posts.DELETE("/:id/favorite", authMiddleware, middleware.RequireVerified(r.UserService), r.PostHandler.Unfavorite)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 投票相关路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
posts.POST("/vote", authMiddleware, middleware.RequireVerified(r.UserService), r.VoteHandler.CreateVotePost) // 创建投票帖子
|
|
|
|
|
|
posts.GET("/:id/vote", middleware.OptionalAuth(r.JWTService), r.VoteHandler.GetVoteResult) // 获取投票结果
|
|
|
|
|
|
posts.POST("/:id/vote", authMiddleware, middleware.RequireVerified(r.UserService), r.VoteHandler.Vote) // 投票
|
|
|
|
|
|
posts.DELETE("/:id/vote", authMiddleware, middleware.RequireVerified(r.UserService), r.VoteHandler.Unvote) // 取消投票
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-24 22:27:53 +08:00
|
|
|
|
// 频道路由(公开)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.ChannelHandler != nil {
|
2026-03-24 22:27:53 +08:00
|
|
|
|
channels := v1.Group("/channels")
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
channels.GET("", r.ChannelHandler.ListPublic)
|
2026-03-24 22:27:53 +08:00
|
|
|
|
}
|
feat(trade): implement second-hand trading/flea market feature
Add complete trade functionality including:
- TradeItem, TradeImage, TradeFavorite models with auto-migration
- TradeRepository with CRUD and favorite operations
- TradeService with business logic for listing, creating, updating, status management
- TradeHandler with RESTful endpoints for trade operations
- DTOs and converters for request/response handling
Routes include: list, get by id, create, update, delete, status update, view recording, favorite/unfavorite.
2026-04-26 15:20:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 二手交易路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.TradeHandler != nil {
|
feat(trade): implement second-hand trading/flea market feature
Add complete trade functionality including:
- TradeItem, TradeImage, TradeFavorite models with auto-migration
- TradeRepository with CRUD and favorite operations
- TradeService with business logic for listing, creating, updating, status management
- TradeHandler with RESTful endpoints for trade operations
- DTOs and converters for request/response handling
Routes include: list, get by id, create, update, delete, status update, view recording, favorite/unfavorite.
2026-04-26 15:20:26 +08:00
|
|
|
|
trade := v1.Group("/trade")
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
trade.GET("", middleware.OptionalAuth(r.JWTService), r.TradeHandler.List)
|
|
|
|
|
|
trade.GET("/:id", middleware.OptionalAuth(r.JWTService), r.TradeHandler.GetByID)
|
|
|
|
|
|
trade.POST("", authMiddleware, middleware.RequireVerified(r.UserService), r.TradeHandler.Create)
|
|
|
|
|
|
trade.PUT("/:id", authMiddleware, middleware.RequireVerified(r.UserService), r.TradeHandler.Update)
|
|
|
|
|
|
trade.DELETE("/:id", authMiddleware, middleware.RequireVerified(r.UserService), r.TradeHandler.Delete)
|
|
|
|
|
|
trade.PUT("/:id/status", authMiddleware, middleware.RequireVerified(r.UserService), r.TradeHandler.UpdateStatus)
|
|
|
|
|
|
trade.POST("/:id/view", middleware.OptionalAuth(r.JWTService), r.TradeHandler.RecordView)
|
|
|
|
|
|
trade.POST("/:id/favorite", authMiddleware, middleware.RequireVerified(r.UserService), r.TradeHandler.Favorite)
|
|
|
|
|
|
trade.DELETE("/:id/favorite", authMiddleware, middleware.RequireVerified(r.UserService), r.TradeHandler.Unfavorite)
|
feat(trade): implement second-hand trading/flea market feature
Add complete trade functionality including:
- TradeItem, TradeImage, TradeFavorite models with auto-migration
- TradeRepository with CRUD and favorite operations
- TradeService with business logic for listing, creating, updating, status management
- TradeHandler with RESTful endpoints for trade operations
- DTOs and converters for request/response handling
Routes include: list, get by id, create, update, delete, status update, view recording, favorite/unfavorite.
2026-04-26 15:20:26 +08:00
|
|
|
|
}
|
2026-03-24 22:27:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-12 08:38:14 +08:00
|
|
|
|
// 课表路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.ScheduleHandler != nil {
|
2026-03-12 08:38:14 +08:00
|
|
|
|
schedule := v1.Group("/schedule")
|
|
|
|
|
|
schedule.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
schedule.GET("/courses", r.ScheduleHandler.ListCourses)
|
|
|
|
|
|
schedule.POST("/courses", r.ScheduleHandler.CreateCourse)
|
|
|
|
|
|
schedule.POST("/sync", r.ScheduleHandler.SyncSchedule) // 同步课表
|
|
|
|
|
|
schedule.PUT("/courses/:id", r.ScheduleHandler.UpdateCourse)
|
|
|
|
|
|
schedule.DELETE("/courses/:id", r.ScheduleHandler.DeleteCourse)
|
2026-03-12 08:38:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-12 01:28:18 +08:00
|
|
|
|
// 成绩路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.GradeHandler != nil {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
grades := v1.Group("/grades")
|
|
|
|
|
|
grades.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
grades.GET("", r.GradeHandler.ListGrades)
|
|
|
|
|
|
grades.POST("/sync", r.GradeHandler.SyncGrades)
|
2026-05-12 01:28:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 考试安排路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.ExamHandler != nil {
|
2026-05-12 01:28:18 +08:00
|
|
|
|
exams := v1.Group("/exams")
|
|
|
|
|
|
exams.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
exams.GET("", r.ExamHandler.ListExams)
|
|
|
|
|
|
exams.POST("/sync", r.ExamHandler.SyncExams)
|
2026-05-12 01:28:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-05-31 21:29:45 +08:00
|
|
|
|
// 空教室路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.EmptyClassroomHandler != nil {
|
2026-05-31 21:29:45 +08:00
|
|
|
|
classrooms := v1.Group("/classrooms")
|
|
|
|
|
|
classrooms.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
classrooms.GET("", r.EmptyClassroomHandler.ListEmptyClassrooms)
|
|
|
|
|
|
classrooms.POST("/sync", r.EmptyClassroomHandler.SyncEmptyClassrooms)
|
2026-05-31 21:29:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-25 20:44:12 +08:00
|
|
|
|
// 学习资料路由(公开)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.MaterialHandler != nil {
|
2026-03-25 20:44:12 +08:00
|
|
|
|
materials := v1.Group("/materials")
|
|
|
|
|
|
{
|
|
|
|
|
|
// 学科相关
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
materials.GET("/subjects", r.MaterialHandler.ListSubjects)
|
|
|
|
|
|
materials.GET("/subjects/:id", r.MaterialHandler.GetSubject)
|
2026-03-25 20:44:12 +08:00
|
|
|
|
// 资料相关
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
materials.GET("", r.MaterialHandler.ListMaterials)
|
|
|
|
|
|
materials.GET("/search", r.MaterialHandler.SearchMaterials)
|
|
|
|
|
|
materials.GET("/:id", r.MaterialHandler.GetMaterial)
|
|
|
|
|
|
materials.GET("/:id/download", r.MaterialHandler.DownloadMaterial)
|
2026-03-25 20:44:12 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 投票选项路由
|
|
|
|
|
|
voteOptions := v1.Group("/vote-options")
|
|
|
|
|
|
voteOptions.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
voteOptions.PUT("/:id", r.VoteHandler.UpdateVoteOption) // 更新选项
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 评论路由
|
|
|
|
|
|
comments := v1.Group("/comments")
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
comments.GET("/post/:id", middleware.OptionalAuth(r.JWTService), r.CommentHandler.GetByPostID)
|
|
|
|
|
|
comments.GET("/post/:id/cursor", middleware.OptionalAuth(r.JWTService), r.CommentHandler.GetByPostIDByCursor) // 帖子评论游标分页
|
|
|
|
|
|
comments.GET("/:id", middleware.OptionalAuth(r.JWTService), r.CommentHandler.GetByID)
|
|
|
|
|
|
comments.POST("", authMiddleware, middleware.RequireVerified(r.UserService), r.CommentHandler.Create)
|
|
|
|
|
|
comments.PUT("/:id", authMiddleware, middleware.RequireVerified(r.UserService), r.CommentHandler.Update)
|
|
|
|
|
|
comments.DELETE("/:id", authMiddleware, middleware.RequireVerified(r.UserService), r.CommentHandler.Delete)
|
|
|
|
|
|
comments.GET("/:id/replies", middleware.OptionalAuth(r.JWTService), r.CommentHandler.GetReplies)
|
|
|
|
|
|
comments.GET("/:id/replies/flat", middleware.OptionalAuth(r.JWTService), r.CommentHandler.GetRepliesByRootID) // 扁平化分页获取回复
|
|
|
|
|
|
comments.GET("/:id/replies/cursor", middleware.OptionalAuth(r.JWTService), r.CommentHandler.GetRepliesByRootIDByCursor) // 回复游标分页
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 评论点赞
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
comments.POST("/:id/like", authMiddleware, middleware.RequireVerified(r.UserService), r.CommentHandler.Like)
|
|
|
|
|
|
comments.DELETE("/:id/like", authMiddleware, middleware.RequireVerified(r.UserService), r.CommentHandler.Unlike)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-10 20:52:50 +08:00
|
|
|
|
// 会话路由
|
2026-03-09 21:28:58 +08:00
|
|
|
|
conversations := v1.Group("/conversations")
|
|
|
|
|
|
conversations.Use(authMiddleware)
|
|
|
|
|
|
{
|
2026-03-10 20:52:50 +08:00
|
|
|
|
// ================================================================
|
|
|
|
|
|
// 新的 RESTful 风格路由(推荐使用)
|
|
|
|
|
|
// ================================================================
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
conversations.GET("", r.MessageHandler.HandleGetConversationList) // 列表
|
|
|
|
|
|
conversations.GET("/cursor", r.MessageHandler.GetConversationsByCursor) // 会话列表游标分页
|
|
|
|
|
|
conversations.POST("", middleware.RequireVerified(r.UserService), r.MessageHandler.HandleCreateConversation) // 创建
|
|
|
|
|
|
conversations.GET("/:id", r.MessageHandler.HandleGetConversation) // 详情
|
|
|
|
|
|
conversations.GET("/:id/messages", r.MessageHandler.HandleGetMessages) // 消息列表
|
|
|
|
|
|
conversations.GET("/:id/messages/cursor", r.MessageHandler.GetMessagesByCursor) // 消息列表游标分页
|
|
|
|
|
|
conversations.POST("/:id/messages", middleware.RequireVerified(r.UserService), r.MessageHandler.HandleSendMessage) // 发送消息
|
|
|
|
|
|
conversations.POST("/:id/read", r.MessageHandler.HandleMarkRead) // 标记已读
|
|
|
|
|
|
conversations.POST("/read-all", r.MessageHandler.HandleMarkReadAll) // 批量标记已读
|
|
|
|
|
|
conversations.PUT("/:id/pinned", r.MessageHandler.HandleSetConversationPinned) // 置顶设置
|
|
|
|
|
|
conversations.PUT("/:id/notification_muted", r.MessageHandler.HandleSetConversationNotificationMuted) // 免打扰设置
|
|
|
|
|
|
conversations.GET("/unread/count", r.MessageHandler.GetUnreadCount) // 未读数
|
|
|
|
|
|
conversations.GET("/sync-data", r.MessageHandler.HandleGetSyncData) // 同步元数据
|
|
|
|
|
|
conversations.GET("/sync", r.MessageHandler.HandleGetSyncByVersion) // 增量同步(版本日志)
|
|
|
|
|
|
conversations.POST("/:id/typing", r.MessageHandler.HandleTyping) // 输入状态
|
|
|
|
|
|
conversations.DELETE("/:id/self", r.MessageHandler.HandleDeleteConversationForSelf) // 删除会话(仅自己)
|
2026-03-10 20:52:50 +08:00
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-10 12:58:23 +08:00
|
|
|
|
realtime := v1.Group("/realtime")
|
|
|
|
|
|
{
|
2026-03-26 21:17:49 +08:00
|
|
|
|
// WebSocket端点 - 在中间件之前处理认证(通过query参数)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
realtime.GET("/ws", r.WSHandler.HandleWebSocket)
|
2026-03-10 12:58:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-27 01:54:34 +08:00
|
|
|
|
// 通话路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.CallHandler != nil {
|
2026-03-27 01:54:34 +08:00
|
|
|
|
calls := v1.Group("/calls")
|
|
|
|
|
|
calls.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
calls.GET("/history", r.CallHandler.GetCallHistory)
|
2026-03-27 01:54:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-01 13:41:02 +08:00
|
|
|
|
// LiveKit 通话路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.LiveKitHandler != nil {
|
2026-06-01 13:41:02 +08:00
|
|
|
|
lk := v1.Group("/calls")
|
|
|
|
|
|
lk.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
lk.GET("/token", r.LiveKitHandler.GetToken)
|
2026-06-01 13:41:02 +08:00
|
|
|
|
}
|
|
|
|
|
|
// Webhook 不需要认证(LiveKit 服务端调用)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
v1.POST("/calls/webhook", r.LiveKitHandler.HandleWebhook)
|
2026-06-01 13:41:02 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 消息操作路由
|
|
|
|
|
|
messages := v1.Group("/messages")
|
|
|
|
|
|
messages.Use(authMiddleware)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 撤回/删除消息(统一接口)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
messages.POST("/delete_msg", middleware.RequireVerified(r.UserService), r.MessageHandler.HandleDeleteMsg)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-29 20:18:36 +08:00
|
|
|
|
// 举报路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.ReportHandler != nil {
|
2026-03-29 20:18:36 +08:00
|
|
|
|
reports := v1.Group("/reports")
|
|
|
|
|
|
reports.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
reports.POST("", r.ReportHandler.Create)
|
2026-03-29 20:18:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-09 21:28:58 +08:00
|
|
|
|
// 通知路由
|
|
|
|
|
|
notifications := v1.Group("/notifications")
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
notifications.GET("", authMiddleware, r.NotificationHandler.GetNotifications)
|
|
|
|
|
|
notifications.GET("/cursor", authMiddleware, r.NotificationHandler.GetNotificationsByCursor) // 通知游标分页
|
|
|
|
|
|
notifications.POST("/:id/read", authMiddleware, r.NotificationHandler.MarkAsRead)
|
|
|
|
|
|
notifications.POST("/read-all", authMiddleware, r.NotificationHandler.MarkAllAsRead)
|
|
|
|
|
|
notifications.GET("/unread-count", authMiddleware, r.NotificationHandler.GetUnreadCount)
|
|
|
|
|
|
notifications.DELETE("/:id", authMiddleware, r.NotificationHandler.DeleteNotification)
|
|
|
|
|
|
notifications.DELETE("", authMiddleware, r.NotificationHandler.ClearAllNotifications)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 上传路由
|
|
|
|
|
|
uploads := v1.Group("/uploads")
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
uploads.POST("/images", authMiddleware, r.UploadHandler.UploadImage)
|
2026-06-17 20:41:55 +08:00
|
|
|
|
uploads.POST("/files", authMiddleware, r.UploadHandler.UploadFile)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 推送相关路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.PushHandler != nil {
|
2026-03-09 21:28:58 +08:00
|
|
|
|
pushGroup := v1.Group("/push")
|
|
|
|
|
|
pushGroup.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
pushGroup.POST("/devices", r.PushHandler.RegisterDevice)
|
|
|
|
|
|
pushGroup.GET("/devices", r.PushHandler.GetMyDevices)
|
|
|
|
|
|
pushGroup.DELETE("/devices/:device_id", r.PushHandler.UnregisterDevice)
|
|
|
|
|
|
pushGroup.PUT("/devices/:device_id/token", r.PushHandler.UpdateDeviceToken)
|
|
|
|
|
|
pushGroup.GET("/records", r.PushHandler.GetPushRecords)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 系统消息路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.SystemMessageHandler != nil {
|
2026-03-09 21:28:58 +08:00
|
|
|
|
msgGroup := v1.Group("/messages")
|
|
|
|
|
|
msgGroup.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
msgGroup.GET("/system", r.SystemMessageHandler.GetSystemMessages)
|
|
|
|
|
|
msgGroup.GET("/system/unread-count", r.SystemMessageHandler.GetUnreadCount)
|
|
|
|
|
|
msgGroup.PUT("/system/:id/read", r.SystemMessageHandler.MarkAsRead)
|
|
|
|
|
|
msgGroup.PUT("/system/read-all", r.SystemMessageHandler.MarkAllAsRead)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-10 20:52:50 +08:00
|
|
|
|
// 群组路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.GroupHandler != nil {
|
2026-03-09 21:28:58 +08:00
|
|
|
|
groups := v1.Group("/groups")
|
|
|
|
|
|
groups.Use(authMiddleware)
|
|
|
|
|
|
{
|
2026-03-10 20:52:50 +08:00
|
|
|
|
// ================================================================
|
|
|
|
|
|
// 新的 RESTful 风格路由(推荐使用)
|
|
|
|
|
|
// ================================================================
|
|
|
|
|
|
// 群组基本操作
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
groups.GET("", r.GroupHandler.HandleGetUserGroups) // 列表
|
|
|
|
|
|
groups.GET("/cursor", r.GroupHandler.GetGroupsByCursor) // 群组游标分页
|
|
|
|
|
|
groups.POST("", r.GroupHandler.HandleCreateGroup) // 创建
|
|
|
|
|
|
groups.GET("/:id", r.GroupHandler.HandleGetGroupInfo) // 详情
|
|
|
|
|
|
groups.GET("/:id/me", r.GroupHandler.HandleGetMyMemberInfo) // 当前用户成员信息
|
|
|
|
|
|
groups.DELETE("/:id", r.GroupHandler.HandleDissolveGroup) // 解散群组
|
|
|
|
|
|
groups.POST("/:id/transfer", r.GroupHandler.HandleTransferOwner) // 转让群主
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 成员管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
groups.POST("/:id/invitations", r.GroupHandler.HandleInviteMembers) // 邀请成员
|
|
|
|
|
|
groups.POST("/:id/join-requests", r.GroupHandler.HandleJoinGroup) // 申请加群
|
|
|
|
|
|
groups.POST("/:id/join-requests/respond", r.GroupHandler.HandleRespondInvite) // 响应加群邀请/申请
|
|
|
|
|
|
groups.POST("/:id/leave", r.GroupHandler.HandleSetGroupLeave) // 退群
|
|
|
|
|
|
groups.GET("/:id/members", r.GroupHandler.HandleGetGroupMemberList) // 成员列表
|
|
|
|
|
|
groups.GET("/:id/members/cursor", r.GroupHandler.GetMembersByCursor) // 成员游标分页
|
|
|
|
|
|
groups.POST("/:id/members/kick", r.GroupHandler.HandleSetGroupKick) // 踢出成员
|
|
|
|
|
|
groups.PUT("/:id/members/:user_id/admin", r.GroupHandler.HandleSetGroupAdmin) // 设置管理员
|
|
|
|
|
|
groups.PUT("/:id/members/me/nickname", r.GroupHandler.HandleSetNickname) // 设置群昵称
|
|
|
|
|
|
groups.POST("/:id/members/ban", r.GroupHandler.HandleSetGroupBan) // 禁言成员
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 群设置
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
groups.PUT("/:id/ban", r.GroupHandler.HandleSetGroupWholeBan) // 全员禁言
|
|
|
|
|
|
groups.PUT("/:id/join-type", r.GroupHandler.HandleSetJoinType) // 加群方式
|
|
|
|
|
|
groups.PUT("/:id/name", r.GroupHandler.HandleSetGroupName) // 群名称
|
|
|
|
|
|
groups.PUT("/:id/avatar", r.GroupHandler.HandleSetGroupAvatar) // 群头像
|
|
|
|
|
|
groups.PUT("/:id/description", r.GroupHandler.HandleSetGroupDescription) // 群描述
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// 群公告
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
groups.POST("/:id/announcements", r.GroupHandler.HandleCreateAnnouncement) // 创建公告
|
|
|
|
|
|
groups.GET("/:id/announcements", r.GroupHandler.HandleGetAnnouncements) // 公告列表
|
|
|
|
|
|
groups.GET("/:id/announcements/cursor", r.GroupHandler.GetAnnouncementsByCursor) // 公告游标分页
|
|
|
|
|
|
groups.DELETE("/:id/announcements/:announcement_id", r.GroupHandler.HandleDeleteAnnouncement) // 删除公告
|
2026-03-10 20:52:50 +08:00
|
|
|
|
|
|
|
|
|
|
// 加群请求处理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
groups.POST("/:id/join-requests/handle", r.GroupHandler.HandleSetGroupAddRequest) // 处理加群请求
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 自定义表情路由
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.StickerHandler != nil {
|
2026-03-09 21:28:58 +08:00
|
|
|
|
stickers := v1.Group("/stickers")
|
|
|
|
|
|
stickers.Use(authMiddleware)
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
stickers.GET("", r.StickerHandler.GetStickers)
|
|
|
|
|
|
stickers.POST("", r.StickerHandler.AddSticker)
|
|
|
|
|
|
stickers.DELETE("", r.StickerHandler.DeleteSticker)
|
|
|
|
|
|
stickers.POST("/reorder", r.StickerHandler.ReorderStickers)
|
|
|
|
|
|
stickers.GET("/check", r.StickerHandler.CheckStickerExists)
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-14 02:09:38 +08:00
|
|
|
|
// 管理路由(需要管理员权限)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.RoleHandler != nil {
|
2026-03-14 02:09:38 +08:00
|
|
|
|
admin := v1.Group("/admin")
|
|
|
|
|
|
admin.Use(authMiddleware)
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
admin.Use(middleware.RequireRole(r.CasbinService, model.RoleAdmin, model.RoleSuperAdmin))
|
2026-03-14 02:09:38 +08:00
|
|
|
|
{
|
|
|
|
|
|
// 角色管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
admin.GET("/roles", r.RoleHandler.GetAllRoles)
|
|
|
|
|
|
admin.GET("/roles/:name", r.RoleHandler.GetRoleDetail)
|
|
|
|
|
|
admin.GET("/roles/:name/permissions", r.RoleHandler.GetRolePermissions)
|
|
|
|
|
|
admin.PUT("/roles/:name/permissions", r.RoleHandler.UpdateRolePermissions)
|
|
|
|
|
|
admin.GET("/permissions", r.RoleHandler.GetAllPermissions)
|
|
|
|
|
|
admin.GET("/users/:id/roles", r.RoleHandler.GetUserRoles)
|
|
|
|
|
|
admin.POST("/users/:id/roles", r.RoleHandler.AssignRole)
|
|
|
|
|
|
admin.DELETE("/users/:id/roles/:role", r.RoleHandler.RemoveRole)
|
2026-03-14 18:01:55 +08:00
|
|
|
|
|
|
|
|
|
|
// 用户管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminUserHandler != nil {
|
|
|
|
|
|
admin.GET("/users", r.AdminUserHandler.GetUserList)
|
|
|
|
|
|
admin.GET("/users/:id", r.AdminUserHandler.GetUserDetail)
|
|
|
|
|
|
admin.PUT("/users/:id/status", r.AdminUserHandler.UpdateUserStatus)
|
2026-06-18 20:07:24 +08:00
|
|
|
|
admin.GET("/users/:id/devices", r.AdminUserHandler.GetUserDevices)
|
2026-03-14 18:01:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 帖子管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminPostHandler != nil {
|
|
|
|
|
|
admin.GET("/posts", r.AdminPostHandler.GetPostList)
|
|
|
|
|
|
admin.GET("/posts/:id", r.AdminPostHandler.GetPostDetail)
|
|
|
|
|
|
admin.DELETE("/posts/:id", r.AdminPostHandler.DeletePost)
|
|
|
|
|
|
admin.PUT("/posts/:id/moderate", r.AdminPostHandler.ModeratePost)
|
|
|
|
|
|
admin.POST("/posts/batch-delete", r.AdminPostHandler.BatchDeletePosts)
|
|
|
|
|
|
admin.POST("/posts/batch-moderate", r.AdminPostHandler.BatchModeratePosts)
|
|
|
|
|
|
admin.PUT("/posts/:id/pin", r.AdminPostHandler.SetPostPin)
|
|
|
|
|
|
admin.PUT("/posts/:id/feature", r.AdminPostHandler.SetPostFeature)
|
2026-03-14 18:01:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-24 22:27:53 +08:00
|
|
|
|
// 频道管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.ChannelHandler != nil {
|
|
|
|
|
|
admin.GET("/channels", r.ChannelHandler.AdminList)
|
|
|
|
|
|
admin.POST("/channels", r.ChannelHandler.AdminCreate)
|
|
|
|
|
|
admin.PUT("/channels/:id", r.ChannelHandler.AdminUpdate)
|
|
|
|
|
|
admin.DELETE("/channels/:id", r.ChannelHandler.AdminDelete)
|
2026-03-24 22:27:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-14 18:01:55 +08:00
|
|
|
|
// 评论管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminCommentHandler != nil {
|
|
|
|
|
|
admin.GET("/comments", r.AdminCommentHandler.GetCommentList)
|
|
|
|
|
|
admin.GET("/comments/:id", r.AdminCommentHandler.GetCommentDetail)
|
|
|
|
|
|
admin.DELETE("/comments/:id", r.AdminCommentHandler.DeleteComment)
|
|
|
|
|
|
admin.PUT("/comments/:id/moderate", r.AdminCommentHandler.ModerateComment)
|
|
|
|
|
|
admin.POST("/comments/batch-delete", r.AdminCommentHandler.BatchDeleteComments)
|
|
|
|
|
|
admin.POST("/comments/batch-moderate", r.AdminCommentHandler.BatchModerateComments)
|
|
|
|
|
|
admin.GET("/comments/post/:postId", r.AdminCommentHandler.GetPostComments)
|
2026-03-14 18:01:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 群组管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminGroupHandler != nil {
|
|
|
|
|
|
admin.GET("/groups", r.AdminGroupHandler.GetGroupList)
|
|
|
|
|
|
admin.GET("/groups/:id", r.AdminGroupHandler.GetGroupDetail)
|
|
|
|
|
|
admin.GET("/groups/:id/members", r.AdminGroupHandler.GetGroupMembers)
|
|
|
|
|
|
admin.DELETE("/groups/:id", r.AdminGroupHandler.DeleteGroup)
|
|
|
|
|
|
admin.PUT("/groups/:id/status", r.AdminGroupHandler.UpdateGroupStatus)
|
|
|
|
|
|
admin.DELETE("/groups/:id/members/:userId", r.AdminGroupHandler.RemoveMember)
|
|
|
|
|
|
admin.PUT("/groups/:id/transfer", r.AdminGroupHandler.TransferOwner)
|
2026-03-14 18:01:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 仪表盘
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminDashboardHandler != nil {
|
|
|
|
|
|
admin.GET("/dashboard/stats", r.AdminDashboardHandler.GetStats)
|
|
|
|
|
|
admin.GET("/dashboard/user-activity", r.AdminDashboardHandler.GetUserActivityTrend)
|
|
|
|
|
|
admin.GET("/dashboard/content-stats", r.AdminDashboardHandler.GetContentStats)
|
|
|
|
|
|
admin.GET("/dashboard/pending-content", r.AdminDashboardHandler.GetPendingContent)
|
|
|
|
|
|
admin.GET("/dashboard/online-users", r.AdminDashboardHandler.GetOnlineUsers)
|
2026-03-14 18:01:55 +08:00
|
|
|
|
}
|
2026-03-15 02:25:10 +08:00
|
|
|
|
|
|
|
|
|
|
// 日志管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminLogHandler != nil {
|
2026-03-15 02:25:10 +08:00
|
|
|
|
logs := admin.Group("/logs")
|
|
|
|
|
|
{
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
logs.GET("/operations", r.AdminLogHandler.GetOperationLogs)
|
|
|
|
|
|
logs.GET("/logins", r.AdminLogHandler.GetLoginLogs)
|
|
|
|
|
|
logs.GET("/data-changes", r.AdminLogHandler.GetDataChangeLogs)
|
|
|
|
|
|
logs.GET("/statistics", r.AdminLogHandler.GetLogStatistics)
|
|
|
|
|
|
logs.GET("/export", r.AdminLogHandler.ExportLogs)
|
2026-03-15 02:25:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-03-25 20:44:12 +08:00
|
|
|
|
|
|
|
|
|
|
// 学习资料管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.MaterialHandler != nil {
|
2026-03-25 20:44:12 +08:00
|
|
|
|
// 学科管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
admin.GET("/materials/subjects", r.MaterialHandler.AdminListSubjects)
|
|
|
|
|
|
admin.POST("/materials/subjects", r.MaterialHandler.AdminCreateSubject)
|
|
|
|
|
|
admin.PUT("/materials/subjects/:id", r.MaterialHandler.AdminUpdateSubject)
|
|
|
|
|
|
admin.DELETE("/materials/subjects/:id", r.MaterialHandler.AdminDeleteSubject)
|
2026-03-25 20:44:12 +08:00
|
|
|
|
// 资料管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
admin.GET("/materials", r.MaterialHandler.AdminListMaterials)
|
|
|
|
|
|
admin.GET("/materials/:id", r.MaterialHandler.AdminGetMaterial)
|
|
|
|
|
|
admin.POST("/materials", r.MaterialHandler.AdminCreateMaterial)
|
|
|
|
|
|
admin.PUT("/materials/:id", r.MaterialHandler.AdminUpdateMaterial)
|
|
|
|
|
|
admin.DELETE("/materials/:id", r.MaterialHandler.AdminDeleteMaterial)
|
2026-03-25 20:44:12 +08:00
|
|
|
|
}
|
2026-03-29 20:18:36 +08:00
|
|
|
|
|
|
|
|
|
|
// 举报管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminReportHandler != nil {
|
|
|
|
|
|
admin.GET("/reports", r.AdminReportHandler.List)
|
|
|
|
|
|
admin.GET("/reports/:id", r.AdminReportHandler.Detail)
|
|
|
|
|
|
admin.PUT("/reports/:id/handle", r.AdminReportHandler.Handle)
|
|
|
|
|
|
admin.POST("/reports/batch-handle", r.AdminReportHandler.BatchHandle)
|
2026-03-29 20:18:36 +08:00
|
|
|
|
}
|
2026-04-05 20:27:03 +08:00
|
|
|
|
|
|
|
|
|
|
// 身份认证管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminVerificationHandler != nil {
|
|
|
|
|
|
admin.GET("/verifications", r.AdminVerificationHandler.ListVerifications)
|
|
|
|
|
|
admin.GET("/verifications/:id", r.AdminVerificationHandler.GetVerificationDetail)
|
|
|
|
|
|
admin.PUT("/verifications/:id/review", r.AdminVerificationHandler.ReviewVerification)
|
2026-04-05 20:27:03 +08:00
|
|
|
|
}
|
2026-04-15 11:50:47 +08:00
|
|
|
|
|
|
|
|
|
|
// 用户资料审核管理
|
refactor(server): decouple services and improve architecture
- Introduce interfaces for all major services (JWT, PostAI, Comment, Message, Notification, QRCodeLogin, Upload, Vote, etc.) to support dependency inversion.
- Move query parameters from `internal/dto` to a new `internal/query` package to separate request payloads from data transfer objects.
- Refactor `internal/router` to use embedded `RouterDeps` for cleaner dependency management.
- Decouple handlers from repositories by injecting services instead of direct repository access, ensuring proper layering.
- Improve database initialization by moving it from `internal/model` to `internal/database`.
- Optimize message decryption by implementing a more efficient `BatchDecrypt` method in `MessageEncryptor` using a worker pool.
- Enhance error handling and security by implementing fail-fast checks for encryption key length during startup.
- Clean up unused code, including the `avatar` package and several unused DTOs.
2026-06-15 03:41:59 +08:00
|
|
|
|
if r.AdminProfileAuditHandler != nil {
|
|
|
|
|
|
admin.GET("/profile-audits", r.AdminProfileAuditHandler.GetPendingList)
|
|
|
|
|
|
admin.PUT("/profile-audits/:id/moderate", r.AdminProfileAuditHandler.ModerateAudit)
|
|
|
|
|
|
admin.POST("/profile-audits/batch-moderate", r.AdminProfileAuditHandler.BatchModerate)
|
2026-04-15 11:50:47 +08:00
|
|
|
|
}
|
2026-03-14 02:09:38 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-03-09 21:28:58 +08:00
|
|
|
|
}
|
2026-03-15 20:38:22 +08:00
|
|
|
|
}
|
2026-03-09 21:28:58 +08:00
|
|
|
|
|
|
|
|
|
|
// Engine 获取引擎
|
|
|
|
|
|
func (r *Router) Engine() *gin.Engine {
|
|
|
|
|
|
return r.engine
|
|
|
|
|
|
}
|