Skip to content

Commit 491134b

Browse files
committed
🎨 #1307 优化完善微信小程序内容安全校验接口
1 parent f60a7d9 commit 491134b

File tree

4 files changed

+68
-11
lines changed

4 files changed

+68
-11
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaSecCheckService.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ public interface WxMaSecCheckService {
3232
*/
3333
boolean checkImage(File file) throws WxErrorException;
3434

35+
/**
36+
* 校验一张图片是否含有违法违规内容
37+
* @param fileUrl 文件网络地址
38+
* @return 是否违规
39+
* @throws WxErrorException .
40+
*/
41+
boolean checkImage(String fileUrl) throws WxErrorException;
42+
3543
/**
3644
* <pre>
3745
* 检查一段文本是否含有违法违规内容。

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSecCheckServiceImpl.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@
44
import cn.binarywang.wx.miniapp.api.WxMaService;
55
import cn.binarywang.wx.miniapp.bean.WxMaMediaAsyncCheckResult;
66
import com.google.gson.JsonObject;
7-
import java.io.File;
87
import lombok.AllArgsConstructor;
98
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
9+
import me.chanjar.weixin.common.error.WxError;
1010
import me.chanjar.weixin.common.error.WxErrorException;
1111
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
12+
import org.apache.commons.io.FileUtils;
13+
14+
import java.io.File;
15+
import java.io.IOException;
16+
import java.net.URL;
1217

1318
/**
1419
* <pre>
@@ -20,17 +25,28 @@
2025
*/
2126
@AllArgsConstructor
2227
public class WxMaSecCheckServiceImpl implements WxMaSecCheckService {
23-
2428
private WxMaService service;
2529

2630
@Override
2731
public boolean checkImage(File file) throws WxErrorException {
28-
//这里只是借用MediaUploadRequestExecutor,并不使用其返回值WxMediaUploadResult
2932
WxMediaUploadResult result = this.service.execute(MediaUploadRequestExecutor
3033
.create(this.service.getRequestHttp()), IMG_SEC_CHECK_URL, file);
3134
return result != null;
3235
}
3336

37+
@Override
38+
public boolean checkImage(String fileUrl) throws WxErrorException {
39+
File file = new File(FileUtils.getTempDirectory(), System.currentTimeMillis() + ".tmp");
40+
try {
41+
URL url = new URL(fileUrl);
42+
FileUtils.copyURLToFile(url, file);
43+
} catch (IOException e) {
44+
throw new WxErrorException(WxError.builder().errorCode(-1).errorMsg("文件地址读取异常").build(), e);
45+
}
46+
47+
return this.checkImage(file);
48+
}
49+
3450
@Override
3551
public boolean checkMessage(String msgString) throws WxErrorException {
3652
JsonObject jsonObject = new JsonObject();

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMediaAsyncCheckResult.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@
22

33
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
44
import com.google.gson.annotations.SerializedName;
5+
import com.oracle.webservices.internal.api.databinding.DatabindingMode;
6+
import lombok.Data;
7+
58
import java.io.Serializable;
69

10+
/**
11+
* @author borisbao
12+
*/
13+
@Data
714
public class WxMaMediaAsyncCheckResult implements Serializable {
8-
915
private static final long serialVersionUID = 3928132365399916183L;
1016

1117
/**

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
package cn.binarywang.wx.miniapp.bean;
22

3-
import java.io.IOException;
4-
import java.io.InputStream;
5-
import java.io.Serializable;
6-
import java.nio.charset.StandardCharsets;
7-
8-
import org.apache.commons.io.IOUtils;
9-
103
import cn.binarywang.wx.miniapp.config.WxMaConfig;
114
import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
125
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder;
@@ -16,6 +9,12 @@
169
import com.thoughtworks.xstream.annotations.XStreamConverter;
1710
import lombok.Data;
1811
import me.chanjar.weixin.common.util.xml.XStreamCDataConverter;
12+
import org.apache.commons.io.IOUtils;
13+
14+
import java.io.IOException;
15+
import java.io.InputStream;
16+
import java.io.Serializable;
17+
import java.nio.charset.StandardCharsets;
1918

2019
/**
2120
* @author <a href="https://github.com/binarywang">Binary Wang</a>
@@ -108,6 +107,34 @@ public class WxMaMessage implements Serializable {
108107
@XStreamConverter(value = XStreamCDataConverter.class)
109108
private String sessionFrom;
110109

110+
/**
111+
* 以下是异步校验图片/音频是否含有违法违规内容的异步检测结果推送报文中的参数
112+
*/
113+
@SerializedName("isrisky")
114+
@XStreamAlias("isrisky")
115+
@XStreamConverter(value = XStreamCDataConverter.class)
116+
private String isRisky;
117+
118+
@SerializedName("extra_info_json")
119+
@XStreamAlias("extra_info_json")
120+
@XStreamConverter(value = XStreamCDataConverter.class)
121+
private String extraInfoJson;
122+
123+
@SerializedName("appid")
124+
@XStreamAlias("appid")
125+
@XStreamConverter(value = XStreamCDataConverter.class)
126+
private String appid;
127+
128+
@SerializedName("trace_id")
129+
@XStreamAlias("trace_id")
130+
@XStreamConverter(value = XStreamCDataConverter.class)
131+
private String traceId;
132+
133+
@SerializedName("status_code")
134+
@XStreamAlias("status_code")
135+
@XStreamConverter(value = XStreamCDataConverter.class)
136+
private String statusCode;
137+
111138
public static WxMaMessage fromXml(String xml) {
112139
return XStreamTransformer.fromXml(WxMaMessage.class, xml);
113140
}

0 commit comments

Comments
 (0)