142 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package controllers
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"server/models"
 | |
| 
 | |
| 	beego "github.com/beego/beego/v2/server/web"
 | |
| )
 | |
| 
 | |
| // MenuController 处理菜单相关请求
 | |
| type MenuController struct {
 | |
| 	beego.Controller
 | |
| }
 | |
| 
 | |
| // GetAllMenus 获取所有菜单
 | |
| func (c *MenuController) GetAllMenus() {
 | |
| 	menus, err := models.GetAllMenus()
 | |
| 
 | |
| 	if err != nil {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": false,
 | |
| 			"message": "获取菜单失败",
 | |
| 			"error":   err.Error(),
 | |
| 		}
 | |
| 	} else {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": true,
 | |
| 			"message": "获取菜单成功",
 | |
| 			"data":    menus,
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	c.ServeJSON()
 | |
| }
 | |
| 
 | |
| // CreateMenu 创建新菜单
 | |
| func (c *MenuController) CreateMenu() {
 | |
| 	var menu models.Menu
 | |
| 
 | |
| 	// 解析请求体
 | |
| 	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &menu); err != nil {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": false,
 | |
| 			"message": "请求参数错误",
 | |
| 			"error":   err.Error(),
 | |
| 		}
 | |
| 		c.ServeJSON()
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	// 添加菜单
 | |
| 	if _, err := models.AddMenu(&menu); err != nil {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": false,
 | |
| 			"message": "创建菜单失败",
 | |
| 			"error":   err.Error(),
 | |
| 		}
 | |
| 	} else {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": true,
 | |
| 			"message": "创建菜单成功",
 | |
| 			"data":    menu,
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	c.ServeJSON()
 | |
| }
 | |
| 
 | |
| // UpdateMenu 更新菜单
 | |
| func (c *MenuController) UpdateMenu() {
 | |
| 	id, err := c.GetInt(":id")
 | |
| 	if err != nil {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": false,
 | |
| 			"message": "参数错误",
 | |
| 		}
 | |
| 		c.ServeJSON()
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	// 直接使用 Beego 的 BindJSON 方法
 | |
| 	var menu models.Menu
 | |
| 	if err := c.BindJSON(&menu); err != nil {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": false,
 | |
| 			"message": "请求参数错误",
 | |
| 			"error":   err.Error(),
 | |
| 		}
 | |
| 		c.ServeJSON()
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	// 设置 ID
 | |
| 	menu.Id = id
 | |
| 
 | |
| 	// 更新菜单
 | |
| 	if err := models.UpdateMenu(&menu); err != nil {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": false,
 | |
| 			"message": "更新菜单失败",
 | |
| 			"error":   err.Error(),
 | |
| 		}
 | |
| 	} else {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": true,
 | |
| 			"message": "更新菜单成功",
 | |
| 			"data":    menu,
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	c.ServeJSON()
 | |
| }
 | |
| 
 | |
| // DeleteMenu 删除菜单
 | |
| func (c *MenuController) DeleteMenu() {
 | |
| 	id, err := c.GetInt(":id")
 | |
| 	if err != nil {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": false,
 | |
| 			"message": "参数错误",
 | |
| 		}
 | |
| 		c.ServeJSON()
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	// 删除菜单
 | |
| 	if err := models.DeleteMenu(id); err != nil {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": false,
 | |
| 			"message": "删除菜单失败",
 | |
| 			"error":   err.Error(),
 | |
| 		}
 | |
| 	} else {
 | |
| 		c.Data["json"] = map[string]interface{}{
 | |
| 			"success": true,
 | |
| 			"message": "删除菜单成功",
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	c.ServeJSON()
 | |
| }
 |