package cn.gistack.sm.intelligentCall.util;
|
|
import cn.gistack.sm.intelligentCall.constant.CallConstant;
|
import cn.gistack.sm.intelligentCall.entity.*;
|
import com.alibaba.fastjson.JSON;
|
//import com.yunli.call.api.param.third.*;
|
//import com.yunli.call.code.CallValidateCodeEnum;
|
//import com.yunli.call.result.ThirdPartyResult;
|
//import com.yunli.call.result.ThirdPlainResult;
|
import lombok.extern.slf4j.Slf4j;
|
//import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
import org.springframework.util.DigestUtils;
|
import org.springframework.util.StringUtils;
|
|
/**
|
* @author conanzhang@木森
|
* @description
|
* @date 2019-12-02 16:37
|
* @classname ThirdPartyValidate
|
*/
|
@Slf4j
|
public class ThirdPartyValidate {
|
|
|
/**
|
* 验证创建任务的参数
|
*
|
* @param requestParam
|
* @param thirdPartyResult
|
* @return
|
*/
|
public static boolean createTaskValidate(ThirdRequestParam requestParam, ThirdPartyResult thirdPartyResult) {
|
|
if (requestParam.getHead() == null || requestParam.getBody() == null) {
|
thirdPartyResult.setErrorMessage("TOKEN_VALIDATE_ERROR");
|
return true;
|
}
|
if (!StringUtils.hasText(requestParam.getHead().getAppId())) {
|
thirdPartyResult.setErrorMessage("TOKEN_VALIDATE_ERROR");
|
return true;
|
}
|
ThirdCreateTaskParam taskParam = JSON.parseObject(requestParam.getBody(), ThirdCreateTaskParam.class);
|
if (!StringUtils.hasText(taskParam.getTaskName())) {
|
thirdPartyResult.setErrorMessage("TASK_NAME_NOT_NULL");
|
return true;
|
}
|
if (taskParam.getScenesId() == null) {
|
thirdPartyResult.setErrorMessage("PARAM_SCENE_ID_IS_NULL");
|
return true;
|
}
|
if (taskParam.getCallingNumbers() == null || ArrayUtils.isEmpty(taskParam.getCallingNumbers())) {
|
thirdPartyResult.setErrorMessage("TASK_CALL_NUM_NOT_NULL");
|
return true;
|
}
|
if (!StringUtils.hasText(taskParam.getCalleeData())) {
|
log.info("param:{}", JSON.toJSONString(requestParam));
|
thirdPartyResult.setErrorMessage("TOKEN_CALLEE_VALIDATE_ERROR");
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
* token验证
|
*
|
* @param appSecret
|
* @param thirdBaseParam
|
* @param appSecret
|
* @return boolean
|
* @date 2019/12/5
|
**/
|
public static boolean validateToken(ThirdBaseParam thirdBaseParam, String appSecret, ThirdPartyResult thirdPartyResult) {
|
if (!StringUtils.hasText(appSecret)) {
|
log.info("param:{}", JSON.toJSONString(thirdBaseParam));
|
thirdPartyResult.setErrorMessage("TOKEN_VALIDATE_ERROR");
|
return true;
|
}
|
String signString = getThirdSignString(thirdBaseParam, appSecret);
|
String sign = DigestUtils.md5DigestAsHex(signString.getBytes());
|
if (!sign.equals(thirdBaseParam.getHead().getToken())) {
|
log.info("appId:{},token:{},sign:{},param:{}", thirdBaseParam.getHead().getAppId(), thirdBaseParam.getHead().getToken(), sign, thirdBaseParam.getSecretString());
|
thirdPartyResult.setErrorMessage("TOKEN_VALIDATE_ERROR");
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
* 任务查询参数验证
|
*
|
* @param thirdDetailParam
|
* @param thirdPlainResult
|
* @return
|
*/
|
public static boolean callDetail(ThirdDetailParam thirdDetailParam, ThirdPlainResult thirdPlainResult) {
|
|
ThirdCallDetailParam callDetailParam = JSON.parseObject(thirdDetailParam.getBody(), ThirdCallDetailParam.class);
|
if (callDetailParam == null) {
|
thirdPlainResult.setErrorMessage("TOKEN_CALLEE_VALIDATE_ERROR");
|
return true;
|
}
|
if (!StringUtils.hasText(callDetailParam.getCalleeNumber())) {
|
thirdPlainResult.setErrorMessage("TOKEN_CALLEE_VALIDATE_ERROR");
|
return true;
|
}
|
|
if (callDetailParam.getTaskId() == null || callDetailParam.getTaskId() == 0) {
|
thirdPlainResult.setErrorMessage("TASK_ID_NOT_VALID");
|
return true;
|
}
|
|
return false;
|
}
|
|
/**
|
* 获取加密字符串
|
*
|
* @param thirdBaseParam
|
* @param appSecret
|
* @return java.lang.String
|
* @date 2019/12/20
|
**/
|
private static String getThirdSignString(ThirdBaseParam thirdBaseParam, String appSecret) {
|
ThirdRequestHead headParam = thirdBaseParam.getHead();
|
StringBuilder sb = new StringBuilder("appId");
|
sb.append(headParam.getAppId())
|
.append("timestamp").append(headParam.getTimestamp())
|
.append("transId").append(headParam.getTransId())
|
.append(thirdBaseParam.getSecretString()!=null?thirdBaseParam.getSecretString():"").append(appSecret);
|
return sb.toString();
|
}
|
|
// public static void main(String[] args) {
|
// String body = "{\"callingNumbers\":[\"01086394068\"],\"calleeData\":[{\"被叫号码\":\"13387565100\",\"bizId\":\"1\"}]"+
|
// ",\"scenesId\":2268,\"taskScheduleTime\":\"2020-07-22 00:00:00\",\"taskName\":\"thirdCreateTask7\"}";
|
//
|
// StringBuilder sb = new StringBuilder("appId");
|
// sb.append("zhonganinsurance")
|
// .append("timestamp").append("1595314778")
|
// .append("transId").append("22")
|
// .append(body).append("ea3b23ecdb2247e9bcbccbdee7d5dbf4");
|
// System.out.println(sb.toString());
|
// String sign = DigestUtils.md5DigestAsHex(sb.toString().getBytes());
|
// System.out.println(sign);
|
//
|
// ThirdBaseParam thirdBaseParam = new ThirdBaseParam();
|
// ThirdRequestHead thirdRequestHead = new ThirdRequestHead();
|
// thirdRequestHead.setAppId("zhonganinsurance");
|
// thirdRequestHead.setTimestamp("1595314778");
|
// thirdRequestHead.setToken(sign);
|
// thirdRequestHead.setTransId("22");
|
// thirdBaseParam.setHead(thirdRequestHead);
|
// thirdBaseParam.setSecretString(body);
|
//
|
// // 验证token
|
// boolean b = validateToken(thirdBaseParam, "ea3b23ecdb2247e9bcbccbdee7d5dbf4", new ThirdPartyResult());
|
// System.out.println("b = " + b);
|
//
|
// // 任务查询参数验证
|
// ThirdRequestParam thirdRequestParam = new ThirdRequestParam();
|
// Head head = new Head();
|
// head.setAppId("zhonganinsurance");
|
// thirdRequestParam.setHead(head);
|
// thirdRequestParam.setBody(body);
|
// boolean b1 = createTaskValidate(thirdRequestParam, new ThirdPartyResult());
|
// System.out.println("b1 = " + b1);
|
// }
|
}
|