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.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.QrCodeDTO;
import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.dto.result.UploadImgResultDTO;
import com.epmet.feign.fallback.OssFeignClientFallback; import com.epmet.feign.fallback.OssFeignClientFallback;
import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import org.springframework.cloud.openfeign.FeignClient; 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.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
@ -23,18 +28,28 @@ import org.springframework.web.bind.annotation.PostMapping;
* @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, fallback = OssFeignClientFallback.class) @FeignClient(name = ServiceConstant.EPMET_OSS_SERVER, configuration = OssFeignClient.MultipartSupportConfig.class, fallback =
OssFeignClientFallback.class)
public interface OssFeignClient { public interface OssFeignClient {
/** /**
* 文件上传 * 文件上传
* @param dto 文件 * @param media 文件
* @return 返回路径 * @return 返回路径
*/ */
@PostMapping(value = "oss/file/uploadwximg", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @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) @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. * Copyright (c) 2018 人人开源 All rights reserved.
* * <p>
* https://www.renren.io * 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.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils; 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.result.UploadImgResultDTO; 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;
@ -28,12 +26,13 @@ import org.springframework.web.multipart.MultipartFile;
public class OssFeignClientFallback implements OssFeignClient { public class OssFeignClientFallback implements OssFeignClient {
@Override @Override
public Result<UploadImgResultDTO> uploadWxImg(QrCodeDTO dto) { public Result<UploadImgResultDTO> uploadWxImg(MultipartFile media) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadWxImg", dto); return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadWxImg", media);
} }
@Override @Override
public Result<UploadImgResultDTO> uploadQrCode(QrCodeDTO dto) { public Result<UploadImgResultDTO> uploadQrCode(MultipartFile file) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_OSS_SERVER, "uploadQrCode", dto); 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.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;
@ -143,16 +142,13 @@ public class OssController {
} }
@PostMapping("uploadwximg") @PostMapping("uploadwximg")
public Result<UploadImgResultDTO> uploadWxImg(QrCodeDTO dto) { public Result<UploadImgResultDTO> uploadWxImg(@RequestPart("media") MultipartFile media) {
return ossService.uploadImg(dto.getMedia()); return ossService.uploadImg(media);
} }
@PostMapping("uploadqrcode") @PostMapping("uploadqrcode")
public Result<UploadImgResultDTO> uploadQrCode(QrCodeDTO dto) { public Result<UploadImgResultDTO> uploadQrCode(@RequestPart(value = "file") MultipartFile file) {
String url = OssFactory.build().uploadSuffix(dto.getQrCode(), "jpg"); return ossService.uploadImg(file);
UploadImgResultDTO result = new UploadImgResultDTO();
result.setUrl(url);
return new Result<UploadImgResultDTO>().ok(result);
} }
/** /**
* 上传客户logo(考虑到以后可能会针对不同的业务有不同的限制条件这里不再使用通用的接口 * 上传客户logo(考虑到以后可能会针对不同的业务有不同的限制条件这里不再使用通用的接口

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

@ -141,6 +141,12 @@
<version>2.0.0</version> <version>2.0.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.12.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <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; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException; 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.OperCrmOpenFeignClient;
import com.epmet.feign.OssFeignClient; import com.epmet.feign.OssFeignClient;
import com.epmet.service.*; import com.epmet.service.*;
import com.epmet.wxapi.param.WxMaCodeAuditStatusReq; import com.epmet.wxapi.param.*;
import com.epmet.wxapi.param.WxMaCodeCommitReq;
import com.epmet.wxapi.param.WxMaCodeSubmitAuditRequest;
import com.epmet.wxapi.param.WxMaNewsReq;
import com.epmet.wxapi.result.*; import com.epmet.wxapi.result.*;
import com.epmet.wxapi.service.WxMaCodeService; import com.epmet.wxapi.service.WxMaCodeService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.OutputStream; 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;
@ -68,8 +67,6 @@ public class CodeServiceImpl implements CodeService {
private OssFeignClient ossFeignClient; private OssFeignClient ossFeignClient;
@Autowired @Autowired
private PaCustomerService paCustomerService; private PaCustomerService paCustomerService;
@Autowired
private WxMaCodeService wxsMaCodeService;
@Override @Override
public List<TemplateListResultDTO> templateList() { public List<TemplateListResultDTO> templateList() {
@ -104,6 +101,15 @@ public class CodeServiceImpl implements CodeService {
return codeExtDTO.getExtJson(); 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 @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void upload(CodeUploadFormDTO formDTO) { public void upload(CodeUploadFormDTO formDTO) {
@ -120,20 +126,24 @@ public class CodeServiceImpl implements CodeService {
throw new RenException("第三方配置不是有效的Json"); 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()); CodeExtDTO codeExtDTO = codeExtService.getExtByCustomer(formDTO.getCustomerId(), formDTO.getClientType());
if (null == codeExtDTO) { if (null == codeExtDTO) {
codeExtDTO = new CodeExtDTO(); codeExtDTO = new CodeExtDTO();
codeExtDTO.setCustomerId(formDTO.getCustomerId()); codeExtDTO.setCustomerId(formDTO.getCustomerId());
codeExtDTO.setClientType(formDTO.getClientType()); codeExtDTO.setClientType(formDTO.getClientType());
codeExtDTO.setAppId(authInfo.getAuthorizerAppid()); codeExtDTO.setAppId(authInfo.getAuthorizerAppid());
codeExtDTO.setExtJson(formDTO.getExtJson()); codeExtDTO.setExtJson(extJson);
codeExtService.save(codeExtDTO); codeExtService.save(codeExtDTO);
} }
codeExtDTO.setExtJson(formDTO.getExtJson()); codeExtDTO.setExtJson(extJson);
codeExtService.update(codeExtDTO); codeExtService.update(codeExtDTO);
WxMaCodeCommitReq request = ConvertUtils.sourceToTarget(formDTO, WxMaCodeCommitReq.class); WxMaCodeCommitReq request = ConvertUtils.sourceToTarget(formDTO, WxMaCodeCommitReq.class);
request.setExtJson(formDTO.getExtJson()); request.setExtJson(extJson);
//调用微信API上传代码 //调用微信API上传代码
WxResult wxResult = wxMaCodeService.commit(authInfo.getAuthorizerAccessToken(), request); WxResult wxResult = wxMaCodeService.commit(authInfo.getAuthorizerAccessToken(), request);
//上传失败,抛出异常 //上传失败,抛出异常
@ -151,7 +161,7 @@ public class CodeServiceImpl implements CodeService {
//将上传信息存入表中 //将上传信息存入表中
CodeCustomerDTO codeCustomerDTO = ConvertUtils.sourceToTarget(formDTO, CodeCustomerDTO.class); CodeCustomerDTO codeCustomerDTO = ConvertUtils.sourceToTarget(formDTO, CodeCustomerDTO.class);
codeCustomerDTO.setCustomerName(paCustomerDTO.getCustomerName()); codeCustomerDTO.setCustomerName(paCustomerDTO.getCustomerName());
codeCustomerDTO.setExtJson(formDTO.getExtJson()); codeCustomerDTO.setExtJson(extJson);
codeCustomerDTO.setAppId(authInfo.getAuthorizerAppid()); codeCustomerDTO.setAppId(authInfo.getAuthorizerAppid());
codeCustomerDTO.setStatus(CodeConstant.UNAUDITED); codeCustomerDTO.setStatus(CodeConstant.UNAUDITED);
codeCustomerService.save(codeCustomerDTO); codeCustomerService.save(codeCustomerDTO);
@ -374,9 +384,9 @@ 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(), formDTO.getPath()); WxResult<byte[]> wxResult = wxMaCodeService.getQrCode(authInfo.getAuthorizerAccessToken(), formDTO.getPath());
QrCodeDTO qrCodeDTO = new QrCodeDTO(); MultipartFile file = null;
qrCodeDTO.setQrCode(wxResult.getData()); file = new MockMultipartFile("file", "QRCode.jpg", "image/jpeg", wxResult.getData());
Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(qrCodeDTO); Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(file);
codeCustomerDTO.setQrCode(uploadResult.getData().getUrl()); codeCustomerDTO.setQrCode(uploadResult.getData().getUrl());
codeCustomerService.update(codeCustomerDTO); codeCustomerService.update(codeCustomerDTO);
result.setQrcode(uploadResult.getData().getUrl()); result.setQrcode(uploadResult.getData().getUrl());
@ -399,9 +409,7 @@ public class CodeServiceImpl implements CodeService {
@Override @Override
public String mediaUpload(MediaUploadFormDTO formDTO) { public String mediaUpload(MediaUploadFormDTO formDTO) {
try { try {
QrCodeDTO dto = new QrCodeDTO(); Result<UploadImgResultDTO> uploadWxImg = ossFeignClient.uploadWxImg(formDTO.getMedia());
dto.setMedia(formDTO.getMedia());
Result<UploadImgResultDTO> uploadWxImg = ossFeignClient.uploadWxImg(dto);
File file = new File(uploadWxImg.getData().getUrl()); File file = new File(uploadWxImg.getData().getUrl());
//获取上传代码信息 //获取上传代码信息
CodeCustomerDTO codeCustomerDTO = codeCustomerService.get(formDTO.getCodeId()); 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; package com.epmet.wxapi.param;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -15,50 +16,101 @@ import java.io.Serializable;
public class WxExtJson implements Serializable { public class WxExtJson implements Serializable {
private static final long serialVersionUID = -559311391779774945L; private static final long serialVersionUID = -559311391779774945L;
@JSONField(ordinal = 1)
private boolean extEnable; private boolean extEnable;
@JSONField(ordinal = 2)
private String extAppid; private String extAppid;
@JSONField(ordinal = 3)
private boolean directCommit; private boolean directCommit;
@JSONField(ordinal = 4)
private ExtBean ext; private ExtBean ext;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
private static class ExtBean { public static class ExtBean {
@JSONField(ordinal = 1)
private String extAppid; private String extAppid;
@JSONField(ordinal = 2)
private FootbarBean footbar; private FootbarBean footbar;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
private static class FootbarBean { private static class FootbarBean {
@JSONField(ordinal = 1)
private WorkBean work; private WorkBean work;
@JSONField(ordinal = 2)
private OrgBean org; private OrgBean org;
@JSONField(ordinal = 3)
private DataBean data; private DataBean data;
@JSONField(ordinal = 4)
private FindBean find; private FindBean find;
@JSONField(ordinal = 5)
private GardenBean garden;
@JSONField(ordinal = 6)
private IssueBean issue;
@JSONField(ordinal = 7)
private GroupBean group;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
private static class WorkBean { private static class WorkBean {
@JSONField(ordinal = 1)
private String name; private String name;
@JSONField(ordinal = 2)
private String pageTile; private String pageTile;
} }
@NoArgsConstructor @NoArgsConstructor
@Data @Data
private static class OrgBean { private static class OrgBean {
@JSONField(ordinal = 1)
private String name; private String name;
@JSONField(ordinal = 2)
private String pageTile; private String pageTile;
} }
@NoArgsConstructor @NoArgsConstructor
@Data @Data
private static class DataBean { private static class DataBean {
@JSONField(ordinal = 1)
private String name; private String name;
@JSONField(ordinal = 2)
private String pageTile; private String pageTile;
} }
@NoArgsConstructor @NoArgsConstructor
@Data @Data
private static class FindBean { 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; private String name;
@JSONField(ordinal = 2)
private String pageTile; private String pageTile;
} }
} }

Loading…
Cancel
Save