155 lines
3.1 KiB
Go
155 lines
3.1 KiB
Go
package handler
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"log"
|
|
"net/http"
|
|
"rear/internal/model"
|
|
"rear/internal/repositories"
|
|
)
|
|
|
|
// 全局变量
|
|
var (
|
|
Users []model.User // 模拟数据存储
|
|
userNextID = 1
|
|
)
|
|
|
|
// DeleteUser 删除用户
|
|
func DeleteUser(c *gin.Context) {
|
|
id := c.Param("id")
|
|
|
|
for i, user := range Users {
|
|
if fmt.Sprintf("%d", user.ID) == id {
|
|
Users = append(Users[:i], Users[i+1:]...)
|
|
c.JSON(http.StatusOK, model.Response{
|
|
Code: http.StatusOK,
|
|
Message: "User deleted successfully",
|
|
})
|
|
return
|
|
}
|
|
}
|
|
|
|
c.JSON(http.StatusNotFound, model.Response{
|
|
Code: http.StatusNotFound,
|
|
Message: "User not found",
|
|
})
|
|
}
|
|
|
|
// GetUserByID 根据ID获取用户
|
|
func GetUserByID(c *gin.Context) {
|
|
id := c.Param("id")
|
|
|
|
for _, user := range Users {
|
|
if fmt.Sprintf("%d", user.ID) == id {
|
|
c.JSON(http.StatusOK, model.Response{
|
|
Code: http.StatusOK,
|
|
Message: "Success",
|
|
Data: user,
|
|
})
|
|
return
|
|
}
|
|
}
|
|
|
|
c.JSON(http.StatusNotFound, model.Response{
|
|
Code: http.StatusNotFound,
|
|
Message: "User not found",
|
|
})
|
|
}
|
|
|
|
// InitSampleData 初始化示例数据
|
|
func InitSampleData() {
|
|
Users = []model.User{
|
|
{Username: "John Doe", Email: "john@example.com"},
|
|
{Username: "Jane Smith", Email: "jane@example.com"},
|
|
}
|
|
userNextID = 3
|
|
}
|
|
|
|
// UpdateUser 更新用户
|
|
func UpdateUser(c *gin.Context) {
|
|
id := c.Param("id")
|
|
|
|
for i, user := range Users {
|
|
if fmt.Sprintf("%d", user.ID) == id {
|
|
var updatedUser model.User
|
|
if err := c.ShouldBindJSON(&updatedUser); err != nil {
|
|
c.JSON(http.StatusBadRequest, model.Response{
|
|
Code: http.StatusBadRequest,
|
|
Message: "Invalid request body",
|
|
})
|
|
return
|
|
}
|
|
|
|
updatedUser.ID = user.ID
|
|
Users[i] = updatedUser
|
|
|
|
c.JSON(http.StatusOK, model.Response{
|
|
Code: http.StatusOK,
|
|
Message: "User updated successfully",
|
|
Data: updatedUser,
|
|
})
|
|
return
|
|
}
|
|
}
|
|
|
|
c.JSON(http.StatusNotFound, model.Response{
|
|
Code: http.StatusNotFound,
|
|
Message: "User not found",
|
|
})
|
|
}
|
|
|
|
// GetUsers 获取所有用户
|
|
func GetUsers(c *gin.Context) {
|
|
// 使用示例
|
|
userService := repositories.NewUserService()
|
|
|
|
if users, err := userService.GetAllUsers(); err != nil {
|
|
log.Printf("Failed to get all users: %v", err)
|
|
} else {
|
|
log.Printf("Total users: %d", len(users))
|
|
c.JSON(http.StatusOK, model.Response{
|
|
Code: http.StatusOK,
|
|
Message: "Success",
|
|
Data: users,
|
|
})
|
|
|
|
}
|
|
|
|
//c.JSON(http.StatusOK, model.Response{
|
|
// Code: http.StatusOK,
|
|
// Message: "Success",
|
|
// Data: Users,
|
|
//})
|
|
}
|
|
|
|
// CreateUser 创建用户
|
|
func CreateUser(c *gin.Context) {
|
|
var user model.User
|
|
if err := c.ShouldBindJSON(&user); err != nil {
|
|
c.JSON(http.StatusBadRequest, model.Response{
|
|
Code: http.StatusBadRequest,
|
|
Message: "Invalid request body",
|
|
})
|
|
return
|
|
}
|
|
|
|
// 简单验证
|
|
if user.Username == "" || user.Email == "" {
|
|
c.JSON(http.StatusBadRequest, model.Response{
|
|
Code: http.StatusBadRequest,
|
|
Message: "Name and email are required",
|
|
})
|
|
return
|
|
}
|
|
|
|
userNextID++
|
|
Users = append(Users, user)
|
|
|
|
c.JSON(http.StatusCreated, model.Response{
|
|
Code: http.StatusCreated,
|
|
Message: "User created successfully",
|
|
Data: user,
|
|
})
|
|
}
|