Skip to content

Commit

Permalink
Merge pull request TencentBlueKing#10130 from yjieliang/feat-10126
Browse files Browse the repository at this point in the history
feat:新增修改研发商店组件初始化项目的接口 TencentBlueKing#10126
  • Loading branch information
bkci-bot committed Jun 3, 2024
2 parents 37fe837 + b402e24 commit a197834
Show file tree
Hide file tree
Showing 18 changed files with 225 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@ import com.tencent.devops.common.api.auth.AUTH_HEADER_PROJECT_ID
import com.tencent.devops.common.api.auth.AUTH_HEADER_USER_ID
import com.tencent.devops.common.api.auth.AUTH_HEADER_USER_ID_DEFAULT_VALUE
import com.tencent.devops.common.api.pojo.Page
import com.tencent.devops.common.event.pojo.measure.PipelineLabelRelateInfo
import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.event.pojo.measure.PipelineLabelRelateInfo
import com.tencent.devops.common.pipeline.Model
import com.tencent.devops.common.pipeline.ModelUpdate
import com.tencent.devops.common.pipeline.enums.ChannelCode
import com.tencent.devops.common.pipeline.pojo.PipelineModelAndSetting
import com.tencent.devops.common.pipeline.pojo.setting.PipelineSetting
import com.tencent.devops.common.web.annotation.BkApiPermission
import com.tencent.devops.common.web.constant.BkApiHandleType
import com.tencent.devops.process.engine.pojo.PipelineInfo
Expand All @@ -46,15 +48,13 @@ import com.tencent.devops.process.pojo.PipelineId
import com.tencent.devops.process.pojo.PipelineIdAndName
import com.tencent.devops.process.pojo.PipelineIdInfo
import com.tencent.devops.process.pojo.PipelineName
import com.tencent.devops.process.pojo.PipelineRemoteToken
import com.tencent.devops.process.pojo.classify.PipelineViewPipelinePage
import com.tencent.devops.process.pojo.pipeline.DeployPipelineResult
import com.tencent.devops.process.pojo.pipeline.SimplePipeline
import com.tencent.devops.common.pipeline.pojo.PipelineModelAndSetting
import com.tencent.devops.common.pipeline.pojo.setting.PipelineSetting
import com.tencent.devops.process.pojo.PipelineRemoteToken
import io.swagger.v3.oas.annotations.tags.Tag
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.Parameter
import io.swagger.v3.oas.annotations.tags.Tag
import javax.validation.Valid
import javax.ws.rs.Consumes
import javax.ws.rs.DELETE
Expand Down Expand Up @@ -316,7 +316,10 @@ interface ServicePipelineResource {
pipelineId: String,
@Parameter(description = "渠道号,默认为BS", required = false)
@QueryParam("channelCode")
channelCode: ChannelCode
channelCode: ChannelCode,
@Parameter(description = "是否检查权限", required = false)
@QueryParam("checkFlag")
checkFlag: Boolean? = true
): Result<Boolean>

