guard/internal/logic/permissionservice/list_permission_status_logi...

56 lines
1.8 KiB
Go
Raw Normal View History

2024-08-15 08:17:41 +00:00
package permissionservicelogic
import (
2024-08-17 09:32:15 +00:00
"ark-permission/internal/domain"
ers "code.30cm.net/wanderland/library-go/errors"
2024-08-15 08:17:41 +00:00
"context"
"ark-permission/gen_result/pb/permission"
"ark-permission/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type ListPermissionStatusLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewListPermissionStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListPermissionStatusLogic {
return &ListPermissionStatusLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
2024-08-17 09:32:15 +00:00
// ListPermissionStatus 取得
2024-08-15 08:17:41 +00:00
func (l *ListPermissionStatusLogic) ListPermissionStatus(in *permission.NoneReq) (*permission.ListPermissionStatusResp, error) {
2024-08-17 09:32:15 +00:00
// 搜尋所有權限
permissions, err := l.svcCtx.Permission.FindAllOpenPermission(l.ctx)
if err != nil {
return nil, ers.DBError(err.Error())
}
exist := make(map[string]struct{})
status := make([]*permission.PermissionStatusItem, 0, len(permissions))
for _, v := range permissions {
if _, ok := exist[v.Name]; !ok {
t, _ := domain.ToPermissionTypeCode(v.Type)
status = append(status, &permission.PermissionStatusItem{
Id: v.Id, // 權限 ID
ParentId: v.Parent.Int64, // 上級權限的ID
Name: v.Name, // 權限名稱
2024-08-18 14:07:14 +00:00
Status: permission.PermissionStatus(v.Status), // 權限開啟或關閉,判斷時上級權限如果關閉,下級也應該關閉對此人關閉 // TODO 還沒做到,目前忠實呈現
2024-08-17 09:32:15 +00:00
Type: t.ToString(), // 前台權限,還是後台權限,還是其他中台之類的
})
exist[v.Name] = struct{}{}
}
}
2024-08-15 08:17:41 +00:00
2024-08-17 09:32:15 +00:00
return &permission.ListPermissionStatusResp{
Data: status,
}, nil
2024-08-15 08:17:41 +00:00
}