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 detailBeanList = result.getDetail(); if (null != detailBeanList && detailBeanList.size() > 0) { List 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; } }