CallBackController.java 3.62 KB
Newer Older
刘基明's avatar
刘基明 committed
1 2
package com.tanpu.community.controller;

刘基明's avatar
刘基明 committed
3 4 5
import com.alibaba.fastjson.JSONArray;
import com.tanpu.common.api.CommonResp;
import com.tanpu.common.exception.BizException;
刘基明's avatar
刘基明 committed
6
import com.tanpu.common.util.JsonUtil;
7
import com.tanpu.community.api.enums.FileChechStatusEnum;
刘基明's avatar
刘基明 committed
8
import com.tanpu.community.manager.FileManager;
刘基明's avatar
刘基明 committed
9 10
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
刘基明's avatar
刘基明 committed
11
import org.springframework.beans.factory.annotation.Autowired;
刘基明's avatar
刘基明 committed
12 13
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
刘基明's avatar
刘基明 committed
14
import org.springframework.web.bind.annotation.RequestParam;
刘基明's avatar
刘基明 committed
15 16
import org.springframework.web.bind.annotation.RestController;

刘基明's avatar
刘基明 committed
17
import java.util.HashMap;
18
import java.util.List;
刘基明's avatar
刘基明 committed
19
import java.util.Map;
20
import java.util.concurrent.ConcurrentHashMap;
刘基明's avatar
刘基明 committed
21

刘基明's avatar
刘基明 committed
22 23 24 25 26
@RestController
@Slf4j
@RequestMapping(value = "/api")
public class CallBackController {

刘基明's avatar
刘基明 committed
27 28 29 30 31 32 33
    @Autowired
    private FileManager fileManager;

    /**
     * 阿里云图片审核回调接口
     * 回调时间:6秒以内
     * 文档地址:https://help.aliyun.com/document_detail/129946.html?spm=a2c4g.11186623.6.562.19a05f3aNkd2Oo#table-s9e-grd-408
刘基明's avatar
刘基明 committed
34
     * https://help.aliyun.com/document_detail/70292.htm?spm=a2c4g.11186623.2.12.26573ac7EEunMN#reference-fzy-ztm-v2b
刘基明's avatar
刘基明 committed
35 36 37
     * 屏蔽内容:
     * 图片智能鉴黄(porn)结果分类:normal:正常    sexy:性感   porn:色情
     * 图片不良场景(live)结果分类:normal:正常  meaningless:图片中无内容(例如,黑屏、白屏) PIP:画中画  smoking:吸烟  drivelive:车内直播
刘基明's avatar
刘基明 committed
38 39 40 41
     * @param checksum
     * @param content
     * @return
     */
刘基明's avatar
刘基明 committed
42
    @ApiOperation("oss图片审核回调")
刘基明's avatar
刘基明 committed
43
    @PostMapping(value = "/picCheck/callback")
刘基明's avatar
刘基明 committed
44
    public String picCheck(String checksum, String content) {
刘基明's avatar
刘基明 committed
45

刘基明's avatar
刘基明 committed
46 47 48
        Map<String, Object> response = JsonUtil.toMap(content);
        String fileKey = (String) response.get("object");
        boolean freezed = (boolean) response.get("freezed");
刘基明's avatar
刘基明 committed
49
        FileChechStatusEnum type = freezed ? FileChechStatusEnum.BLOCK : FileChechStatusEnum.PASS;
刘基明's avatar
刘基明 committed
50
        HashMap<String, Object> scanResult = (HashMap<String, Object>) response.get("scanResult");
刘基明's avatar
刘基明 committed
51
        String taskId = (String) scanResult.get("taskId");
52 53
        List<HashMap<String, Object>> scenes = (List<HashMap<String, Object>>) scanResult.get("results");
        for (HashMap<String, Object> scene : scenes) {
刘基明's avatar
刘基明 committed
54 55 56 57 58 59 60 61
            // pass:结果正常,无需进行其余操作。
            // review:结果不确定,需要进行人工审核。
            // block:结果违规,建议直接删除或者限制公开。
            if ("block".equals(scene.get("suggestion"))) {
                type=FileChechStatusEnum.BLOCK;
                break;
            }
            if ("review".equals(scene.get("suggestion"))) {
刘基明's avatar
刘基明 committed
62 63 64 65
                if ("porn".equals(scene.get("scene"))){
                    type=FileChechStatusEnum.BLOCK;
                    break;
                }
66 67 68
                type=FileChechStatusEnum.REVIEW;
            }
        }
69
        fileManager.updateCheckResult(fileKey, type,  JsonUtil.toJson(scanResult));
刘基明's avatar
刘基明 committed
70
        return "success";
刘基明's avatar
刘基明 committed
71 72
    }

刘基明's avatar
刘基明 committed
73
    @ApiOperation("oss图片审核结果查询")
刘基明's avatar
刘基明 committed
74 75 76 77 78 79 80 81 82 83
    @PostMapping(value = "/picCheck/queryTask")
    public CommonResp<JSONArray> queryTask(@RequestParam String taskId) {

        try {
            return CommonResp.success(fileManager.queryTask(taskId));
        } catch (Exception e) {
            throw new BizException("queryTask请求失败");
        }
    }

84 85 86 87 88 89
    public static void main(String[] args) {
        ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
        map.put("a",1);

    }

刘基明's avatar
刘基明 committed
90 91

}