Browse Source

移动端上传图片、发布议题、发布评论、回复评论增加微信内容安全检查调用

dev
liuchuang 6 years ago
parent
commit
3df5ba9859
  1. 52
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/async/WxMaSecCheckTask.java
  2. 19
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiIssueController.java
  3. 4
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/IssueService.java
  4. 6
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CommentServiceImpl.java
  5. 59
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java
  6. 5
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml

52
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/async/WxMaSecCheckTask.java

@ -0,0 +1,52 @@
package com.elink.esua.epdc.async;
import cn.binarywang.wx.miniapp.api.WxMaSecCheckService;
import cn.binarywang.wx.miniapp.api.WxMaService;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.io.File;
/**
* 微信内容安全检查
* @Author LC
* @Date 2019/9/18 9:58
*/
@Component
public class WxMaSecCheckTask {
@Autowired
private WxMaService wxMaService;
/**
* 微信上传文本安全检查
* @Params: [message]
* @Return: void
* @Author: liuchuang
* @Date: 2019/9/18 10:17
*/
@Async
public void checkMessage(String message) {
WxMaSecCheckService wxMaSecCheckService = wxMaService.getSecCheckService();
wxMaSecCheckService.checkMessage(message);
}
/**
* 微信上传图片安全检查
* @Params: [file]
* @Return: void
* @Author: liuchuang
* @Date: 2019/9/18 14:57
*/
@Async
public void checkImage(File file) {
WxMaSecCheckService wxMaSecCheckService = wxMaService.getSecCheckService();
try {
wxMaSecCheckService.checkImage(file);
} catch (WxErrorException e) {
e.printStackTrace();
}
}
}

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

@ -30,18 +30,6 @@ public class ApiIssueController {
@Autowired @Autowired
private IssueService issueService; 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] * @Params: [userDetail, formDto]
@ -78,12 +66,7 @@ public class ApiIssueController {
if (StringUtils.isEmpty(params.get("mediaId"))) { if (StringUtils.isEmpty(params.get("mediaId"))) {
return new Result<String>().error("文件标识不能为空"); return new Result<String>().error("文件标识不能为空");
} }
System.out.println(params.get("mediaId")); return issueService.upload(params.get("mediaId"));
params.put("accessTokenUrl", accessTokenUrl);
params.put("mediaUrl", mediaUrl);
params.put("appid", appId);
params.put("secret", secret);
return issueService.upload(params);
} }

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

