Browse Source

获取体验版二维码

dev_shibei_match
zhaoqifeng 5 years ago
parent
commit
9e17b707e9
  1. 25
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/OssFeignClient.java
  2. 15
      epmet-module/epmet-oss/epmet-oss-client/src/main/java/com/epmet/feign/fallback/OssFeignClientFallback.java
  3. 12
      epmet-module/epmet-oss/epmet-oss-server/src/main/java/com/epmet/controller/OssController.java
  4. 6
      epmet-module/epmet-third/epmet-third-server/pom.xml
  5. 42
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CodeServiceImpl.java
  6. 56
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java

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

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

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

@ -1,8 +1,8 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
@ -11,8 +11,6 @@ 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.dto.QrCodeDTO;
import com.epmet.dto.UploadDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.feign.OssFeignClient;
import org.springframework.stereotype.Component;
@ -28,12 +26,13 @@ import org.springframework.web.multipart.MultipartFile;
public class OssFeignClientFallback implements OssFeignClient {
@Override
public Result<UploadImgResultDTO> uploadWxImg(QrCodeDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadWxImg", dto);
public Result<UploadImgResultDTO> uploadWxImg(MultipartFile media) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadWxImg", media);
}
@Override
public Result<UploadImgResultDTO> uploadQrCode(QrCodeDTO dto) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadQrCode", dto);
public Result<UploadImgResultDTO> uploadQrCode(MultipartFile file) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadQrCode", file);
}
}

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

