Commit 3c19d30b by zhangxingmin

Merge remote-tracking branch 'origin/dev_zxm' into test

parents 1dfa72ab 024c4054
package com.yd.oss.api.controller; package com.yd.oss.api.controller;
import com.yd.common.result.Result;
import com.yd.oss.api.service.ApiPdfService;
import com.yd.oss.feign.client.ApiPdfFeignClient; import com.yd.oss.feign.client.ApiPdfFeignClient;
import com.yd.oss.feign.request.ApiGeneratePdfRequest;
import com.yd.oss.feign.response.ApiGeneratePdfResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -16,4 +21,16 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -16,4 +21,16 @@ import org.springframework.web.bind.annotation.RestController;
@Validated @Validated
public class ApiPdfController implements ApiPdfFeignClient { public class ApiPdfController implements ApiPdfFeignClient {
@Autowired
private ApiPdfService apiPdfService;
/**
* 根据文件模板填充数据生成PDF
* @param request
* @return
*/
@Override
public Result<ApiGeneratePdfResponse> generatePDF(ApiGeneratePdfRequest request) {
return apiPdfService.generatePDF(request);
}
} }
package com.yd.oss.api.service;
import com.yd.common.result.Result;
import com.yd.oss.feign.request.ApiGeneratePdfRequest;
import com.yd.oss.feign.response.ApiGeneratePdfResponse;
public interface ApiPdfService {
Result<ApiGeneratePdfResponse> generatePDF(ApiGeneratePdfRequest request);
}
package com.yd.oss.api.service.impl;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.oss.api.service.ApiPdfService;
import com.yd.oss.feign.request.ApiGeneratePdfRequest;
import com.yd.oss.feign.response.ApiGeneratePdfResponse;
import com.yd.oss.service.service.PdfService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
@Slf4j
@Service
public class ApiPdfServiceImpl implements ApiPdfService {
@Autowired
private PdfService pdfService;
/**
* 根据文件模板填充数据生成PDF
* @param request
* @return
*/
@Override
public Result<ApiGeneratePdfResponse> generatePDF(ApiGeneratePdfRequest request) {
ApiGeneratePdfResponse response = new ApiGeneratePdfResponse();
try {
String url = pdfService.generatePDF(request.getDataObject(),request.getObjectId(),request.getTemplateType());
response.setUrl(url);
return Result.success(response);
} catch (IOException e) {
e.printStackTrace();
throw new BusinessException("生成PDF异常");
}
}
}
package com.yd.oss.service.annotation; package com.yd.oss.feign.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
......
...@@ -14,7 +14,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -14,7 +14,7 @@ import org.springframework.web.multipart.MultipartFile;
/** /**
* OSS服务信息Feign客户端 * OSS服务信息Feign客户端
*/ */
@FeignClient(name = "yd-user-api", fallbackFactory = ApiOssFeignFallbackFactory.class) @FeignClient(name = "yd-oss-api", fallbackFactory = ApiOssFeignFallbackFactory.class)
public interface ApiOssFeignClient { public interface ApiOssFeignClient {
/** /**
......
package com.yd.oss.feign.client; package com.yd.oss.feign.client;
import com.yd.common.result.Result;
import com.yd.oss.feign.fallback.ApiPdfFeignFallbackFactory; import com.yd.oss.feign.fallback.ApiPdfFeignFallbackFactory;
import com.yd.oss.feign.request.ApiGeneratePdfRequest;
import com.yd.oss.feign.response.ApiGeneratePdfResponse;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/** /**
* PDF信息Feign客户端 * PDF信息Feign客户端
*/ */
@FeignClient(name = "yd-user-api", fallbackFactory = ApiPdfFeignFallbackFactory.class) @FeignClient(name = "yd-oss-api",path = "/oss/api/pdf",fallbackFactory = ApiPdfFeignFallbackFactory.class)
public interface ApiPdfFeignClient { public interface ApiPdfFeignClient {
/**
* 根据文件模板填充数据生成PDF
* @param request
* @return
*/
@PostMapping("/generate/pdf")
Result<ApiGeneratePdfResponse> generatePDF(@Validated @RequestBody ApiGeneratePdfRequest request);
} }
package com.yd.oss.service.enums; package com.yd.oss.feign.enums;
/** /**
* 文件模板类型类型枚举 * 文件模板类型类型枚举
......
package com.yd.oss.feign.fallback; package com.yd.oss.feign.fallback;
import com.yd.common.result.Result;
import com.yd.oss.feign.client.ApiPdfFeignClient;
import com.yd.oss.feign.request.ApiGeneratePdfRequest;
import com.yd.oss.feign.response.ApiGeneratePdfResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
...@@ -8,5 +13,14 @@ import org.springframework.stereotype.Component; ...@@ -8,5 +13,14 @@ import org.springframework.stereotype.Component;
*/ */
@Slf4j @Slf4j
@Component @Component
public class ApiPdfFeignFallbackFactory { public class ApiPdfFeignFallbackFactory implements FallbackFactory<ApiPdfFeignClient> {
@Override
public ApiPdfFeignClient create(Throwable cause) {
return new ApiPdfFeignClient() {
@Override
public Result<ApiGeneratePdfResponse> generatePDF(ApiGeneratePdfRequest request) {
return null;
}
};
}
} }
package com.yd.oss.feign.request;
import lombok.Data;
@Data
public class ApiGeneratePdfRequest<T> {
/**
* 生成文件填充的数据对象(泛型)
*/
private T dataObject;
/**
* 数据对象业务id
*/
private String objectId;
/**
* 生成文件的模板类型
*/
private String templateType;
}
package com.yd.oss.feign.response;
import lombok.Data;
@Data
public class ApiGeneratePdfResponse {
/**
* 访问路径
*/
private String url;
}
package com.yd.oss.service.service.impl; package com.yd.oss.service.service.impl;
import com.yd.oss.service.annotation.PdfField; import com.yd.oss.feign.annotation.PdfField;
import com.yd.oss.service.service.FieldValueProvider; import com.yd.oss.service.service.FieldValueProvider;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
......
...@@ -2,12 +2,10 @@ package com.yd.oss.service.service.impl; ...@@ -2,12 +2,10 @@ package com.yd.oss.service.service.impl;
import com.aliyun.oss.HttpMethod; import com.aliyun.oss.HttpMethod;
import com.aliyun.oss.OSS; import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.GeneratePresignedUrlRequest; import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.yd.oss.service.dto.FileProdDto; import com.yd.oss.service.dto.FileProdDto;
import com.yd.oss.service.model.OssProvider;
import com.yd.oss.service.service.*; import com.yd.oss.service.service.*;
import com.yd.oss.service.utils.PdfUtil; import com.yd.oss.service.utils.PdfUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -15,8 +13,6 @@ import org.apache.poi.xwpf.usermodel.*; ...@@ -15,8 +13,6 @@ import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.nio.file.Files; import java.nio.file.Files;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment