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) {
for _, info := range infos {
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)
}
}
@@ -467,17 +460,17 @@ func GetAvailableRepoConvergeInfo(opt *SearchRepoOpt) ([]*RepoConvergeInfo, erro

func buildRepoFilterCond(opt *SearchRepoOpt) string {

sql := ""
sql := "status=" + strconv.Itoa(TechShow)

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 != "" {
baseInfoIds := GetIdByProjectName(opt.ProjectName)
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 "
}

func getPrefixWithoutWhere(sql string) string {
if sql == "" {
return ""
}
return " and "
}

func loadRepoInfoForTech(list []*TechRepoInfo) {

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) {
go techService.UpdateTechStatus()
opts := &models.SearchUserRepoOpt{}
page := ctx.QueryInt("page")
if page <= 0 {
@@ -95,6 +96,7 @@ type ActionIDs struct {
}

func GetMyRepoInfo(ctx *context.APIContext) {
go techService.UpdateTechStatus()
opts := &models.SearchUserRepoOpt{}
page := ctx.QueryInt("page")
if page <= 0 {
@@ -120,7 +122,7 @@ func GetMyRepoInfo(ctx *context.APIContext) {
}

func SearchRepoInfo(ctx *context.APIContext) {
go techService.UpdateTechStatus()
opts := &models.SearchRepoOpt{}
opts.Q = ctx.Query("name")
opts.ProjectName = ctx.Query("tech_name")
@@ -151,7 +153,7 @@ func SearchRepoInfo(ctx *context.APIContext) {
}

func SearchTechProjectInfo(ctx *context.APIContext) {
go techService.UpdateTechStatus()
opts := &models.SearchTechOpt{}
opts.Q = ctx.Query("name")
opts.ApplyYear = ctx.QueryInt("apply_year")


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

@@ -2,6 +2,7 @@ package tech

import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/services/repository"
)

@@ -114,6 +115,9 @@ func SearchRepoInfoWithInstitution(opt *models.SearchRepoOpt) ([]*models.RepoWit
if err != nil {
return nil, 0, err
}
if len(infos) == 0 {
return []*models.RepoWithInstitution{}, 0, nil
}
repoIds, institutionMap := getRepoIdAndInstitutionMap(infos)

result, err := repository.FindRepos(repository.FindReposOptions{
@@ -172,6 +176,38 @@ func IsValidRepoConvergeExists(repoId, baseInfoId int64) (bool, error) {
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 {
migratingRepos, err := models.GetRepoConverge(models.GetRepoConvergeOpts{
Status: []int{models.TechMigrating},


Loading…
Cancel
Save