
为了存放移动端提交的司机面部照片,我们需要先创建人员库,名字是"代驾",人员库的ID是"daijia-driver"。

说明:人员库ID 项目里面要使用,需要配置。
创建人员库人员API:
随后创建人脸模型:
首先编写配置文件:
java
tencent:
cloud:
secretId: ****************************
secretKey: ****************************
region: ap-beijing
bucketPrivate: *********
persionGroupId: eleven # 人员库ID
说明:persionGroupId为上面创建的人员库id。
随后编写配置类:
java
@Data
@Component
@ConfigurationProperties(prefix = "tencent.cloud")
public class TencentCloudProperties {
private String secretId;
private String secretKey;
private String region;
private String bucketPrivate;
private String persionGroupId; // 人员库ID
}
根据腾讯云文档,使用java代码创建人脸模型:
首先编写Controller:
java
@Operation(summary = "创建司机人脸模型")
@PostMapping("/creatDriverFaceModel")
public Result<Boolean> creatDriverFaceModel(@RequestBody DriverFaceModelForm driverFaceModelForm) {
return Result.ok(driverInfoService.creatDriverFaceModel(driverFaceModelForm));
}
随后编写Service:
java
@Autowired
private TencentCloudProperties tencentCloudProperties;
/**
* 文档地址
* https://cloud.tencent.com/document/api/867/45014
* https://console.cloud.tencent.com/api/explorer?Product=iai&Version=2020-03-03&Action=CreatePerson
*
* @param driverFaceModelForm
* @return
*/
@Override
public Boolean creatDriverFaceModel(DriverFaceModelForm driverFaceModelForm) {
DriverInfo driverInfo = this.getById(driverFaceModelForm.getDriverId());
try {
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
Credential cred = new Credential(tencentCloudProperties.getSecretId(), tencentCloudProperties.getSecretKey());
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("iai.tencentcloudapi.com");
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的
IaiClient client = new IaiClient(cred, tencentCloudProperties.getRegion(), clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
CreatePersonRequest req = new CreatePersonRequest();
req.setGroupId(tencentCloudProperties.getPersionGroupId());
//基本信息
req.setPersonId(String.valueOf(driverInfo.getId()));
req.setGender(Long.parseLong(driverInfo.getGender()));
req.setQualityControl(4L);
req.setUniquePersonControl(4L);
req.setPersonName(driverInfo.getName());
req.setImage(driverFaceModelForm.getImageBase64());
// 返回的resp是一个CreatePersonResponse的实例,与请求对象对应
CreatePersonResponse resp = client.CreatePerson(req);
// 输出json格式的字符串回包
System.out.println(CreatePersonResponse.toJsonString(resp));
if (StringUtils.hasText(resp.getFaceId())) {
//人脸校验必要参数,保存到数据库表
driverInfo.setFaceModelId(resp.getFaceId());
this.updateById(driverInfo);
}
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
return false;
}
return true;
}
最后编写Feign:
java
/**
* 创建司机人脸模型
* @param driverFaceModelForm
* @return
*/
@PostMapping("/driver/info/creatDriverFaceModel")
Result<Boolean> creatDriverFaceModel(@RequestBody DriverFaceModelForm driverFaceModelForm);