80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
package model
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
"main/db"
|
|
)
|
|
|
|
// User 结构体表示用户
|
|
type User struct {
|
|
AccountId string `db:"account_id"`
|
|
Username string `db:"name"`
|
|
Level int32 `db:"level"`
|
|
}
|
|
|
|
// CreateUser 创建新用户
|
|
func CreateUser(user *User) (int64, error) {
|
|
query := "INSERT INTO users (username, email) VALUES (?, ?)"
|
|
result, err := db.GetDB().Exec(query, user.Username, user.Level)
|
|
if err != nil {
|
|
log.Printf("Error creating user: %v", err)
|
|
return 0, err
|
|
}
|
|
userID, err := result.LastInsertId()
|
|
if err != nil {
|
|
log.Printf("Error getting last insert ID: %v", err)
|
|
return 0, err
|
|
}
|
|
return userID, nil
|
|
}
|
|
|
|
// GetUserByID 根据用户ID获取用户信息
|
|
func GetUserByID(userID int64) (*User, error) {
|
|
query := "SELECT id, username, email FROM users WHERE id = ?"
|
|
var user User
|
|
err := db.GetDB().Get(&user, query, userID)
|
|
if err != nil {
|
|
if err == sql.ErrNoRows {
|
|
return nil, nil // 用户不存在
|
|
}
|
|
log.Printf("Error getting user by ID: %v", err)
|
|
return nil, err
|
|
}
|
|
return &user, nil
|
|
}
|
|
|
|
// UpdateUser 更新用户信息
|
|
func UpdateUser(user *User) error {
|
|
query := "UPDATE users SET username = ?, level = ? WHERE id = ?"
|
|
_, err := db.GetDB().Exec(query, user.Username, user.Level, user.AccountId)
|
|
if err != nil {
|
|
log.Printf("Error updating user: %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DeleteUser 删除用户
|
|
func DeleteUser(userID int64) error {
|
|
query := "DELETE FROM users WHERE id = ?"
|
|
_, err := db.GetDB().Exec(query, userID)
|
|
if err != nil {
|
|
log.Printf("Error deleting user: %v", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// ListUsers 获取所有用户列表
|
|
func ListUsers() ([]User, error) {
|
|
query := "SELECT account_id, name, level FROM t_user"
|
|
var users []User
|
|
err := db.GetDB().Select(&users, query)
|
|
if err != nil {
|
|
log.Printf("Error listing users: %v", err)
|
|
return nil, err
|
|
}
|
|
return users, nil
|
|
}
|