提交 v1.3.0 beta
This commit is contained in:
84
server/service/worker.go
Normal file
84
server/service/worker.go
Normal file
@ -0,0 +1,84 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user