当前位置:网站首页>【微服务|openfeign】使用openfeign远程调用文件上传接口
【微服务|openfeign】使用openfeign远程调用文件上传接口
2022-07-04 03:47:00 【步尔斯特】
服务提供者-文件上传接口
@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.class, configuration = 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("提交成功");
}
边栏推荐
- 选择排序与冒泡排序模板
- mysql数据库的存储
- AAAI2022 | Word Embeddings via Causal Inference: Gender Bias Reducing and Semantic Information Preserving
- [paddleseg source code reading] normalize operation of paddleseg transform
- SQL语句加强练习(MySQL8.0为例)
- 微信公众号网页授权
- 【读书会第十三期】视频文件的封装格式
- Katalon中控件的参数化
- “软硬皆施”,助力建成新型云计算数据中心
- 潘多拉 IOT 开发板学习(HAL 库)—— 实验6 独立看门狗实验(学习笔记)
猜你喜欢
![[PaddleSeg 源码阅读] PaddleSeg 自定义数据类](/img/88/37c535b371486db545abc392a685af.png)
[PaddleSeg 源码阅读] PaddleSeg 自定义数据类

Typical applications of minimum spanning tree

Mindmanager2022 efficient and easy to use office mind map MindManager

I Build a simple microservice project

What kind of experience is it when the Institute earns 20000 yuan a month!

Getting started with the go language is simple: go implements the Caesar password
![Cesiumjs 2022^ source code interpretation [0] - article directory and source code engineering structure](/img/ba/c1d40de154344ccc9f2fd1dd4cb12f.png)
Cesiumjs 2022^ source code interpretation [0] - article directory and source code engineering structure

拼夕夕二面:说说布隆过滤器与布谷鸟过滤器?应用场景?我懵了。。

1289_FreeRTOS中vTaskSuspend()接口实现分析

深度优先搜索简要讲解(附带基础题)
随机推荐
Redis cluster uses Lua script. Lua script can also be used for different slots
智慧地铁| 云计算为城市地铁交通注入智慧
MySQL one master multiple slaves + linear replication
Cesiumjs 2022^ source code interpretation [0] - article directory and source code engineering structure
A review of reverse reinforcement learning at Virginia Tech (VT)
Brief explanation of depth first search (with basic questions)
idea修改主体颜色
Class summation, shortest row
渗透实战-SQLServer提权
基于PHP的轻量企业销售管理系统
支持首次触发的 Go Ticker
数据库SQL语句汇总,持续更新......
Which product is better if you want to go abroad to insure Xinguan?
LevelDB源码解读-SkipList
Future源碼一觀-JUC系列
Support the first triggered go ticker
Reduce function under functools
还原窗口位置的微妙之处
[PaddleSeg 源码阅读] PaddleSeg 自定义数据类
Katalon framework tests web (XXI) to obtain element attribute assertions