feat: implement batch move and delete functionality for documents and FAQs

This commit is contained in:
mlogclub
2026-06-02 16:13:08 +08:00
parent 1bdc1cb2b6
commit 842f827c86
12 changed files with 727 additions and 2 deletions
@@ -144,3 +144,38 @@ func KnowledgeDocumentPostDelete(ctx *gin.Context) {
}
httpx.WriteJSON(ctx, nil)
}
func KnowledgeDocumentPostBatch_move(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionKnowledgeDocumentUpdate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.BatchMoveKnowledgeDocumentRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
if err := services.KnowledgeDocumentService.BatchMoveKnowledgeDocuments(req, operator); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, nil)
}
func KnowledgeDocumentPostBatch_delete(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionKnowledgeDocumentDelete); err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.BatchDeleteKnowledgeDocumentRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
if err := services.KnowledgeDocumentService.BatchDeleteKnowledgeDocuments(req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, nil)
}
@@ -192,6 +192,41 @@ func KnowledgeFAQPostDelete(ctx *gin.Context) {
httpx.WriteJSON(ctx, nil)
}
func KnowledgeFAQPostBatch_move(ctx *gin.Context) {
operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionKnowledgeFAQUpdate)
if err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.BatchMoveKnowledgeFAQRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
if err := services.KnowledgeFAQService.BatchMoveKnowledgeFAQs(req, operator); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, nil)
}
func KnowledgeFAQPostBatch_delete(ctx *gin.Context) {
if _, err := services.AuthService.RequirePermission(ctx, constants.PermissionKnowledgeFAQDelete); err != nil {
httpx.WriteJSON(ctx, err)
return
}
req := request.BatchDeleteKnowledgeFAQRequest{}
if err := params.ReadJSON(ctx, &req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
if err := services.KnowledgeFAQService.BatchDeleteKnowledgeFAQs(req); err != nil {
httpx.WriteJSON(ctx, err)
return
}
httpx.WriteJSON(ctx, nil)
}
func writeKnowledgeFAQExcelFile(ctx *gin.Context, file *response.KnowledgeFAQExportedFile) {
ctx.Header("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, file.Filename))
ctx.Header("Cache-Control", "no-store")