Browse Source

第三方代码上传

dev_shibei_match
zhaoqifeng 5 years ago
parent
commit
f246fcfe73
  1. 37
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java
  2. 52
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java
  3. 33
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java
  4. 33
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java
  5. 18
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/dto/QrCodeDTO.java
  6. 27
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java
  7. 13
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java
  8. 15
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java
  9. 5
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeCustomerDTO.java
  10. 5
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java
  11. 2
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubmitAuditFormDTO.java
  12. 4
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java
  13. 6
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeCustomerEntity.java
  14. 93
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
  15. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxMaCodeSubmitAuditRequest.java
  16. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java
  17. 10
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java
  18. 2
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeOperationHistoryDao.xml

37
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/FileUtils.java

@ -0,0 +1,37 @@
package com.epmet.commons.tools.utils;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
public class FileUtils {
/**
* 创建临时文件.
*
* @param inputStream 输入文件流
* @param name 文件名
* @param ext 扩展名
* @param tmpDirFile 临时文件夹目录
*/
public static File createTmpFile(InputStream inputStream, String name, String ext, File tmpDirFile) throws IOException {
File resultFile = File.createTempFile(name, '.' + ext, tmpDirFile);
resultFile.deleteOnExit();
org.apache.commons.io.FileUtils.copyToFile(inputStream, resultFile);
return resultFile;
}
/**
* 创建临时文件.
*
* @param inputStream 输入文件流
* @param name 文件名
* @param ext 扩展名
*/
public static File createTmpFile(InputStream inputStream, String name, String ext) throws IOException {
return createTmpFile(inputStream, name, ext, Files.createTempDirectory("weixin-java-tools-temp").toFile());
}
}

52
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/HttpClientManager.java

@ -4,15 +4,12 @@ import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg; import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.scan.param.TextScanParamDTO;
import com.epmet.commons.tools.scan.param.TextTaskDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity; import org.apache.http.*;
import org.apache.http.HttpStatus; import org.apache.http.client.HttpResponseException;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
@ -24,7 +21,6 @@ import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair; import org.apache.http.message.BasicNameValuePair;
@ -33,17 +29,16 @@ import org.springframework.util.CollectionUtils;
import javax.crypto.Mac; import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.UUID;
/** /**
* desc: http 工具类 * desc: http 工具类
@ -256,7 +251,7 @@ public class HttpClientManager {
* *
* @author: jianjun liu * @author: jianjun liu
*/ */
public Result<Byte[]> sendGetFile(String url, Map<String, Object> params) { public Result<File> sendGetFile(String url, Map<String, Object> params) {
try { try {
URIBuilder builder = new URIBuilder(url); URIBuilder builder = new URIBuilder(url);
@ -271,32 +266,35 @@ public class HttpClientManager {
return executeToByte(httpGet); return executeToByte(httpGet);
} catch (Exception e) { } catch (Exception e) {
log.error("sendGet exception", e); log.error("sendGet exception", e);
return new Result<Byte[]>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); return new Result<File>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
} }
} }
private Result<Byte[]> executeToByte(HttpRequestBase httpMethod) { private Result<File> executeToByte(HttpRequestBase httpMethod) {
CloseableHttpResponse response = null; CloseableHttpResponse response = null;
try { try {
response = httpclient.execute(httpMethod); response = httpclient.execute(httpMethod);
log.debug("http send response:{}", JSON.toJSONString(response)); log.debug("http send response:{}", JSON.toJSONString(response));
if (response != null && response.getStatusLine() != null) { if (response != null && response.getStatusLine() != null) {
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
InputStream in = response.getEntity().getContent(); InputStream inputStream = InputStreamResponseHandler.INSTANCE.handleResponse(response);
ByteArrayOutputStream output = new ByteArrayOutputStream(); Header[] contentTypeHeader = response.getHeaders("Content-Type");
byte[] buffer = new byte[4096]; if (contentTypeHeader != null && contentTypeHeader.length > 0) {
int n = 0; // 出错
while (-1 != (n = in.read(buffer))) { if (ContentType.TEXT_PLAIN.getMimeType()
output.write(buffer, 0, n); .equals(ContentType.parse(contentTypeHeader[0].getValue()).getMimeType())) {
} String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response);
return new Result<Byte[]>().ok(ArrayUtils.toObject(output.toByteArray())); }
}
File file = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), "jpg");
return new Result<File>().ok(file);
} else { } else {
log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode()); log.warn("execute http method fail,httpStatus:{0}", response.getStatusLine().getStatusCode());
} }
} }
} catch (Exception e) { } catch (Exception e) {
log.error("execute exception", e); log.error("execute exception", e);
return new Result<Byte[]>().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage()); return new Result<File>().error(EpmetErrorCode.SERVER_ERROR.getCode(), e.getMessage());
} finally { } finally {
httpMethod.releaseConnection(); httpMethod.releaseConnection();
try { try {
@ -306,21 +304,9 @@ public class HttpClientManager {
} catch (IOException e) { } catch (IOException e) {
} }
} }
return new Result<Byte[]>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg()); return new Result<File>().error(EpmetErrorCode.SERVER_ERROR.getCode(), EpmetErrorCode.SERVER_ERROR.getMsg());
} }
public static void main(String[] args) {
String url = "http://localhost:8107/epmetscan/api/textSyncScan";
TextTaskDTO p = new TextTaskDTO();
p.setDataId("1");
p.setContent("neirong1");
List<TextTaskDTO> list = new ArrayList<>();
list.add(p);
TextScanParamDTO param = new TextScanParamDTO();
param.setTasks(list);
Result<String> result = HttpClientManager.getInstance().sendPostByJSON(url, JSON.toJSONString(param));
System.out.println(JSON.toJSONString(result));
}
} }

