mitao
2025-02-21 31573d6180d15ef65ed0df9c2732495f40b12663
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package com.panzhihua.applets.weixin;
 
import cn.binarywang.wx.miniapp.api.WxMaSecCheckService;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest;
import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.panzhihua.applets.config.WxMaConfiguration;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
 
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 微信内容审查
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2021-02-25 10:57
 **/
@Slf4j
@Service
public class CheckService {
    @Resource
    private WxMaConfiguration wxMaConfiguration;
 
    public boolean checkMessage(String msg) {
        WxMaService maService = wxMaConfiguration.getMaService("");
 
        WxMaConfig wxMaConfig = maService.getWxMaConfig();
        WxMaMsgSecCheckCheckRequest wxMaMsgSecCheckCheckRequest = WxMaMsgSecCheckCheckRequest.builder().version("2").openid(wxMaConfig.getAppid()).scene(2).content(msg).build();
        WxMaSecCheckService wxMaSecCheckService = maService.getSecCheckService();
        try {
            WxMaMsgSecCheckCheckResponse wxMaMsgSecCheckCheckResponse = wxMaSecCheckService.checkMessage(wxMaMsgSecCheckCheckRequest);
            wxMaMsgSecCheckCheckResponse.getResult();
            return true;
        } catch (WxErrorException e) {
            log.error("微信审核文字内容出错【{}】", e.getMessage());
            e.printStackTrace();
        }
        return false;
    }
 
    public String checkMessageBy(String msg, String openId, String appId) {
        WxMaMsgSecCheckCheckRequest wxMaMsgSecCheckCheckRequest = WxMaMsgSecCheckCheckRequest.builder().version("2").openid(openId).scene(2).content(msg).build();
        WxMaSecCheckService wxMaSecCheckService = wxMaConfiguration.getMaService(appId).getSecCheckService();
        try {
            WxMaMsgSecCheckCheckResponse result = wxMaSecCheckService.checkMessage(wxMaMsgSecCheckCheckRequest);
            return this.handleResult(result);
        } catch (WxErrorException e) {
            log.error("微信审核文字内容出错【{}】", e.getMessage());
            e.printStackTrace();
        }
        return null;
    }
 
    public boolean checkImageBy(String url, String appId) {
        String[] imageUrlArr = url.split(",");
        for (String imageUrl : imageUrlArr) {
            WxMaSecCheckService wxMaSecCheckService = wxMaConfiguration.getMaService(appId).getSecCheckService();
            try {
                return wxMaSecCheckService.checkImage(imageUrl);
            } catch (WxErrorException e) {
                log.error("微信审核图片内容出错【{}】", e.getMessage());
                e.printStackTrace();
            }
        }
        return true;
    }
 
    /**
     * 处理微信返回的违规结果
     *
     * @param result
     * @return
     */
    private String handleResult(WxMaMsgSecCheckCheckResponse result) {
        List<WxMaMsgSecCheckCheckResponse.DetailBean> detailBeanList = result.getDetail();
        if (null != detailBeanList && detailBeanList.size() > 0) {
            List<String> resultMsgs = new ArrayList<>();
            for (WxMaMsgSecCheckCheckResponse.DetailBean detailBean : detailBeanList) {
                if (0 == detailBean.getErrcode()) {
                    String label = detailBean.getLabel();
                    if (StrUtil.isNotBlank(label)) {
                        switch (label) {
                            case "100":
                                continue;
                            case "10001":
                                resultMsgs.add("广告");
                                continue;
                            case "20001":
                                resultMsgs.add("时政");
                                continue;
                            case "20002":
                                resultMsgs.add("色情");
                                continue;
                            case "20003":
                                resultMsgs.add("辱骂");
                                continue;
                            case "20006":
                                resultMsgs.add("违法犯罪");
                                continue;
                            case "20008":
                                resultMsgs.add("欺诈");
                                continue;
                            case "20012":
                                resultMsgs.add("低俗");
                                continue;
                            case "20013":
                                resultMsgs.add("版权");
                                continue;
                            case "21000":
                                resultMsgs.add("其他");
                        }
                    }
 
                }
            }
            if (CollUtil.isNotEmpty(resultMsgs)) {
                return StringUtils.join(resultMsgs, ",");
            }
        }
        return null;
    }
 
}