初始
This commit is contained in:
117
internal/app/system/controller/app_roles.go
Normal file
117
internal/app/system/controller/app_roles.go
Normal file
@ -0,0 +1,117 @@
|
||||
// ==========================================================================
|
||||
// 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
|
||||
}
|
Reference in New Issue
Block a user