Files
zmkgC/internal/app/system/controller/app_roles.go
2025-07-07 20:11:59 +08:00

118 lines
3.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ==========================================================================
// 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
}