diff --git a/internal/database/db.go b/internal/database/db.go index fcc4bb3..2b87f1b 100644 --- a/internal/database/db.go +++ b/internal/database/db.go @@ -70,7 +70,6 @@ func createTables() error { CREATE TABLE IF NOT EXISTS kfz_token ( id INTEGER PRIMARY KEY AUTOINCREMENT, - login_name TEXT NOT NULL DEFAULT '', username TEXT NOT NULL, password TEXT NOT NULL DEFAULT '', token TEXT NOT NULL, @@ -96,9 +95,8 @@ func createTables() error { return err } - // 兼容旧表:添加 password / login_name 列(已存在则忽略) + // 兼容旧表:添加 password 列(已存在则忽略) DB.Exec(`ALTER TABLE kfz_token ADD COLUMN password TEXT NOT NULL DEFAULT ''`) - DB.Exec(`ALTER TABLE kfz_token ADD COLUMN login_name TEXT NOT NULL DEFAULT ''`) return nil } diff --git a/internal/handler/kfz_handler.go b/internal/handler/kfz_handler.go index 48836a5..b6f4f39 100644 --- a/internal/handler/kfz_handler.go +++ b/internal/handler/kfz_handler.go @@ -61,10 +61,10 @@ func (h *KfzHandler) KfzLogin(w http.ResponseWriter, r *http.Request) { userInfo.Token = token // 保存账号密码和token到数据库 - if err := h.tokenRepo.UpsertByLoginName(username, userInfo.Nickname, password, token); err != nil { + if err := h.tokenRepo.UpsertByUsername(username, password, token); err != nil { log.Printf("[KfzLogin] 保存Token记录失败: %v, 来源IP: %s", err, clientIP) } else { - log.Printf("[KfzLogin] 账号密码已保存到数据库: login_name=%s, nickname=%s", username, userInfo.Nickname) + log.Printf("[KfzLogin] 账号密码已保存到数据库: username=%s", username) } log.Printf("[KfzLogin] 登录成功: username=%s, userId=%d, nickname=%s, 来源IP: %s", username, userInfo.UserID, userInfo.Nickname, clientIP) diff --git a/internal/handler/token_handler.go b/internal/handler/token_handler.go index 52bc3ff..08d4884 100644 --- a/internal/handler/token_handler.go +++ b/internal/handler/token_handler.go @@ -71,7 +71,7 @@ func (h *TokenHandler) BatchAddTokens(w http.ResponseWriter, r *http.Request) { continue } - id, err := h.tokenRepo.Insert("", input.Username, "", input.Token, true) + id, err := h.tokenRepo.Insert(input.Username, "", input.Token, true) if err != nil { log.Printf("[Token/BatchAdd] 第%d条插入失败: username=%s, 错误=%v", i+1, input.Username, err) failed = append(failed, input) @@ -196,7 +196,7 @@ func (h *TokenHandler) UpdateToken(w http.ResponseWriter, r *http.Request) { } log.Printf("[Token/Update] 更新: id=%d, username=%s, is_enable=%v, 来源IP: %s", id, username, isEnable, clientIP) - err = h.tokenRepo.Update(id, "", username, "", token, isEnable) + err = h.tokenRepo.Update(id, username, "", token, isEnable) if err != nil { log.Printf("[Token/Update] 更新失败: id=%d, 错误=%v, 来源IP: %s", id, err, clientIP) w.Header().Set("Content-Type", "application/json") diff --git a/internal/repository/token_repository.go b/internal/repository/token_repository.go index 5847720..24253b7 100644 --- a/internal/repository/token_repository.go +++ b/internal/repository/token_repository.go @@ -11,12 +11,11 @@ import ( // KfzToken Token记录 type KfzToken struct { - ID int64 - LoginName string - Username string - Password string - Token string - IsEnable bool + ID int64 + Username string + Password string + Token string + IsEnable bool } // TokenRepository Token仓储 @@ -67,11 +66,11 @@ func (r *TokenRepository) BatchInsert(tokens []string, username string) (int64, return id, nil } -// Insert 插入单条Token记录 -func (r *TokenRepository) Insert(loginName, username, password, token string, isEnable bool) (int64, error) { - query := `INSERT INTO kfz_token (login_name, username, password, token, is_enable) VALUES (?, ?, ?, ?, ?)` +// Insert 插入单条Token记录(含密码) +func (r *TokenRepository) Insert(username, password, token string, isEnable bool) (int64, error) { + query := `INSERT INTO kfz_token (username, password, token, is_enable) VALUES (?, ?, ?, ?)` - result, err := database.DB.Exec(query, loginName, username, password, token, isEnable) + result, err := database.DB.Exec(query, username, password, token, isEnable) if err != nil { return 0, fmt.Errorf("插入失败: %w", err) } @@ -84,35 +83,35 @@ func (r *TokenRepository) Insert(loginName, username, password, token string, is return id, nil } -// UpsertByLoginName 根据登录名插入或更新记录 -func (r *TokenRepository) UpsertByLoginName(loginName, username, password, token string) error { +// UpsertByUsername 根据用户名插入或更新记录(含密码和token) +func (r *TokenRepository) UpsertByUsername(username, password, token string) error { var count int - err := database.DB.QueryRow("SELECT COUNT(*) FROM kfz_token WHERE login_name = ?", loginName).Scan(&count) + err := database.DB.QueryRow("SELECT COUNT(*) FROM kfz_token WHERE username = ?", username).Scan(&count) if err != nil { return fmt.Errorf("查询记录失败: %w", err) } if count == 0 { _, err = database.DB.Exec( - `INSERT INTO kfz_token (login_name, username, password, token, is_enable) VALUES (?, ?, ?, ?, 1)`, - loginName, username, password, token, + `INSERT INTO kfz_token (username, password, token, is_enable) VALUES (?, ?, ?, 1)`, + username, password, token, ) } else { _, err = database.DB.Exec( - `UPDATE kfz_token SET username = ?, password = ?, token = ?, is_enable = 1 WHERE login_name = ?`, - username, password, token, loginName, + `UPDATE kfz_token SET password = ?, token = ?, is_enable = 1 WHERE username = ?`, + password, token, username, ) } if err != nil { return fmt.Errorf("保存Token记录失败: %w", err) } - log.Printf("[Repo/Token] 保存Token成功: login_name=%s, username=%s", loginName, username) + log.Printf("[Repo/Token] 保存Token成功: username=%s", username) return nil } // GetAll 查询所有记录 func (r *TokenRepository) GetAll() ([]*KfzToken, error) { - query := `SELECT id, login_name, username, token, is_enable FROM kfz_token ORDER BY id ASC` + query := `SELECT id, username, token, is_enable FROM kfz_token ORDER BY id ASC` rows, err := database.DB.Query(query) if err != nil { @@ -123,7 +122,7 @@ func (r *TokenRepository) GetAll() ([]*KfzToken, error) { var records []*KfzToken for rows.Next() { var rec KfzToken - err := rows.Scan(&rec.ID, &rec.LoginName, &rec.Username, &rec.Token, &rec.IsEnable) + err := rows.Scan(&rec.ID, &rec.Username, &rec.Token, &rec.IsEnable) if err != nil { return nil, fmt.Errorf("扫描失败: %w", err) } @@ -135,12 +134,12 @@ func (r *TokenRepository) GetAll() ([]*KfzToken, error) { // GetByID 根据ID查询单条记录 func (r *TokenRepository) GetByID(id int64) (*KfzToken, error) { - query := `SELECT id, login_name, username, password, token, is_enable FROM kfz_token WHERE id = ?` + query := `SELECT id, username, password, token, is_enable FROM kfz_token WHERE id = ?` row := database.DB.QueryRow(query, id) var rec KfzToken - err := row.Scan(&rec.ID, &rec.LoginName, &rec.Username, &rec.Password, &rec.Token, &rec.IsEnable) + err := row.Scan(&rec.ID, &rec.Username, &rec.Password, &rec.Token, &rec.IsEnable) if err != nil { if err == sql.ErrNoRows { return nil, fmt.Errorf("记录不存在") @@ -151,14 +150,14 @@ func (r *TokenRepository) GetByID(id int64) (*KfzToken, error) { return &rec, nil } -// GetByLoginName 根据登录名查询记录 -func (r *TokenRepository) GetByLoginName(loginName string) (*KfzToken, error) { - query := `SELECT id, login_name, username, password, token, is_enable FROM kfz_token WHERE login_name = ?` +// GetByUsername 根据用户名查询记录(含密码) +func (r *TokenRepository) GetByUsername(username string) (*KfzToken, error) { + query := `SELECT id, username, password, token, is_enable FROM kfz_token WHERE username = ?` - row := database.DB.QueryRow(query, loginName) + row := database.DB.QueryRow(query, username) var rec KfzToken - err := row.Scan(&rec.ID, &rec.LoginName, &rec.Username, &rec.Password, &rec.Token, &rec.IsEnable) + err := row.Scan(&rec.ID, &rec.Username, &rec.Password, &rec.Token, &rec.IsEnable) if err != nil { if err == sql.ErrNoRows { return nil, nil @@ -170,10 +169,10 @@ func (r *TokenRepository) GetByLoginName(loginName string) (*KfzToken, error) { } // Update 更新记录 -func (r *TokenRepository) Update(id int64, loginName, username, password, token string, isEnable bool) error { - query := `UPDATE kfz_token SET login_name = ?, username = ?, password = ?, token = ?, is_enable = ? WHERE id = ?` +func (r *TokenRepository) Update(id int64, username, password, token string, isEnable bool) error { + query := `UPDATE kfz_token SET username = ?, password = ?, token = ?, is_enable = ? WHERE id = ?` - result, err := database.DB.Exec(query, loginName, username, password, token, isEnable, id) + result, err := database.DB.Exec(query, username, password, token, isEnable, id) if err != nil { return fmt.Errorf("更新失败: %w", err) } @@ -223,7 +222,7 @@ func (r *TokenRepository) Delete(id int64) error { // GetEnabledTokens 获取所有启用状态的Token func (r *TokenRepository) GetEnabledTokens() ([]*KfzToken, error) { - query := `SELECT id, login_name, username, password, token, is_enable FROM kfz_token WHERE is_enable = 1 ORDER BY id ASC` + query := `SELECT id, username, password, token, is_enable FROM kfz_token WHERE is_enable = 1 ORDER BY id ASC` rows, err := database.DB.Query(query) if err != nil { @@ -234,7 +233,7 @@ func (r *TokenRepository) GetEnabledTokens() ([]*KfzToken, error) { var records []*KfzToken for rows.Next() { var rec KfzToken - err := rows.Scan(&rec.ID, &rec.LoginName, &rec.Username, &rec.Password, &rec.Token, &rec.IsEnable) + err := rows.Scan(&rec.ID, &rec.Username, &rec.Password, &rec.Token, &rec.IsEnable) if err != nil { return nil, fmt.Errorf("扫描失败: %w", err) }