Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【研发商店】支持展示版本日志 #1761 #11477

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,12 @@ import com.tencent.devops.store.pojo.common.media.StoreMediaInfo
import com.tencent.devops.store.pojo.common.test.StoreTestItem
import com.tencent.devops.store.pojo.common.version.StoreDeskVersionItem
import com.tencent.devops.store.pojo.common.version.StoreShowVersionInfo
import com.tencent.devops.store.pojo.common.version.StoreVersionLogInfo
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.Parameter
import io.swagger.v3.oas.annotations.tags.Tag
import javax.ws.rs.Consumes
import javax.ws.rs.DefaultValue
import javax.ws.rs.GET
import javax.ws.rs.HeaderParam
import javax.ws.rs.Path
Expand Down Expand Up @@ -319,4 +321,29 @@ interface UserStoreComponentQueryResource {
@BkField(patternStyle = BkStyleEnum.CODE_STYLE)
storeCode: String
): Result<List<StoreMediaInfo>?>



@Operation(summary = "根据组件Code获取组件版本日志")
@GET
@Path("/types/{storeType}/codes/{storeCode}/version/logs/get")
fun getStoreVersionLogs(
@Parameter(description = "userId", required = true)
@HeaderParam(AUTH_HEADER_USER_ID)
userId: String,
@Parameter(description = "组件代码", required = true)
@PathParam("storeCode")
storeCode: String,
@Parameter(description = "组件类型", required = true)
@PathParam("storeType")
storeType: StoreTypeEnum,
@Parameter(description = "页码", required = true)
@QueryParam("page")
@DefaultValue("1")
page: Int,
@Parameter(description = "每页数量", required = true)
@QueryParam("pageSize")
@DefaultValue("10")
pageSize: Int
): Result<Page<StoreVersionLogInfo>>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.tencent.devops.store.pojo.common.version

import io.swagger.v3.oas.annotations.media.Schema

@Schema(title = "商店组件-版本日志")
data class StoreVersionLogInfo(
@Schema(description = "版本号")
val version: String?,
@Schema(description = "tag")
val tag: String?,
@Schema(description = "最近更新时间")
val lastUpdateTime: String?,
@Schema(description = "更新日志")
val updateLog: String?

)
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import com.tencent.devops.common.api.constant.KEY_VERSION
import com.tencent.devops.common.api.enums.FrontendTypeEnum
import com.tencent.devops.model.store.tables.TAtom
import com.tencent.devops.model.store.tables.TAtomEnvInfo
import com.tencent.devops.model.store.tables.TAtomVersionLog
import com.tencent.devops.model.store.tables.TStorePipelineRel
import com.tencent.devops.model.store.tables.TStoreProjectRel
import com.tencent.devops.process.utils.KEY_PIPELINE_ID
Expand All @@ -44,15 +45,16 @@ import com.tencent.devops.store.pojo.common.KEY_CREATOR
import com.tencent.devops.store.pojo.common.KEY_LANGUAGE
import com.tencent.devops.store.pojo.common.KEY_PROJECT_CODE
import com.tencent.devops.store.pojo.common.KEY_STORE_CODE
import com.tencent.devops.store.pojo.common.STORE_CODE
import com.tencent.devops.store.pojo.common.StoreBaseInfo
import com.tencent.devops.store.pojo.common.enums.StoreProjectTypeEnum
import com.tencent.devops.store.pojo.common.enums.StoreTypeEnum
import org.jooq.Condition
import org.jooq.DSLContext
import org.jooq.Record
import org.jooq.Record3
import org.jooq.Result
import org.springframework.stereotype.Repository
import java.time.LocalDateTime

@Repository(value = "ATOM_COMMON_DAO")
class AtomCommonDao : AbstractStoreCommonDao() {
Expand Down Expand Up @@ -200,4 +202,29 @@ class AtomCommonDao : AbstractStoreCommonDao() {
dslContext.select(ATOM_CODE).from(this).where(ID.eq(storeId)).fetchOne(0, String::class.java)
}
}


