Skip to content
8 changes: 4 additions & 4 deletions internal/dms/biz/cb_operation_log.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,10 @@ func (c CbOperationLog) GetDbServiceName() string {

// ListCbOperationLogOption 用于查询操作日志的选项
type ListCbOperationLogOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy string
FilterBy []constant.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy string
FilterByOptions constant.FilterOptions
}

// CbOperationLogUsecase 定义操作日志的业务逻辑
Expand Down
16 changes: 8 additions & 8 deletions internal/dms/biz/data_export_task.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,16 @@ type DataExportTaskRecord struct {
}

type ListDataExportTaskRecordOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy DataExportTaskRecordField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy DataExportTaskRecordField
FilterByOptions pkgConst.FilterOptions
}
type ListDataExportTaskOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy DataExportTaskField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy DataExportTaskField
FilterByOptions pkgConst.FilterOptions
}

type DataExportTaskRepo interface {
Expand Down
8 changes: 4 additions & 4 deletions internal/dms/biz/data_export_workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@ func NewDataExportWorkflowUsecase(logger utilLog.Logger, tx TransactionGenerator
}

type ListWorkflowsOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy WorkflowField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy WorkflowField
FilterByOptions pkgConst.FilterOptions
}
8 changes: 4 additions & 4 deletions internal/dms/biz/db_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -282,10 +282,10 @@ func (d *DBServiceUsecase) createDBService(ctx context.Context, dbService *DBSer
}

type ListDBServicesOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy DBServiceField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy DBServiceField
FilterByOptions pkgConst.FilterOptions
}

