feat: 戒烟成就、梦想图标预设、打卡统计与依赖注入调整

- 成就系统、连续打卡天数计算、管理后台成就 CRUD
- 梦想目标图标预设 DreamPreset 与用户端 dream-presets 接口
- 管理后台梦想图标 CRUD;戒烟打卡 summary 修正
- 忽略根目录编译产物 /api

Made-with: Cursor
This commit is contained in:
nepiedg
2026-04-04 14:55:50 +08:00
parent 1c0aeb152a
commit fd097729d7
20 changed files with 849 additions and 12 deletions
+10 -2
View File
@@ -30,6 +30,7 @@ import (
membershipservice "wx_service/internal/membership/service"
"wx_service/internal/model"
"wx_service/internal/observability"
"wx_service/internal/achievement"
quitcheckinhandler "wx_service/internal/quitcheckin/handler"
quitcheckinmodel "wx_service/internal/quitcheckin/model"
quitcheckinservice "wx_service/internal/quitcheckin/service"
@@ -88,6 +89,9 @@ func main() {
&quitcheckinmodel.DailyStatus{},
&quitcheckinmodel.RelapseEvent{},
&quitcheckinmodel.RewardGoal{},
&quitcheckinmodel.DreamPreset{},
&achievement.Theme{},
&achievement.Level{},
); err != nil {
log.Fatalf("auto migrate failed: %v", err)
}
@@ -117,9 +121,13 @@ func main() {
smokeAINextService := smokeservice.NewSmokeAINextSmokeService(database.DB, config.AppConfig.AI)
smokeShareService := smokeservice.NewSmokeShareService(database.DB)
smokeQuitPlanService := smokeservice.NewSmokeQuitPlanService(database.DB, config.AppConfig.AI)
smokeHandler := smokehandler.NewSmokeHandler(smokeLogService, smokeAIAdviceService, smokeProfileService, smokeNextService, smokeAINextService, smokeShareService)
quitPlanHandler := smokehandler.NewQuitPlanHandler(smokeQuitPlanService)
achievementService := achievement.NewService(database.DB)
if err := achievementService.SeedDefaults(context.Background()); err != nil {
log.Printf("seed achievement defaults: %v", err)
}
quitCheckinService := quitcheckinservice.NewService(database.DB)
smokeHandler := smokehandler.NewSmokeHandler(smokeLogService, smokeAIAdviceService, smokeProfileService, smokeNextService, smokeAINextService, smokeShareService, achievementService, quitCheckinService)
quitPlanHandler := smokehandler.NewQuitPlanHandler(smokeQuitPlanService)
quitCheckinHandler := quitcheckinhandler.NewHandler(quitCheckinService)
redeemCodeService := membershipservice.NewRedeemCodeService(database.DB, config.AppConfig.Admin.Token)