override fun getStoreComponentVersionLogs(
dslContext: DSLContext,
storeCode: String,
page: Int?,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

现在确定姚分页,page和pageSize不要考虑可为空的情况

pageSize: Int?
): Result<Record3<String, String, LocalDateTime>>? {
val atom = TAtom.T_ATOM
val atomVersionLog = TAtomVersionLog.T_ATOM_VERSION_LOG
val baseStep = dslContext.select(atom.VERSION, atomVersionLog.CONTENT, atom.UPDATE_TIME)
.from(atom)
.join(atomVersionLog)
.on(atom.ID.eq(atomVersionLog.ATOM_ID))
.where(atom.ATOM_STATUS.eq(AtomStatusEnum.RELEASED.status.toByte()).and(atom.ATOM_CODE.eq(storeCode)))

if (null != page && null != pageSize) {
baseStep.limit((page - 1) * pageSize, pageSize)
}

return baseStep.fetch()


}

}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ package com.tencent.devops.store.common.dao
import com.tencent.devops.store.pojo.common.StoreBaseInfo
import org.jooq.DSLContext
import org.jooq.Record
import org.jooq.Record3
import org.jooq.Result
import java.time.LocalDateTime

@Suppress("ALL")
abstract class AbstractStoreCommonDao {
Expand Down Expand Up @@ -82,4 +84,12 @@ abstract class AbstractStoreCommonDao {
dslContext: DSLContext,
storeId: String
): String?

abstract fun getStoreComponentVersionLogs(
dslContext: DSLContext,
storeCode: String,
page: Int? = null,
pageSize: Int? = null
): Result<Record3<String, String, LocalDateTime>>?

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ import com.tencent.devops.model.store.tables.TStoreBase
import com.tencent.devops.model.store.tables.TStoreVersionLog
import com.tencent.devops.model.store.tables.records.TStoreVersionLogRecord
import com.tencent.devops.store.pojo.common.enums.ReleaseTypeEnum
import com.tencent.devops.store.pojo.common.enums.StoreStatusEnum
import org.jooq.DSLContext
import org.jooq.Record3
import org.jooq.Result
import org.springframework.stereotype.Repository
import java.time.LocalDateTime
Expand Down Expand Up @@ -111,4 +113,31 @@ class StoreVersionLogDao {
.execute()
}
}


