/**
* @Description: 百度工具类
* @BelongsProject: public-estimate-service
* @BelongsPackage: com.clhb.publicestimateservice.utils
* @Author: LiYu
* @CreateTime: 2021-03-10 10:41
* @Email: 19740428lxh@gmail.com
* @Version: 1.0
*/
public class BaiDuUtil {
private static final Map<String,String> HEADER = new HashMap<>();
/**
* 防止魔法值
*/
private static final String SUCCESS_VALUE = "success";
static {
HEADER.put("Content-Type","application/json");
}
/**
* 获取百度AccessToken
* @return
* @throws Exception
*/
public static String getAccessToken() throws Exception {
Map<String,Object> data = new HashMap<>(3);
data.put("grant_type","client_credentials");
data.put("client_id", BaiDuKeyConstant.API_KEY);
data.put("client_secret",BaiDuKeyConstant.SECRET_KEY);
if(RedisUtil.get(RedisKeyConstant.BAIDU_ACCESS_TOKEN)!=null){
return RedisUtil.get(RedisKeyConstant.BAIDU_ACCESS_TOKEN);
}
String res = HttpUtils.doGet(BaiDuKeyConstant.ACCESS_TOKEN_URL,null,data);
if(StringUtil.isNullOrEmpty(res)){
System.out.println("API Key不正确或Secret Key不正确");
throw new Exception();
}
JSONObject jsonObject = JSONObject.parseObject(res);
RedisUtil.set(RedisKeyConstant.BAIDU_ACCESS_TOKEN,jsonObject.get("access_token")+"",Long.parseLong((60*60*24*30)+""));
return jsonObject.get("access_token")+"";
}
/**
* 获取百度VerifyToken
* @return
* @throws Exception
*/
public static String getVerifyToken() throws Exception {
JSONObject data = new JSONObject();
data.put("plan_id",BaiDuKeyConstant.PLAN_ID);
JSONObject jsonObject = JSONObject.parseObject(HttpUtils.doPost(BaiDuKeyConstant.VERIFY_TOKEN+getAccessToken(),HEADER,data));
return JSONObject.parseObject(jsonObject.getString("result")).getString("verify_token")+"";
}
/**
* 获取认证人脸图片接口
* @param verifyToken
* @return
*/
public static String getTheAuthenticationFaceInterface(String verifyToken){
JSONObject data = new JSONObject();
data.put("verify_token",verifyToken);
JSONObject jsonObject = JSONObject.parseObject(HttpUtils.doPost(BaiDuKeyConstant.AUTHENTICATED_FACE_URL+verifyToken,HEADER,data));
return JSONObject.parseObject(jsonObject.getString("result")).getString("image");
}
/**
* 查询认证结果接口
* @param verifyToken
* @return
*/
public static JSONObject queryAuthenticationResultInterface(String verifyToken){
JSONObject data = new JSONObject();
data.put("verify_token",verifyToken);
JSONObject jsonObject = JSONObject.parseObject(HttpUtils.doPost(BaiDuKeyConstant.CERTIFICATION_RESULT_URL+verifyToken,HEADER,data));
if(Boolean.getBoolean(jsonObject.getString(SUCCESS_VALUE))){
return null;
}
return jsonObject;
}
/**
* 查询统计结果
* @param verifyToken
* @return
*/
public static JSONObject queryStatisticalResults(String verifyToken){
JSONObject data = new JSONObject();
data.put("verifyToken",verifyToken);
JSONObject jsonObject = JSONObject.parseObject(HttpUtils.doPost(BaiDuKeyConstant.STATISTICAL_RESULTS_URL+verifyToken,HEADER,data));
if(Boolean.getBoolean(jsonObject.getString(SUCCESS_VALUE))){
return null;
}
return jsonObject;
}
/**
* 发送短信验证码
* @param mobile 手机号码
* @return
*/
public static boolean sendingTextVerifyCode(String mobile){
SmsClientConfiguration config = new SmsClientConfiguration();
config.setCredentials(new DefaultBceCredentials(BaiDuKeyConstant.ACCESS_KEY_ID,BaiDuKeyConstant.SECRET_ACCESS_KEY));
config.setEndpoint(BaiDuKeyConstant.ENDPOINT_URL);
SmsClient smsClient = new SmsClient(config);
SendMessageV3Request request = new SendMessageV3Request();
request.setMobile(mobile);
request.setSignatureId(BaiDuKeyConstant.BAIDU_SIGNATURE_ID);
request.setTemplate(BaiDuKeyConstant.BAIDU_TEMPLATE);
Map<String, String> contentVar = new HashMap<>(2);
String randomNumber = CommonUtil.getRandom1(4);
contentVar.put("code", randomNumber);
contentVar.put("minute", "5");
request.setContentVar(contentVar);
SendMessageV3Response response = smsClient.sendMessage(request);
// 解析请求响应 response.isSuccess()为true 表示成功
if (response != null && response.isSuccess()) {
// 验证码存放到redis
//RedisUtil.set(RedisKeyConstant.SMS_VERIFICATION_CODE_KEY+mobile,randomNumber,Long.parseLong((60*60*5)+""));
return true;
} else {
// fail
return false;
}
}
/**
* 发送短信(全自定义)
* @param mobile 电话号码
* @param baiduTemplate 模板ID
* @param baiduSignatureId 签名ID
* @param templateArray
* @param contentArray
* @return
*/
public static boolean sendSmsFullyCustomized(String mobile, String baiduTemplate, String baiduSignatureId, String[] templateArray, String[] contentArray){
SmsClientConfiguration config = new SmsClientConfiguration();
config.setCredentials(new DefaultBceCredentials(BaiDuKeyConstant.ACCESS_KEY_ID,BaiDuKeyConstant.SECRET_ACCESS_KEY));
config.setEndpoint(BaiDuKeyConstant.ENDPOINT_URL);
SmsClient smsClient = new SmsClient(config);
SendMessageV3Request request = new SendMessageV3Request();
request.setMobile(mobile);
request.setSignatureId(baiduSignatureId);
request.setTemplate(baiduTemplate);
Map<String, String> contentVar = new HashMap<>(templateArray.length);
for (int i = 0;i< templateArray.length;i++){
contentVar.put(templateArray[i],contentArray[i]);
}
request.setContentVar(contentVar);
SendMessageV3Response response = smsClient.sendMessage(request);
// 解析请求响应 response.isSuccess()为true 表示成功
if (response != null && response.isSuccess()) {
// submit success
return true;
} else {
// fail
return false;
}
}
}