@ -39,12 +39,12 @@ public interface IssueService {
/** /**
* 图片上传 * 图片上传
* @Params: [params] * @Params: [String]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.lang.String> * @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.lang.String>
* @Author: liuchuang * @Author: liuchuang
* @Date: 2019/9/11 17:16 * @Date: 2019/9/11 17:16
*/ */
Result<String> upload(Map<String, String> params); Result<String> upload(String mediaId);
/** /**
* 议题/ * 议题/

6
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CommentServiceImpl.java

@ -1,6 +1,7 @@
package com.elink.esua.epdc.service.impl; package com.elink.esua.epdc.service.impl;
import com.elink.esua.epdc.async.WxMaSecCheckTask;
import com.elink.esua.epdc.common.token.dto.TokenDto; 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.Result;
import com.elink.esua.epdc.dto.form.CommentFormDTO; import com.elink.esua.epdc.dto.form.CommentFormDTO;
@ -24,8 +25,13 @@ public class CommentServiceImpl implements CommentService {
@Autowired @Autowired
private CommentFeignClient commentFeignClient; private CommentFeignClient commentFeignClient;
@Autowired
private WxMaSecCheckTask wxMaSecCheckTask;
@Override @Override
public Result submit(TokenDto userDetail, CommentFormDTO commentFormDTO) { public Result submit(TokenDto userDetail, CommentFormDTO commentFormDTO) {
// 上传内容安全检查
wxMaSecCheckTask.checkMessage(commentFormDTO.getContent());
EventCommentDTO eventCommentDTO = new EventCommentDTO(); EventCommentDTO eventCommentDTO = new EventCommentDTO();
eventCommentDTO.setIssueId(commentFormDTO.getIssueId()); eventCommentDTO.setIssueId(commentFormDTO.getIssueId());
eventCommentDTO.setContent(commentFormDTO.getContent()); eventCommentDTO.setContent(commentFormDTO.getContent());

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

@ -1,28 +1,29 @@
package com.elink.esua.epdc.service.impl; package com.elink.esua.epdc.service.impl;
import com.alibaba.fastjson.JSONObject; import com.elink.esua.epdc.async.WxMaSecCheckTask;
import com.elink.esua.epdc.common.token.dto.TokenDto; 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.Result;
import com.elink.esua.epdc.commons.tools.utils.UploadImageUtils;
import com.elink.esua.epdc.dto.CompleteDeptDTO; 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.UploadFormDTO;
import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO; import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO;
import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO; import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO;
import com.elink.esua.epdc.dto.form.UploadImageFormDTO;
import com.elink.esua.epdc.dto.issue.form.*; import com.elink.esua.epdc.dto.issue.form.*;
import com.elink.esua.epdc.dto.issue.result.*; import com.elink.esua.epdc.dto.issue.result.*;
import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.feign.AdminFeignClient;
import com.elink.esua.epdc.feign.IssueFeignClient; import com.elink.esua.epdc.feign.IssueFeignClient;
import com.elink.esua.epdc.feign.OssFeignClient; import com.elink.esua.epdc.feign.OssFeignClient;
import com.elink.esua.epdc.service.IssueService; import com.elink.esua.epdc.service.IssueService;
import org.apache.commons.lang3.StringUtils; import me.chanjar.weixin.mp.api.WxMpMaterialService;
import me.chanjar.weixin.mp.api.WxMpService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 议题模块 * 议题模块
@ -41,8 +42,16 @@ public class IssueServiceImpl implements IssueService {
@Autowired @Autowired
private OssFeignClient ossFeignClient; private OssFeignClient ossFeignClient;
@Autowired
private WxMpService wxMpService;
@Autowired
private WxMaSecCheckTask wxMaSecCheckTask;
@Override @Override
public Result saveEvent(TokenDto userDetail, EpdcEventSubmitFormDTO formDto) { public Result saveEvent(TokenDto userDetail, EpdcEventSubmitFormDTO formDto) {
// 上传内容安全检查
wxMaSecCheckTask.checkMessage(formDto.getEventContent());
// 获取该网格所有上级机构 // 获取该网格所有上级机构
Result<CompleteDeptDTO> deptDTOResult = adminFeignClient.getCompleteDept(userDetail.getGridId()); Result<CompleteDeptDTO> deptDTOResult = adminFeignClient.getCompleteDept(userDetail.getGridId());
CompleteDeptDTO deptDTO = deptDTOResult.getData(); CompleteDeptDTO deptDTO = deptDTOResult.getData();
@ -70,21 +79,35 @@ public class IssueServiceImpl implements IssueService {
} }
@Override @Override
public Result<String> upload(Map<String, String> params) { public Result<String> upload(String mediaId) {
String base64 = null;
InputStream in = null;
try { try {
// 下载图片并返回base64码 // 下载文件
String base64 = UploadImageUtils.downloadImageFromWx(params); WxMpMaterialService wxMpMaterialService = wxMpService.getMaterialService();
if (StringUtils.isEmpty(base64)) { File file = wxMpMaterialService.mediaDownload(mediaId);
return new Result<String>().error("获取图片信息失败"); // 图片安全检查
} wxMaSecCheckTask.checkImage(file);
// 图片上传至OSS // 转base64
UploadFormDTO formDTO = new UploadFormDTO(); in = new FileInputStream(file);
formDTO.setBase64String(base64); byte[] bytes=new byte[(int)file.length()];
return ossFeignClient.upload(formDTO); in.read(bytes);
base64 = "data:image/png;base64,"+Base64.getEncoder().encodeToString(bytes);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }
return new Result<String>().error("上传图片失败"); // 图片上传至OSS
UploadFormDTO formDTO = new UploadFormDTO();
formDTO.setBase64String(base64);
return ossFeignClient.upload(formDTO);
} }
@Override @Override

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

@ -93,11 +93,6 @@ wx:
secret: @wx.mp.configs.secret@ secret: @wx.mp.configs.secret@
token: @wx.mp.configs.token@ token: @wx.mp.configs.token@
aesKey: @wx.mp.configs.aesKey@ aesKey: @wx.mp.configs.aesKey@
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@
ma: ma:
appid: @wx.ma.appId@ appid: @wx.ma.appId@
secret: @wx.ma.secret@ secret: @wx.ma.secret@

Loading…
Cancel
Save