Enhance AI and Redis integration for smoke logging features
- Added AI configuration options to .env.example and config.go for OpenAI integration. - Implemented Redis caching for session management in main.go and auth middleware. - Updated smoke logging service to support real smoking time (`smoke_at`) and AI advice retrieval. - Enhanced API routes to include endpoints for AI advice and unlock functionality for non-members. - Improved database schema with new tables for AI advice and unlock records. - Expanded documentation to cover new AI features and Redis caching implementation.
This commit is contained in:
+24
-2
@@ -10,9 +10,14 @@ import (
|
||||
authservice "wx_service/internal/common/auth/service"
|
||||
qiniuhandler "wx_service/internal/common/qiniu/handler"
|
||||
qiniuservice "wx_service/internal/common/qiniu/service"
|
||||
rediscache "wx_service/internal/common/redis/cache"
|
||||
redisservice "wx_service/internal/common/redis/service"
|
||||
oahandler "wx_service/internal/common/wechat_official/handler"
|
||||
oaservice "wx_service/internal/common/wechat_official/service"
|
||||
"wx_service/internal/database"
|
||||
membershiphandler "wx_service/internal/membership/handler"
|
||||
membershipmodel "wx_service/internal/membership/model"
|
||||
membershipservice "wx_service/internal/membership/service"
|
||||
"wx_service/internal/model"
|
||||
rmhandler "wx_service/internal/remove_watermark/handler"
|
||||
rmmodel "wx_service/internal/remove_watermark/model"
|
||||
@@ -35,9 +40,14 @@ func main() {
|
||||
if err := database.AutoMigrate(
|
||||
&model.MiniProgram{},
|
||||
&model.User{},
|
||||
&model.UserMembership{},
|
||||
&membershipmodel.MembershipRedeemCode{},
|
||||
&membershipmodel.MembershipRedemption{},
|
||||
&rmmodel.VideoParseLog{},
|
||||
&rmmodel.VideoParseUnlock{},
|
||||
&smokemodel.SmokeLog{},
|
||||
&smokemodel.SmokeAIAdvice{},
|
||||
&smokemodel.SmokeAIAdviceUnlock{},
|
||||
); err != nil {
|
||||
log.Fatalf("auto migrate failed: %v", err)
|
||||
}
|
||||
@@ -57,7 +67,11 @@ func main() {
|
||||
videoHandler := rmhandler.NewVideoHandler(videoService)
|
||||
|
||||
smokeLogService := smokeservice.NewSmokeLogService(database.DB)
|
||||
smokeHandler := smokehandler.NewSmokeHandler(smokeLogService)
|
||||
smokeAIAdviceService := smokeservice.NewSmokeAIAdviceService(database.DB, config.AppConfig.AI)
|
||||
smokeHandler := smokehandler.NewSmokeHandler(smokeLogService, smokeAIAdviceService)
|
||||
|
||||
redeemCodeService := membershipservice.NewRedeemCodeService(database.DB, config.AppConfig.Admin.Token)
|
||||
redeemCodeHandler := membershiphandler.NewRedeemCodeHandler(redeemCodeService)
|
||||
|
||||
qiniuService := qiniuservice.NewQiniuService(config.AppConfig.Qiniu)
|
||||
uploadHandler := qiniuhandler.NewUploadHandler(qiniuService)
|
||||
@@ -65,8 +79,16 @@ func main() {
|
||||
oaService := oaservice.NewWeChatOAService(config.AppConfig.WeChatOA)
|
||||
oaOAuthHandler := oahandler.NewOAuthHandler(oaService)
|
||||
|
||||
var sessionCache *rediscache.SessionUserCache
|
||||
redisClient, err := redisservice.NewClient(config.AppConfig.Redis)
|
||||
if err != nil {
|
||||
log.Printf("redis disabled: %v", err)
|
||||
} else if redisClient != nil {
|
||||
sessionCache = rediscache.NewSessionUserCache(redisClient.Redis(), redisClient.KeyPrefix(), redisClient.SessionTTL())
|
||||
}
|
||||
|
||||
// 6) 注册路由:把 URL 映射到 handler
|
||||
routes.Register(router, database.DB, authHandler, videoHandler, smokeHandler, uploadHandler, oaOAuthHandler)
|
||||
routes.Register(router, database.DB, authHandler, videoHandler, smokeHandler, redeemCodeHandler, uploadHandler, oaOAuthHandler, sessionCache)
|
||||
|
||||
// 7) 启动监听端口
|
||||
addr := ":" + config.AppConfig.Server.Port
|
||||
|
||||
Reference in New Issue
Block a user