AttachmentController.java 2.42 KB
package isa.qa.controller;

import isa.qa.core.Result;
import isa.qa.core.ResultGenerator;
import isa.qa.dto.request.AttachmentRequestDTO;
import isa.qa.service.AttachmentService;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import java.io.IOException;
import java.util.List;

import static isa.qa.core.ResultCodeEnums.INTERNAL_SERVER_ERROR;

@RestController
@RequestMapping("/api/attachments")
@AllArgsConstructor
public class AttachmentController {

    /**
     * logger
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(AttachmentController.class);

    private final AttachmentService attachmentService;

    @PostMapping("/actions/upload")
    public Result uploadFile(@RequestHeader("Authorization") String accessKey, @RequestPart MultipartFile file) {
        LOGGER.info("API 调用 :App client upload a new attachment");

        try {
            return ResultGenerator.genSuccessResult(attachmentService.uploadFile(accessKey, file));
        } catch (IOException e) {
            return ResultGenerator.genFailResult(INTERNAL_SERVER_ERROR, "Save file occurs error");
        }
    }

    @PostMapping("/actions/batchUpload")
    public Result uploadFiles(@RequestHeader("Authorization") String accessKey, @RequestPart List<MultipartFile> files) {
        LOGGER.info("API 调用 :App client batch upload attachments");

        try {
            return ResultGenerator.genSuccessResult(attachmentService.uploadFiles(accessKey, files));
        } catch (IOException e) {
            return ResultGenerator.genFailResult(INTERNAL_SERVER_ERROR, "Save file occurs error");
        }
    }

    @DeleteMapping("/actions/delete")
    public Result deleteFile(@RequestHeader("Authorization") String accessKey, @Valid @RequestBody AttachmentRequestDTO requestDTO) {
        LOGGER.info("API 调用 :APP client delete the attachment");

        return ResultGenerator.genSuccessResult(attachmentService.deleteFile(accessKey, requestDTO.getName()));
    }

    @DeleteMapping("/managers/actions/delete")
    public Result deleteFile(@Valid @RequestBody AttachmentRequestDTO requestDTO) {
        LOGGER.info("API 调用 :Manager delete the file");

        return ResultGenerator.genSuccessResult(attachmentService.deleteFile(requestDTO.getName()));
    }
}