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
import logger from "../../dxmodules/dxLogger.js";
import bus from "../../dxmodules/dxEventBus.js";
import dxMap from "../../dxmodules/dxMap.js";
import driver from "../driver.js";
import config from "../../dxmodules/dxConfig.js";
import sqliteService from "./sqliteService.js";
import std from '../../dxmodules/dxStd.js'
const faceService = {}
 
faceService.receiveMsg = function (data) {
    logger.info('[faceService] receiveMsg :' + JSON.stringify(data))
    bus.fire("trackResult", { id: data.id, result: data.userId ? true : false, userId: data.userId })
    if (data.userId) {
        // TODO d1_person.find可能为空
        let ret = sqliteService.d1_person.find({ userId: data.userId })
        if (dxMap.get("UI").get("faceAuthStart") == "Y") {
            //正在人脸登录
            if (JSON.parse(ret[0].extra).type != 0) {
                bus.fire("faceAuthResult", true)
            } else {
                bus.fire("faceAuthResult", false)
            }
            return
        }
 
        switch (config.get("face.voiceMode")) {
            case 0:
                break;
            case 1:
                driver.audio.clearCache()
                std.sleep(100)
                driver.audio.ttsPlay(ret[0].name)
                break;
            case 2:
                driver.audio.ttsPlay(config.get("face.voiceModeDate") ? config.get("face.voiceModeDate") : "欢迎光临")
                break;
            default:
                break;
        }
 
        // 通行认证处理
        bus.fire("access", { data: { type: "300", code: data.userId }, fileName: data.picPath, similarity: true })
    } else {
        // 人脸相似度验证失败
        if (dxMap.get("UI").get("faceAuthStart") == "Y") {
            bus.fire("faceAuthResult", false)
        } else {
            let language=config.get("base.language")||"CN";
            switch (config.get("face.stranger")) {
                case 0:
                    break;
                case 1:
                    driver.audio.play(`/app/code/resource/wav/${language}/register.wav`)
                    break;
                case 2:
                    driver.audio.play(`/app/code/resource/wav/${language}/stranger.wav`)
                    break;
                default:
                    break;
            }
            bus.fire("access", { data: { type: "300", code: data.userId }, fileName: data.picPath, similarity: false })
        }
    }
}
 
faceService.regErrorEnum = {
    "callback": {
        title: "注册回调状态枚举",
        "-1": "faceService.contrastFailure",
        "-2": "faceService.scalingFailure",
        "-3": "faceService.failedToSavePicture",
        "-4": "faceService.convertToBase64Fail",
    },
    "feature": {
        title: "特征值注册状态枚举",
        "-1": "faceService.base64DecodingFail",
        "-10": "faceService.contrastFailure",
        "-11": "faceService.similarityOverheight",
    },
    "picture": {
        title: "图片注册状态枚举",
        "-1": "faceService.fileDoesNotExist",
        "-2": "faceService.theImageFormatIsNotSupported",
        "-3": "faceService.pictureReadFailure",
        "-4": "faceService.thePictureSizeDoesNotMatch",
        "-5": "faceService.imageParsingFailure",
        "-6": "faceService.imageYUVProcessingFailed",
        "-7": "faceService.failedToConvertJpegToImage",
        "-8": "faceService.faceInformationExtractionFailed",
        "-9": "faceService.theFaceIsNotUnique",
        "-10": "faceService.contrastFailure",
        "-11": "faceService.similarityOverheight",
    }
}
 
 
export default faceService