fix: 回退login_name字段, 直接用username作为登录名
This commit is contained in:
parent
d3d73f818b
commit
8ae1ded87f
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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")
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user