feat: 新增了几个知识接口

createNewKnowledgeFolder
updateKnowledgeStructure
deleteKnowledge
starKnowledge
master
ArgonarioD 2023-07-06 18:06:44 +08:00
parent 9d495a8dbc
commit 4b9264b6b9
3 changed files with 65 additions and 8 deletions

View File

@ -5,4 +5,6 @@ java -Djarmode=layertools `
extract --destination build/extracted extract --destination build/extracted
docker build -f .\Dockerfile -t auto/aics_main:latest . docker build -f .\Dockerfile -t auto/aics_main:latest .
echo 'saving...'
docker save -o ..\docker\aics_main.tar auto/aics_main:latest
pause pause

View File

@ -4,26 +4,25 @@ import cn.dev33.satoken.annotation.SaCheckRole
import cn.edu.hfut.auto.knowledge.config.COSClientWrapper import cn.edu.hfut.auto.knowledge.config.COSClientWrapper
import cn.edu.hfut.auto.knowledge.entity.* import cn.edu.hfut.auto.knowledge.entity.*
import cn.edu.hfut.auto.knowledge.entity.rpc.FileTicket 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.entity.vo.KnowledgeFileUploadVO
import cn.edu.hfut.auto.knowledge.exception.BusinessError import cn.edu.hfut.auto.knowledge.exception.BusinessError
import cn.edu.hfut.auto.knowledge.exception.ErrorCode import cn.edu.hfut.auto.knowledge.exception.ErrorCode
import cn.edu.hfut.auto.knowledge.repository.KnowledgeFileAttributeRepository import cn.edu.hfut.auto.knowledge.repository.KnowledgeFileAttributeRepository
import cn.edu.hfut.auto.knowledge.repository.KnowledgeRepository import cn.edu.hfut.auto.knowledge.repository.KnowledgeRepository
import cn.edu.hfut.auto.knowledge.util.fileSuffix 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 com.qcloud.cos.model.ciModel.job.DocHtmlRequest
import kotlinx.coroutines.future.await import kotlinx.coroutines.future.await
import org.apache.kafka.common.KafkaException import org.apache.kafka.common.KafkaException
import org.babyfish.jimmer.kt.new import org.babyfish.jimmer.kt.new
import org.babyfish.jimmer.sql.kt.fetcher.newFetcher
import org.springframework.kafka.core.KafkaTemplate import org.springframework.kafka.core.KafkaTemplate
import org.springframework.transaction.annotation.Transactional import org.springframework.transaction.annotation.Transactional
import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.*
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 java.time.LocalDateTime import java.time.LocalDateTime
import java.util.UUID import java.util.*
const val UPLOAD_FILE_TOPIC = "upload_file" const val UPLOAD_FILE_TOPIC = "upload_file"
@ -33,7 +32,8 @@ class KnowledgeController(
private val kafkaTemplate: KafkaTemplate<String, Any?>, private val kafkaTemplate: KafkaTemplate<String, Any?>,
private val knowledgeRepository: KnowledgeRepository, private val knowledgeRepository: KnowledgeRepository,
private val knowledgeFileAttributeRepository: KnowledgeFileAttributeRepository, private val knowledgeFileAttributeRepository: KnowledgeFileAttributeRepository,
private val cosClientWrapper: COSClientWrapper private val cosClientWrapper: COSClientWrapper,
private val objectMapper: ObjectMapper
) { ) {
@GetMapping("/{knowledgeId}") @GetMapping("/{knowledgeId}")
@ -100,4 +100,54 @@ class KnowledgeController(
} }
?: throw BusinessError(ErrorCode.RESOURCE_NOT_FOUND) ?: 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)
}
} }

View File

@ -9,4 +9,9 @@ data class KnowledgeFileUploadVO(
val md5: String, val md5: String,
val tags: List<Long>, val tags: List<Long>,
val parentId: UUID? val parentId: UUID?
)
data class KnowledgeBriefVO(
val name: String,
val parentId: UUID?
) )