@ -18,7 +18,6 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AliyunGroup;
import com.epmet.commons.tools.validator.group.QcloudGroup;
import com.epmet.commons.tools.validator.group.QiniuGroup;
import com.epmet.dto.QrCodeDTO;
import com.epmet.dto.UploadDTO;
import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.entity.OssEntity;
@ -143,16 +142,13 @@ public class OssController {
}
@PostMapping("uploadwximg")
public Result<UploadImgResultDTO> uploadWxImg(QrCodeDTO dto) {
return ossService.uploadImg(dto.getMedia());
public Result<UploadImgResultDTO> uploadWxImg(@RequestPart("media") MultipartFile media) {
return ossService.uploadImg(media);
}
@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);
public Result<UploadImgResultDTO> uploadQrCode(@RequestPart(value = "file") MultipartFile file) {
return ossService.uploadImg(file);
}
/**
* 上传客户logo(考虑到以后可能会针对不同的业务有不同的限制条件这里不再使用通用的接口

6
epmet-module/epmet-third/epmet-third-server/pom.xml

@ -141,6 +141,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.12.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

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

@ -1,5 +1,6 @@
package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
@ -16,22 +17,20 @@ import com.epmet.dto.result.*;
import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.service.*;
import com.epmet.wxapi.param.WxMaCodeAuditStatusReq;
import com.epmet.wxapi.param.WxMaCodeCommitReq;
import com.epmet.wxapi.param.WxMaCodeSubmitAuditRequest;
import com.epmet.wxapi.param.WxMaNewsReq;
import com.epmet.wxapi.param.*;
import com.epmet.wxapi.result.*;
import com.epmet.wxapi.service.WxMaCodeService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -68,8 +67,6 @@ public class CodeServiceImpl implements CodeService {
private OssFeignClient ossFeignClient;
@Autowired
private PaCustomerService paCustomerService;
@Autowired
private WxMaCodeService wxsMaCodeService;
@Override
public List<TemplateListResultDTO> templateList() {
@ -104,6 +101,15 @@ public class CodeServiceImpl implements CodeService {
return codeExtDTO.getExtJson();
}
public static void main(String[] args) {
String json = "{\"extEnable\":true,\"extAppid\":\"wx2679392c4cc2af22\",\"directCommit\":false,\"ext\":{\"extAppid\":\"wx2679392c4cc2af22\",\"footbar\":{\"work\":{\"name\":\"工作\",\"pageTile\":\"工作\"},\"org\":{\"name\":\"组织\",\"pageTile\":\"组织\"},\"data\":{\"name\":\"数据\",\"pageTile\":\"数据\"},\"find\":{\"name\":\"更多\",\"pageTile\":\"更多\"}}}}";
WxExtJson wxExtJson = JSONObject.parseObject(json, WxExtJson.class);
wxExtJson.setExtAppid("123456");
wxExtJson.getExt().setExtAppid("123456");
String extJson = JSON.toJSONString(wxExtJson);
System.out.println(extJson);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void upload(CodeUploadFormDTO formDTO) {
@ -120,20 +126,24 @@ public class CodeServiceImpl implements CodeService {
throw new RenException("第三方配置不是有效的Json");
}
WxExtJson wxExtJson = JSONObject.parseObject(formDTO.getExtJson(), WxExtJson.class);
wxExtJson.setExtAppid(authInfo.getAuthorizerAppid());
wxExtJson.getExt().setExtAppid(authInfo.getAuthorizerAppid());
String extJson = JSON.toJSONString(wxExtJson);
CodeExtDTO codeExtDTO = codeExtService.getExtByCustomer(formDTO.getCustomerId(), formDTO.getClientType());
if (null == codeExtDTO) {
codeExtDTO = new CodeExtDTO();
codeExtDTO.setCustomerId(formDTO.getCustomerId());
codeExtDTO.setClientType(formDTO.getClientType());
codeExtDTO.setAppId(authInfo.getAuthorizerAppid());
codeExtDTO.setExtJson(formDTO.getExtJson());
codeExtDTO.setExtJson(extJson);
codeExtService.save(codeExtDTO);
}
codeExtDTO.setExtJson(formDTO.getExtJson());
codeExtDTO.setExtJson(extJson);
codeExtService.update(codeExtDTO);
WxMaCodeCommitReq request = ConvertUtils.sourceToTarget(formDTO, WxMaCodeCommitReq.class);
request.setExtJson(formDTO.getExtJson());
request.setExtJson(extJson);
//调用微信API上传代码
WxResult wxResult = wxMaCodeService.commit(authInfo.getAuthorizerAccessToken(), request);
//上传失败,抛出异常
@ -151,7 +161,7 @@ public class CodeServiceImpl implements CodeService {
//将上传信息存入表中
CodeCustomerDTO codeCustomerDTO = ConvertUtils.sourceToTarget(formDTO, CodeCustomerDTO.class);
codeCustomerDTO.setCustomerName(paCustomerDTO.getCustomerName());
codeCustomerDTO.setExtJson(formDTO.getExtJson());
codeCustomerDTO.setExtJson(extJson);
codeCustomerDTO.setAppId(authInfo.getAuthorizerAppid());
codeCustomerDTO.setStatus(CodeConstant.UNAUDITED);
codeCustomerService.save(codeCustomerDTO);
@ -374,9 +384,9 @@ public class CodeServiceImpl implements CodeService {
AuthorizationInfoDTO authInfo = authorizationInfoDao.getAuthInfoByCustomer(codeCustomerDTO.getCustomerId(), codeCustomerDTO.getClientType());
//调用微信API获取获取体验版二维码
WxResult<byte[]> wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), formDTO.getPath());
QrCodeDTO qrCodeDTO = new QrCodeDTO();
qrCodeDTO.setQrCode(wxResult.getData());
Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(qrCodeDTO);
MultipartFile file = null;
file = new MockMultipartFile("file", "QRCode.jpg", "image/jpeg", wxResult.getData());
Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(file);
codeCustomerDTO.setQrCode(uploadResult.getData().getUrl());
codeCustomerService.update(codeCustomerDTO);
result.setQrcode(uploadResult.getData().getUrl());
@ -399,9 +409,7 @@ public class CodeServiceImpl implements CodeService {
@Override
public String mediaUpload(MediaUploadFormDTO formDTO) {
try {
QrCodeDTO dto = new QrCodeDTO();
dto.setMedia(formDTO.getMedia());
Result<UploadImgResultDTO> uploadWxImg = ossFeignClient.uploadWxImg(dto);
Result<UploadImgResultDTO> uploadWxImg = ossFeignClient.uploadWxImg(formDTO.getMedia());
File file = new File(uploadWxImg.getData().getUrl());
//获取上传代码信息
CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId());

56
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/param/WxExtJson.java

@ -1,5 +1,6 @@
package com.epmet.wxapi.param;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -15,50 +16,101 @@ import java.io.Serializable;
public class WxExtJson implements Serializable {
private static final long serialVersionUID = -559311391779774945L;
@JSONField(ordinal = 1)
private boolean extEnable;
@JSONField(ordinal = 2)
private String extAppid;
@JSONField(ordinal = 3)
private boolean directCommit;
@JSONField(ordinal = 4)
private ExtBean ext;
@NoArgsConstructor
@Data
private static class ExtBean {
public static class ExtBean {
@JSONField(ordinal = 1)
private String extAppid;
@JSONField(ordinal = 2)
private FootbarBean footbar;
@NoArgsConstructor
@Data
private static class FootbarBean {
@JSONField(ordinal = 1)
private WorkBean work;
@JSONField(ordinal = 2)
private OrgBean org;
@JSONField(ordinal = 3)
private DataBean data;
@JSONField(ordinal = 4)
private FindBean find;
@JSONField(ordinal = 5)
private GardenBean garden;
@JSONField(ordinal = 6)
private IssueBean issue;
@JSONField(ordinal = 7)
private GroupBean group;
@NoArgsConstructor
@Data
private static class WorkBean {
@JSONField(ordinal = 1)
private String name;
@JSONField(ordinal = 2)
private String pageTile;
}
@NoArgsConstructor
@Data
private static class OrgBean {
@JSONField(ordinal = 1)
private String name;
@JSONField(ordinal = 2)
private String pageTile;
}
@NoArgsConstructor
@Data
private static class DataBean {
@JSONField(ordinal = 1)
private String name;
@JSONField(ordinal = 2)
private String pageTile;
}
@NoArgsConstructor
@Data
private static class FindBean {
@JSONField(ordinal = 1)
private String name;
@JSONField(ordinal = 2)
private String pageTile;
}
@NoArgsConstructor
@Data
private static class GardenBean {
@JSONField(ordinal = 1)
private String name;
@JSONField(ordinal = 2)
private String pageTile;
}
@NoArgsConstructor
@Data
private static class IssueBean {
@JSONField(ordinal = 1)
private String name;
@JSONField(ordinal = 2)
private String pageTile;
}
@NoArgsConstructor
@Data
private static class GroupBean {
@JSONField(ordinal = 1)
private String name;
@JSONField(ordinal = 2)
private String pageTile;
}
}

Loading…
Cancel
Save