【微服务|openfeign】使用openfeign远程调用文件上传接口

服务提供者-文件上传接口

@PostMapping("/saveFile")
@Transactional
@ApiOperation(value = "文件保存", response = ResponseEntity.class)
@ApiImplicitParams(
        
{
                @ApiImplicitParam(name = "fileUploadModel", value = "文件上传信息",
                        required = true, dataType = "String", paramType = "query"),
                @ApiImplicitParam(name = "uploadFiles", value = "文件流",
                        required = true, allowMultiple = true, dataType = "__file", paramType = "query")
        })
public ResponseEntity<Object> saveFile(@RequestParam(value = "fileUploadModel", required = false) String fileUploadModel,
                                       @RequestParam(value = "uploadFiles", required = false) List<MultipartFile> uploadFiles) 
{

    FileUploadModel model = JSON.parseObject(fileUploadModel, FileUploadModel.class);
//        JSON.toJSONString()
    //附件
    List<OfficeAttach> uploadFileList = new ArrayList<>();

    if (uploadFiles != null && uploadFiles.size() > 0) {
        uploadFileList = addFileInfoDto(uploadFiles, model);
//            this.fileService.saveOfficeAttachList(uploadFileList);
        fileService.saveBatch(uploadFileList);
    }
    return ResponseEntity.ok("文件上传成功");
}

FeignClient

@FeignClient(name = "${custom.feign.file.name}", url = "${custom.feign.file.url}", fallback = FileFeignClientFallBack.classconfiguration = FileFeignClient.MultipartSupportConfig.class)
public interface FileFeignClient 
{

    @RequestMapping(value = "/upload/saveFile", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResponseEntity<Object> fileUpload(@RequestParam(value = "fileUploadModel", required = false) String fileUploadModel,
                                             @RequestPart(value = "uploadFiles", required = false) List<MultipartFile> uploadFiles)
;

消费者-通过FeignClient调用文件上传接口

/**
 * @Description: 1、调用资产服务插入申请资产信息
 * 2、插入需求申请信息至itsm_request_info表,状态直接写死为IT待接单
 * 3、调用文件服务上传文件
 * @Param:
 * @return:
 * @Author: 步尔斯特
 * @Date: 2022/7/3
 */

@PostMapping("/commitRequest")
@Idempotent
@GlobalTransactional
@ApiOperation(value = "需求申请提交", response = ResultModel.class)
@ApiImplicitParams(
        
{
                @ApiImplicitParam(name = "requestInfo", value = "需求申请信息",
                        required = true, dataType = "String", paramType = "query"),
                @ApiImplicitParam(name = "assetModelList", value = "资产申请信息",
                        required = true, dataType = "String", paramType = "query"),
                @ApiImplicitParam(name = "uploadFiles", value = "上传文件信息",
                        required = true, allowMultiple = true, dataType = "__file", paramType = "query")
        })
public ResultModel commitRequest(@RequestParam(value = "requestInfo", required = false) String requestInfoModel,
                                 @RequestParam(value = "assetModelList", required = false) String assetRequestModel,
                                 @RequestParam(value = "uploadFiles", required = false) List<MultipartFile> uploadFiles,
                                 HttpServletRequest request) 
{

    RequestInfo requestInfo = JSON.parseObject(requestInfoModel, RequestInfo.class);
    List<AssetRequestModel> applyModelList = JSON.parseArray(assetRequestModel, AssetRequestModel.class);
    String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
    String userId = request.getHeader("userId");

    //issuId
    String issueId = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());

    //path
    //调用资产服务插入申请资产信息
    FileUploadModel uploadModel = new FileUploadModel();
    uploadModel.setUploadPath("/request/");
    uploadModel.setAttachType("需求申请");
    uploadModel.setCreateId(request.getHeader("userId"));
    uploadModel.setIssueId(issueId);
    uploadModel.setRemark(requestInfo.getIssueContent());
    uploadModel.setObjectType("office端");
    uploadModel.setRoleId("role-office");
    uploadModel.setRoleType("role-type");

    for (AssetRequestModel requestModel : applyModelList) {
        requestModel.setIssueId(issueId).setOperateType("2").setCreateId(request.getHeader("userId"));

    }
    assetFeignClient.saveApply(applyModelList);

    //保存需求申请信息
    requestInfo.setIssueId(issueId);
    requestInfo.setGuid(UUID.randomUUID().toString());
    requestInfo.setDelFlag("N");
    requestInfo.setStatus("IT待接单");
    requestInfo.setCreateTime(time);
    requestInfo.setUpdateTime(time);
    requestInfo.setCreateId(userId);
    requestInfo.setUpdateId(userId);
    requestService.save(requestInfo);

    //调用文件服务上传文件

    String fileUploadModel = JSON.toJSONString(uploadModel);

    feignClient.fileUpload(fileUploadModel, uploadFiles);

    return ResultModel.ok("提交成功");
}


原文始发于微信公众号(步尔斯特):【微服务|openfeign】使用openfeign远程调用文件上传接口

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/48101.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!