@Operation(summary = "流水线编排列表")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import com.tencent.devops.common.pipeline.Model
import com.tencent.devops.common.pipeline.ModelUpdate
import com.tencent.devops.common.pipeline.enums.ChannelCode
import com.tencent.devops.common.pipeline.pojo.PipelineModelAndSetting
import com.tencent.devops.common.pipeline.pojo.setting.PipelineSetting
import com.tencent.devops.common.web.RestResource
import com.tencent.devops.common.web.utils.I18nUtil
import com.tencent.devops.process.api.service.ServicePipelineResource
Expand All @@ -53,6 +54,7 @@ import com.tencent.devops.process.engine.pojo.PipelineInfo
import com.tencent.devops.process.engine.service.PipelineRepositoryService
import com.tencent.devops.process.engine.service.PipelineRepositoryService.Companion.checkParam
import com.tencent.devops.process.engine.service.rule.PipelineRuleService
import com.tencent.devops.process.enums.OperationLogType
import com.tencent.devops.process.permission.PipelinePermissionService
import com.tencent.devops.process.pojo.Permission
import com.tencent.devops.process.pojo.Pipeline
Expand All @@ -61,15 +63,13 @@ import com.tencent.devops.process.pojo.PipelineId
import com.tencent.devops.process.pojo.PipelineIdAndName
import com.tencent.devops.process.pojo.PipelineIdInfo
import com.tencent.devops.process.pojo.PipelineName
import com.tencent.devops.process.pojo.PipelineRemoteToken
import com.tencent.devops.process.pojo.PipelineSortType
import com.tencent.devops.process.pojo.audit.Audit
import com.tencent.devops.process.pojo.classify.PipelineViewPipelinePage
import com.tencent.devops.process.pojo.pipeline.DeployPipelineResult
import com.tencent.devops.process.pojo.pipeline.SimplePipeline
import com.tencent.devops.process.pojo.pipeline.enums.PipelineRuleBusCodeEnum
import com.tencent.devops.common.pipeline.pojo.setting.PipelineSetting
import com.tencent.devops.process.enums.OperationLogType
import com.tencent.devops.process.pojo.PipelineRemoteToken
import com.tencent.devops.process.service.PipelineInfoFacadeService
import com.tencent.devops.process.service.PipelineListFacadeService
import com.tencent.devops.process.service.PipelineRemoteAuthService
Expand Down Expand Up @@ -400,15 +400,16 @@ class ServicePipelineResourceImpl @Autowired constructor(
userId: String,
projectId: String,
pipelineId: String,
channelCode: ChannelCode
channelCode: ChannelCode,
checkFlag: Boolean?
): Result<Boolean> {
checkParams(userId, projectId)
pipelineInfoFacadeService.deletePipeline(
userId = userId,
projectId = projectId,
pipelineId = pipelineId,
channelCode = channelCode,
checkPermission = ChannelCode.isNeedAuth(channelCode)
checkPermission = ChannelCode.isNeedAuth(channelCode) && checkFlag == true
)
return Result(true)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,4 +255,19 @@ interface ServiceRepositoryResource {
@Parameter(description = "代码库哈希ID列表", required = true)
repositoryHashIdList: List<String>
): Result<List<String>>

@Operation(summary = "更新组件代码库关联项目信息")
@POST
@Path("/store/project/update")
fun updateStoreRepoProject(
@Parameter(description = "代码库负责人")
@QueryParam("userId")
userId: String,
@Parameter(description = "项目ID")
@QueryParam("projectId")
projectId: String,
@Parameter(description = "代码库ID")
@QueryParam("repositoryId")
repositoryId: Long
): Result<Boolean>
}
Original file line number Diff line number Diff line change
Expand Up @@ -545,4 +545,19 @@ class RepositoryDao {
.execute()
}
}

