diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/async/WxMaSecCheckTask.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/async/WxMaSecCheckTask.java new file mode 100644 index 000000000..cf42160a7 --- /dev/null +++ b/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(); + } + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiIssueController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiIssueController.java index 14747db71..d59bdcebe 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiIssueController.java +++ b/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().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")); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/IssueService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/IssueService.java index f7c405054..0bb557bb8 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/IssueService.java +++ b/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 * @Author: liuchuang * @Date: 2019/9/11 17:16 */ - Result upload(Map params); + Result upload(String mediaId); /** * 议题(赞/踩) diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CommentServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CommentServiceImpl.java index 54dd9dfad..0281bf7a8 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CommentServiceImpl.java +++ b/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()); diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java index 1b5bd8b8c..c5191bcd6 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java +++ b/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 deptDTOResult = adminFeignClient.getCompleteDept(userDetail.getGridId()); CompleteDeptDTO deptDTO = deptDTOResult.getData(); @@ -70,21 +79,35 @@ public class IssueServiceImpl implements IssueService { } @Override - public Result upload(Map params) { + public Result upload(String mediaId) { + String base64 = null; + InputStream in = null; try { - // 下载图片并返回base64码 - String base64 = UploadImageUtils.downloadImageFromWx(params); - if (StringUtils.isEmpty(base64)) { - return new Result().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().error("上传图片失败"); + // 图片上传至OSS + UploadFormDTO formDTO = new UploadFormDTO(); + formDTO.setBase64String(base64); + return ossFeignClient.upload(formDTO); } @Override diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml index 34f25b489..0e57f3fb3 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/resources/application.yml +++ b/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@