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
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]
@ -78,12 +66,7 @@ public class ApiIssueController {
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);
return issueService.upload(params.get("mediaId"));
}

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>
* @Author: liuchuang
* @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;
import com.elink.esua.epdc.async.WxMaSecCheckTask;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.form.CommentFormDTO;
@ -24,8 +25,13 @@ public class CommentServiceImpl implements CommentService {
@Autowired
private CommentFeignClient commentFeignClient;
@Autowired
private WxMaSecCheckTask wxMaSecCheckTask;
@Override
public Result submit(TokenDto userDetail, CommentFormDTO commentFormDTO) {
// 上传内容安全检查
wxMaSecCheckTask.checkMessage(commentFormDTO.getContent());
EventCommentDTO eventCommentDTO = new EventCommentDTO();
eventCommentDTO.setIssueId(commentFormDTO.getIssueId());
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;
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.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.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.result.*;
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 me.chanjar.weixin.mp.api.WxMpMaterialService;
import me.chanjar.weixin.mp.api.WxMpService;
import org.springframework.beans.factory.annotation.Autowired;
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.Map;
/**
* 议题模块
@ -41,8 +42,16 @@ public class IssueServiceImpl implements IssueService {
@Autowired
private OssFeignClient ossFeignClient;
@Autowired
private WxMpService wxMpService;
@Autowired
private WxMaSecCheckTask wxMaSecCheckTask;
@Override
public Result saveEvent(TokenDto userDetail, EpdcEventSubmitFormDTO formDto) {
// 上传内容安全检查
wxMaSecCheckTask.checkMessage(formDto.getEventContent());
// 获取该网格所有上级机构
Result<CompleteDeptDTO> deptDTOResult = adminFeignClient.getCompleteDept(userDetail.getGridId());
CompleteDeptDTO deptDTO = deptDTOResult.getData();
@ -70,21 +79,35 @@ public class IssueServiceImpl implements IssueService {
}
@Override
public Result<String> upload(Map<String, String> params) {
public Result<String> upload(String mediaId) {
String base64 = null;
InputStream in = null;
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);
// 下载文件
WxMpMaterialService wxMpMaterialService = wxMpService.getMaterialService();
File file = wxMpMaterialService.mediaDownload(mediaId);
// 图片安全检查
wxMaSecCheckTask.checkImage(file);
// 转base64
in = new FileInputStream(file);
byte[] bytes=new byte[(int)file.length()];
in.read(bytes);
base64 = "data:image/png;base64,"+Base64.getEncoder().encodeToString(bytes);
} catch (Exception e) {
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

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@
token: @wx.mp.configs.token@
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:
appid: @wx.ma.appId@
secret: @wx.ma.secret@

Loading…
Cancel
Save