fun updateStoreRepoProject(
dslContext: DSLContext,
userId: String,
projectId: String,
repositoryId: Long
) {
with(TRepository.T_REPOSITORY) {
dslContext.update(this)
.set(PROJECT_ID, projectId)
.set(USER_ID, userId)
.where(REPOSITORY_ID.eq(repositoryId))
.execute()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -242,4 +242,8 @@ class ServiceRepositoryResourceImpl @Autowired constructor(
): Result<List<String>> {
return Result(repositoryService.getGitProjectIdByRepositoryHashId(userId, repositoryHashIdList))
}

override fun updateStoreRepoProject(userId: String, projectId: String, repositoryId: Long): Result<Boolean> {
return repositoryService.updateStoreRepoProject(userId, projectId, repositoryId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@ import com.tencent.devops.scm.pojo.GitCommit
import com.tencent.devops.scm.pojo.GitProjectInfo
import com.tencent.devops.scm.pojo.GitRepositoryDirItem
import com.tencent.devops.scm.pojo.GitRepositoryResp
import java.time.LocalDateTime
import java.util.Base64
import javax.ws.rs.NotFoundException
import org.jooq.DSLContext
import org.jooq.impl.DSL
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
import java.time.LocalDateTime
import java.util.Base64
import javax.ws.rs.NotFoundException

@Service
@Suppress("ALL")
Expand Down Expand Up @@ -1346,6 +1346,16 @@ class RepositoryService @Autowired constructor(
}
}

fun updateStoreRepoProject(userId: String, projectId: String, repositoryId: Long): Result<Boolean> {
repositoryDao.updateStoreRepoProject(
dslContext = dslContext,
userId = userId,
projectId = projectId,
repositoryId = repositoryId
)
return Result(true)
}

fun getGitProjectIdByRepositoryHashId(userId: String, repositoryHashIdList: List<String>): List<String> {
return repositoryDao.getGitProjectIdByRepositoryHashId(dslContext, repositoryHashIdList)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Tencent is pleased to support the open source community by making BK-CI 蓝鲸持续集成平台 available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* BK-CI 蓝鲸持续集成平台 is licensed under the MIT license.
*
* A copy of the MIT License is included in this file.
*
*
* Terms of the MIT License:
* ---------------------------------------------------
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
* documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of
* the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
* LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
* NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

package com.tencent.devops.store.pojo.common

import com.tencent.devops.store.pojo.common.enums.StoreTypeEnum
import io.swagger.v3.oas.annotations.media.Schema

@Schema(title = "组件关联初始化项目信息")
data class StoreProjectInfo(
@get:Schema(title = "组件负责人", required = true)
val userId: String,
@get:Schema(title = "组件代码", required = true)
val storeCode: String,
@get:Schema(title = "项目ID", required = true)
val projectId: String,
@get:Schema(title = "组件类型", required = true)
val storeType: StoreTypeEnum
)
Original file line number Diff line number Diff line change
Expand Up @@ -184,4 +184,13 @@ class AtomCommonDao : AbstractStoreCommonDao() {
}
}
}

override fun getStoreRepoHashIdByCode(dslContext: DSLContext, storeCode: String): String? {
with(TAtom.T_ATOM) {
return dslContext.select(REPOSITORY_HASH_ID)
.from(this)
.where(ATOM_CODE.eq(storeCode))
.fetchAny()?.into(String::class.java)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,6 @@ abstract class AbstractStoreCommonDao {
storeCode: String,
storeStatus: Byte? = null
): StoreBaseInfo?

abstract fun getStoreRepoHashIdByCode(dslContext: DSLContext, storeCode: String): String?
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,12 @@ class StorePipelineBuildRelDao {
.execute()
}
}

fun deleteStorePipelineBuildRelByPiplineId(dslContext: DSLContext, pipelineId: String) {
with(TStorePipelineBuildRel.T_STORE_PIPELINE_BUILD_REL) {
dslContext.deleteFrom(this)
.where(PIPELINE_ID.eq(pipelineId))
.execute()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,12 @@ class StorePipelineRelDao {
.execute()
}
}

fun deleteStorePipelineRelById(dslContext: DSLContext, id: String) {
with(TStorePipelineRel.T_STORE_PIPELINE_REL) {
dslContext.deleteFrom(this)
.where(ID.eq(id))
.execute()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import com.tencent.devops.common.api.util.UUIDUtil
import com.tencent.devops.model.store.tables.TStoreMember
import com.tencent.devops.model.store.tables.TStoreProjectRel
import com.tencent.devops.model.store.tables.records.TStoreProjectRelRecord
import com.tencent.devops.store.pojo.common.StoreProjectInfo
import com.tencent.devops.store.pojo.common.enums.StoreProjectTypeEnum
import com.tencent.devops.store.pojo.common.enums.StoreTypeEnum
import java.time.LocalDateTime
Expand Down Expand Up @@ -398,6 +399,21 @@ class StoreProjectRelDao {
return finalStep.fetchOne(0, String::class.java)
}

/**
* 更新组件关联初始化项目信息
*/
fun updateStoreInitProject(dslContext: DSLContext, userId: String, storeProjectInfo: StoreProjectInfo) {
with(TStoreProjectRel.T_STORE_PROJECT_REL) {
dslContext.update(this)
.set(PROJECT_CODE, storeProjectInfo.projectId)
.set(MODIFIER, userId)
.where(STORE_CODE.eq(storeProjectInfo.storeCode))
.and(STORE_TYPE.eq(storeProjectInfo.storeType.type.toByte()))
.and(TYPE.eq(StoreProjectTypeEnum.INIT.type.toByte()))
.execute()
}
}

/**
* 更新用户的组件设定的调试项目
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,12 @@ interface StoreCommonService {
* 获取普通升级标识
*/
fun getNormalUpgradeFlag(storeCode: String, storeType: StoreTypeEnum, status: StoreStatusEnum): Boolean

/**
* 根据标识获取组件关联代码库hashId
*/
fun getStoreRepoHashIdByCode(
storeCode: String,
storeType: StoreTypeEnum
): String?
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.pipeline.enums.ChannelCode
import com.tencent.devops.store.pojo.common.InstallStoreReq
import com.tencent.devops.store.pojo.common.InstalledProjRespItem
import com.tencent.devops.store.pojo.common.StoreProjectInfo
import com.tencent.devops.store.pojo.common.enums.StoreTypeEnum

/**
Expand Down Expand Up @@ -102,4 +103,9 @@ interface StoreProjectService {
storeProjectTypes: List<Byte>,
instanceId: String? = null
): Map<String, String?>?

/**
* 更新组件初始化项目信息
*/
fun updateStoreInitProject(userId: String, storeProjectInfo: StoreProjectInfo): Boolean
}
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ abstract class StoreCommonServiceImpl : StoreCommonService {
return publicFlag
}

override fun getStoreRepoHashIdByCode(storeCode: String, storeType: StoreTypeEnum): String? {
return getStoreCommonDao(storeType.name).getStoreRepoHashIdByCode(dslContext, storeCode)
}

private fun getStoreCommonDao(storeType: String): AbstractStoreCommonDao {
return SpringContextUtil.getBean(AbstractStoreCommonDao::class.java, "${storeType}_COMMON_DAO")
}
Expand Down
Loading

0 comments on commit a197834

Please sign in to comment.