From 4b9264b6b9aaba5ea0001f3698592f83786894b0 Mon Sep 17 00:00:00 2001 From: ArgonarioD Date: Thu, 6 Jul 2023 18:06:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E4=BA=86=E5=87=A0?= =?UTF-8?q?=E4=B8=AA=E7=9F=A5=E8=AF=86=E6=8E=A5=E5=8F=A3=20createNewKnowle?= =?UTF-8?q?dgeFolder=20updateKnowledgeStructure=20deleteKnowledge=20starKn?= =?UTF-8?q?owledge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- buildDockerImage.ps1 | 2 + .../controller/KnowledgeController.kt | 66 ++++++++++++++++--- .../auto/knowledge/entity/vo/KnowledgeVO.kt | 5 ++ 3 files changed, 65 insertions(+), 8 deletions(-) diff --git a/buildDockerImage.ps1 b/buildDockerImage.ps1 index 961c114..1729867 100644 --- a/buildDockerImage.ps1 +++ b/buildDockerImage.ps1 @@ -5,4 +5,6 @@ java -Djarmode=layertools ` extract --destination build/extracted docker build -f .\Dockerfile -t auto/aics_main:latest . +echo 'saving...' +docker save -o ..\docker\aics_main.tar auto/aics_main:latest pause \ No newline at end of file diff --git a/src/main/kotlin/cn/edu/hfut/auto/knowledge/controller/KnowledgeController.kt b/src/main/kotlin/cn/edu/hfut/auto/knowledge/controller/KnowledgeController.kt index 9d40e7a..ddbac8b 100644 --- a/src/main/kotlin/cn/edu/hfut/auto/knowledge/controller/KnowledgeController.kt +++ b/src/main/kotlin/cn/edu/hfut/auto/knowledge/controller/KnowledgeController.kt @@ -4,26 +4,25 @@ import cn.dev33.satoken.annotation.SaCheckRole import cn.edu.hfut.auto.knowledge.config.COSClientWrapper import cn.edu.hfut.auto.knowledge.entity.* import cn.edu.hfut.auto.knowledge.entity.rpc.FileTicket +import cn.edu.hfut.auto.knowledge.entity.vo.KnowledgeBriefVO import cn.edu.hfut.auto.knowledge.entity.vo.KnowledgeFileUploadVO import cn.edu.hfut.auto.knowledge.exception.BusinessError import cn.edu.hfut.auto.knowledge.exception.ErrorCode import cn.edu.hfut.auto.knowledge.repository.KnowledgeFileAttributeRepository import cn.edu.hfut.auto.knowledge.repository.KnowledgeRepository import cn.edu.hfut.auto.knowledge.util.fileSuffix +import cn.edu.hfut.auto.knowledge.util.getLoginUser +import com.fasterxml.jackson.databind.ObjectMapper import com.qcloud.cos.model.ciModel.job.DocHtmlRequest import kotlinx.coroutines.future.await import org.apache.kafka.common.KafkaException import org.babyfish.jimmer.kt.new +import org.babyfish.jimmer.sql.kt.fetcher.newFetcher import org.springframework.kafka.core.KafkaTemplate import org.springframework.transaction.annotation.Transactional -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.PathVariable -import org.springframework.web.bind.annotation.PostMapping -import org.springframework.web.bind.annotation.RequestBody -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController +import org.springframework.web.bind.annotation.* import java.time.LocalDateTime -import java.util.UUID +import java.util.* const val UPLOAD_FILE_TOPIC = "upload_file" @@ -33,7 +32,8 @@ class KnowledgeController( private val kafkaTemplate: KafkaTemplate, private val knowledgeRepository: KnowledgeRepository, private val knowledgeFileAttributeRepository: KnowledgeFileAttributeRepository, - private val cosClientWrapper: COSClientWrapper + private val cosClientWrapper: COSClientWrapper, + private val objectMapper: ObjectMapper ) { @GetMapping("/{knowledgeId}") @@ -100,4 +100,54 @@ class KnowledgeController( } ?: throw BusinessError(ErrorCode.RESOURCE_NOT_FOUND) } + + @PostMapping + suspend fun createNewKnowledgeFolder(@RequestBody vo: KnowledgeBriefVO) { + knowledgeRepository.insert(new(Knowledge::class).by { + name = vo.name + vo.parentId?.let { + parent().apply { + id = it + } + } + }) + } + + @PutMapping("/{knowledgeId}") + suspend fun updateKnowledgeStructure(@PathVariable knowledgeId: UUID, @RequestBody vo: KnowledgeBriefVO) { + knowledgeRepository.update(new(Knowledge::class).by { + id = knowledgeId + name = vo.name + vo.parentId?.let { + parent().apply { + id = it + } + } ?: let { + parent = null + } + }) + } + + @DeleteMapping("/{knowledgeId}") + suspend fun deleteKnowledge(@PathVariable knowledgeId: UUID) { + knowledgeRepository.deleteById(knowledgeId) + } + + @PutMapping("/{knowledgeId}/star") + suspend fun starKnowledge(@PathVariable knowledgeId: UUID, active: Boolean) { + val loginUserId = getLoginUser(objectMapper).id + knowledgeRepository.findNullable(knowledgeId, newFetcher(Knowledge::class).by { + knowledgeFileAttribute { starers() } + }) + ?.knowledgeFileAttribute + ?.let { attr -> + knowledgeFileAttributeRepository.update(new(KnowledgeFileAttribute::class).by { + starers = attr.starers.filterNot { it.id == loginUserId } + if (active) { + starers().addBy { id = loginUserId } + } + }) + } + ?: throw BusinessError(ErrorCode.RESOURCE_NOT_FOUND) + } } \ No newline at end of file diff --git a/src/main/kotlin/cn/edu/hfut/auto/knowledge/entity/vo/KnowledgeVO.kt b/src/main/kotlin/cn/edu/hfut/auto/knowledge/entity/vo/KnowledgeVO.kt index c630509..9d388e8 100644 --- a/src/main/kotlin/cn/edu/hfut/auto/knowledge/entity/vo/KnowledgeVO.kt +++ b/src/main/kotlin/cn/edu/hfut/auto/knowledge/entity/vo/KnowledgeVO.kt @@ -9,4 +9,9 @@ data class KnowledgeFileUploadVO( val md5: String, val tags: List, val parentId: UUID? +) + +data class KnowledgeBriefVO( + val name: String, + val parentId: UUID? ) \ No newline at end of file