Beego 实现CRUD

models/user.go

package controllers

import (
	beego "github.com/beego/beego/v2/server/web"
	"myproject/models"
	"strconv"
)

type UserController struct {
	beego.Controller
}

// 获取用户信息
func (c *UserController) Read() {
	id := c.Ctx.Input.Param(":id")
	if id == "" {
		c.Data["json"] = map[string]interface{}{
			"code": 400,
			"msg":  "id不能为空",
			"data": nil,
		}
		c.ServeJSON()
		return
	}

	// 将字符串ID转换为整数
	idNum, err := strconv.Atoi(id)
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": 400,
			"msg":  "id格式不正确",
			"data": nil,
		}
		c.ServeJSON()
		return
	}

	// 需要先导入 models 包
	// import "myproject/models"
	user, err := models.UserModel.GetUserById(int32(idNum))
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": 500,
			"msg":  "获取用户信息失败",
			"data": nil,
		}
		c.ServeJSON()
		return
	}
	c.Data["json"] = map[string]interface{}{
		"code": 200,
		"msg":  "获取用户信息成功",
		"data": map[string]interface{}{
			"user": user,
		},
	}
	c.ServeJSON()
}

// 创建用户
func (c *UserController) Create() {
	// 定义一个结构体接收请求数据
	var userData struct {
		Nickname string `json:"nickname"`
		Avatar   string `json:"avatar"`
		Openid   string `json:"openid"`
		Unionid  string `json:"unionid"`
		Mobile   string `json:"mobile"`
	}
	
	// 解析JSON请求体
	err := c.ParseForm(&userData)
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": 400,
			"msg":  "解析请求数据失败",
			"data": nil,
		}
		c.ServeJSON()
		return
	}
	
	// 将结构体转换为map
	userMap := map[string]interface{}{
		"nickname": userData.Nickname,
		"avatar":   userData.Avatar,
		"openid":   userData.Openid,
		"unionid":  userData.Unionid,
		"mobile":   userData.Mobile,
	}
	
	err = models.UserModel.Insert(userMap)
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": 500,
			"msg":  "创建用户失败",
			"data": nil,
		}
		c.ServeJSON()
		return
	}
	c.Data["json"] = map[string]interface{}{
		"code": 200,
		"msg":  "创建用户成功",
		"data": nil,
	}
	c.ServeJSON()
}

controllers/user.go

package controllers

import (
	beego "github.com/beego/beego/v2/server/web"
	"myproject/models"
	"strconv"
)

type UserController struct {
	beego.Controller
}

// 获取用户信息
func (c *UserController) Read() {
	id := c.Ctx.Input.Param(":id")
	if id == "" {
		c.Data["json"] = map[string]interface{}{
			"code": 400,
			"msg":  "id不能为空",
			"data": nil,
		}
		c.ServeJSON()
		return
	}

	// 将字符串ID转换为整数
	idNum, err := strconv.Atoi(id)
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": 400,
			"msg":  "id格式不正确",
			"data": nil,
		}
		c.ServeJSON()
		return
	}

	// 需要先导入 models 包
	// import "myproject/models"
	user, err := models.UserModel.GetUserById(int32(idNum))
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": 500,
			"msg":  "获取用户信息失败",
			"data": nil,
		}
		c.ServeJSON()
		return
	}
	c.Data["json"] = map[string]interface{}{
		"code": 200,
		"msg":  "获取用户信息成功",
		"data": map[string]interface{}{
			"user": user,
		},
	}
	c.ServeJSON()
}

// 创建用户
func (c *UserController) Create() {
	// 定义一个结构体接收请求数据
	var userData struct {
		Nickname string `json:"nickname"`
		Avatar   string `json:"avatar"`
		Openid   string `json:"openid"`
		Unionid  string `json:"unionid"`
		Mobile   string `json:"mobile"`
	}
	
	// 解析JSON请求体
	err := c.ParseForm(&userData)
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": 400,
			"msg":  "解析请求数据失败",
			"data": nil,
		}
		c.ServeJSON()
		return
	}
	
	// 将结构体转换为map
	userMap := map[string]interface{}{
		"nickname": userData.Nickname,
		"avatar":   userData.Avatar,
		"openid":   userData.Openid,
		"unionid":  userData.Unionid,
		"mobile":   userData.Mobile,
	}
	
	err = models.UserModel.Insert(userMap)
	if err != nil {
		c.Data["json"] = map[string]interface{}{
			"code": 500,
			"msg":  "创建用户失败",
			"data": nil,
		}
		c.ServeJSON()
		return
	}
	c.Data["json"] = map[string]interface{}{
		"code": 200,
		"msg":  "创建用户成功",
		"data": nil,
	}
	c.ServeJSON()
}