33
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/InputStreamResponseHandler.java

@ -0,0 +1,33 @@
package com.epmet.commons.tools.utils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.InputStream;
/**
* 输入流响应处理器.
*
* @author Daniel Qian
*/
public class InputStreamResponseHandler implements ResponseHandler<InputStream> {
public static final ResponseHandler<InputStream> INSTANCE = new InputStreamResponseHandler();
private static final int STATUS_CODE_300 = 300;
@Override
public InputStream handleResponse(final HttpResponse response) throws IOException {
final StatusLine statusLine = response.getStatusLine();
final HttpEntity entity = response.getEntity();
if (statusLine.getStatusCode() >= STATUS_CODE_300) {
EntityUtils.consume(entity);
throw new HttpResponseException(statusLine.getStatusCode(), statusLine.getReasonPhrase());
}
return entity == null ? null : entity.getContent();
}
}

33
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Utf8ResponseHandler.java

@ -0,0 +1,33 @@
package com.epmet.commons.tools.utils;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
/**
* copy from {@link org.apache.http.impl.client.BasicResponseHandler}
*
* @author Daniel Qian
*/
public class Utf8ResponseHandler implements ResponseHandler<String> {
public static final ResponseHandler<String> INSTANCE = new Utf8ResponseHandler();
@Override
public String handleResponse(final HttpResponse response) throws IOException {
final StatusLine statusLine = response.getStatusLine();
final HttpEntity entity = response.getEntity();
if (statusLine.getStatusCode() >= 300) {
EntityUtils.consume(entity);
throw new HttpResponseException(statusLine.getStatusCode(), statusLine.toString());
}
return entity == null ? null : EntityUtils.toString(entity, Consts.UTF_8);
}
}

18
epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/dto/QrCodeDTO.java

@ -0,0 +1,18 @@
package com.epmet.dto;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/7/24 10:10
*/
@Data
public class QrCodeDTO implements Serializable {
private static final long serialVersionUID = -1787470699926486609L;
private byte[] qrCode;
private MultipartFile media;
}

27
epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java

