complete make role tree
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
type RoleController interface {
|
||||
GetByFilter(*gin.Context, dto.RoleRequestFilter, request.PageFilter) (*response.PageResponse[*models.SysRole], error)
|
||||
Tree(*gin.Context) ([]*dto.RoleTree, error)
|
||||
Create(*gin.Context, dto.RoleRequestForm) error
|
||||
Delete(*gin.Context, int) error
|
||||
UpdateByID(*gin.Context, int, dto.RoleRequestForm) error
|
||||
@@ -36,6 +37,9 @@ func (c *roleControllerImpl) GetByFilter(
|
||||
) (*response.PageResponse[*models.SysRole], error) {
|
||||
return c.roleSvc.GetByFilter(ctx, filter, page)
|
||||
}
|
||||
func (c *roleControllerImpl) Tree(ctx *gin.Context) ([]*dto.RoleTree, error) {
|
||||
return c.roleSvc.Tree(ctx)
|
||||
}
|
||||
|
||||
func (c *roleControllerImpl) Create(ctx *gin.Context, req dto.RoleRequestForm) error {
|
||||
_, err := c.roleSvc.Create(ctx, req)
|
||||
|
||||
@@ -15,6 +15,7 @@ type RoleDao interface {
|
||||
UpdateByID(context.Context, *models.SysRole) (*models.SysRole, error)
|
||||
DeleteByID(context.Context, uint64) error
|
||||
DeletePermanentlyByID(context.Context, uint64) error
|
||||
All(context.Context) ([]*models.SysRole, error)
|
||||
}
|
||||
|
||||
type roleDaoImpl struct {
|
||||
@@ -54,6 +55,11 @@ func (dao *roleDaoImpl) GetByFilter(ctx context.Context, filter dto.RoleRequestF
|
||||
return items, uint64(total), nil
|
||||
}
|
||||
|
||||
func (dao *roleDaoImpl) All(ctx context.Context) ([]*models.SysRole, error) {
|
||||
role := dao.query.SysRole
|
||||
return role.WithContext(ctx).Find()
|
||||
}
|
||||
|
||||
func (dao *roleDaoImpl) FindByID(ctx context.Context, id uint64) (*models.SysRole, error) {
|
||||
role := dao.query.SysRole
|
||||
return role.WithContext(ctx).Where(role.ID.Eq(id)).First()
|
||||
|
||||
@@ -17,6 +17,7 @@ type userDaoImpl struct {
|
||||
func NewUserDao(query *query.Query) UserDao {
|
||||
return &userDaoImpl{query: query}
|
||||
}
|
||||
|
||||
func (dao *userDaoImpl) FindByID(ctx context.Context, id uint64) (*models.User, error) {
|
||||
user := dao.query.User
|
||||
return user.WithContext(ctx).Where(user.ID.Eq(id)).First()
|
||||
|
||||
@@ -11,3 +11,12 @@ type RoleRequestForm struct {
|
||||
ParentID uint `json:"parent_id,omitempty"`
|
||||
DefaultRouter string `json:"default_router,omitempty"`
|
||||
}
|
||||
|
||||
type RoleTree struct {
|
||||
ID uint64 `json:"id,omitempty"`
|
||||
UUID string `json:"uuid,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
ParentID uint64 `json:"parent_id,omitempty"`
|
||||
DefaultRouter string `json:"default_router,omitempty"`
|
||||
Children []*RoleTree `json:"children,omitempty"`
|
||||
}
|
||||
|
||||
@@ -40,6 +40,8 @@ func (r *Route) Register() {
|
||||
gen.BindQuery(request.PageFilter{}, err.BindQueryFailed),
|
||||
))
|
||||
|
||||
roleGroup.GET("/tree", gen.DataFunc(r.role.Tree))
|
||||
|
||||
roleGroup.POST("", gen.Func1(
|
||||
r.role.Create,
|
||||
gen.BindBody(dto.RoleRequestForm{}, err.BindBodyFailed),
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
type RoleService interface {
|
||||
GetByFilter(context.Context, dto.RoleRequestFilter, request.PageFilter) (*response.PageResponse[*models.SysRole], error)
|
||||
Create(context.Context, dto.RoleRequestForm) (*models.SysRole, error)
|
||||
Tree(context.Context) ([]*dto.RoleTree, error)
|
||||
UpdateByID(context.Context, uint64, dto.RoleRequestForm) (*models.SysRole, error)
|
||||
DeleteByID(context.Context, uint64) error
|
||||
}
|
||||
@@ -48,6 +49,32 @@ func (svc *roleService) GetByFilter(
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (svc *roleService) treeMaker(ctx context.Context, models []*models.SysRole, pid uint64) []*dto.RoleTree {
|
||||
items := []*dto.RoleTree{}
|
||||
for _, model := range models {
|
||||
if model.ParentID == pid {
|
||||
items = append(items, &dto.RoleTree{
|
||||
ID: model.ID,
|
||||
UUID: model.UUID,
|
||||
Name: model.Name,
|
||||
ParentID: 0,
|
||||
DefaultRouter: model.DefaultRouter,
|
||||
Children: svc.treeMaker(ctx, models, model.ID),
|
||||
})
|
||||
}
|
||||
}
|
||||
return items
|
||||
}
|
||||
|
||||
func (svc *roleService) Tree(ctx context.Context) ([]*dto.RoleTree, error) {
|
||||
models, err := svc.dao.All(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return svc.treeMaker(ctx, models, 0), nil
|
||||
}
|
||||
|
||||
func (svc *roleService) Create(ctx context.Context, req dto.RoleRequestForm) (*models.SysRole, error) {
|
||||
model := models.SysRole{
|
||||
UUID: svc.uuid.MustGenerate(),
|
||||
|
||||
Reference in New Issue
Block a user