From c36903bcd29f03525d6cdc58a19a3c3feed82a7d Mon Sep 17 00:00:00 2001 From: bai <1643359946@qq.com> Date: Sun, 8 Sep 2024 11:16:24 +0800 Subject: [PATCH] =?UTF-8?q?2024=E5=B9=B49=E6=9C=888=E6=97=A5=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BB=8E=E6=95=B0=E6=8D=AE=E5=BA=93=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=88=E4=BA=BA=E8=84=B8=E8=AF=86=E5=88=AB?= =?UTF-8?q?=EF=BC=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ICommonConfigService.java | 3 + .../service/impl/CommonConfigServiceImpl.java | 22 +- .../java/org/jeecg/modules/face/FaceMain.java | 373 ++++++++++-------- .../src/main/resources/application-dev.yml | 2 + .../src/main/resources/application-prod.yml | 2 + 5 files changed, 230 insertions(+), 172 deletions(-) diff --git a/jeecg-module-main/src/main/java/org/jeecg/modules/common/commonConfig/service/ICommonConfigService.java b/jeecg-module-main/src/main/java/org/jeecg/modules/common/commonConfig/service/ICommonConfigService.java index 25df421..c978868 100644 --- a/jeecg-module-main/src/main/java/org/jeecg/modules/common/commonConfig/service/ICommonConfigService.java +++ b/jeecg-module-main/src/main/java/org/jeecg/modules/common/commonConfig/service/ICommonConfigService.java @@ -12,6 +12,9 @@ import java.util.Map; * @Version: V1.0 */ public interface ICommonConfigService extends IService { + + Map getAllConfigMap(); + Map getConfigMapByOrgCode(String sysOrgCode); CommonConfig getConfigMapByCode(String code); diff --git a/jeecg-module-main/src/main/java/org/jeecg/modules/common/commonConfig/service/impl/CommonConfigServiceImpl.java b/jeecg-module-main/src/main/java/org/jeecg/modules/common/commonConfig/service/impl/CommonConfigServiceImpl.java index 5adb132..725c250 100644 --- a/jeecg-module-main/src/main/java/org/jeecg/modules/common/commonConfig/service/impl/CommonConfigServiceImpl.java +++ b/jeecg-module-main/src/main/java/org/jeecg/modules/common/commonConfig/service/impl/CommonConfigServiceImpl.java @@ -22,16 +22,34 @@ import java.util.Map; */ @Service public class CommonConfigServiceImpl extends ServiceImpl implements ICommonConfigService { + @Autowired private CommonConfigMapper commonConfigMapper; + + /** + * 根据机构查询配置信息 + * @return + */ + public Map getAllConfigMap(){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(CommonConfig::getParamStatus, "1"); + List configList = list(queryWrapper); + + Map returnMap = new HashMap<>(); + if(configList!=null && !configList.isEmpty()){ + configList.forEach(x -> returnMap.put(x.getParamCode(),x)); + } + return returnMap; + } + /** * 根据机构查询配置信息 * @return */ public Map getConfigMapByOrgCode(String sysOrgCode){ QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("sys_org_code",sysOrgCode); - queryWrapper.eq("status","1"); + queryWrapper.lambda().eq(CommonConfig::getSysOrgCode, sysOrgCode); + queryWrapper.lambda().eq(CommonConfig::getParamStatus, "1"); List configList = list(queryWrapper); Map returnMap = new HashMap<>(); diff --git a/jeecg-module-main/src/main/java/org/jeecg/modules/face/FaceMain.java b/jeecg-module-main/src/main/java/org/jeecg/modules/face/FaceMain.java index 8271f4d..f50c5d8 100644 --- a/jeecg-module-main/src/main/java/org/jeecg/modules/face/FaceMain.java +++ b/jeecg-module-main/src/main/java/org/jeecg/modules/face/FaceMain.java @@ -5,8 +5,12 @@ import com.baidu.aip.face.AipFace; import com.baidu.aip.face.MatchRequest; import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.RedisUtil; +import org.jeecg.modules.common.commonConfig.entity.CommonConfig; +import org.jeecg.modules.common.commonConfig.service.ICommonConfigService; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -14,214 +18,243 @@ import org.springframework.stereotype.Component; import java.io.File; import java.util.ArrayList; +import java.util.Map; @Component public class FaceMain { - @Autowired - private RedisUtil redisUtil; + @Autowired + private RedisUtil redisUtil; - //设置APPID/AK/SK -// public static final String APP_ID = "21388583"; -// public static final String API_KEY = "K3bfbZRl7ttZp656n7Z8wSQCy"; -// public static final String SECRET_KEY = "xEHt1sRGWlVtsNU10DiNhBMpWUqlTHNQ"; + @Autowired + private ICommonConfigService qnCommonConfigService; - @Value(value = "${baidu.face.appid}") -// public static final String APP_ID = "37872563"; - public String APP_ID; + //设置APPID/AK/SK +// public static final String APP_ID = "21388583"; +// public static final String API_KEY = "K3bfbZRl7ttZp656n7Z8wSQCy"; +// public static final String SECRET_KEY = "xEHt1sRGWlVtsNU10DiNhBMpWUqlTHNQ"; - @Value(value = "${baidu.face.apikey}") -// public static final String API_KEY = "RBOnlD4HVDnRrdUYNOiykwGz"; - public String API_KEY; + //是否灵活配置,不配置为从配置文件读取,配置为true则开启从表读取key模式 + @Value(value = "${baidu.face.flexibleConfiguration}") +// public static final String APP_ID = "37872563"; + public boolean FLEXIBLE_CONFIGURATION; - @Value(value = "${baidu.face.secretkey}") -// public static final String SECRET_KEY = "PeTEGIgcSRXLILoVjQ2GBah1NN2XrWBK"; - public String SECRET_KEY; + @Value(value = "${baidu.face.appid}") +// public static final String APP_ID = "37872563"; + public String APP_ID; - @Value(value = "${baidu.face.sleepTime}") -// public static final Long SLEEP_TIME = 1000L; - public Long SLEEP_TIME; + @Value(value = "${baidu.face.apikey}") +// public static final String API_KEY = "RBOnlD4HVDnRrdUYNOiykwGz"; + public String API_KEY; - public AipFace creatApiClent(){ - // 可选:设置网络连接参数 -// client.setConnectionTimeoutInMillis(2000); -// client.setSocketTimeoutInMillis(60000); + @Value(value = "${baidu.face.secretkey}") +// public static final String SECRET_KEY = "PeTEGIgcSRXLILoVjQ2GBah1NN2XrWBK"; + public String SECRET_KEY; + + @Value(value = "${baidu.face.sleepTime}") +// public static final Long SLEEP_TIME = 1000L; + public Long FACE_SLEEP_TIME; + + public Long SLEEP_TIME = FACE_SLEEP_TIME; + + public Long getSleepTime(){ + creatApiClent(); + return SLEEP_TIME; + } + + public AipFace creatApiClent(){ + // 可选:设置网络连接参数 +// client.setConnectionTimeoutInMillis(2000); +// client.setSocketTimeoutInMillis(60000); // -// // 可选:设置代理服务器地址, http和socket二选一,或者均不设置 -// //client.setHttpProxy("proxy_host", proxy_port); // 设置http代理 -// //client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理 +// // 可选:设置代理服务器地址, http和socket二选一,或者均不设置 +// //client.setHttpProxy("proxy_host", proxy_port); // 设置http代理 +// //client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理 // -// // 调用接口 -// String image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"; -// String imageType = "BASE64"; +// // 调用接口 +// String image = "取决于image_type参数,传入BASE64字符串或URL字符串或FACE_TOKEN字符串"; +// String imageType = "BASE64"; // -// // 人脸检测 -// JSONObject res = client.detect(image, imageType, options); -// System.out.println(res.toString(2)); -// AipFace main = new AipFace(APP_ID, API_KEY, SECRET_KEY); -// main.setConnectionTimeoutInMillis(90000); -// main.setSocketTimeoutInMillis(90000); -// return main; - return new AipFace(APP_ID, API_KEY, SECRET_KEY); +// // 人脸检测 +// JSONObject res = client.detect(image, imageType, options); +// System.out.println(res.toString(2)); +// AipFace main = new AipFace(APP_ID, API_KEY, SECRET_KEY); +// main.setConnectionTimeoutInMillis(90000); +// main.setSocketTimeoutInMillis(90000); +// return main; + //加上开关 + if(FLEXIBLE_CONFIGURATION){ + //查找数据库里的key + Map configMap = qnCommonConfigService.getAllConfigMap(); + if(!configMap.isEmpty()){ + CommonConfig baiduFaceAppIdConfig = configMap.get("baiduFaceAppId"); + CommonConfig baiduFaceApiKeyConfig = configMap.get("baiduFaceApiKey"); + CommonConfig baiduFaceSecretKeyConfig = configMap.get("baiduFaceSecretKey"); + CommonConfig baiduFaceSleepTimeConfig = configMap.get("baiduFaceSleepTime"); + SLEEP_TIME = Long.parseLong(baiduFaceSleepTimeConfig.getParamValue()); + return new AipFace(baiduFaceAppIdConfig.getParamValue(), baiduFaceApiKeyConfig.getParamValue(), baiduFaceSecretKeyConfig.getParamValue()); + } + } + return new AipFace(APP_ID, API_KEY, SECRET_KEY); - } + } - /** - * 人脸对比,需要传入URL(无系统地址) - * @param img1 对比的图片1 - * @param img2 对比的图片2 - * @return - */ - public JSONObject matchBySystemFileUrl(String img1, String img2) { - return matchBySystemFileUrl(img1, img2, true); - } + /** + * 人脸对比,需要传入URL(无系统地址) + * @param img1 对比的图片1 + * @param img2 对比的图片2 + * @return + */ + public JSONObject matchBySystemFileUrl(String img1, String img2) { + return matchBySystemFileUrl(img1, img2, true); + } - /** - * 人脸对比,需要传入URL(无系统地址) - * @param img1 对比的图片1 - * @param img2 对比的图片2 - * @param isSleep 是否打开延时开关(true:加入延时,使用配置文件里的时间(单位:毫秒),false:不加延时) - * @return - */ - public JSONObject matchBySystemFileUrl(String img1, String img2, boolean isSleep) { - return matchBySystemFileUrl(img1, img2, isSleep, SLEEP_TIME); - } + /** + * 人脸对比,需要传入URL(无系统地址) + * @param img1 对比的图片1 + * @param img2 对比的图片2 + * @param isSleep 是否打开延时开关(true:加入延时,使用配置文件里的时间(单位:毫秒),false:不加延时) + * @return + */ + public JSONObject matchBySystemFileUrl(String img1, String img2, boolean isSleep) { + return matchBySystemFileUrl(img1, img2, isSleep, getSleepTime()); + } - /** - * 人脸对比,需要传入URL(无系统地址) - * @param img1 对比的图片1 - * @param img2 对比的图片2 - * @param isSleep 是否打开延时开关(true:加入延时,false:不加延时) - * @param sleepTime 延时时间(单位:毫秒) - * @return - */ - public JSONObject matchBySystemFileUrl(String img1, String img2, boolean isSleep, Long sleepTime) { - if(StringUtils.isBlank(img1) || StringUtils.isBlank(img2)){ - return null; - } - //延迟一秒 - if(isSleep){ - ThreadUtil.sleep(1000); -// return null; - //ThreadUtil.sleep(sleepTime); - } - return match(img1,img2,"BASE64","BASE64"); - } + /** + * 人脸对比,需要传入URL(无系统地址) + * @param img1 对比的图片1 + * @param img2 对比的图片2 + * @param isSleep 是否打开延时开关(true:加入延时,false:不加延时) + * @param sleepTime 延时时间(单位:毫秒) + * @return + */ + public JSONObject matchBySystemFileUrl(String img1, String img2, boolean isSleep, Long sleepTime) { + if(StringUtils.isBlank(img1) || StringUtils.isBlank(img2)){ + return null; + } + //延迟一秒 + if(isSleep){ + ThreadUtil.sleep(1000); +// return null; + //ThreadUtil.sleep(sleepTime); + } + return match(img1,img2,"BASE64","BASE64"); + } - /** - * 人脸对比,需要传入URL(无系统地址) - * @param img1 - * @param img2 - * @return - */ - public JSONObject matchBySystemFileUrl(String fillUrl, String img1, String img2) { - return match(fillUrl + File.separator + img1,fillUrl + File.separator + img2,"URL","URL"); - } + /** + * 人脸对比,需要传入URL(无系统地址) + * @param img1 + * @param img2 + * @return + */ + public JSONObject matchBySystemFileUrl(String fillUrl, String img1, String img2) { + return match(fillUrl + File.separator + img1,fillUrl + File.separator + img2,"URL","URL"); + } - /** - * 人脸对比,需要传入可访问的URL - * @param img1 - * @param img2 - * @return - */ - public JSONObject match(String img1,String img2) { - return match(img1,img2,"URL","URL"); - } + /** + * 人脸对比,需要传入可访问的URL + * @param img1 + * @param img2 + * @return + */ + public JSONObject match(String img1,String img2) { + return match(img1,img2,"URL","URL"); + } - public JSONObject match(String img1,String img2,String img1Type,String img2Type) { - // 初始化一个AipFace - AipFace client = creatApiClent(); - MatchRequest req1 = new MatchRequest(img1, img1Type); - MatchRequest req2 = new MatchRequest(img2, img2Type); - ArrayList requests = new ArrayList<>(); - requests.add(req1); - requests.add(req2); - return client.match(requests); - } + public JSONObject match(String img1,String img2,String img1Type,String img2Type) { + // 初始化一个AipFace + AipFace client = creatApiClent(); + MatchRequest req1 = new MatchRequest(img1, img1Type); + MatchRequest req2 = new MatchRequest(img2, img2Type); + ArrayList requests = new ArrayList<>(); + requests.add(req1); + requests.add(req2); + return client.match(requests); + } - public static void main(String[] args) { - // 初始化一个AipFace - FaceMain faceMain = new FaceMain(); - faceMain.APP_ID = ""; - faceMain.API_KEY = ""; - faceMain.SECRET_KEY = ""; - AipFace client = faceMain.creatApiClent(); + public static void main(String[] args) { + // 初始化一个AipFace + FaceMain faceMain = new FaceMain(); + faceMain.APP_ID = ""; + faceMain.API_KEY = ""; + faceMain.SECRET_KEY = ""; + AipFace client = faceMain.creatApiClent(); - String image1 = "https://img0.baidu.com/it/u=2620353834,3334301303&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=670"; + String image1 = "https://img0.baidu.com/it/u=2620353834,3334301303&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=670"; - String image2 = "https://img1.baidu.com/it/u=3388895316,506060607&fm=253&fmt=auto&app=138&f=JPEG?w=608&h=338"; + String image2 = "https://img1.baidu.com/it/u=3388895316,506060607&fm=253&fmt=auto&app=138&f=JPEG?w=608&h=338"; - // image1/image2也可以为url或facetoken, 相应的imageType参数需要与之对应。 -// MatchRequest req1 = new MatchRequest(image1, "BASE64"); - MatchRequest req1 = new MatchRequest(image1, "URL");// - MatchRequest req2 = new MatchRequest(image2, "URL"); - ArrayList requests = new ArrayList<>(); - requests.add(req1); - requests.add(req2); + // image1/image2也可以为url或facetoken, 相应的imageType参数需要与之对应。 +// MatchRequest req1 = new MatchRequest(image1, "BASE64"); + MatchRequest req1 = new MatchRequest(image1, "URL");// + MatchRequest req2 = new MatchRequest(image2, "URL"); + ArrayList requests = new ArrayList<>(); + requests.add(req1); + requests.add(req2); - JSONObject res = client.match(requests); - System.out.println(res.toString(2)); - } + JSONObject res = client.match(requests); + System.out.println(res.toString(2)); + } - public void addRunSize(Integer currentNum, Integer allNum){ - addRunSize(currentNum); - addRunAllSize(allNum); - } - //正在执行数 - public void addRunSize(Integer num) { - redisUtil.set("calcAllFaceDataIsRunSize",num,SLEEP_TIME * 60 * 5); - } + public void addRunSize(Integer currentNum, Integer allNum){ + addRunSize(currentNum); + addRunAllSize(allNum); + } + //正在执行数 + public void addRunSize(Integer num) { + redisUtil.set("calcAllFaceDataIsRunSize",num,getSleepTime() * 60 * 5); + } - //执行总数 - public void addRunAllSize(Integer num) { - redisUtil.set("calcAllFaceDataIsRunAllSize",num,SLEEP_TIME * 60 * 5); - } + //执行总数 + public void addRunAllSize(Integer num) { + redisUtil.set("calcAllFaceDataIsRunAllSize",num,getSleepTime() * 60 * 5); + } - public String getPromptStr(){ - Integer calcAllFaceDataIsRunSize = (Integer)redisUtil.get("calcAllFaceDataIsRunSize"); - Integer calcAllFaceDataIsRunAllSize = (Integer)redisUtil.get("calcAllFaceDataIsRunAllSize"); - calcAllFaceDataIsRunSize = calcAllFaceDataIsRunSize == null?0:calcAllFaceDataIsRunSize; - calcAllFaceDataIsRunAllSize = calcAllFaceDataIsRunAllSize == null?0:calcAllFaceDataIsRunAllSize; - return calcAllFaceDataIsRunSize + "/" + calcAllFaceDataIsRunAllSize; - } - //删除执行数 -// public void delAddRunSizes() { -// redisUtil.del("calcAllFaceDataIsRunSize"); -// redisUtil.del("calcAllFaceDataIsRunAllSize"); -// } + public String getPromptStr(){ + Integer calcAllFaceDataIsRunSize = (Integer)redisUtil.get("calcAllFaceDataIsRunSize"); + Integer calcAllFaceDataIsRunAllSize = (Integer)redisUtil.get("calcAllFaceDataIsRunAllSize"); + calcAllFaceDataIsRunSize = calcAllFaceDataIsRunSize == null?0:calcAllFaceDataIsRunSize; + calcAllFaceDataIsRunAllSize = calcAllFaceDataIsRunAllSize == null?0:calcAllFaceDataIsRunAllSize; + return calcAllFaceDataIsRunSize + "/" + calcAllFaceDataIsRunAllSize; + } + //删除执行数 +// public void delAddRunSizes() { +// redisUtil.del("calcAllFaceDataIsRunSize"); +// redisUtil.del("calcAllFaceDataIsRunAllSize"); +// } - public boolean isRun(){ - Boolean isRun = (Boolean)redisUtil.get("calcAllFaceDataIsRun"); - if(isRun != null && isRun){ - //redisUtil.del("calcAllFaceDataIsRun"); - return true; - } - return false; - } + public boolean isRun(){ + Boolean isRun = (Boolean)redisUtil.get("calcAllFaceDataIsRun"); + if(isRun != null && isRun){ + //redisUtil.del("calcAllFaceDataIsRun"); + return true; + } + return false; + } - public void runFlag() { - redisUtil.set("calcAllFaceDataIsRun",true,SLEEP_TIME * 60 * 5); - } + public void runFlag() { + redisUtil.set("calcAllFaceDataIsRun",true,getSleepTime() * 60 * 5); + } - public void delRunFlag() { - redisUtil.del("calcAllFaceDataIsRunSize"); - redisUtil.del("calcAllFaceDataIsRunAllSize"); - redisUtil.del("calcAllFaceDataIsRun"); - } + public void delRunFlag() { + redisUtil.del("calcAllFaceDataIsRunSize"); + redisUtil.del("calcAllFaceDataIsRunAllSize"); + redisUtil.del("calcAllFaceDataIsRun"); + } - public void addStopFlag() { - redisUtil.set("calcAllFaceDataIsRunStop",true,SLEEP_TIME * 60 * 5); - } - public boolean isStop(){ - Boolean isRun = (Boolean)redisUtil.get("calcAllFaceDataIsRunStop"); + public void addStopFlag() { + redisUtil.set("calcAllFaceDataIsRunStop",true,getSleepTime() * 60 * 5); + } + public boolean isStop(){ + Boolean isRun = (Boolean)redisUtil.get("calcAllFaceDataIsRunStop"); //redisUtil.del("calcAllFaceDataIsRun"); return isRun != null && isRun; } - public void delStopFlag(){ - redisUtil.del("calcAllFaceDataIsRunStop"); + public void delStopFlag(){ + redisUtil.del("calcAllFaceDataIsRunStop"); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index 22e56c5..71c3d3b 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -325,6 +325,8 @@ ffmpeg: extensionFilter: png,jpg,jpeg baidu: face: + #是否灵活配置,不配置为从配置文件读取,配置为true则开启从表读取key模式 + flexibleConfiguration: true # 测试账号 1千/月 # 批量比对时延时多少毫秒 sleepTime: 1000 diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml index 2792a07..cdb1708 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml @@ -334,6 +334,8 @@ ffmpeg: extensionFilter: png,jpg,jpeg baidu: face: + #是否灵活配置,不配置为从配置文件读取,配置为true则开启从表读取key模式 + flexibleConfiguration: true # 测试账号 1千/月 # 批量比对时延时多少毫秒 # sleepTime: 1000