refactor: improve system stability, performance, and code structure
This commit introduces several architectural improvements and optimizations across the codebase: - **Performance & Reliability**: - Implemented Redis pipelining in `ConversationCache.CacheMessage` to reduce network round-trips. - Added a circuit breaker to the JPush client to prevent cascading failures. - Introduced batch deletion and batch member addition capabilities in repositories. - Added message idempotency support using `client_msg_id` and a Redis-based cache. - Optimized WebSocket handling with connection limits (total and per-user) and improved error logging. - **Code Refactoring**: - Refactored `Router` to use a `RouterDeps` struct, simplifying the constructor and improving maintainability. - Unified model ID generation logic using new `id_helper.go` (supporting UUID and Snowflake). - Standardized JSON serialization/deserialization in models using `json_helper.go`. - Refactored DTO conversion logic, specifically for `UserResponse` (using functional options) and `Report` responses. - Removed redundant/deprecated DTOs like `PostDetailResponse` and `TradeItemDetailResponse`. - **Cache Improvements**: - Enhanced `LayeredCache` with `SetRaw` to avoid double-encoding when promoting values from Redis to local cache. - Added `DeleteBatch` support to the cache interface. - **Other Changes**: - Cleaned up `config.go` by removing redundant default values and explicit environment variable overrides. - Improved WebSocket registration flow to handle connection limits gracefully.
This commit is contained in:
@@ -10,6 +10,46 @@ import (
|
||||
"with_you/internal/service"
|
||||
)
|
||||
|
||||
// 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
|
||||
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
|
||||
ReportHandler *handler.ReportHandler
|
||||
AdminReportHandler *handler.AdminReportHandler
|
||||
VerificationHandler *handler.VerificationHandler
|
||||
AdminVerificationHandler *handler.AdminVerificationHandler
|
||||
AdminProfileAuditHandler *handler.AdminProfileAuditHandler
|
||||
SetupHandler *handler.SetupHandler
|
||||
TradeHandler *handler.TradeHandler
|
||||
WSHandler *handler.WSHandler
|
||||
JWTService *service.JWTService
|
||||
LogService *service.LogService
|
||||
ActivityService service.UserActivityService
|
||||
CasbinService service.CasbinService
|
||||
}
|
||||
|
||||
// Router 路由配置
|
||||
type Router struct {
|
||||
engine *gin.Engine
|
||||
@@ -51,86 +91,47 @@ type Router struct {
|
||||
}
|
||||
|
||||
// New 创建路由
|
||||
func New(
|
||||
userRepo repository.UserRepository,
|
||||
userHandler *handler.UserHandler,
|
||||
postHandler *handler.PostHandler,
|
||||
commentHandler *handler.CommentHandler,
|
||||
messageHandler *handler.MessageHandler,
|
||||
notificationHandler *handler.NotificationHandler,
|
||||
uploadHandler *handler.UploadHandler,
|
||||
jwtService *service.JWTService,
|
||||
pushHandler *handler.PushHandler,
|
||||
systemMessageHandler *handler.SystemMessageHandler,
|
||||
groupHandler *handler.GroupHandler,
|
||||
stickerHandler *handler.StickerHandler,
|
||||
voteHandler *handler.VoteHandler,
|
||||
channelHandler *handler.ChannelHandler,
|
||||
scheduleHandler *handler.ScheduleHandler,
|
||||
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,
|
||||
reportHandler *handler.ReportHandler,
|
||||
adminReportHandler *handler.AdminReportHandler,
|
||||
verificationHandler *handler.VerificationHandler,
|
||||
adminVerificationHandler *handler.AdminVerificationHandler,
|
||||
adminProfileAuditHandler *handler.AdminProfileAuditHandler,
|
||||
setupHandler *handler.SetupHandler,
|
||||
tradeHandler *handler.TradeHandler,
|
||||
logService *service.LogService,
|
||||
activityService service.UserActivityService,
|
||||
casbinService service.CasbinService,
|
||||
wsHandler *handler.WSHandler,
|
||||
) *Router {
|
||||
// 设置JWT服务
|
||||
userHandler.SetJWTService(jwtService)
|
||||
// 设置活跃统计服务
|
||||
userHandler.SetActivityService(activityService)
|
||||
func New(deps RouterDeps) *Router {
|
||||
deps.UserHandler.SetJWTService(deps.JWTService)
|
||||
deps.UserHandler.SetActivityService(deps.ActivityService)
|
||||
|
||||
r := &Router{
|
||||
engine: gin.Default(),
|
||||
userRepo: userRepo,
|
||||
userHandler: userHandler,
|
||||
postHandler: postHandler,
|
||||
commentHandler: commentHandler,
|
||||
messageHandler: messageHandler,
|
||||
notificationHandler: notificationHandler,
|
||||
uploadHandler: uploadHandler,
|
||||
pushHandler: pushHandler,
|
||||
systemMessageHandler: systemMessageHandler,
|
||||
groupHandler: groupHandler,
|
||||
stickerHandler: stickerHandler,
|
||||
voteHandler: voteHandler,
|
||||
channelHandler: channelHandler,
|
||||
scheduleHandler: scheduleHandler,
|
||||
roleHandler: roleHandler,
|
||||
adminUserHandler: adminUserHandler,
|
||||
adminPostHandler: adminPostHandler,
|
||||
adminCommentHandler: adminCommentHandler,
|
||||
adminGroupHandler: adminGroupHandler,
|
||||
adminDashboardHandler: adminDashboardHandler,
|
||||
adminLogHandler: adminLogHandler,
|
||||
qrcodeHandler: qrcodeHandler,
|
||||
materialHandler: materialHandler,
|
||||
callHandler: callHandler,
|
||||
reportHandler: reportHandler,
|
||||
adminReportHandler: adminReportHandler,
|
||||
verificationHandler: verificationHandler,
|
||||
adminVerificationHandler: adminVerificationHandler,
|
||||
adminProfileAuditHandler: adminProfileAuditHandler,
|
||||
setupHandler: setupHandler,
|
||||
tradeHandler: tradeHandler,
|
||||
logService: logService,
|
||||
jwtService: jwtService,
|
||||
casbinService: casbinService,
|
||||
wsHandler: wsHandler,
|
||||
userRepo: deps.UserRepo,
|
||||
userHandler: deps.UserHandler,
|
||||
postHandler: deps.PostHandler,
|
||||
commentHandler: deps.CommentHandler,
|
||||
messageHandler: deps.MessageHandler,
|
||||
notificationHandler: deps.NotificationHandler,
|
||||
uploadHandler: deps.UploadHandler,
|
||||
pushHandler: deps.PushHandler,
|
||||
systemMessageHandler: deps.SystemMessageHandler,
|
||||
groupHandler: deps.GroupHandler,
|
||||
stickerHandler: deps.StickerHandler,
|
||||
voteHandler: deps.VoteHandler,
|
||||
channelHandler: deps.ChannelHandler,
|
||||
scheduleHandler: deps.ScheduleHandler,
|
||||
roleHandler: deps.RoleHandler,
|
||||
adminUserHandler: deps.AdminUserHandler,
|
||||
adminPostHandler: deps.AdminPostHandler,
|
||||
adminCommentHandler: deps.AdminCommentHandler,
|
||||
adminGroupHandler: deps.AdminGroupHandler,
|
||||
adminDashboardHandler: deps.AdminDashboardHandler,
|
||||
adminLogHandler: deps.AdminLogHandler,
|
||||
qrcodeHandler: deps.QRCodeHandler,
|
||||
materialHandler: deps.MaterialHandler,
|
||||
callHandler: deps.CallHandler,
|
||||
reportHandler: deps.ReportHandler,
|
||||
adminReportHandler: deps.AdminReportHandler,
|
||||
verificationHandler: deps.VerificationHandler,
|
||||
adminVerificationHandler: deps.AdminVerificationHandler,
|
||||
adminProfileAuditHandler: deps.AdminProfileAuditHandler,
|
||||
setupHandler: deps.SetupHandler,
|
||||
tradeHandler: deps.TradeHandler,
|
||||
logService: deps.LogService,
|
||||
jwtService: deps.JWTService,
|
||||
casbinService: deps.CasbinService,
|
||||
wsHandler: deps.WSHandler,
|
||||
}
|
||||
|
||||
r.setupRoutes()
|
||||
|
||||
Reference in New Issue
Block a user