func (d *DBServiceUsecase) ListDBService(ctx context.Context, option *ListDBServicesOption, projectUid, currentUserUid string) (dbServices []*DBService, total int64, err error) {
Expand Down
8 changes: 4 additions & 4 deletions internal/dms/biz/gateway.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ type Gateway struct {
}

type ListGatewaysOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy MemberField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy MemberField
FilterByOptions pkgConst.FilterOptions
}
44 changes: 24 additions & 20 deletions internal/dms/biz/member.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,18 +114,20 @@ func (m *MemberUsecase) CreateMember(ctx context.Context, currentUserUid string,
if _, total, err := m.ListMember(ctx, &ListMembersOption{
PageNumber: 0,
LimitPerPage: 10,
FilterBy: []pkgConst.FilterCondition{
{
Field: string(MemberFieldUserUID),
Operator: pkgConst.FilterOperatorEqual,
Value: memberUserUid,
},
{
Field: string(MemberFieldProjectUID),
Operator: pkgConst.FilterOperatorEqual,
Value: projectUid,
},
},
FilterByOptions: pkgConst.NewFilterOptions(pkgConst.FilterLogicAnd,
pkgConst.NewConditionGroup(pkgConst.FilterLogicAnd,
pkgConst.FilterCondition{
Field: string(MemberFieldUserUID),
Operator: pkgConst.FilterOperatorEqual,
Value: memberUserUid,
},
pkgConst.FilterCondition{
Field: string(MemberFieldProjectUID),
Operator: pkgConst.FilterOperatorEqual,
Value: projectUid,
},
),
),
}, projectUid); err != nil {
return "", fmt.Errorf("check member exist failed: %v", err)
} else if total > 0 {
Expand Down Expand Up @@ -177,18 +179,20 @@ func (m *MemberUsecase) AddUserToProjectAdminMember(ctx context.Context, userUid
if _, total, err := m.ListMember(ctx, &ListMembersOption{
PageNumber: 0,
LimitPerPage: 10,
FilterBy: []pkgConst.FilterCondition{
{
FilterByOptions: pkgConst.NewFilterOptions(pkgConst.FilterLogicAnd,
pkgConst.NewConditionGroup(pkgConst.FilterLogicAnd,
pkgConst.FilterCondition{
Field: string(MemberFieldUserUID),
Operator: pkgConst.FilterOperatorEqual,
Value: userUid,
},
{
pkgConst.FilterCondition{
Field: string(MemberFieldProjectUID),
Operator: pkgConst.FilterOperatorEqual,
Value: projectUid,
},
},
),
),
}, projectUid); err != nil {
return "", fmt.Errorf("check member exist failed: %v", err)
} else if total > 0 {
Expand Down Expand Up @@ -283,10 +287,10 @@ func (m *MemberUsecase) GetMemberRoleWithOpRange(ctx context.Context, memberUid
}

type ListMembersOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy MemberField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy MemberField
FilterByOptions pkgConst.FilterOptions
}

func (m *MemberUsecase) ListMember(ctx context.Context, option *ListMembersOption, projectUid string) (members []*Member, total int64, err error) {
Expand Down
8 changes: 4 additions & 4 deletions internal/dms/biz/member_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,10 @@ func NewMemberGroupUsecase(log utilLog.Logger, tx TransactionGenerator, repo Mem
}

type ListMemberGroupsOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy MemberGroupField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy MemberGroupField
FilterByOptions pkgConst.FilterOptions
}

func (m *MemberGroupUsecase) ListMemberGroups(ctx context.Context, option *ListMemberGroupsOption, projectUid string) ([]*MemberGroup, int64, error) {
Expand Down
71 changes: 41 additions & 30 deletions internal/dms/biz/op_permission.go
Original file line number Diff line number Diff line change
Expand Up @@ -349,10 +349,10 @@ func GetProxyOpPermission() map[string][]*OpPermission {
}

type ListOpPermissionsOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy OpPermissionField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy OpPermissionField
FilterByOptions pkgConst.FilterOptions
}

type OpPermissionRepo interface {
Expand Down Expand Up @@ -432,11 +432,14 @@ func (d *OpPermissionUsecase) ListOpPermissions(ctx context.Context, opt *ListOp

func (d *OpPermissionUsecase) ListUserOpPermissions(ctx context.Context, opt *ListOpPermissionsOption) (ops []*OpPermission, total int64, err error) {
// 用户只能被赋予全局权限
opt.FilterBy = append(opt.FilterBy, pkgConst.FilterCondition{
Field: string(OpPermissionFieldRangeType),
Operator: pkgConst.FilterOperatorEqual,
Value: OpRangeTypeGlobal,
})
opt.FilterByOptions.Groups = append(opt.FilterByOptions.Groups, pkgConst.NewConditionGroup(
pkgConst.FilterLogicAnd,
pkgConst.FilterCondition{
Field: string(OpPermissionFieldRangeType),
Operator: pkgConst.FilterOperatorEqual,
Value: OpRangeTypeGlobal,
},
))

ops, total, err = d.repo.ListOpPermissions(ctx, opt)
if err != nil {
Expand All @@ -447,18 +450,24 @@ func (d *OpPermissionUsecase) ListUserOpPermissions(ctx context.Context, opt *Li

func (d *OpPermissionUsecase) ListMemberOpPermissions(ctx context.Context, opt *ListOpPermissionsOption) (ops []*OpPermission, total int64, err error) {
// 成员属于项目,只能被赋予非全局权限
opt.FilterBy = append(opt.FilterBy, pkgConst.FilterCondition{
Field: string(OpPermissionFieldRangeType),
Operator: pkgConst.FilterOperatorNotEqual,
Value: OpRangeTypeGlobal,
})
opt.FilterByOptions.Groups = append(opt.FilterByOptions.Groups, pkgConst.NewConditionGroup(
pkgConst.FilterLogicAnd,
pkgConst.FilterCondition{
Field: string(OpPermissionFieldRangeType),
Operator: pkgConst.FilterOperatorNotEqual,
Value: OpRangeTypeGlobal,
},
))

// 设置成员权限时,有单独的“项目管理权限”选项代表项目权限,所以这里不返回项目权限
opt.FilterBy = append(opt.FilterBy, pkgConst.FilterCondition{
Field: string(OpPermissionFieldRangeType),
Operator: pkgConst.FilterOperatorNotEqual,
Value: OpRangeTypeProject,
})
opt.FilterByOptions.Groups = append(opt.FilterByOptions.Groups, pkgConst.NewConditionGroup(
pkgConst.FilterLogicAnd,
pkgConst.FilterCondition{
Field: string(OpPermissionFieldRangeType),
Operator: pkgConst.FilterOperatorNotEqual,
Value: OpRangeTypeProject,
},
))

ops, total, err = d.repo.ListOpPermissions(ctx, opt)
if err != nil {
Expand All @@ -469,17 +478,19 @@ func (d *OpPermissionUsecase) ListMemberOpPermissions(ctx context.Context, opt *
}

func (d *OpPermissionUsecase) ListProjectOpPermissions(ctx context.Context, opt *ListOpPermissionsOption) (ops []*OpPermission, total int64, err error) {
opt.FilterBy = append(opt.FilterBy, pkgConst.FilterCondition{
Field: string(OpPermissionFieldRangeType),
Operator: pkgConst.FilterOperatorEqual,
Value: OpRangeTypeProject,
})

opt.FilterBy = append(opt.FilterBy, pkgConst.FilterCondition{
Field: string(OpPermissionFieldUID),
Operator: pkgConst.FilterOperatorNotEqual,
Value: pkgConst.UIDOfOpPermissionProjectAdmin,
})
opt.FilterByOptions.Groups = append(opt.FilterByOptions.Groups, pkgConst.NewConditionGroup(
pkgConst.FilterLogicAnd,
pkgConst.FilterCondition{
Field: string(OpPermissionFieldRangeType),
Operator: pkgConst.FilterOperatorEqual,
Value: OpRangeTypeProject,
},
pkgConst.FilterCondition{
Field: string(OpPermissionFieldUID),
Operator: pkgConst.FilterOperatorNotEqual,
Value: pkgConst.UIDOfOpPermissionProjectAdmin,
},
))

ops, total, err = d.repo.ListOpPermissions(ctx, opt)
if err != nil {
Expand Down
21 changes: 12 additions & 9 deletions internal/dms/biz/project.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,10 @@ func NewProjectUsecase(log utilLog.Logger, tx TransactionGenerator, repo Project
}

type ListProjectsOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy ProjectField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy ProjectField
FilterByOptions pkgConst.FilterOptions
}

func (d *ProjectUsecase) ListProject(ctx context.Context, option *ListProjectsOption, currentUserUid string) (projects []*Project, total int64, err error) {
Expand All @@ -139,11 +139,14 @@ func (d *ProjectUsecase) ListProject(ctx context.Context, option *ListProjectsOp
for _, project := range projects {
canViewableId = append(canViewableId, project.UID)
}
option.FilterBy = append(option.FilterBy, pkgConst.FilterCondition{
Field: string(ProjectFieldUID),
Operator: pkgConst.FilterOperatorIn,
Value: canViewableId,
})
option.FilterByOptions.Groups = append(option.FilterByOptions.Groups, pkgConst.NewConditionGroup(
pkgConst.FilterLogicAnd,
pkgConst.FilterCondition{
Field: string(ProjectFieldUID),
Operator: pkgConst.FilterOperatorIn,
Value: canViewableId,
},
))

}

Expand Down
21 changes: 12 additions & 9 deletions internal/dms/biz/role.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ func initRole() []*Role {
}

type ListRolesOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy RoleField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy RoleField
FilterByOptions pkgConst.FilterOptions
}

type RoleRepo interface {
Expand Down Expand Up @@ -279,11 +279,14 @@ func (d *RoleUsecase) InsureOpPermissionsToRole(ctx context.Context, opPermissio

func (d *RoleUsecase) ListRole(ctx context.Context, option *ListRolesOption) (roles []*Role, total int64, err error) {
// DMS-125:项目管理员为内置角色,不对外展示
option.FilterBy = append(option.FilterBy, pkgConst.FilterCondition{
Field: string(RoleFieldUID),
Operator: pkgConst.FilterOperatorNotEqual,
Value: pkgConst.UIDOfRoleProjectAdmin,
})
option.FilterByOptions.Groups = append(option.FilterByOptions.Groups, pkgConst.NewConditionGroup(
pkgConst.FilterLogicAnd,
pkgConst.FilterCondition{
Field: string(RoleFieldUID),
Operator: pkgConst.FilterOperatorNotEqual,
Value: pkgConst.UIDOfRoleProjectAdmin,
},
))
roles, total, err = d.repo.ListRoles(ctx, option)
if err != nil {
return nil, 0, fmt.Errorf("list roles failed: %v", err)
Expand Down
8 changes: 4 additions & 4 deletions internal/dms/biz/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,10 +167,10 @@ func (u *User) GetUID() string {
}

type ListUsersOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy UserField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy UserField
FilterByOptions pkgConst.FilterOptions
}

type UserRepo interface {
Expand Down
8 changes: 4 additions & 4 deletions internal/dms/biz/user_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ func (u *UserGroup) GetUID() string {
}

type ListUserGroupsOption struct {
PageNumber uint32
LimitPerPage uint32
OrderBy UserGroupField
FilterBy []pkgConst.FilterCondition
PageNumber uint32
LimitPerPage uint32
OrderBy UserGroupField
FilterByOptions pkgConst.FilterOptions
}

type UserGroupRepo interface {
Expand Down
Loading