Browse Source

提交代码

2023
ychao_1983 2 years ago
parent
commit
eb48f57e6c
3 changed files with 44 additions and 20 deletions
  1. +4
    -18
      models/tech_converge_info.go
  2. +4
    -2
      routers/api/v1/tech/tech.go
  3. +36
    -0
      services/tech/tech.go

+ 4
- 18
models/tech_converge_info.go View File

@@ -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 {


+ 4
- 2
routers/api/v1/tech/tech.go View File

@@ -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")


+ 36
- 0
services/tech/tech.go View File

@@ -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},


Loading…
Cancel
Save