@ -9,16 +9,13 @@
package com.epmet.feign; package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.UploadDTO; import com.epmet.dto.QrCodeDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.feign.fallback.OssFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
/** /**
* OSS * OSS
@ -26,22 +23,18 @@ import org.springframework.web.multipart.MultipartFile;
* @author Mark sunlightcs@gmail.c om * @author Mark sunlightcs@gmail.c om
* @since 1.1.0 * @since 1.1.0
*/ */
@FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, configuration = OssFeignClient.MultipartSupportConfig.class) @FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, fallback = OssFeignClientFallback.class)
public interface OssFeignClient { public interface OssFeignClient {
/** /**
* 文件上传 * 文件上传
* @param file 文件 * @param dto 文件
* @return 返回路径 * @return 返回路径
*/ */
@PostMapping(value = "oss/file/upload", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, @PostMapping(value = "oss/file/uploadwximg", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
consumes = MediaType.MULTIPART_FORM_DATA_VALUE) Result<UploadImgResultDTO> uploadWxImg(QrCodeDTO dto);
Result<UploadDTO> upload(@RequestPart("file") MultipartFile file);
class MultipartSupportConfig {
@Bean @PostMapping(value ="oss/file/uploadqrcode", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Encoder feignFormEncoder() { Result<UploadImgResultDTO> uploadQrCode(QrCodeDTO dto );
return new SpringFormEncoder();
}
}
} }

13
epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java

@ -8,8 +8,12 @@
package com.epmet.feign.fallback; package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.QrCodeDTO;
import com.epmet.dto.UploadDTO; import com.epmet.dto.UploadDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.feign.OssFeignClient; import com.epmet.feign.OssFeignClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -24,7 +28,12 @@ import org.springframework.web.multipart.MultipartFile;
public class OssFeignClientFallback implements OssFeignClient { public class OssFeignClientFallback implements OssFeignClient {
@Override @Override
public Result<UploadDTO> upload(MultipartFile file) { public Result<UploadImgResultDTO> uploadWxImg(QrCodeDTO dto) {
return new Result<UploadDTO>().error(); return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadWxImg", dto);
}
@Override
public Result<UploadImgResultDTO> uploadQrCode(QrCodeDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadQrCode", dto);
} }
} }

15
epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java

@ -18,6 +18,7 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AliyunGroup; import com.epmet.commons.tools.validator.group.AliyunGroup;
import com.epmet.commons.tools.validator.group.QcloudGroup; import com.epmet.commons.tools.validator.group.QcloudGroup;
import com.epmet.commons.tools.validator.group.QiniuGroup; import com.epmet.commons.tools.validator.group.QiniuGroup;
import com.epmet.dto.QrCodeDTO;
import com.epmet.dto.UploadDTO; import com.epmet.dto.UploadDTO;
import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.OssEntity; import com.epmet.entity.OssEntity;
@ -98,7 +99,7 @@ public class OssController {
@PostMapping("upload") @PostMapping("upload")
@ApiOperation(value = "上传文件") @ApiOperation(value = "上传文件")
public Result<UploadDTO> upload(@RequestParam("file") MultipartFile file) throws Exception { public Result<UploadDTO> upload(@RequestPart("file") MultipartFile file) throws Exception {
if (file.isEmpty()) { if (file.isEmpty()) {
return new Result<UploadDTO>().error(ModuleErrorCode.UPLOAD_FILE_EMPTY); return new Result<UploadDTO>().error(ModuleErrorCode.UPLOAD_FILE_EMPTY);
} }
@ -141,6 +142,18 @@ public class OssController {
return ossService.uploadImg(file); return ossService.uploadImg(file);
} }
@PostMapping("uploadwximg")
public Result<UploadImgResultDTO> uploadWxImg(QrCodeDTO dto) {
return ossService.uploadImg(dto.getMedia());
}
@PostMapping("uploadqrcode")
public Result<UploadImgResultDTO> uploadQrCode(QrCodeDTO dto) {
String url = OssFactory.build().uploadSuffix(dto.getQrCode(), "jpg");
UploadImgResultDTO result = new UploadImgResultDTO();
result.setUrl(url);
return new Result<UploadImgResultDTO>().ok(result);
}
/** /**
* 上传客户logo(考虑到以后可能会针对不同的业务有不同的限制条件这里不再使用通用的接口 * 上传客户logo(考虑到以后可能会针对不同的业务有不同的限制条件这里不再使用通用的接口
* 针对每一个业务新建上传接口) * 针对每一个业务新建上传接口)

5
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/CodeCustomerDTO.java

@ -83,6 +83,11 @@ public class CodeCustomerDTO implements Serializable {
*/ */
private String status; private String status;
/**
* 二维码
*/
private String qrCode;
/** /**
* 乐观锁 * 乐观锁
*/ */

5
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeCommonFormDTO.java

@ -20,6 +20,7 @@ public class CodeCommonFormDTO implements Serializable {
* 代码ID * 代码ID
*/ */
private String codeId; private String codeId;
private Integer page; private String path;
private Integer limit; private Integer page = 1;
private Integer limit = 999;
} }

2
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/SubmitAuditFormDTO.java

@ -39,7 +39,7 @@ public class SubmitAuditFormDTO implements Serializable {
/** /**
* 预览信息小程序页面截图和操作录屏 * 预览信息小程序页面截图和操作录屏
*/ */
private List<PreviewInfoBean> previewInfo; private PreviewInfoBean previewInfo;
/** /**
* 用户生成内容场景UGC信息安全声明 * 用户生成内容场景UGC信息安全声明
*/ */

4
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CodeController.java

@ -161,9 +161,9 @@ public class CodeController {
* @date 2020/7/16 10:16 * @date 2020/7/16 10:16
*/ */
@PostMapping("history") @PostMapping("history")
public Result<PageData> history(@RequestBody CodeCommonFormDTO formDTO) { public Result<List<CodeHistoryResultDTO>> history(@RequestBody CodeCommonFormDTO formDTO) {
PageData result = codeService.history(formDTO); PageData result = codeService.history(formDTO);
return new Result<PageData>().ok(result); return new Result<List<CodeHistoryResultDTO>>().ok(result.getList());
} }
/** /**

6
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/CodeCustomerEntity.java

@ -83,4 +83,10 @@ public class CodeCustomerEntity extends BaseEpmetEntity {
*/ */
private String status; private String status;
/**
* 二维码
*/
private String qrCode;
} }

93
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java

@ -6,17 +6,13 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.MultipartFileToFileUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CodeConstant; import com.epmet.constant.CodeConstant;
import com.epmet.dao.AuthorizationInfoDao; import com.epmet.dao.AuthorizationInfoDao;
import com.epmet.dao.ComponentAccessTokenDao; import com.epmet.dao.ComponentAccessTokenDao;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.result.CodeHistoryResultDTO; import com.epmet.dto.result.*;
import com.epmet.dto.result.QrCodeResultDTO;
import com.epmet.dto.result.ReasonResultDTO;
import com.epmet.dto.result.TemplateListResultDTO;
import com.epmet.feign.OperCrmOpenFeignClient; import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.feign.OssFeignClient; import com.epmet.feign.OssFeignClient;
import com.epmet.service.*; import com.epmet.service.*;
@ -33,6 +29,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File; import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -67,6 +66,10 @@ public class CodeServiceImpl implements CodeService {
private CodeExtService codeExtService; private CodeExtService codeExtService;
@Autowired @Autowired
private OssFeignClient ossFeignClient; private OssFeignClient ossFeignClient;
@Autowired
private PaCustomerService paCustomerService;
@Autowired
private WxMaCodeService wxsMaCodeService;
@Override @Override
public List<TemplateListResultDTO> templateList() { public List<TemplateListResultDTO> templateList() {
@ -141,16 +144,13 @@ public class CodeServiceImpl implements CodeService {
//获取客户信息 //获取客户信息
CustomerDTO customerDTO = new CustomerDTO(); CustomerDTO customerDTO = new CustomerDTO();
customerDTO.setId(formDTO.getCustomerId()); customerDTO.setId(formDTO.getCustomerId());
Result<CustomerDTO> customerInfo = operCrmOpenFeignClient.getCustomerInfo(customerDTO); PaCustomerDTO paCustomerDTO = paCustomerService.get(formDTO.getCustomerId());
if (!customerInfo.success()) {
throw new RenException(customerInfo.getCode(), customerInfo.getMsg());
}
//将之前上传信息删除 //将之前上传信息删除
codeCustomerService.deleteCode(formDTO.getCustomerId(), formDTO.getClientType()); codeCustomerService.deleteCode(formDTO.getCustomerId(), formDTO.getClientType());
//将上传信息存入表中 //将上传信息存入表中
CodeCustomerDTO codeCustomerDTO = ConvertUtils.sourceToTarget(formDTO, CodeCustomerDTO.class); CodeCustomerDTO codeCustomerDTO = ConvertUtils.sourceToTarget(formDTO, CodeCustomerDTO.class);
codeCustomerDTO.setCustomerName(customerInfo.getData().getCustomerName()); codeCustomerDTO.setCustomerName(paCustomerDTO.getCustomerName());
codeCustomerDTO.setExtJson(formDTO.getExtJson()); codeCustomerDTO.setExtJson(formDTO.getExtJson());
codeCustomerDTO.setAppId(authInfo.getAuthorizerAppid()); codeCustomerDTO.setAppId(authInfo.getAuthorizerAppid());
codeCustomerDTO.setStatus(CodeConstant.UNAUDITED); codeCustomerDTO.setStatus(CodeConstant.UNAUDITED);
@ -211,6 +211,7 @@ public class CodeServiceImpl implements CodeService {
if (null == authInfo) { if (null == authInfo) {
throw new RenException("未授权"); throw new RenException("未授权");
} }
//调用微信API上提交审核 //调用微信API上提交审核
WxMaCodeSubmitAuditRequest request = new WxMaCodeSubmitAuditRequest(); WxMaCodeSubmitAuditRequest request = new WxMaCodeSubmitAuditRequest();
request.setVersionDesc(formDTO.getVersionDesc()); request.setVersionDesc(formDTO.getVersionDesc());
@ -225,13 +226,20 @@ public class CodeServiceImpl implements CodeService {
wxResult.getErrorMsg()); wxResult.getErrorMsg());
throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg());
} }
//将数据存入代码审核表 //获取审核结果信息
CodeAuditResultDTO codeAuditResultDTO = new CodeAuditResultDTO(); CodeAuditResultDTO codeAuditResultDTO = codeAuditResultService.getAuditResultByCodeId(formDTO.getCodeId());
codeAuditResultDTO.setCustomerId(codeCustomerDTO.getCustomerId()); if (null == codeAuditResultDTO) {
codeAuditResultDTO.setCodeId(codeCustomerDTO.getId()); //将数据存入代码审核表
codeAuditResultDTO.setAuditId(wxResult.getData()); codeAuditResultDTO = new CodeAuditResultDTO();
codeAuditResultDTO.setResult(CodeConstant.AUDITING); codeAuditResultDTO.setCustomerId(codeCustomerDTO.getCustomerId());
codeAuditResultService.save(codeAuditResultDTO); codeAuditResultDTO.setCodeId(codeCustomerDTO.getId());
codeAuditResultDTO.setAuditId(wxResult.getData());
codeAuditResultDTO.setResult(CodeConstant.AUDITING);
codeAuditResultService.save(codeAuditResultDTO);
} else {
codeAuditResultDTO.setResult(CodeConstant.AUDITING);
codeAuditResultService.update(codeAuditResultDTO);
}
//更新代码表状态 //更新代码表状态
codeCustomerDTO.setStatus(CodeConstant.AUDITING); codeCustomerDTO.setStatus(CodeConstant.AUDITING);
codeCustomerService.update(codeCustomerDTO); codeCustomerService.update(codeCustomerDTO);
@ -354,6 +362,10 @@ public class CodeServiceImpl implements CodeService {
QrCodeResultDTO result = new QrCodeResultDTO(); QrCodeResultDTO result = new QrCodeResultDTO();
//获取上传代码信息 //获取上传代码信息
CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId());
if (null != codeCustomerDTO.getQrCode()) {
result.setQrcode(codeCustomerDTO.getQrCode());
return result;
}
//是否授权 //是否授权
if (!customerMpService.getAuthFlag(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType())) { if (!customerMpService.getAuthFlag(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType())) {
throw new RenException("未授权"); throw new RenException("未授权");
@ -361,11 +373,20 @@ public class CodeServiceImpl implements CodeService {
//获取小程序调用令牌 //获取小程序调用令牌
AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType()); AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType());
//调用微信API获取获取体验版二维码 //调用微信API获取获取体验版二维码
WxResult<Byte[]> wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), null); WxResult<File> wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), formDTO.getPath());
QrCodeDTO qrCodeDTO = new QrCodeDTO();
try {
qrCodeDTO.setQrCode(Files.readAllBytes(wxResult.getData().toPath()));
Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(qrCodeDTO);
codeCustomerDTO.setQrCode(uploadResult.getData().getUrl());
codeCustomerService.update(codeCustomerDTO);
result.setQrcode(uploadResult.getData().getUrl());
} catch (Exception e) {
throw new RenException(e.getMessage());
}
if (!wxResult.success()) { if (!wxResult.success()) {
throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg()); throw new RenException(wxResult.getErrorCode(), wxResult.getErrorMsg());
} }
result.setQrcode(wxResult.getData());
return result; return result;
} }
@ -382,8 +403,10 @@ public class CodeServiceImpl implements CodeService {
@Override @Override
public String mediaUpload(MediaUploadFormDTO formDTO) { public String mediaUpload(MediaUploadFormDTO formDTO) {
try { try {
// Result<UploadDTO> uploadDTOResult = ossFeignClient.upload(formDTO.getMedia()); QrCodeDTO dto = new QrCodeDTO();
File file = MultipartFileToFileUtils.multipartFileToFile(formDTO.getMedia()); dto.setMedia(formDTO.getMedia());
Result<UploadImgResultDTO> uploadDTOResult = ossFeignClient.uploadWxImg(dto);
File file = new File(uploadDTOResult.getData().getUrl());
//获取上传代码信息 //获取上传代码信息
CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId());
//获取小程序调用令牌 //获取小程序调用令牌
@ -433,5 +456,33 @@ public class CodeServiceImpl implements CodeService {
} }
} }
private byte[] toPrimitives(Byte[] oBytes) {
byte[] bytes = new byte[oBytes.length];
for (int i = 0; i < oBytes.length; i++) {
bytes[i] = oBytes[i];
}
return bytes;
}
private void byteToFile(byte[] bytes)
{
try
{
// 根据绝对路径初始化文件
File localFile = new File(".");
if (!localFile.exists())
{
localFile.createNewFile();
}
// 输出流
OutputStream os = new FileOutputStream(localFile);
os.write(bytes);
os.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
} }

2
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxMaCodeSubmitAuditRequest.java

@ -42,7 +42,7 @@ public class WxMaCodeSubmitAuditRequest implements Serializable {
* 预览信息小程序页面截图和操作录屏 * 预览信息小程序页面截图和操作录屏
*/ */
@SerializedName("preview_info") @SerializedName("preview_info")
private List<SubmitAuditFormDTO.PreviewInfoBean> previewInfo; private SubmitAuditFormDTO.PreviewInfoBean previewInfo;
/** /**
* 用户生成内容场景UGC信息安全声明 * 用户生成内容场景UGC信息安全声明
*/ */

2
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/WxMaCodeService.java

@ -48,7 +48,7 @@ public interface WxMaCodeService {
* @author zhaoqifeng * @author zhaoqifeng
* @date 2020/7/10 15:25 * @date 2020/7/10 15:25
*/ */
WxResult<Byte[]> getQrCode(String accessToken, String path); WxResult<File> getQrCode(String accessToken, String path);
/** /**
* 获取授权小程序帐号的可选类目. * 获取授权小程序帐号的可选类目.

10
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/service/impl/WxMaCodeServiceImpl.java

@ -10,10 +10,8 @@ import com.epmet.wxapi.result.*;
import com.epmet.wxapi.service.WxMaCodeService; import com.epmet.wxapi.service.WxMaCodeService;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.File; import java.io.File;
@ -21,8 +19,6 @@ import java.io.InputStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
@ -74,8 +70,8 @@ public class WxMaCodeServiceImpl implements WxMaCodeService {
} }
@Override @Override
public WxResult<Byte[]> getQrCode(String accessToken, String path) { public WxResult<File> getQrCode(String accessToken, String path) {
WxResult<Byte[]> result = new WxResult<>(); WxResult<File> result = new WxResult<>();
StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token").append(accessToken); StringBuilder url = new StringBuilder(WxMaCodeConstant.GET_QRCODE_URL).append("?access_token").append(accessToken);
if (StringUtils.isNotBlank(path)) { if (StringUtils.isNotBlank(path)) {
try { try {
@ -84,7 +80,7 @@ public class WxMaCodeServiceImpl implements WxMaCodeService {
e.printStackTrace(); e.printStackTrace();
} }
} }
Result<Byte[]> qrCodeResult = HttpClientManager.getInstance().sendGetFile(url.toString(), null); Result<File> qrCodeResult = HttpClientManager.getInstance().sendGetFile(url.toString(), null);
if (!qrCodeResult.success()) { if (!qrCodeResult.success()) {
result.setErrorCode(qrCodeResult.getCode()); result.setErrorCode(qrCodeResult.getCode());
result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(qrCodeResult.getCode())); result.setErrorMsg(WxMaErrorMsgEnum.findMsgByCode(qrCodeResult.getCode()));

2
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeOperationHistoryDao.xml

@ -25,7 +25,7 @@
</update> </update>
<select id="selectHistoryList" resultType="com.epmet.dto.result.CodeHistoryResultDTO"> <select id="selectHistoryList" resultType="com.epmet.dto.result.CodeHistoryResultDTO">
SELECT SELECT
DATE_FORMAT(coh.CREATED_TIME, '%Y-%m-%d') AS "operationTime", DATE_FORMAT(coh.CREATED_TIME, '%Y-%m-%d %T') AS "operationTime",
coh.VERSION, coh.VERSION,
coh.OPERATION, coh.OPERATION,
coh.`DESCRIPTION` coh.`DESCRIPTION`

Loading…
Cancel
Save