|
|
package scripts
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
"mygo/dbhelper"
|
|
|
"mygo/libs"
|
|
|
"mygo/model"
|
|
|
"mygo/response"
|
|
|
"mygo/say"
|
|
|
"mygo/validator"
|
|
|
|
|
|
"github.com/labstack/echo/v4"
|
|
|
"gorm.io/gorm"
|
|
|
)
|
|
|
|
|
|
// 获取所有菜单
|
|
|
func GetRouteList(c echo.Context) error {
|
|
|
id := c.QueryParam("id")
|
|
|
data := response.RoutesResponse{}
|
|
|
|
|
|
if id == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
routes, err := model.GetRouteList(db)
|
|
|
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
data.Routes = routes
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func CreateRoute(c echo.Context) error {
|
|
|
|
|
|
data := response.NoneResponse{}
|
|
|
body := &validator.CreateRouteBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || body.Path == "" || body.Name == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
if body.ParentId != "" {
|
|
|
r, err := model.GetRouteById(db, body.ParentId)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
if r.ID == "" {
|
|
|
return say.Success(c, 10018, data)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
route := model.Route{
|
|
|
ID: libs.GenId(),
|
|
|
ParentId: body.ParentId,
|
|
|
Name: body.Name,
|
|
|
Icon: body.Icon,
|
|
|
Sort: body.Sort,
|
|
|
Component: body.Component,
|
|
|
Redirect: body.Redirect,
|
|
|
Perms: body.Perms,
|
|
|
PermsType: body.PermsType,
|
|
|
Title: body.Title,
|
|
|
Path: body.Path,
|
|
|
MenuType: body.MenuType,
|
|
|
BtnStatus: body.BtnStatus,
|
|
|
HideInBread: body.HideInBread,
|
|
|
HideInMenu: body.HideInMenu,
|
|
|
NotCache: body.NotCache,
|
|
|
IsMmin: body.IsMmin,
|
|
|
}
|
|
|
|
|
|
if err := db.Create(&route).Error; err != nil {
|
|
|
fmt.Println("插入失败 err=", err)
|
|
|
return say.Success(c, 10017, data)
|
|
|
}
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func UpdateRoute(c echo.Context) error {
|
|
|
data := response.NoneResponse{}
|
|
|
body := &validator.UpdateRouteBody{}
|
|
|
err := c.Bind(body)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
id := c.QueryParam("id")
|
|
|
if id == "" || body.ID == "" || body.Path == "" || body.Name == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
if body.ParentId != "" {
|
|
|
r, err := model.GetRouteById(db, body.ParentId)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
if r.ID == "" {
|
|
|
return say.Success(c, 10018, data)
|
|
|
}
|
|
|
|
|
|
if body.ID == r.ID {
|
|
|
return say.Success(c, 10024, data)
|
|
|
}
|
|
|
}
|
|
|
update := map[string]interface{}{
|
|
|
"parent_id": body.ParentId,
|
|
|
"name": body.Name,
|
|
|
"icon": body.Icon,
|
|
|
"sort": body.Sort,
|
|
|
"component": body.Component,
|
|
|
"redirect": body.Redirect,
|
|
|
"perms": body.Perms,
|
|
|
"perms_type": body.PermsType,
|
|
|
"title": body.Title,
|
|
|
"path": body.Path,
|
|
|
"menu_type": body.MenuType,
|
|
|
"btn_status": body.BtnStatus,
|
|
|
"hide_inmenu": body.HideInMenu,
|
|
|
"hide_inbread": body.HideInBread,
|
|
|
"not_cache": body.NotCache,
|
|
|
"is_mmin": body.IsMmin,
|
|
|
}
|
|
|
if err := db.Model(&model.Route{}).Where("id = ?", body.ID).Debug().Updates(update).Error; err != nil {
|
|
|
fmt.Println("编辑失败 err=", err)
|
|
|
return say.Success(c, 10019, data)
|
|
|
}
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|
|
|
|
|
|
func DelRoute(c echo.Context) error {
|
|
|
id := c.QueryParam("id")
|
|
|
route_id := c.QueryParam("route_id")
|
|
|
data := response.NoneResponse{}
|
|
|
if id == "" || route_id == "" {
|
|
|
return say.Success(c, 10001, data)
|
|
|
}
|
|
|
|
|
|
db := dbhelper.GetMySqlDB()
|
|
|
|
|
|
r, err := model.GetRouteById(db, route_id)
|
|
|
if err != nil {
|
|
|
return say.Success(c, 10000, data)
|
|
|
}
|
|
|
|
|
|
if r.ID == "" {
|
|
|
return say.Success(c, 10018, data)
|
|
|
}
|
|
|
|
|
|
txerr := db.Transaction(func(tx *gorm.DB) error {
|
|
|
|
|
|
// 在事务中执行一些 db 操作(从这里开始,您应该使用 'tx' 而不是 'db')
|
|
|
|
|
|
route := model.Route{}
|
|
|
if err := tx.Where("id = ?", route_id).Delete(&route).Error; err != nil {
|
|
|
// 返回任何错误都会回滚事务
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
//TODO删除和role角色绑定的权限
|
|
|
r := model.RoleRoute{}
|
|
|
if err := tx.Where("route_id = ?", route_id).Delete(&r).Error; err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
// 返回 nil 提交事务
|
|
|
return nil
|
|
|
})
|
|
|
|
|
|
if txerr != nil {
|
|
|
return say.Success(c, 10019, data)
|
|
|
}
|
|
|
|
|
|
return say.Success(c, 0, data)
|
|
|
}
|