sk_gm_server/app/api/role/roleAction.go

170 lines
3.4 KiB
Go

package role
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/os/glog"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/util/gconv"
"gmanager/app/service/role"
"gmanager/library/base"
)
type Action struct {
base.BaseRouter
}
// path: /index
func (action *Action) Index(r *ghttp.Request) {
tplFile := "pages/system/role_index.html"
err := r.Response.WriteTpl(tplFile, g.Map{
"now": gtime.Datetime(),
})
if err != nil {
glog.Error(err)
}
}
// path: /get/{id}
func (action *Action) Get(r *ghttp.Request) {
id := r.GetInt64("id")
model, err := role.GetById(id)
if err != nil {
base.Fail(r, err.Error())
}
base.Succ(r, model)
}
// path: /delete/{id}
func (action *Action) Delete(r *ghttp.Request) {
id := r.GetInt64("id")
_, err := role.Delete(id, base.GetUser(r).Id)
if err != nil {
base.Fail(r, err.Error())
}
base.Succ(r, "")
}
// path: /save
func (action *Action) Save(r *ghttp.Request) {
request := new(role.Request)
err := gconv.Struct(r.GetMap(), request)
if err != nil {
glog.Error("save struct error", err)
base.Error(r, "save error")
}
menus := r.GetString("menus")
request.UserId = base.GetUser(r).Id
_, err = role.Save(request)
if err != nil {
base.Fail(r, "保存失败")
}
// 保存菜单信息
role.SaveRoleMenu(request.Id, menus)
base.Succ(r, "")
}
// path: /list
func (action *Action) List(r *ghttp.Request) {
form := base.NewForm(r.GetMap())
list, err := role.List(&form)
if err != nil {
glog.Error("page error", err)
base.Error(r, err.Error())
}
base.Succ(r, list)
}
// path: /page
func (action *Action) Page(r *ghttp.Request) {
form := base.NewForm(r.GetMap())
page, err := role.Page(&form)
if err != nil {
glog.Error("page error", err)
base.Error(r, err.Error())
}
base.Succ(r,
g.Map{
"page": form.Page,
"rows": page,
"total": form.TotalPage,
"records": form.TotalSize,
})
}
// path: /jqgrid
func (action *Action) Jqgrid(r *ghttp.Request) {
form := base.NewForm(r.GetMap())
page, err := role.Page(&form)
if err != nil {
glog.Error("jqgrid error", err)
base.Error(r, err.Error())
}
r.Response.WriteJson(g.Map{
"page": form.Page,
"rows": page,
"total": form.TotalPage,
"records": form.TotalSize,
})
}
// 角色绑定菜单信息
func (action *Action) Info(r *ghttp.Request) {
roleId := r.GetInt("roleId")
if roleId == 0 {
base.Fail(r, "参数错误")
}
form := base.NewForm(r.GetMap())
form.SetParam("roleId", gconv.String(roleId))
// 选择的列表
roleMenuList, err := role.ListRoleMenu(&form)
if err != nil {
glog.Error("info error", err)
base.Error(r, err.Error())
}
menuSlice := g.SliceStr{}
for _, roleMenu := range roleMenuList {
// 如果是父级菜单不加入集合。防止在未全选子菜单的时候,选择父级菜单导致前端页面子集菜单全选的情况
count, _ := g.DB("default").GetCount("SELECT * FROM sys_menu WHERE parent_id = ?", roleMenu.MenuId)
if count == 0 {
menuSlice = append(menuSlice, gconv.String(roleMenu.MenuId))
}
}
base.Succ(r, g.Map{
"roleId": roleId,
"menus": menuSlice,
})
}
// 角色绑定菜单
func (action *Action) MenuSave(r *ghttp.Request) {
roleId := r.GetInt("roleId")
menuIds := r.GetString("menuIds")
if roleId == 0 || menuIds == "" {
base.Fail(r, "参数错误")
}
err := role.SaveRoleMenu(roleId, menuIds)
if err != nil {
glog.Error("MenuSave error", err)
base.Error(r, err.Error())
}
base.Succ(r, "")
}