luodangjia
2024-10-17 0911582d2f80e7f3162fb6d0b59ee12e23de133b
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -190,7 +190,7 @@
            siteDetailEvaluateVO.setOrderEvaluateVOS(tChargingOrders);
            // 统计好评率
            long goodCount = tChargingOrders.stream().filter(orderEvaluateVO -> orderEvaluateVO.getMark()>=4).count();
            BigDecimal reviewRate = new BigDecimal(goodCount).divide(new BigDecimal(tChargingOrders.size())).setScale(2, BigDecimal.ROUND_HALF_UP);
            BigDecimal reviewRate = new BigDecimal(goodCount).divide(new BigDecimal(tChargingOrders.size()),2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
            siteDetailEvaluateVO.setReviewRate(reviewRate);
            siteDetailEvaluateVO.setEvaluateCount(tChargingOrders.size());
            siteDetailEvaluateVO.setOrderEvaluateVOS(tChargingOrders.stream().limit(3).collect(Collectors.toList()));
@@ -274,29 +274,31 @@
    
        //检测敏感词
        String content = orderEvaluate.getContent();
        String token = appUserClient.getWXToken().getData();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("content", content);
        jsonObject.put("version", 2);
        jsonObject.put("scene", 2);
        jsonObject.put("openid", appUser.getWxOpenid());
        String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + token, jsonObject.toString());
        JSONObject object = JSONObject.parseObject(post);
        Integer errcode = object.getInteger("errcode");
        if(0 != errcode){
            throw new RuntimeException(object.getString("errmsg"));
        }
        JSONArray detail = object.getJSONArray("detail");
        for (int i = 0; i < detail.size(); i++) {
            JSONObject jsonObject1 = detail.getJSONObject(i);
            Integer errcode1 = jsonObject1.getInteger("errcode");
            if(0 == errcode1){
                String suggest = jsonObject1.getString("suggest");
                Integer label = jsonObject1.getInteger("label");
                String keyword = jsonObject1.getString("keyword");
                Integer prob = jsonObject1.getInteger("prob");
                if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
                    content = content.replaceAll(keyword, "***");
        if(StringUtils.isNotEmpty(content)){
            String token = appUserClient.getWXToken().getData();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("content", content);
            jsonObject.put("version", 2);
            jsonObject.put("scene", 2);
            jsonObject.put("openid", appUser.getWxOpenid());
            String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + token, jsonObject.toString());
            JSONObject object = JSONObject.parseObject(post);
            Integer errcode = object.getInteger("errcode");
            if(0 != errcode){
                throw new RuntimeException(object.getString("errmsg"));
            }
            JSONArray detail = object.getJSONArray("detail");
            for (int i = 0; i < detail.size(); i++) {
                JSONObject jsonObject1 = detail.getJSONObject(i);
                Integer errcode1 = jsonObject1.getInteger("errcode");
                if(0 == errcode1){
                    String suggest = jsonObject1.getString("suggest");
                    Integer label = jsonObject1.getInteger("label");
                    String keyword = jsonObject1.getString("keyword");
                    Integer prob = jsonObject1.getInteger("prob");
                    if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
                        return AjaxResult.error("评价包含违规内容,请重新评价!");
                    }
                }
            }
        }