85 lines
2.4 KiB
Go
85 lines
2.4 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"next-terminal/server/common/sets"
|
|
"next-terminal/server/model"
|
|
"next-terminal/server/repository"
|
|
"next-terminal/server/utils"
|
|
)
|
|
|
|
var WorkerService = &workerService{}
|
|
|
|
type workerService struct {
|
|
}
|
|
|
|
func (s *workerService) FindMyAssetPaging(pageIndex, pageSize int, name, protocol, tags string, userId string, order, field string) (o []model.AssetForPage, total int64, err error) {
|
|
assetIdList, err := s.getAssetIdListByUserId(userId)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
items, total, err := repository.AssetRepository.FindMyAssets(context.Background(), pageIndex, pageSize, name, protocol, tags, assetIdList, order, field)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
|
|
return items, total, nil
|
|
}
|
|
|
|
func (s *workerService) FindMyAsset(name, protocol, tags string, userId string, order, field string) (o []model.AssetForPage, err error) {
|
|
assetIdList, err := s.getAssetIdListByUserId(userId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
items, _, err := repository.AssetRepository.FindMyAssets(context.Background(), 1, 1000, name, protocol, tags, assetIdList, order, field)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return items, nil
|
|
}
|
|
|
|
func (s *workerService) FindMyAssetTags(ctx context.Context, userId string) ([]string, error) {
|
|
assetIdList, err := s.getAssetIdListByUserId(userId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
tags, err := repository.AssetRepository.FindMyAssetTags(ctx, assetIdList)
|
|
return tags, err
|
|
}
|
|
|
|
func (s *workerService) getAssetIdListByUserId(userId string) ([]string, error) {
|
|
set := sets.NewStringSet()
|
|
authorisedByUser, err := repository.AuthorisedRepository.FindByUserId(context.Background(), userId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, authorised := range authorisedByUser {
|
|
set.Add(authorised.AssetId)
|
|
}
|
|
|
|
userGroupIds, err := repository.UserGroupMemberRepository.FindUserGroupIdsByUserId(context.Background(), userId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
authorisedByUserGroup, err := repository.AuthorisedRepository.FindByUserGroupIdIn(context.Background(), userGroupIds)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, authorised := range authorisedByUserGroup {
|
|
set.Add(authorised.AssetId)
|
|
}
|
|
|
|
return set.ToArray(), nil
|
|
}
|
|
|
|
func (s *workerService) CheckPermission(assetId, userId string) (bool, error) {
|
|
assetIdList, err := s.getAssetIdListByUserId(userId)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
return utils.Contains(assetIdList, assetId), nil
|
|
}
|