refactor: 后端代码优化 11 项(codestable/refactors/2026-04-25-backend-cleanup)
- 提取 getWKFromContext 辅助函数,消除 handler 中 5 处重复代码 - 提取 retryCode 函数,消除 Login/performStudy 中验证码重试重复 - 提取 removeSession 内部方法,消除 Del/ClearAll/ClearExpired 中 3 处重复 - 提取 WK.UserKey() 方法,消除 4 处 userKey 手动拼接 - SessionManager.Get() 改用 RLock 优化读性能 - GetRecords 递归分页改为迭代,避免栈溢出 - prepareRequestClient 添加配置缓存,仅在 debug 设置变化时重建 - 修正 schedule.go 时区为 Asia/Shanghai + cron "0 6 * * *" - 修正 typo "以达到" → "已达到" - 删除未使用的 QAList struct - 修复 bufferHub.append 切片内存泄漏 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,16 @@ func NewWKHandler() *WKHandler {
|
||||
}
|
||||
}
|
||||
|
||||
// getWKFromContext 从 gin.Context 中提取 wk_instance,不存在时自动返回错误响应
|
||||
func getWKFromContext(ctx *gin.Context) (*ckwk.WK, bool) {
|
||||
val, ok := ctx.Get("wk_instance")
|
||||
if !ok {
|
||||
ctx.JSON(200, dto.Error(-1, "登录已过期"))
|
||||
return nil, false
|
||||
}
|
||||
return val.(*ckwk.WK), true
|
||||
}
|
||||
|
||||
func (h *WKHandler) Login(ctx *gin.Context) {
|
||||
var req dto.LoginReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
@@ -65,12 +75,10 @@ func (h *WKHandler) Login(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func (h *WKHandler) Online(ctx *gin.Context) {
|
||||
val, ok := ctx.Get("wk_instance")
|
||||
wk, ok := getWKFromContext(ctx)
|
||||
if !ok {
|
||||
ctx.JSON(http.StatusOK, dto.Error(-1, "登录已过期"))
|
||||
return
|
||||
}
|
||||
wk := val.(*ckwk.WK)
|
||||
|
||||
flag, err := wk.Online()
|
||||
if err != nil {
|
||||
@@ -96,12 +104,10 @@ func (h *WKHandler) Logout(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func (h *WKHandler) UserInfo(ctx *gin.Context) {
|
||||
val, ok := ctx.Get("wk_instance")
|
||||
wk, ok := getWKFromContext(ctx)
|
||||
if !ok {
|
||||
ctx.JSON(200, dto.Error(-1, "登录已过期"))
|
||||
return
|
||||
}
|
||||
wk := val.(*ckwk.WK)
|
||||
|
||||
userinfo, err := wk.UserInfoGet()
|
||||
if err != nil {
|
||||
@@ -121,12 +127,10 @@ func (h *WKHandler) Course(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
val, ok := ctx.Get("wk_instance")
|
||||
wk, ok := getWKFromContext(ctx)
|
||||
if !ok {
|
||||
ctx.JSON(200, dto.Error(-1, "登录已过期"))
|
||||
return
|
||||
}
|
||||
wk := val.(*ckwk.WK)
|
||||
|
||||
courses, err := wk.CourseGet(req.Status)
|
||||
if err != nil {
|
||||
@@ -140,12 +144,10 @@ func (h *WKHandler) Course(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func (h *WKHandler) Study(ctx *gin.Context) {
|
||||
val, ok := ctx.Get("wk_instance")
|
||||
wk, ok := getWKFromContext(ctx)
|
||||
if !ok {
|
||||
ctx.JSON(200, dto.Error(-1, "登录已过期"))
|
||||
return
|
||||
}
|
||||
wk := val.(*ckwk.WK)
|
||||
|
||||
var req dto.StudyReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
@@ -167,12 +169,10 @@ func (h *WKHandler) Study(ctx *gin.Context) {
|
||||
}
|
||||
|
||||
func (h *WKHandler) AllRecord(ctx *gin.Context) {
|
||||
val, ok := ctx.Get("wk_instance")
|
||||
wk, ok := getWKFromContext(ctx)
|
||||
if !ok {
|
||||
ctx.JSON(200, dto.Error(-1, "登录已过期"))
|
||||
return
|
||||
}
|
||||
wk := val.(*ckwk.WK)
|
||||
|
||||
var req dto.AllRecordReq
|
||||
if err := ctx.ShouldBindJSON(&req); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user