Files
jiang13-bbs/backend/cmd/jiang13/main.go
freefire b2d3d6dd26 feat(posts): 类型帖截止时间、抽奖奖品表与悬赏发帖体验
统一投票/悬赏/抽奖截止与状态展示,抽奖支持多奖品行;发帖页悬赏积分对齐表格输入,并在余额不足时于底部就地提示。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 10:21:05 +08:00

41 lines
1.1 KiB
Go

package main
import (
"fmt"
"log"
"github.com/freefire/jiang13-bbs/config"
"github.com/freefire/jiang13-bbs/model"
"github.com/freefire/jiang13-bbs/router"
"github.com/freefire/jiang13-bbs/service"
)
func main() {
cfg, err := config.Parse()
if err != nil {
log.Fatalf("配置解析失败: %v", err)
}
if err := model.InitDB(cfg.DBDSN); err != nil {
log.Fatalf("数据库初始化失败: %v", err)
}
// 生产 HTTPS 启用 __Host- 认证 cookie 前缀(须在路由注册、读写 cookie 前配置)
service.ConfigureCookieNames(!cfg.DevMode)
// 过期/已吊销 refresh token 定期清理
service.StartRefreshTokenCleanup(model.DB)
// 悬赏过期退回 / 抽奖到期开奖
service.StartTypedPostSettler(service.NewPostService(model.DB).WithDevMode(cfg.DevMode))
r, err := router.Setup(cfg)
if err != nil {
log.Fatalf("路由初始化失败: %v", err)
}
addr := fmt.Sprintf(":%d", cfg.Port)
log.Printf("[jiang13-bbs] 服务启动于 %s (dev=%v workPath=%s dataDir=%s)", addr, cfg.DevMode, cfg.WorkPath, cfg.DataDir)
if err := r.Run(addr); err != nil {
log.Fatalf("服务启动失败: %v", err)
}
}