文件上传对接操作日志记录
This commit is contained in:
parent
05b2739f0c
commit
b0a374c800
@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
/**
|
||||
* OSS 启动类
|
||||
@ -14,6 +15,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
*/
|
||||
@Slf4j
|
||||
@MapperScan(basePackages = {"cn.axzo.oss.dal.mapper"})
|
||||
@EnableFeignClients(basePackages = {"cn.axzo.log.platform.client"})
|
||||
@SpringBootApplication(scanBasePackages = {"cn.axzo.oss"})
|
||||
public class Bootstrap {
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.oss.client.controller;
|
||||
|
||||
import cn.axzo.core.utils.converter.BeanConverter;
|
||||
import cn.axzo.framework.auth.domain.ContextInfo;
|
||||
import cn.axzo.oss.common.utils.BeanConvertUtil;
|
||||
import cn.axzo.oss.http.api.ServerFileServiceApi;
|
||||
import cn.axzo.oss.http.model.*;
|
||||
@ -10,10 +11,12 @@ import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto;
|
||||
import cn.axzo.oss.manager.api.dto.request.ServerFileUploadDto;
|
||||
import cn.axzo.oss.service.api.FileService;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
@ -30,18 +33,27 @@ public class ServerFileController implements ServerFileServiceApi {
|
||||
@Autowired
|
||||
private FileService fileService;
|
||||
|
||||
@Autowired
|
||||
private HttpServletRequest httpServletRequest;
|
||||
|
||||
@Override
|
||||
public CommonResponse<ServerFileUploadResponse> upload(@Valid @RequestBody ServerFileUploadRequest request) {
|
||||
ServerFileUploadDto dto = BeanConvertUtil.copyBean(request, ServerFileUploadDto.class);
|
||||
request.setFileContent(null);
|
||||
return CommonResponse.success(BeanConverter.convert(fileService.upload(dto), ServerFileUploadResponse.class));
|
||||
// 获取feign调用请求头携带的用户信息
|
||||
String contextInfoLiteJsonStr = httpServletRequest.getHeader("X-CONTEXT-INFO-LITE");
|
||||
ContextInfo.LiteSaasContext liteSaasContext = JSONUtil.toBean(contextInfoLiteJsonStr, ContextInfo.LiteSaasContext.class);
|
||||
return CommonResponse.success(BeanConverter.convert(fileService.upload(dto, liteSaasContext), ServerFileUploadResponse.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResponse<FileInformationResponse> uploadV2(ServerFileUploadRequest request) {
|
||||
ServerFileUploadDto dto = BeanConvertUtil.copyBean(request, ServerFileUploadDto.class);
|
||||
request.setFileContent(null);
|
||||
return CommonResponse.success(BeanConverter.convert(fileService.uploadV2(dto), FileInformationResponse.class));
|
||||
// 获取feign调用请求头携带的用户信息
|
||||
String contextInfoLiteJsonStr = httpServletRequest.getHeader("X-CONTEXT-INFO-LITE");
|
||||
ContextInfo.LiteSaasContext liteSaasContext = JSONUtil.toBean(contextInfoLiteJsonStr, ContextInfo.LiteSaasContext.class);
|
||||
return CommonResponse.success(BeanConverter.convert(fileService.uploadV2(dto, liteSaasContext), FileInformationResponse.class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package cn.axzo.oss.client.controller;
|
||||
|
||||
import cn.axzo.core.utils.converter.BeanConverter;
|
||||
import cn.axzo.framework.auth.domain.ContextInfo;
|
||||
import cn.axzo.framework.auth.domain.ContextInfoHolder;
|
||||
import cn.axzo.oss.client.vo.FileInformationVo;
|
||||
import cn.axzo.oss.client.vo.FindFileUrlVo;
|
||||
import cn.axzo.oss.client.vo.WebFileUploadVo;
|
||||
@ -38,17 +40,46 @@ public class WebFileController {
|
||||
public CommonResponse<WebFileUploadVo> upload(@Valid @RequestParam String appCode,
|
||||
@Valid @RequestParam String bizScene,
|
||||
@Valid @RequestParam MultipartFile file) {
|
||||
//获取用户信息
|
||||
ContextInfo.LiteSaasContext liteSaasContext = null;
|
||||
ContextInfo contextInfo = ContextInfoHolder.get();
|
||||
if (contextInfo != null) {
|
||||
liteSaasContext = contextInfo.lite();
|
||||
}
|
||||
ServerFileUploadDto fileUploadDto = ServerFileUploadDto.builder()
|
||||
.appCode(appCode)
|
||||
.bizScene(bizScene)
|
||||
.fileName(file.getOriginalFilename())
|
||||
.fileContent(file.getBytes())
|
||||
.build();
|
||||
ServerFileUploadResponse response = fileService.upload(fileUploadDto);
|
||||
ServerFileUploadResponse response = fileService.upload(fileUploadDto, liteSaasContext);
|
||||
WebFileUploadVo result = BeanConvertUtil.copyBean(response, WebFileUploadVo.class);
|
||||
return CommonResponse.success(result);
|
||||
}
|
||||
|
||||
@PostMapping("/v2/file")
|
||||
@CrossOrigin
|
||||
@SneakyThrows
|
||||
public CommonResponse<FileInformationVo> uploadV2(@Valid @RequestParam String appCode,
|
||||
@Valid @RequestParam String bizScene,
|
||||
@Valid @RequestParam MultipartFile file) {
|
||||
//获取用户信息
|
||||
ContextInfo.LiteSaasContext liteSaasContext = null;
|
||||
ContextInfo contextInfo = ContextInfoHolder.get();
|
||||
if (contextInfo != null) {
|
||||
liteSaasContext = contextInfo.lite();
|
||||
}
|
||||
ServerFileUploadDto fileUploadDto = ServerFileUploadDto.builder()
|
||||
.appCode(appCode)
|
||||
.bizScene(bizScene)
|
||||
.fileName(file.getOriginalFilename())
|
||||
.fileContent(file.getBytes())
|
||||
.build();
|
||||
FileInformationResponse response = fileService.uploadV2(fileUploadDto, liteSaasContext);
|
||||
FileInformationVo result = BeanConvertUtil.copyBean(response, FileInformationVo.class);
|
||||
return CommonResponse.success(result);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@PostMapping("/v1/file/getUrl")
|
||||
@CrossOrigin
|
||||
@ -61,21 +92,4 @@ public class WebFileController {
|
||||
List<FindFileUrlResponse> response = fileService.findFileUrl(dto);
|
||||
return CommonResponse.success(BeanConverter.convert(response, FindFileUrlVo.class));
|
||||
}
|
||||
|
||||
@PostMapping("/v2/file")
|
||||
@CrossOrigin
|
||||
@SneakyThrows
|
||||
public CommonResponse<FileInformationVo> uploadV2(@Valid @RequestParam String appCode,
|
||||
@Valid @RequestParam String bizScene,
|
||||
@Valid @RequestParam MultipartFile file) {
|
||||
ServerFileUploadDto fileUploadDto = ServerFileUploadDto.builder()
|
||||
.appCode(appCode)
|
||||
.bizScene(bizScene)
|
||||
.fileName(file.getOriginalFilename())
|
||||
.fileContent(file.getBytes())
|
||||
.build();
|
||||
FileInformationResponse response = fileService.uploadV2(fileUploadDto);
|
||||
FileInformationVo result = BeanConvertUtil.copyBean(response, FileInformationVo.class);
|
||||
return CommonResponse.success(result);
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,6 +22,10 @@
|
||||
<groupId>cn.axzo.oss</groupId>
|
||||
<artifactId>oss-manager-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.platform</groupId>
|
||||
<artifactId>axzo-log-api</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.oss.service.api;
|
||||
|
||||
import cn.axzo.framework.auth.domain.ContextInfo;
|
||||
import cn.axzo.oss.manager.api.dto.request.FindFileKeyDto;
|
||||
import cn.axzo.oss.manager.api.dto.request.FindFileUrlDto;
|
||||
import cn.axzo.oss.manager.api.dto.request.ServerFileDeleteDto;
|
||||
@ -31,11 +32,11 @@ public interface FileService {
|
||||
*
|
||||
* @param request
|
||||
*/
|
||||
ServerFileUploadResponse upload(ServerFileUploadDto request);
|
||||
ServerFileUploadResponse upload(ServerFileUploadDto request, ContextInfo.LiteSaasContext liteSaasContext);
|
||||
|
||||
List<FindFileUrlResponse> findFileUrl(FindFileUrlDto dto);
|
||||
|
||||
List<FindFileKeyResponse> findFileKey(FindFileKeyDto dto);
|
||||
|
||||
FileInformationResponse uploadV2(ServerFileUploadDto request);
|
||||
FileInformationResponse uploadV2(ServerFileUploadDto request, ContextInfo.LiteSaasContext liteSaasContext);
|
||||
}
|
||||
|
||||
@ -1,5 +1,10 @@
|
||||
package cn.axzo.oss.service.impl;
|
||||
|
||||
import cn.axzo.framework.auth.domain.ContextInfo;
|
||||
import cn.axzo.framework.auth.domain.ContextInfoHolder;
|
||||
import cn.axzo.framework.auth.domain.UserInfo;
|
||||
import cn.axzo.log.platform.client.LogPlatClient;
|
||||
import cn.axzo.log.platform.client.model.OperateLogReq;
|
||||
import cn.axzo.oss.common.constans.CommonConstants;
|
||||
import cn.axzo.oss.common.constans.CommonConstants.FileStatus;
|
||||
import cn.axzo.oss.common.constans.CommonConstants.TableDelete;
|
||||
@ -25,13 +30,17 @@ import cn.axzo.oss.manager.api.dto.response.FindFileKeyResponse;
|
||||
import cn.axzo.oss.manager.api.dto.response.FindFileUrlResponse;
|
||||
import cn.axzo.oss.manager.api.dto.response.ServerFileUploadResponse;
|
||||
import cn.axzo.oss.service.api.FileService;
|
||||
import cn.azxo.framework.common.utils.LogUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -60,6 +69,12 @@ public class FileServiceImpl implements FileService {
|
||||
@Autowired
|
||||
private FileUploadConfigManager fileUploadConfigManager;
|
||||
|
||||
@Autowired
|
||||
private Environment environment;
|
||||
|
||||
|
||||
@Autowired
|
||||
private LogPlatClient logPlatClient;
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
@ -113,17 +128,47 @@ public class FileServiceImpl implements FileService {
|
||||
* @param dto
|
||||
*/
|
||||
@Override
|
||||
public ServerFileUploadResponse upload(ServerFileUploadDto dto) {
|
||||
public ServerFileUploadResponse upload(ServerFileUploadDto dto, ContextInfo.LiteSaasContext liteSaasContext) {
|
||||
File ossFile = uploadFileAndGetFile(dto);
|
||||
//操作日志记录
|
||||
operateLog(JSON.toJSONString(dto), liteSaasContext);
|
||||
return setResponse(ossFile);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileInformationResponse uploadV2(ServerFileUploadDto request) {
|
||||
public FileInformationResponse uploadV2(ServerFileUploadDto request, ContextInfo.LiteSaasContext liteSaasContext) {
|
||||
File ossFile = uploadFileAndGetFile(request);
|
||||
//操作日志记录
|
||||
operateLog(JSON.toJSONString(request), liteSaasContext);
|
||||
return setFileInfoResp(ossFile);
|
||||
}
|
||||
|
||||
/**
|
||||
* 操作日志记录
|
||||
*/
|
||||
private void operateLog(String param, ContextInfo.LiteSaasContext liteSaasContext) {
|
||||
if (liteSaasContext == null || liteSaasContext.getIdentityId() == null || liteSaasContext.getIdentityType() == null) {
|
||||
log.warn("获取用户上下文信息失败");
|
||||
return;
|
||||
}
|
||||
//记录日志
|
||||
try {
|
||||
OperateLogReq log = OperateLogReq.builder()
|
||||
.serviceName(environment.getProperty("spring.application.name"))
|
||||
.featureName("oss文件上传")
|
||||
.operateTime(new Date())
|
||||
.identityId(liteSaasContext.getIdentityId())
|
||||
.identityType(liteSaasContext.getIdentityType())
|
||||
.operateParam(param)
|
||||
.workspaceId(liteSaasContext.getWorkspaceId())
|
||||
.operateType(1)
|
||||
.build();
|
||||
logPlatClient.createOperateLog(log);
|
||||
} catch (Exception e) {
|
||||
log.warn("服务间调用异常-发送日志失败: errMsg={}.", e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private File uploadFileAndGetFile(ServerFileUploadDto dto) {
|
||||
log.info("update fileName:{},appCode:{},bizScene:{}",
|
||||
dto.getFileName(), dto.getAppCode(), dto.getBizScene());
|
||||
|
||||
6
pom.xml
6
pom.xml
@ -20,6 +20,7 @@
|
||||
<axzo-bom.version>2.0.0-SNAPSHOT</axzo-bom.version>
|
||||
<axzo-dependencies.version>2.0.0-SNAPSHOT</axzo-dependencies.version>
|
||||
<aliyun-oss.version>3.10.2</aliyun-oss.version>
|
||||
<axzo-log-api.version>1.0.0-SNAPSHOT</axzo-log-api.version>
|
||||
</properties>
|
||||
|
||||
<modules>
|
||||
@ -95,6 +96,11 @@
|
||||
<artifactId>aliyun-sdk-oss</artifactId>
|
||||
<version>${aliyun-oss.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.axzo.platform</groupId>
|
||||
<artifactId>axzo-log-api</artifactId>
|
||||
<version>${axzo-log-api.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user