当前位置:网站首页>【微服务|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("提交成功");
}
边栏推荐
- 1289_FreeRTOS中vTaskSuspend()接口实现分析
- Penetration practice - sqlserver empowerment
- 潘多拉 IOT 开发板学习(HAL 库)—— 实验6 独立看门狗实验(学习笔记)
- Zlmediakit compilation and webrtc push-pull flow testing
- SQL语句加强练习(MySQL8.0为例)
- Objective-C description method and type method
- Cesiumjs 2022^ source code interpretation [0] - article directory and source code engineering structure
- 【CSRF-01】跨站请求伪造漏洞基础原理及攻防
- How much does it cost to open a futures account in China? Where is it safe to open an account at present?
- JVM family -- heap analysis
猜你喜欢
PostgreSQL users cannot create table configurations by themselves
Getting started with the go language is simple: go implements the Caesar password
02 ls 命令的具体实现
Katalon中控件的参数化
Activiti7 task service - process variables (setvariable and setvariablelocal)
Defensive programming skills
渗透实战-guest账户-mimikatz-向日葵-sql提权-离线解密
10 reasons for not choosing to use free virtual hosts
Reduce function under functools
The difference between bagging and boosting in machine learning
随机推荐
Redis cluster view the slots of each node
Cesiumjs 2022^ source code interpretation [0] - article directory and source code engineering structure
idea修改主体颜色
[paddleseg source code reading] normalize operation of paddleseg transform
JVM family -- monitoring tools
Storage of MySQL database
Object oriented -- encapsulation, inheritance, polymorphism
LNK2038 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MDd_DynamicDebug”(main.obj 中)
*. No main manifest attribute in jar
SQL语句加强练习(MySQL8.0为例)
Wechat official account web page authorization
My opinion on how to effectively telecommute | community essay solicitation
Detailed explanation of PPTC self recovery fuse
投资深度思考
Exercices de renforcement des déclarations SQL (MySQL 8.0 par exemple)
Select sorting and bubble sorting template
How was my life in 2021
[Yugong series] go teaching course 002 go language environment installation in July 2022
疫情来袭--远程办公之思考|社区征文
logistic regression