fun getStoreComponentVersionLogs(
dslContext: DSLContext,
storeCode: String,
storeType: Byte,
page: Int? = null,
pageSize: Int? = null
): Result<Record3<String, String, LocalDateTime>>? {
val tsb = TStoreBase.T_STORE_BASE
val tsvl = TStoreVersionLog.T_STORE_VERSION_LOG
val baseStep = dslContext.select(tsb.VERSION, tsvl.CONTENT, tsb.UPDATE_TIME)
.from(tsb)
.join(tsvl)
.on(tsb.ID.eq(tsvl.STORE_ID))
.where(
tsb.STORE_CODE.eq(storeCode)
.and(tsb.STORE_TYPE.eq(storeType).and(tsb.STATUS.eq(StoreStatusEnum.RELEASED.name)))
)
if (null != page && null != pageSize) {
baseStep.limit((page - 1) * pageSize, pageSize)
}

return baseStep.fetch()

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ import com.tencent.devops.store.pojo.common.media.StoreMediaInfo
import com.tencent.devops.store.pojo.common.test.StoreTestItem
import com.tencent.devops.store.pojo.common.version.StoreDeskVersionItem
import com.tencent.devops.store.pojo.common.version.StoreShowVersionInfo
import com.tencent.devops.store.pojo.common.version.StoreVersionLogInfo
import org.springframework.beans.factory.annotation.Autowired

@RestResource
Expand Down Expand Up @@ -219,4 +220,22 @@ class UserStoreComponentQueryResourceImpl @Autowired constructor(
): Result<List<StoreMediaInfo>?> {
return storeMediaService.getByCode(storeCode, storeType)
}


override fun getStoreVersionLogs(
userId: String,
storeCode: String,
storeType: StoreTypeEnum,
page: Int,
pageSize: Int
): Result<Page<StoreVersionLogInfo>> {
return storeComponentQueryService.getStoreVersionLogs(
userId = userId,
storeCode = storeCode,
storeType = storeType,
page = page,
pageSize = pageSize
)

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import com.tencent.devops.store.pojo.common.StoreInfoQuery
import com.tencent.devops.store.pojo.common.enums.StoreTypeEnum
import com.tencent.devops.store.pojo.common.version.StoreDeskVersionItem
import com.tencent.devops.store.pojo.common.version.StoreShowVersionInfo
import com.tencent.devops.store.pojo.common.version.StoreVersionLogInfo

interface StoreComponentQueryService {

Expand Down Expand Up @@ -117,4 +118,18 @@ interface StoreComponentQueryService {
storeType: String,
storeCode: String
): StoreShowVersionInfo



/**
* 根据组件id获取组件版本发布日志
*/
fun getStoreVersionLogs(
userId: String,
storeCode: String,
storeType: StoreTypeEnum,
page: Int,
pageSize: Int
): Result<Page<StoreVersionLogInfo>>

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.tencent.devops.store.common.service

import com.tencent.devops.common.api.pojo.Page
import com.tencent.devops.common.api.pojo.Result
import com.tencent.devops.common.api.util.DateTimeUtil
import com.tencent.devops.common.service.utils.SpringContextUtil
import com.tencent.devops.store.common.dao.AbstractStoreCommonDao
import com.tencent.devops.store.pojo.common.enums.StoreTypeEnum
import com.tencent.devops.store.pojo.common.version.StoreVersionLogInfo
import org.jooq.Record3
import java.time.LocalDateTime

abstract class StoreComponentVersonLogService {

companion object {
val HAS_TAG = setOf(StoreTypeEnum.ATOM)
}

abstract fun getStoreComponentVersionLogs(
userId: String,
storeCode: String,
storeType: StoreTypeEnum,
page: Int,
pageSize: Int
): Result<Page<StoreVersionLogInfo>>


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

fun createStoreVersionLogInfo(
record: Record3<String, String, LocalDateTime>,
storeType: StoreTypeEnum
): StoreVersionLogInfo {
return StoreVersionLogInfo(
version = record.value1(),
updateLog = record.value2(),
lastUpdateTime = DateTimeUtil.formatDate(
DateTimeUtil.convertLocalDateTimeToDate(record.value3()),
DateTimeUtil.YYYY_MM_DD_HH_MM_SS
),
tag = generateTag(storeType, record.value1(), record.value3())
)
}

private fun generateTag(storeType: StoreTypeEnum, version: String, updateTime: LocalDateTime): String {
return if (storeType in HAS_TAG) {
val updateTimeStr = DateTimeUtil.formatDate(
DateTimeUtil.convertLocalDateTimeToDate(updateTime),
DateTimeUtil.YYYY_MM_DD
)
"prod-v${version}-$updateTimeStr"
} else {
" "
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ import com.tencent.devops.store.common.service.ClassifyService
import com.tencent.devops.store.common.service.StoreCommentService
import com.tencent.devops.store.common.service.StoreCommonService
import com.tencent.devops.store.common.service.StoreComponentQueryService
import com.tencent.devops.store.common.service.StoreComponentVersonLogService
import com.tencent.devops.store.common.service.StoreHonorService
import com.tencent.devops.store.common.service.StoreIndexManageService
import com.tencent.devops.store.common.service.StoreLabelService
Expand Down Expand Up @@ -95,6 +96,7 @@ import com.tencent.devops.store.pojo.common.enums.StoreStatusEnum
import com.tencent.devops.store.pojo.common.enums.StoreTypeEnum
import com.tencent.devops.store.pojo.common.version.StoreDeskVersionItem
import com.tencent.devops.store.pojo.common.version.StoreShowVersionInfo
import com.tencent.devops.store.pojo.common.version.StoreVersionLogInfo
import com.tencent.devops.store.pojo.common.version.VersionModel
import org.jooq.DSLContext
import org.jooq.Record
Expand Down Expand Up @@ -184,6 +186,10 @@ class StoreComponentQueryServiceImpl : StoreComponentQueryService {
@Autowired
lateinit var labelDao: LabelDao

@Autowired
lateinit var storeComponentVersonLogService: StoreComponentVersonLogService


companion object {
private val executor = Executors.newFixedThreadPool(30)
}
Expand Down Expand Up @@ -1086,4 +1092,19 @@ class StoreComponentQueryServiceImpl : StoreComponentQueryService {
else -> str
}
}


/**
* 根据组件id获取组件版本日志
*/
override fun getStoreVersionLogs(
userId: String,
storeCode: String,
storeType: StoreTypeEnum,
page: Int,
pageSize: Int
): Result<Page<StoreVersionLogInfo>> {
return storeComponentVersonLogService.getStoreComponentVersionLogs(userId, storeCode, storeType,page,pageSize)
}

}
Loading