diff --git a/src/main/java/com/dpkj/Application.java b/src/main/java/com/dpkj/StandDllApplication.java similarity index 93% rename from src/main/java/com/dpkj/Application.java rename to src/main/java/com/dpkj/StandDllApplication.java index 5a4672d..e169d95 100644 --- a/src/main/java/com/dpkj/Application.java +++ b/src/main/java/com/dpkj/StandDllApplication.java @@ -12,10 +12,10 @@ import java.net.UnknownHostException; @Slf4j @SpringBootApplication -public class Application { +public class StandDllApplication { public static void main(String[] args) throws UnknownHostException { - ConfigurableApplicationContext application = SpringApplication.run(Application.class, args); + ConfigurableApplicationContext application = SpringApplication.run(StandDllApplication.class, args); Environment env = application.getEnvironment(); String ip = InetAddress.getLocalHost().getHostAddress(); String port = env.getProperty("server.port"); diff --git a/src/main/java/com/dpkj/modules/chs/dll/AlipayDll.java b/src/main/java/com/dpkj/modules/chs/dll/AlipayDll.java index 11aac82..09242b0 100644 --- a/src/main/java/com/dpkj/modules/chs/dll/AlipayDll.java +++ b/src/main/java/com/dpkj/modules/chs/dll/AlipayDll.java @@ -21,7 +21,7 @@ public class AlipayDll { */ public static Dll instance() throws DllRegistrationException { try { - return Native.load("NationECCode", Dll.class); + return Native.load("AlipayChs", Dll.class); } catch (UnsatisfiedLinkError e) { log.info("[AlipayDll][getPrintSDK][医保动态库] SDK注册失败:{}", e.getMessage()); throw new DllRegistrationException("Failed to load AlipayDll library: ", e); diff --git a/src/main/java/com/dpkj/modules/chs/dll/HispayDll.java b/src/main/java/com/dpkj/modules/chs/dll/HispayDll.java index 9398e86..1709079 100644 --- a/src/main/java/com/dpkj/modules/chs/dll/HispayDll.java +++ b/src/main/java/com/dpkj/modules/chs/dll/HispayDll.java @@ -21,7 +21,7 @@ public class HispayDll { */ public static Dll instance() throws DllRegistrationException { try { - return Native.load("PayClient", Dll.class); + return Native.load("HispayChs", Dll.class); } catch (UnsatisfiedLinkError e) { log.info("[HispayDll][getPrintSDK][医保动态库] SDK注册失败:{}", e.getMessage()); throw new DllRegistrationException("Failed to load AlipayDll library: ", e); diff --git a/src/main/java/com/dpkj/modules/scanface/ali/controller/AliScanFaceController.java b/src/main/java/com/dpkj/modules/scanface/ali/controller/AliScanFaceController.java new file mode 100644 index 0000000..c188861 --- /dev/null +++ b/src/main/java/com/dpkj/modules/scanface/ali/controller/AliScanFaceController.java @@ -0,0 +1,62 @@ +package com.dpkj.modules.scanface.ali.controller; + +import cn.hutool.core.lang.Console; +import com.alibaba.fastjson.JSONObject; +import com.dpkj.common.constant.ChsConst; +import com.dpkj.common.vo.Result; +import com.dpkj.modules.chs.dll.AlipayDll; +import com.dpkj.modules.chs.entity.AlipayEcRequestData; +import com.dpkj.modules.scanface.ali.dll.AliScanFaceDll; +import com.dpkj.modules.scanface.ali.service.IAliScanFaceService; +import com.sun.jna.Callback; +import com.sun.jna.Memory; +import com.sun.jna.Pointer; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Auther: 萧道子 + * @Date: 2025/4/16 16:47 + * @Description: + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("/scanface/ali") +public class AliScanFaceController { + + private final IAliScanFaceService aliScanFaceService; + + + @GetMapping("test") + public Result test() { + try { + AliScanFaceDll.Dll dll = AliScanFaceDll.instance(); + + dll.bp_api_set_isv_lan(1); + + dll.abcp_init(null, null, null, null, + new AliScanFaceDll.ProcessCallback() { + @Override + public void invoke(Object obj) { + Console.log(obj); + } + }, + new AliScanFaceDll.FinishCallback() { + @Override + public void invoke(Object obj) { + Console.log(obj); + } + }); + + return Result.ok("成功"); + } catch (Exception e) { + e.printStackTrace(); + return Result.error("失败"); + } + } + +} diff --git a/src/main/java/com/dpkj/modules/scanface/ali/dll/AliScanFaceDll.java b/src/main/java/com/dpkj/modules/scanface/ali/dll/AliScanFaceDll.java new file mode 100644 index 0000000..e2da1de --- /dev/null +++ b/src/main/java/com/dpkj/modules/scanface/ali/dll/AliScanFaceDll.java @@ -0,0 +1,78 @@ +package com.dpkj.modules.scanface.ali.dll; + +import com.sun.jna.Callback; +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.win32.DLLCallback; +import lombok.extern.slf4j.Slf4j; + +/** + * @Auther: 萧道子 + * @Date: 2025/4/16 + * @Description: 阿里扫脸程序 + */ +@Slf4j +public class AliScanFaceDll { + + /** + * 获取 Dll 实例,同时注册 Dll 控件。 + * + * @return AlipayDll 实例 + * @throws DllRegistrationException 如果注册控件失败,抛出此异常 + */ + public static Dll instance() throws DllRegistrationException { + try { + return Native.load("AliScanFace", Dll.class); + } catch (UnsatisfiedLinkError e) { + log.info("[AliScanFaceDll][instance][阿里扫脸动态库] SDK注册失败:{}", e.getMessage()); + throw new DllRegistrationException("Failed to load AliScanFace library: ", e); + } + } + + /** + * 定义自定义异常类,用于表示注册控件时发生的错误 + */ + public static class DllRegistrationException extends Exception { + public DllRegistrationException(String message) { + super(message); + } + + public DllRegistrationException(String message, Throwable cause) { + super(message, cause); + } + } + + + public interface ProcessCallback extends DLLCallback { + void invoke(Object obj); + } + + public interface FinishCallback extends DLLCallback { + void invoke(Object obj); + } + + + /** + * 定义接口映射本地库中的函数。 + */ + public interface Dll extends Library { + void bp_api_set_isv_lan(Integer type_isv_language);// 0:cpp | 1:cshap | 2:jni | 3:jna + + void abcp_init(Integer arg, String app_id, String app_version, String json_param, Callback on_process, Callback on_finish); + + void abcp_start_service(Integer arg, String app_id, String service_code, String json_param, Callback on_process, Callback on_finish); + + void abcp_stop_service(Integer arg, String app_id, String service_code, String json_param, Callback on_process, Callback on_finish); + + void abcp_get_meta_info(Integer arg, String app_id, String json_param, Callback on_process, Callback on_finish); + + void abcp_stop_smile(Integer arg, String app_id, String json_param, Callback on_process, Callback on_finish); + + void abcp_zimid_init_for_test(Integer arg, String zimmetainfo, String smileType, String smileFlag, Callback callback); + + void abcp_call(Integer arg, String app_id, String call_method, String json_param, Callback on_process, Callback on_finish); + + } + +} diff --git a/src/main/java/com/dpkj/modules/scanface/ali/service/IAliScanFaceService.java b/src/main/java/com/dpkj/modules/scanface/ali/service/IAliScanFaceService.java new file mode 100644 index 0000000..c14f821 --- /dev/null +++ b/src/main/java/com/dpkj/modules/scanface/ali/service/IAliScanFaceService.java @@ -0,0 +1,4 @@ +package com.dpkj.modules.scanface.ali.service; + +public interface IAliScanFaceService { +} diff --git a/src/main/java/com/dpkj/modules/scanface/ali/service/impl/AliScanFaceServiceImpl.java b/src/main/java/com/dpkj/modules/scanface/ali/service/impl/AliScanFaceServiceImpl.java new file mode 100644 index 0000000..abc52a8 --- /dev/null +++ b/src/main/java/com/dpkj/modules/scanface/ali/service/impl/AliScanFaceServiceImpl.java @@ -0,0 +1,17 @@ +package com.dpkj.modules.scanface.ali.service.impl; + +import com.dpkj.modules.scanface.ali.service.IAliScanFaceService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * @Auther: 萧道子 + * @Date: 2025/4/16 16:47 + * @Description: + */ +@Service +@AllArgsConstructor +public class AliScanFaceServiceImpl implements IAliScanFaceService { + + +} diff --git a/src/main/resources/win32-x86/AliScanFace.dll b/src/main/resources/win32-x86/AliScanFace.dll new file mode 100644 index 0000000..a4eb236 Binary files /dev/null and b/src/main/resources/win32-x86/AliScanFace.dll differ diff --git a/src/main/resources/win32-x86/NationECCode.dll b/src/main/resources/win32-x86/AlipayChs.dll similarity index 100% rename from src/main/resources/win32-x86/NationECCode.dll rename to src/main/resources/win32-x86/AlipayChs.dll diff --git a/src/main/resources/win32-x86/PayClient.dll b/src/main/resources/win32-x86/HispayChs.dll similarity index 50% rename from src/main/resources/win32-x86/PayClient.dll rename to src/main/resources/win32-x86/HispayChs.dll index 26a7ba0..d54f886 100644 Binary files a/src/main/resources/win32-x86/PayClient.dll and b/src/main/resources/win32-x86/HispayChs.dll differ