3 Commits

3 changed files with 42 additions and 39 deletions
Split View
  1. +19
    -18
      models/ai_model_manage.go
  2. +21
    -19
      models/search_record.go
  3. +2
    -2
      routers/search.go

+ 19
- 18
models/ai_model_manage.go View File

@@ -881,7 +881,7 @@ func QueryModelFileByModelId(modelId string) []*AiModelFile {
return result
}

func QueryModelForSearch(opts *AiModelQueryOptions) ([]*AiModelManage, int64, error) {
func QueryModelForSearch(opts *AiModelQueryOptions, isAdmin bool) ([]*AiModelManage, int64, error) {
sess := x.NewSession()
defer sess.Close()

@@ -889,25 +889,26 @@ func QueryModelForSearch(opts *AiModelQueryOptions) ([]*AiModelManage, int64, er
if opts.Namelike != "" {
query = query.And(builder.Or(builder.Like{"lower_alias", "%" + strings.ToLower(opts.Namelike) + "%"}, builder.Like{"lower_name", "%" + strings.ToLower(opts.Namelike) + "%"}))
}

query = query.And(
builder.Or(
builder.Eq{"owner_id": opts.UserID},
if !isAdmin {
query = query.And(
builder.Or(
builder.In("id", builder.Select("`subject_access`.subject_id::text").
From("subject_access").
Where(builder.Eq{"`subject_access`.user_id": opts.UserID}.
And(builder.Eq{"`subject_access`.subject_type": AimodelSubject}).
And(builder.In("`subject_access`.mode", int(AccessModeOwner), int(AccessModeRead), int(AccessModeWrite), int(AccessModeAdmin))))),
builder.In("id", builder.Select("`team_subject`.subject_id::text").
From("team_subject").
Where(builder.Eq{"`team_user`.uid ": opts.UserID}.
And(builder.Neq{"`team`.aimodel_authorize": int(AccessModeOwner)})).
Join("INNER", "team_user", "`team_user`.team_id = `team_subject`.team_id").
Join("INNER", "team", "`team`.id = `team_subject`.team_id")),
builder.Eq{"owner_id": opts.UserID},
builder.Or(
builder.In("id", builder.Select("`subject_access`.subject_id::text").
From("subject_access").
Where(builder.Eq{"`subject_access`.user_id": opts.UserID}.
And(builder.Eq{"`subject_access`.subject_type": AimodelSubject}).
And(builder.In("`subject_access`.mode", int(AccessModeOwner), int(AccessModeRead), int(AccessModeWrite), int(AccessModeAdmin))))),
builder.In("id", builder.Select("`team_subject`.subject_id::text").
From("team_subject").
Where(builder.Eq{"`team_user`.uid ": opts.UserID}.
And(builder.Neq{"`team`.aimodel_authorize": int(AccessModeOwner)})).
Join("INNER", "team_user", "`team_user`.team_id = `team_subject`.team_id").
Join("INNER", "team", "`team`.id = `team_subject`.team_id")),
),
),
),
)
)
}
query = query.And(builder.Eq{"is_private": true})

var count int64


+ 21
- 19
models/search_record.go View File

@@ -58,28 +58,30 @@ func SearchPrivateIssueOrPr(Page int, PageSize int, Keyword string, isPull bool,
}
}

func setDataSetQueryCondition(Keyword string, userId int64) builder.Cond {
func setDataSetQueryCondition(Keyword string, userId int64, isAdmin bool) builder.Cond {
query := builder.NewCond()
if Keyword != "" {
query = query.And(builder.Or(builder.Like{"lower_alias", "%" + strings.ToLower(Keyword) + "%"}, builder.Like{"lower_name", "%" + strings.ToLower(Keyword) + "%"}))
}
query = query.And(
builder.Or(
builder.Eq{"owner_id": userId},
if !isAdmin {
query = query.And(
builder.Or(
builder.In("id", builder.Select("`subject_access`.subject_id").
From("subject_access").
Where(builder.Eq{"`subject_access`.user_id": userId}.
And(builder.Eq{"`subject_access`.subject_type": DatasetSubject}).
And(builder.In("`subject_access`.mode", int(AccessModeOwner), int(AccessModeRead), int(AccessModeWrite), int(AccessModeAdmin))))),
builder.In("id", builder.Select("`team_subject`.subject_id").
From("team_subject").
Where(builder.Eq{"`team_user`.uid ": userId}.
And(builder.Neq{"`team`.dataset_authorize": int(AccessModeOwner)})).
Join("INNER", "team_user", "`team_user`.team_id = `team_subject`.team_id").
Join("INNER", "team", "`team`.id = `team_subject`.team_id")),
)),
)
builder.Eq{"owner_id": userId},
builder.Or(
builder.In("id", builder.Select("`subject_access`.subject_id").
From("subject_access").
Where(builder.Eq{"`subject_access`.user_id": userId}.
And(builder.Eq{"`subject_access`.subject_type": DatasetSubject}).
And(builder.In("`subject_access`.mode", int(AccessModeOwner), int(AccessModeRead), int(AccessModeWrite), int(AccessModeAdmin))))),
builder.In("id", builder.Select("`team_subject`.subject_id").
From("team_subject").
Where(builder.Eq{"`team_user`.uid ": userId}.
And(builder.Neq{"`team`.dataset_authorize": int(AccessModeOwner)})).
Join("INNER", "team_user", "`team_user`.team_id = `team_subject`.team_id").
Join("INNER", "team", "`team`.id = `team_subject`.team_id")),
)),
)
}
query = query.And(
builder.Eq{"is_private": true},
)
@@ -88,11 +90,11 @@ func setDataSetQueryCondition(Keyword string, userId int64) builder.Cond {
//sess.And("(lower_name like '%" + strings.ToLower(Keyword) + "%' and is_private=true)")
}

func SearchDatasetBySQL(Page int, PageSize int, Keyword string, userId int64) ([]*DatasetRegistry, int64, error) {
func SearchDatasetBySQL(Page int, PageSize int, Keyword string, userId int64, isAdmin bool) ([]*DatasetRegistry, int64, error) {

sess := x.NewSession()
defer sess.Close()
query := setDataSetQueryCondition(Keyword, userId)
query := setDataSetQueryCondition(Keyword, userId, isAdmin)
count, err := sess.Where(query).Count(new(DatasetRegistry))
if err != nil {
return nil, 0, err


+ 2
- 2
routers/search.go View File

@@ -847,7 +847,7 @@ func searchDataSet(ctx *context.Context, TableName string, Key string, Page int,

log.Info("actor is null?:" + fmt.Sprint(ctx.User == nil))

datasets, count, err := models.SearchDatasetBySQL(Page, PageSize, Key, ctx.User.ID)
datasets, count, err := models.SearchDatasetBySQL(Page, PageSize, Key, ctx.User.ID, ctx.User.IsAdmin)
if err != nil {
ctx.JSON(200, "")
return
@@ -1269,7 +1269,7 @@ func searchModel(ctx *context.Context, TableName string, Key string, Page int, P
UserID: ctx.User.ID,
Namelike: Key,
SortType: sortBy,
})
}, ctx.User.IsAdmin)
if err != nil {
ctx.JSON(200, "")
return


Loading…
Cancel
Save
Baidu
map