Browse Source

移动端接口调试修改修改

dev
liuchuang 6 years ago
parent
commit
435b3104d2
  1. 124
      esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/UploadImageUtils.java
  2. 38
      esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/UploadImageFormDTO.java
  3. 37
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiIssueController.java
  4. 16
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/OssFeignClient.java
  5. 7
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/OssFeignClientFallback.java
  6. 12
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/IssueService.java
  7. 23
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java
  8. 5
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml
  9. 1
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java
  10. 1
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java
  11. 4
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java
  12. 6
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml
  13. 10
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml
  14. 16
      esua-epdc/epdc-module/epdc-oss/epdc-oss-client/src/main/java/com/elink/esua/epdc/dto/UploadFormDTO.java
  15. 19
      esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java

124
esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/utils/UploadImageUtils.java

@ -0,0 +1,124 @@
package com.elink.esua.epdc.commons.tools.utils;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpEntity;
import sun.net.www.http.HttpClient;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
/**
* @Author LC
* @Date 2019/9/11 14:53
*/
public class UploadImageUtils {
/**
* 从微信下载图片
* @Params: [params]
* @Return: java.lang.String
* @Author: liuchuang
* @Date: 2019/9/11 17:04
*/
public static String downloadImageFromWx(Map<String, String> params) throws Exception {
InputStream inputStream = getMediaStream(params.get("accessTokenUrl"), params.get("mediaUrl"), params.get("mediaId"), params.get("appid"), params.get("secret"));
if (null == inputStream) {
return null;
}
byte[] data = null;
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while((len = inputStream.read(buffer, 0, 1024)) != -1){
swapStream.write(buffer, 0, len);
}
data = swapStream.toByteArray();
String base64 = "data:image/png;base64,"+Base64.encodeBase64String(data);
return base64;
}
/**
* 获取临时素材
*/
private static InputStream getMediaStream(String accessTokenUrl, String mediaUrl, String mediaId, String appid, String secret)throws IOException {
String access_token = getAccessToken(accessTokenUrl, appid, secret);
String params = "access_token=" + access_token + "&media_id=" + mediaId;
InputStream is = null;
try {
String urlNameString = mediaUrl + "?" + params;
URL urlGet = new URL(urlNameString);
HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();
http.setRequestMethod("GET"); // 必须是get方式请求
http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
http.connect();
if (!http.getContentType().contains("image")) {
return null;
}
// 获取文件转化为byte流
is = http.getInputStream();
} catch (Exception e) {
e.printStackTrace();
}
return is;
}
/**
* 获取微信Jsapi的accessToken
* 这里获取的获取微信Jsapi的accessToken跟小程序以及其他的不一样
*/
public static String getAccessToken(String accessTokenUrl, String appId, String secret) {
accessTokenUrl = accessTokenUrl.replace("APPID", appId).replace("APPSECRET", secret);
JSONObject jsonObj = doHttpGet(accessTokenUrl);
String accessToken = jsonObj.getString("access_token");
return accessToken;
}
/**
* 发送GET请求
* @Params: [requestUrl, params]
* @Return: java.lang.String
* @Author: liuchuang
* @Date: 2019/8/5 14:25
*/
public static JSONObject doHttpGet(String requestUrl) {
JSONObject jsonObj = null;
// buffer用于接受返回的字符
StringBuffer buffer = new StringBuffer();
try {
// 建立URL,把请求地址给补全,其中urlEncode()方法用于把params里的参数给取出来
URL url = new URL(requestUrl);
// 打开http连接
HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
httpUrlConn.setDoInput(true);
httpUrlConn.setRequestMethod("GET");
httpUrlConn.connect();
// 获得输入
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
// 将bufferReader的值给放到buffer里
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
// 关闭bufferReader和输入流
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
// 断开连接
httpUrlConn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
jsonObj = JSONObject.parseObject(buffer.toString());
return jsonObj;
}
}

38
esua-epdc/epdc-module/epdc-api/epdc-api-client/src/main/java/com/elink/esua/epdc/dto/form/UploadImageFormDTO.java

@ -0,0 +1,38 @@
package com.elink.esua.epdc.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 图片上传Form DTO
* @Author LC
* @Date 2019/9/11 16:27
*/
@Data
public class UploadImageFormDTO implements Serializable {
private static final long serialVersionUID = -4670602967272919640L;
/**
* 文件标识
*/
@NotBlank(message = "文件标识不能为空")
private String mediaId;
/**
* 获取accessToken地址
*/
private String accessTokenUrl;
/**
* 下载文件地址
*/
private String mediaUrl;
/**
* appid
*/
private String appid;
/**
* secret
*/
private String secret;
}

37
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiIssueController.java

@ -3,7 +3,6 @@ package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.annotation.LoginUser;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.form.StatementFormDTO;
@ -12,11 +11,13 @@ import com.elink.esua.epdc.dto.issue.result.IssueDetailResultDTO;
import com.elink.esua.epdc.dto.issue.result.IssueHandleProgressResultDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.service.IssueService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
* 移动端接口-议题模块
@ -30,6 +31,18 @@ public class ApiIssueController {
@Autowired
private IssueService issueService;
@Value("${wx.cgiBin.accessTokenUrl}")
private String accessTokenUrl;
@Value("${wx.cgiBin.mediaUrl}")
private String mediaUrl;
@Value("${wx.cgiBin.appId}")
private String appId;
@Value("${wx.cgiBin.secret}")
private String secret;
/**
* 发布事件
* @Params: [userDetail, formDto]
@ -55,15 +68,23 @@ public class ApiIssueController {
}
/**
* 文件上传
* @Params: [file]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UploadDTO>
* 图片上传
* @Params: [params]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.lang.String>
* @Author: liuchuang
* @Date: 2019/9/8 18:34
* @Date: 2019/9/11 17:16
*/
@PostMapping("upload")
public Result<UploadDTO> upload(@RequestParam("file") MultipartFile file) {
return issueService.upload(file);
public Result<String> upload(@RequestBody Map<String, String> params) {
if (StringUtils.isEmpty(params.get("mediaId"))) {
return new Result<String>().error("文件标识不能为空");
}
System.out.println(params.get("mediaId"));
params.put("accessTokenUrl", accessTokenUrl);
params.put("mediaUrl", mediaUrl);
params.put("appid", appId);
params.put("secret", secret);
return issueService.upload(params);
}

16
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/OssFeignClient.java

@ -2,13 +2,10 @@ package com.elink.esua.epdc.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.dto.UploadFormDTO;
import com.elink.esua.epdc.feign.fallback.OssFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
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;
/**
* 文件对象模块
@ -18,6 +15,13 @@ import org.springframework.web.multipart.MultipartFile;
@FeignClient(name = ServiceConstant.EPDC_OSS_SERVER, fallback = OssFeignClientFallback.class)
public interface OssFeignClient {
@PostMapping(value = "oss/file/upload", produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<UploadDTO> upload(@RequestPart("file") MultipartFile file);
/**
* 图片上传
* @Params: [base64]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.lang.String>
* @Author: liuchuang
* @Date: 2019/9/11 17:17
*/
@PostMapping(value = "oss/file/uploadBase64")
Result<String> upload(UploadFormDTO formDTO);
}

7
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/OssFeignClientFallback.java

@ -3,10 +3,9 @@ package com.elink.esua.epdc.feign.fallback;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.dto.UploadFormDTO;
import com.elink.esua.epdc.feign.OssFeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
/**
* 文件对象模块
@ -17,7 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
public class OssFeignClientFallback implements OssFeignClient {
@Override
public Result<UploadDTO> upload(MultipartFile file) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "upload", file.getOriginalFilename());
public Result<String> upload(UploadFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "upload", formDTO);
}
}

12
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/IssueService.java

@ -4,6 +4,7 @@ import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO;
import com.elink.esua.epdc.dto.form.UploadImageFormDTO;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.form.StatementFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueCategoryStatisticsResultDTO;
@ -13,6 +14,7 @@ import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
* 议题模块
@ -40,13 +42,13 @@ public interface IssueService {
Result<List<IssueResultDTO>> listIssues(TokenDto userDetail, IssueFormDTO formDto);
/**
* 文件上传
* @Params: [file]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.dto.UploadDTO>
* 图片上传
* @Params: [params]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.lang.String>
* @Author: liuchuang
* @Date: 2019/9/8 18:34
* @Date: 2019/9/11 17:16
*/
Result<UploadDTO> upload(MultipartFile file);
Result<String> upload(Map<String, String> params);
/**
* 议题/

23
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java

@ -1,10 +1,14 @@
package com.elink.esua.epdc.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.utils.UploadImageUtils;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.UploadDTO;
import com.elink.esua.epdc.dto.UploadFormDTO;
import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO;
import com.elink.esua.epdc.dto.form.UploadImageFormDTO;
import com.elink.esua.epdc.dto.issue.form.IssueCategoryStatisticsFormDTO;
import com.elink.esua.epdc.dto.issue.form.IssueDetailFormDTO;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
@ -17,11 +21,13 @@ import com.elink.esua.epdc.feign.AdminFeignClient;
import com.elink.esua.epdc.feign.IssueFeignClient;
import com.elink.esua.epdc.feign.OssFeignClient;
import com.elink.esua.epdc.service.IssueService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
* 议题模块
@ -69,8 +75,21 @@ public class IssueServiceImpl implements IssueService {
}
@Override
public Result<UploadDTO> upload(MultipartFile file) {
return ossFeignClient.upload(file);
public Result<String> upload(Map<String, String> params) {
try {
// 下载图片并返回base64码
String base64 = UploadImageUtils.downloadImageFromWx(params);
if (StringUtils.isEmpty(base64)) {
return new Result<String>().error("获取图片信息失败");
}
// 图片上传至OSS
UploadFormDTO formDTO = new UploadFormDTO();
formDTO.setBase64String(base64);
return ossFeignClient.upload(formDTO);
} catch (Exception e) {
e.printStackTrace();
}
return new Result<String>().error("上传图片失败");
}
@Override

5
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml

@ -99,6 +99,11 @@ wx:
token: #微信小程序消息服务器配置的token
aesKey: #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat: JSON
cgiBin:
accessTokenUrl: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&&secret=APPSECRET
mediaUrl: https://api.weixin.qq.com/cgi-bin/media/get
appId: @wx.mp.configs.appId@
secret: @wx.mp.configs.secret@
token:
expire: 21600

1
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java

@ -216,6 +216,7 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
issueEntity.setUserId(entity.getUserId());
issueEntity.setNickName(entity.getNickName());
issueEntity.setUserFace(entity.getUserFace());
issueEntity.setIsPartyMember(entity.getIsPartyMember());
issueEntity.setIssueContent(entity.getEventContent());
issueEntity.setDistributeTime(entity.getCreatedTime());
issueEntity.setArea(entity.getArea());

1
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java

@ -258,6 +258,7 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
itemEntity.setUserId(issueEntity.getUserId());
itemEntity.setNickName(issueEntity.getNickName());
itemEntity.setUserFace(issueEntity.getUserFace());
itemEntity.setIsPartyMember(issueEntity.getIsPartyMember());
itemEntity.setItemContent(issueEntity.getIssueContent());
itemEntity.setDistributeTime(issueEntity.getDistributeTime());
itemEntity.setArea(issueEntity.getArea());

4
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemEntity.java

@ -152,6 +152,10 @@ public class ItemEntity extends BaseEpdcEntity {
* 满意度评价内容
*/
private String evaluationContent;
/**
* 满意度评价时间
*/
private String evaluationTime;
/**
* 项目状态 0-处理中5-已关闭10-已结案

6
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml

@ -47,6 +47,12 @@
<if test="gridId != null and gridId != ''">
AND temp.grid_id = #{gridId}
</if>
<if test="streetId != null and streetId != ''">
AND temp.STREET_ID = #{streetId}
</if>
<if test="communityId != null and communityId != ''">
AND temp.COMMUNITY_ID = #{communityId}
</if>
AND temp.EVENT_STATE = 0
ORDER BY temp.CREATED_TIME DESC
</select>

10
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml

@ -23,8 +23,14 @@
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND DATE_FORMAT( issue.CREATED_TIME, '%Y-%m-%d' ) BETWEEN #{startTime} AND #{endTime}
</if>
<if test="deptId != null and deptId != ''">
AND issue.grid_id = #{deptId}
<if test="gridId != null and gridId != ''">
AND issue.GRID_ID = #{gridId}
</if>
<if test="streetId != null and streetId != ''">
AND issue.STREET_ID = #{streetId}
</if>
<if test="communityId != null and communityId != ''">
AND issue.COMMUNITY_ID = #{communityId}
</if>
ORDER BY
issue.CREATED_TIME DESC

16
esua-epdc/epdc-module/epdc-oss/epdc-oss-client/src/main/java/com/elink/esua/epdc/dto/UploadFormDTO.java

@ -0,0 +1,16 @@
package com.elink.esua.epdc.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @Author LC
* @Date 2019/9/11 19:22
*/
@Data
public class UploadFormDTO implements Serializable {
private static final long serialVersionUID = -3595962954673866413L;
private String base64String;
}

19
esua-epdc/epdc-module/epdc-oss/epdc-oss-server/src/main/java/com/elink/esua/epdc/controller/OssController.java

@ -15,6 +15,7 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AliyunGroup;
import com.elink.esua.epdc.commons.tools.validator.group.QcloudGroup;
import com.elink.esua.epdc.commons.tools.validator.group.QiniuGroup;
import com.elink.esua.epdc.dto.UploadFormDTO;
import com.elink.esua.epdc.entity.OssEntity;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.remote.ParamsRemoteService;
@ -40,10 +41,12 @@ import com.elink.esua.epdc.remote.ParamsRemoteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.annotations.ApiIgnore;
import sun.misc.BASE64Decoder;
import java.util.Arrays;
import java.util.Date;
@ -138,4 +141,20 @@ public class OssController {
return new Result();
}
@PostMapping("uploadBase64")
@ApiOperation(value = "上传文件")
public Result<String> uploadFile(@RequestBody UploadFormDTO formDTO) throws Exception {
if (null == formDTO || StringUtils.isEmpty(formDTO.getBase64String())) {
return new Result<String>().error(ModuleErrorCode.UPLOAD_FILE_EMPTY);
}
String[] base64ImgArr = formDTO.getBase64String().split(",");
String suffixTmp = base64ImgArr[0];
String suffix = suffixTmp.substring(11, suffixTmp.indexOf(";"));
byte[] imgBytes = new BASE64Decoder().decodeBuffer(base64ImgArr[1]);
String url = OssFactory.build().uploadSuffix(imgBytes, suffix);
System.out.println("base64:"+formDTO.getBase64String());
System.out.println("url:"+url);
return new Result<String>().ok(url);
}
}

Loading…
Cancel
Save