118 lines
3.9 KiB
Go
118 lines
3.9 KiB
Go
|
// ==========================================================================
|
|||
|
// GFast自动生成controller操作代码。
|
|||
|
// 生成日期:2024-05-28 15:11:36
|
|||
|
// 生成路径: internal/app/system/controller/app_roles.go
|
|||
|
// 生成人:gfast
|
|||
|
// desc:app角色
|
|||
|
// company:云南奇讯科技有限公司
|
|||
|
// ==========================================================================
|
|||
|
|
|||
|
package controller
|
|||
|
|
|||
|
import (
|
|||
|
"context"
|
|||
|
"database/sql"
|
|||
|
"errors"
|
|||
|
|
|||
|
"github.com/gogf/gf/v2/frame/g"
|
|||
|
"github.com/tiger1103/gfast/v3/api/v1/system"
|
|||
|
"github.com/tiger1103/gfast/v3/internal/app/system/dao"
|
|||
|
"github.com/tiger1103/gfast/v3/internal/app/system/model/do"
|
|||
|
"github.com/tiger1103/gfast/v3/internal/app/system/model/entity"
|
|||
|
"github.com/tiger1103/gfast/v3/internal/app/system/service"
|
|||
|
"github.com/tiger1103/gfast/v3/library/liberr"
|
|||
|
)
|
|||
|
|
|||
|
type appRolesController struct {
|
|||
|
BaseController
|
|||
|
}
|
|||
|
|
|||
|
var AppRoles = new(appRolesController)
|
|||
|
|
|||
|
// List 列表
|
|||
|
func (c *appRolesController) List(ctx context.Context, req *system.AppRolesSearchReq) (res *system.AppRolesSearchRes, err error) {
|
|||
|
res, err = service.AppRoles().List(ctx, req)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// Get 获取app角色
|
|||
|
func (c *appRolesController) Get(ctx context.Context, req *system.AppRolesGetReq) (res *system.AppRolesGetRes, err error) {
|
|||
|
res = new(system.AppRolesGetRes)
|
|||
|
res.AppRolesInfoRes, err = service.AppRoles().GetByRoleId(ctx, req.RoleId)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// Add 添加app角色
|
|||
|
func (c *appRolesController) Add(ctx context.Context, req *system.AppRolesAddReq) (res *system.AppRolesAddRes, err error) {
|
|||
|
err = service.AppRoles().Add(ctx, req)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// Edit 修改app角色
|
|||
|
func (c *appRolesController) Edit(ctx context.Context, req *system.AppRolesEditReq) (res *system.AppRolesEditRes, err error) {
|
|||
|
err = service.AppRoles().Edit(ctx, req)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// Delete 删除app角色
|
|||
|
func (c *appRolesController) Delete(ctx context.Context, req *system.AppRolesDeleteReq) (res *system.AppRolesDeleteRes, err error) {
|
|||
|
err = service.AppRoles().Delete(ctx, req.RoleIds)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// AddMenu 添加角色时绑定菜单
|
|||
|
func (c *appRolesController) AddMenu(ctx context.Context, req *system.AppRolesAddMenuReq) (*system.AppRolesAddMenuRes, error) {
|
|||
|
err := g.Try(ctx, func(ctx context.Context) {
|
|||
|
var roleID uint
|
|||
|
|
|||
|
// 判断角色名是否存在
|
|||
|
var appRoles entity.AppRoles
|
|||
|
if err := dao.AppRoles.Ctx(ctx).Where(dao.AppRoles.Columns().RoleName, req.RoleName).Scan(&appRoles); errors.Is(err, sql.ErrNoRows) {
|
|||
|
roleId, err := dao.AppRoles.Ctx(ctx).Data(do.AppRoles{
|
|||
|
RoleName: req.RoleName,
|
|||
|
}).InsertAndGetId()
|
|||
|
liberr.ErrIsNil(ctx, err, "添加角色失败")
|
|||
|
roleID = uint(roleId)
|
|||
|
} else {
|
|||
|
roleID = appRoles.RoleId
|
|||
|
}
|
|||
|
|
|||
|
if len(req.MenuIds) > 0 {
|
|||
|
insertData := make([]do.AppRoleMenus, 0, len(req.MenuIds))
|
|||
|
for _, menuId := range req.MenuIds {
|
|||
|
insertData = append(insertData, do.AppRoleMenus{
|
|||
|
RoleId: roleID,
|
|||
|
MenuId: menuId,
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
// 删除原有的角色菜单
|
|||
|
_, err := dao.AppRoleMenus.Ctx(ctx).Where("role_id", roleID).Delete()
|
|||
|
liberr.ErrIsNil(ctx, err, "删除角色菜单失败")
|
|||
|
_, err = dao.AppRoleMenus.Ctx(ctx).Where("role_id", roleID).Data(insertData).Insert()
|
|||
|
liberr.ErrIsNil(ctx, err, "添加角色菜单失败")
|
|||
|
}
|
|||
|
})
|
|||
|
|
|||
|
return &system.AppRolesAddMenuRes{}, err
|
|||
|
}
|
|||
|
|
|||
|
// 获取一个角色的菜单
|
|||
|
func (c *appRolesController) GetRoleMenus(ctx context.Context, req *system.AppRolesGetMenuReq) (*system.AppRolesGetMenuRes, error) {
|
|||
|
res := new(system.AppRolesGetMenuRes)
|
|||
|
err := g.Try(ctx, func(ctx context.Context) {
|
|||
|
err := dao.AppRoles.Ctx(ctx).WithAll().Where(dao.AppRoles.Columns().RoleId, req.RoleId).Scan(&res.List)
|
|||
|
|
|||
|
// SELECT m.menu_id, m.menu_name
|
|||
|
// FROM app_menus m
|
|||
|
// JOIN app_role_menus rm ON m.menu_id = rm.menu_id
|
|||
|
// WHERE rm.role_id = 3;
|
|||
|
|
|||
|
dao.AppMenus.Ctx(ctx).As("m").Fields("m.menu_id, m.menu_name").
|
|||
|
InnerJoin("app_role_menus rm", "m.menu_id = rm.menu_id").Where("rm.role_id", req.RoleId).Scan(&res.List.Menus)
|
|||
|
|
|||
|
liberr.ErrIsNil(ctx, err, "获取信息失败")
|
|||
|
})
|
|||
|
return res, err
|
|||
|
}
|