瀏覽代碼

[feat]
1、图文自动审核代码优化
2、游记接入自动审核功能

limeng 4 月之前
父節點
當前提交
8db42d81f2

+ 28 - 0
application-webadmin/src/main/java/com/tourism/webadmin/app/website/controller/WebSiteTourismTravelNotesPublishController.java

@@ -9,6 +9,7 @@ import com.tourism.common.core.util.MyCommonUtil;
 import com.tourism.common.core.util.MyModelUtil;
 import com.tourism.common.core.util.MyPageUtil;
 import com.tourism.common.core.validator.UpdateGroup;
+import com.tourism.common.huaweicloud.moderation.service.HuaweiCloudModerationService;
 import com.tourism.common.log.annotation.OperationLog;
 import com.tourism.common.log.model.constant.SysOperationLogType;
 import com.tourism.common.sequence.wrapper.IdGeneratorWrapper;
@@ -55,6 +56,8 @@ public class WebSiteTourismTravelNotesPublishController {
     private TourUserService tourUserService;
     @Autowired
     private DirectoryInfoService directoryInfoService;
+    @Autowired
+    private HuaweiCloudModerationService huaweiCloudModerationService;
 
     /**
      * 获取草稿id
@@ -222,6 +225,31 @@ public class WebSiteTourismTravelNotesPublishController {
         if(CollectionUtils.isNotEmpty(sectionContent)){
             tourismProjectTravelNotesWrite.setRemarks(sectionContent.get(0).getContent());
         }
+
+        // 文案审核
+        List<String> imageList = travelNotesContent.stream().filter(e -> e.getType().equals("image")).map(TourismTravelNotesContentWriteDto::getContent).collect(Collectors.toList());
+        imageList.add(tourismProjectTravelNotesWrite.getTravelNotesBanner());
+        Boolean imageResult = huaweiCloudModerationService.runImageModeration(imageList);
+        // 图片审核
+        List<String> titleList = travelNotesContent.stream().filter(e -> e.getType().equals("sectionTitle")).map(TourismTravelNotesContentWriteDto::getContent).collect(Collectors.toList());
+        List<String> contentList = travelNotesContent.stream().filter(e -> e.getType().equals("sectionContent")).map(TourismTravelNotesContentWriteDto::getContent).collect(Collectors.toList());
+        titleList.addAll(contentList);
+        Boolean textResult = huaweiCloudModerationService.runTextModeration(titleList);
+        String auditReson = "";
+        if(imageResult && textResult){
+            tourismProjectTravelNotesWrite.setAutoAuditStatus(1);
+            auditReson = "图文审核通过";
+        }else {
+            tourismProjectTravelNotesWrite.setAutoAuditStatus(2);
+            if(!imageResult){
+                auditReson = "图片审核未通过";
+            }
+            if(!textResult){
+                auditReson += "文案审核未通过";
+            }
+        }
+        tourismProjectTravelNotesWrite.setAutoRejectReason(auditReson);
+
         tourismProjectTravelNotesWrite.setState(AuditState.UNAUDITSTATE);
         //对dto的id进行判断,如果数据表中查不到该id,则为新增;否则为修改
         TourismProjectTravelNotesWrite tourismProjectTravelNotesWrite1 =

+ 49 - 28
common/common-huaweicloud/common-huaweicloud-moderation/src/main/java/com/tourism/common/huaweicloud/moderation/service/HuaweiCloudModerationService.java

@@ -11,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
+import java.util.List;
 
 @Service
 public class HuaweiCloudModerationService {
@@ -18,7 +19,13 @@ public class HuaweiCloudModerationService {
     @Autowired
     private HuaweiCloudConfig huaweiCloudConfig;
 
-    public Boolean runTextModeration(String text) {
+    /**
+     * 文案审核,只要有一个不通过,都认为不通过
+     * @param texts
+     * @return
+     */
+    public Boolean runTextModeration(List<String> texts) {
+        Boolean result = true;
         ICredential credential = new BasicCredentials()
                 .withProjectId(huaweiCloudConfig.getProjectId())
                 .withAk(huaweiCloudConfig.getAccessKey())
@@ -32,26 +39,36 @@ public class HuaweiCloudModerationService {
         RunTextModerationRequest request = new RunTextModerationRequest();
         TextDetectionReq body = new TextDetectionReq();
         TextDetectionDataReq databody = new TextDetectionDataReq();
-        databody.withText(text);
         body.withCategories(Arrays.asList("terrorism", "porn", "abuse", "ban"));
-        body.withData(databody);
-        body.withEventType("comment");
-        request.withBody(body);
-        try {
-            RunTextModerationResponse runTextModerationResponse = client.runTextModeration(request);
-            if("pass".equals(runTextModerationResponse.getResult().getSuggestion())){
-                return true;
-            }else {
-                return false;
+        for (String text : texts) {
+            databody.withText(text);
+            body.withData(databody);
+            body.withEventType("comment");
+            request.withBody(body);
+            try {
+                RunTextModerationResponse response = client.runTextModeration(request);
+                if("pass".equals(response.getResult().getSuggestion())){
+                }else {
+                    result = false;
+                    break;
+                }
+            } catch (ServiceResponseException e) {
+                // 处理异常
+                e.printStackTrace();
+                result = false;
+                break;
             }
-        } catch (ServiceResponseException e) {
-            // 处理异常
-            e.printStackTrace();
-            return false;
         }
+        return result;
     }
 
-    public Boolean runImageModeration(String url) {
+    /**
+     * 只要有一张图片不通过,就认为不通过
+     * @param urls
+     * @return
+     */
+    public Boolean runImageModeration(List<String> urls) {
+        Boolean result = true;
         ICredential credential = new BasicCredentials()
                 .withProjectId(huaweiCloudConfig.getProjectId())
                 .withAk(huaweiCloudConfig.getAccessKey())
@@ -65,20 +82,24 @@ public class HuaweiCloudModerationService {
         CheckImageModerationRequest request = new CheckImageModerationRequest();
         ImageDetectionReq body = new ImageDetectionReq();
         body.withCategories(Arrays.asList("terrorism", "porn", "abuse", "ban"));
-        body.withUrl(url);
         body.withEventType("head_image");
-        request.withBody(body);
-        try {
-            CheckImageModerationResponse response = client.checkImageModeration(request);
-            if("pass".equals(response.getResult().getSuggestion())){
-                return true;
-            }else {
-                return false;
+        for (String url : urls) {
+            body.withUrl(url);
+            request.withBody(body);
+            try {
+                CheckImageModerationResponse response = client.checkImageModeration(request);
+                if("pass".equals(response.getResult().getSuggestion())){
+                }else {
+                    result = false;
+                    break;
+                }
+            } catch (ServiceResponseException e) {
+                // 处理异常
+                e.printStackTrace();
+                result = false;
+                break;
             }
-        } catch (ServiceResponseException e) {
-            // 处理异常
-            e.printStackTrace();
-            return false;
         }
+        return result;
     }
 }