fix: 回退login_name字段, 直接用username作为登录名

This commit is contained in:
ShenQiLun 2026-06-30 11:43:14 +08:00
parent d3d73f818b
commit 8ae1ded87f
4 changed files with 36 additions and 39 deletions

View File

@ -70,7 +70,6 @@ func createTables() error {
CREATE TABLE IF NOT EXISTS kfz_token ( CREATE TABLE IF NOT EXISTS kfz_token (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
login_name TEXT NOT NULL DEFAULT '',
username TEXT NOT NULL, username TEXT NOT NULL,
password TEXT NOT NULL DEFAULT '', password TEXT NOT NULL DEFAULT '',
token TEXT NOT NULL, token TEXT NOT NULL,
@ -96,9 +95,8 @@ func createTables() error {
return err 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 password TEXT NOT NULL DEFAULT ''`)
DB.Exec(`ALTER TABLE kfz_token ADD COLUMN login_name TEXT NOT NULL DEFAULT ''`)
return nil return nil
} }

View File

@ -61,10 +61,10 @@ func (h *KfzHandler) KfzLogin(w http.ResponseWriter, r *http.Request) {
userInfo.Token = token userInfo.Token = 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) log.Printf("[KfzLogin] 保存Token记录失败: %v, 来源IP: %s", err, clientIP)
} else { } 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) log.Printf("[KfzLogin] 登录成功: username=%s, userId=%d, nickname=%s, 来源IP: %s", username, userInfo.UserID, userInfo.Nickname, clientIP)

View File

@ -71,7 +71,7 @@ func (h *TokenHandler) BatchAddTokens(w http.ResponseWriter, r *http.Request) {
continue continue
} }
id, err := h.tokenRepo.Insert("", input.Username, "", input.Token, true) id, err := h.tokenRepo.Insert(input.Username, "", input.Token, true)
if err != nil { if err != nil {
log.Printf("[Token/BatchAdd] 第%d条插入失败: username=%s, 错误=%v", i+1, input.Username, err) log.Printf("[Token/BatchAdd] 第%d条插入失败: username=%s, 错误=%v", i+1, input.Username, err)
failed = append(failed, input) 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) 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 { if err != nil {
log.Printf("[Token/Update] 更新失败: id=%d, 错误=%v, 来源IP: %s", id, err, clientIP) log.Printf("[Token/Update] 更新失败: id=%d, 错误=%v, 来源IP: %s", id, err, clientIP)
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")

View File

@ -12,7 +12,6 @@ import (
// KfzToken Token记录 // KfzToken Token记录
type KfzToken struct { type KfzToken struct {
ID int64 ID int64
LoginName string
Username string Username string
Password string Password string
Token string Token string
@ -67,11 +66,11 @@ func (r *TokenRepository) BatchInsert(tokens []string, username string) (int64,
return id, nil return id, nil
} }
// Insert 插入单条Token记录 // Insert 插入单条Token记录(含密码)
func (r *TokenRepository) Insert(loginName, username, password, token string, isEnable bool) (int64, error) { func (r *TokenRepository) Insert(username, password, token string, isEnable bool) (int64, error) {
query := `INSERT INTO kfz_token (login_name, username, password, token, is_enable) VALUES (?, ?, ?, ?, ?)` 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 { if err != nil {
return 0, fmt.Errorf("插入失败: %w", err) return 0, fmt.Errorf("插入失败: %w", err)
} }
@ -84,35 +83,35 @@ func (r *TokenRepository) Insert(loginName, username, password, token string, is
return id, nil return id, nil
} }
// UpsertByLoginName 根据登录名插入或更新记录 // UpsertByUsername 根据用户名插入或更新记录含密码和token
func (r *TokenRepository) UpsertByLoginName(loginName, username, password, token string) error { func (r *TokenRepository) UpsertByUsername(username, password, token string) error {
var count int 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 { if err != nil {
return fmt.Errorf("查询记录失败: %w", err) return fmt.Errorf("查询记录失败: %w", err)
} }
if count == 0 { if count == 0 {
_, err = database.DB.Exec( _, err = database.DB.Exec(
`INSERT INTO kfz_token (login_name, username, password, token, is_enable) VALUES (?, ?, ?, ?, 1)`, `INSERT INTO kfz_token (username, password, token, is_enable) VALUES (?, ?, ?, 1)`,
loginName, username, password, token, username, password, token,
) )
} else { } else {
_, err = database.DB.Exec( _, err = database.DB.Exec(
`UPDATE kfz_token SET username = ?, password = ?, token = ?, is_enable = 1 WHERE login_name = ?`, `UPDATE kfz_token SET password = ?, token = ?, is_enable = 1 WHERE username = ?`,
username, password, token, loginName, password, token, username,
) )
} }
if err != nil { if err != nil {
return fmt.Errorf("保存Token记录失败: %w", err) 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 return nil
} }
// GetAll 查询所有记录 // GetAll 查询所有记录
func (r *TokenRepository) GetAll() ([]*KfzToken, error) { 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) rows, err := database.DB.Query(query)
if err != nil { if err != nil {
@ -123,7 +122,7 @@ func (r *TokenRepository) GetAll() ([]*KfzToken, error) {
var records []*KfzToken var records []*KfzToken
for rows.Next() { for rows.Next() {
var rec KfzToken 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 { if err != nil {
return nil, fmt.Errorf("扫描失败: %w", err) return nil, fmt.Errorf("扫描失败: %w", err)
} }
@ -135,12 +134,12 @@ func (r *TokenRepository) GetAll() ([]*KfzToken, error) {
// GetByID 根据ID查询单条记录 // GetByID 根据ID查询单条记录
func (r *TokenRepository) GetByID(id int64) (*KfzToken, error) { 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) row := database.DB.QueryRow(query, id)
var rec KfzToken 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 != nil {
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
return nil, fmt.Errorf("记录不存在") return nil, fmt.Errorf("记录不存在")
@ -151,14 +150,14 @@ func (r *TokenRepository) GetByID(id int64) (*KfzToken, error) {
return &rec, nil return &rec, nil
} }
// GetByLoginName 根据登录名查询记录 // GetByUsername 根据用户名查询记录(含密码)
func (r *TokenRepository) GetByLoginName(loginName string) (*KfzToken, error) { func (r *TokenRepository) GetByUsername(username string) (*KfzToken, error) {
query := `SELECT id, login_name, username, password, token, is_enable FROM kfz_token WHERE login_name = ?` 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 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 != nil {
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
return nil, nil return nil, nil
@ -170,10 +169,10 @@ func (r *TokenRepository) GetByLoginName(loginName string) (*KfzToken, error) {
} }
// Update 更新记录 // Update 更新记录
func (r *TokenRepository) Update(id int64, loginName, username, password, token string, isEnable bool) error { func (r *TokenRepository) Update(id int64, username, password, token string, isEnable bool) error {
query := `UPDATE kfz_token SET login_name = ?, username = ?, password = ?, token = ?, is_enable = ? WHERE id = ?` 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 { if err != nil {
return fmt.Errorf("更新失败: %w", err) return fmt.Errorf("更新失败: %w", err)
} }
@ -223,7 +222,7 @@ func (r *TokenRepository) Delete(id int64) error {
// GetEnabledTokens 获取所有启用状态的Token // GetEnabledTokens 获取所有启用状态的Token
func (r *TokenRepository) GetEnabledTokens() ([]*KfzToken, error) { 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) rows, err := database.DB.Query(query)
if err != nil { if err != nil {
@ -234,7 +233,7 @@ func (r *TokenRepository) GetEnabledTokens() ([]*KfzToken, error) {
var records []*KfzToken var records []*KfzToken
for rows.Next() { for rows.Next() {
var rec KfzToken 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 { if err != nil {
return nil, fmt.Errorf("扫描失败: %w", err) return nil, fmt.Errorf("扫描失败: %w", err)
} }