@@ -437,14 +437,7 @@ func GetTechRepoInfoForUser(opts *SearchUserRepoOpt) ([]*RepoConvergeInfo, int64 | |||||
func loadAttributes(infos []*RepoConvergeInfo) { | func loadAttributes(infos []*RepoConvergeInfo) { | ||||
for _, info := range infos { | for _, info := range infos { | ||||
info.User, _ = GetUserByID(info.UID) | info.User, _ = GetUserByID(info.UID) | ||||
var err error | |||||
info.Repo, err = GetRepositoryByID(info.RepoID) | |||||
if err != nil && IsErrRepoNotExist(err) { | |||||
//不存在的项目更新状态为不存在 | |||||
info.Status = TechNotExist | |||||
x.ID(info.ID).Cols("status").Update(info) | |||||
} | |||||
info.Repo, _ = GetRepositoryByID(info.RepoID) | |||||
info.BaseInfo, _ = GetTechConvergeBaseInfoById(info.BaseInfoID) | info.BaseInfo, _ = GetTechConvergeBaseInfoById(info.BaseInfoID) | ||||
} | } | ||||
} | } | ||||
@@ -467,17 +460,17 @@ func GetAvailableRepoConvergeInfo(opt *SearchRepoOpt) ([]*RepoConvergeInfo, erro | |||||
func buildRepoFilterCond(opt *SearchRepoOpt) string { | func buildRepoFilterCond(opt *SearchRepoOpt) string { | ||||
sql := "" | |||||
sql := "status=" + strconv.Itoa(TechShow) | |||||
if opt.Institution != "" { | if opt.Institution != "" { | ||||
sql += getPrefixWithoutWhere(sql) + " (institution like '%" + opt.Institution + ",%'" + " or institution like '%," + opt.Institution + "%'" + " or institution = '" + opt.Institution + "')" | |||||
sql += " and (institution like '%" + opt.Institution + ",%'" + " or institution like '%," + opt.Institution + "%'" + " or institution = '" + opt.Institution + "')" | |||||
} | } | ||||
if opt.ProjectName != "" { | if opt.ProjectName != "" { | ||||
baseInfoIds := GetIdByProjectName(opt.ProjectName) | baseInfoIds := GetIdByProjectName(opt.ProjectName) | ||||
if len(baseInfoIds) > 0 { | if len(baseInfoIds) > 0 { | ||||
sql += getPrefixWithoutWhere(sql) + " base_info_id in (" + strings.Join(baseInfoIds, ",") + ")" | |||||
sql += " and base_info_id in (" + strings.Join(baseInfoIds, ",") + ")" | |||||
} | } | ||||
} | } | ||||
@@ -552,13 +545,6 @@ func getWherePrefix(sql string) string { | |||||
return " and " | return " and " | ||||
} | } | ||||
func getPrefixWithoutWhere(sql string) string { | |||||
if sql == "" { | |||||
return "" | |||||
} | |||||
return " and " | |||||
} | |||||
func loadRepoInfoForTech(list []*TechRepoInfo) { | func loadRepoInfoForTech(list []*TechRepoInfo) { | ||||
for _, techRepo := range list { | for _, techRepo := range list { | ||||
@@ -47,6 +47,7 @@ func GetFilterInfo(ctx *context.APIContext) { | |||||
} | } | ||||
func GetAdminRepoInfo(ctx *context.APIContext) { | func GetAdminRepoInfo(ctx *context.APIContext) { | ||||
go techService.UpdateTechStatus() | |||||
opts := &models.SearchUserRepoOpt{} | opts := &models.SearchUserRepoOpt{} | ||||
page := ctx.QueryInt("page") | page := ctx.QueryInt("page") | ||||
if page <= 0 { | if page <= 0 { | ||||
@@ -95,6 +96,7 @@ type ActionIDs struct { | |||||
} | } | ||||
func GetMyRepoInfo(ctx *context.APIContext) { | func GetMyRepoInfo(ctx *context.APIContext) { | ||||
go techService.UpdateTechStatus() | |||||
opts := &models.SearchUserRepoOpt{} | opts := &models.SearchUserRepoOpt{} | ||||
page := ctx.QueryInt("page") | page := ctx.QueryInt("page") | ||||
if page <= 0 { | if page <= 0 { | ||||
@@ -120,7 +122,7 @@ func GetMyRepoInfo(ctx *context.APIContext) { | |||||
} | } | ||||
func SearchRepoInfo(ctx *context.APIContext) { | func SearchRepoInfo(ctx *context.APIContext) { | ||||
go techService.UpdateTechStatus() | |||||
opts := &models.SearchRepoOpt{} | opts := &models.SearchRepoOpt{} | ||||
opts.Q = ctx.Query("name") | opts.Q = ctx.Query("name") | ||||
opts.ProjectName = ctx.Query("tech_name") | opts.ProjectName = ctx.Query("tech_name") | ||||
@@ -151,7 +153,7 @@ func SearchRepoInfo(ctx *context.APIContext) { | |||||
} | } | ||||
func SearchTechProjectInfo(ctx *context.APIContext) { | func SearchTechProjectInfo(ctx *context.APIContext) { | ||||
go techService.UpdateTechStatus() | |||||
opts := &models.SearchTechOpt{} | opts := &models.SearchTechOpt{} | ||||
opts.Q = ctx.Query("name") | opts.Q = ctx.Query("name") | ||||
opts.ApplyYear = ctx.QueryInt("apply_year") | opts.ApplyYear = ctx.QueryInt("apply_year") | ||||
@@ -2,6 +2,7 @@ package tech | |||||
import ( | import ( | ||||
"code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
"code.gitea.io/gitea/modules/log" | |||||
"code.gitea.io/gitea/services/repository" | "code.gitea.io/gitea/services/repository" | ||||
) | ) | ||||
@@ -114,6 +115,9 @@ func SearchRepoInfoWithInstitution(opt *models.SearchRepoOpt) ([]*models.RepoWit | |||||
if err != nil { | if err != nil { | ||||
return nil, 0, err | return nil, 0, err | ||||
} | } | ||||
if len(infos) == 0 { | |||||
return []*models.RepoWithInstitution{}, 0, nil | |||||
} | |||||
repoIds, institutionMap := getRepoIdAndInstitutionMap(infos) | repoIds, institutionMap := getRepoIdAndInstitutionMap(infos) | ||||
result, err := repository.FindRepos(repository.FindReposOptions{ | result, err := repository.FindRepos(repository.FindReposOptions{ | ||||
@@ -172,6 +176,38 @@ func IsValidRepoConvergeExists(repoId, baseInfoId int64) (bool, error) { | |||||
return len(list) > 0, nil | return len(list) > 0, nil | ||||
} | } | ||||
func UpdateTechStatus() { | |||||
err := UpdateTechRepoDeleteStatus() | |||||
if err != nil { | |||||
log.Error("update delete status fail", err) | |||||
} | |||||
err = UpdateTechMigrateStatus() | |||||
if err != nil { | |||||
log.Error("update migrate status fail", err) | |||||
} | |||||
} | |||||
func UpdateTechRepoDeleteStatus() error { | |||||
needDeleteCheckRepos, err := models.GetRepoConverge(models.GetRepoConvergeOpts{ | |||||
Status: []int{models.TechShow, models.TechHide}, | |||||
}) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
for _, r := range needDeleteCheckRepos { | |||||
_, err := models.GetRepositoryByID(r.RepoID) | |||||
if err != nil && models.IsErrRepoNotExist(err) { | |||||
models.UpdateRepoConvergeStatus(r.ID, models.TechNotExist) | |||||
continue | |||||
} | |||||
} | |||||
return nil | |||||
} | |||||
func UpdateTechMigrateStatus() error { | func UpdateTechMigrateStatus() error { | ||||
migratingRepos, err := models.GetRepoConverge(models.GetRepoConvergeOpts{ | migratingRepos, err := models.GetRepoConverge(models.GetRepoConvergeOpts{ | ||||
Status: []int{models.TechMigrating}, | Status: []int{models.TechMigrating}, | ||||