package com.nova.sankuai.infra.utils.huawei;
|
|
import cn.hutool.core.map.MapBuilder;
|
import cn.hutool.core.map.MapUtil;
|
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.crypto.digest.MD5;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.nova.sankuai.domain.api.zhongzan.ZhongZanResponse;
|
import com.nova.sankuai.domain.dto.huawei.HuaWeiDTO;
|
import com.nova.sankuai.security.HttpClientUtil;
|
import lombok.RequiredArgsConstructor;
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.DigestUtils;
|
|
import java.util.Map;
|
|
/**
|
* 华为业务对接
|
*/
|
@Component
|
@RequiredArgsConstructor
|
public class HuaWeiUtil {
|
private static final Logger log = LoggerFactory.getLogger("capitalLogger");
|
@Value("${huawei.basicUrl}")
|
private String basicUrl;
|
|
@Value("${huawei.appId}")
|
private String appId;
|
|
@Value("${huawei.deviceIdType}")
|
private String deviceIdType;
|
|
@Value("${huawei.grantType}")
|
private String grantType;
|
|
@Value("${huawei.clientId}")
|
private String clientId;
|
|
@Value("${huawei.clientSecret}")
|
private String clientSecret;
|
|
public String click(HuaWeiDTO dto) {
|
String logNumber = IdUtil.randomUUID();
|
String token = getToken();
|
if (StringUtils.isNotEmpty(token)) {
|
String result = null;
|
JSONObject jsonData = new JSONObject();
|
jsonData.put("appId", appId);
|
jsonData.put("deviceIdType", deviceIdType);
|
jsonData.put("deviceId", dto.getOaid());
|
jsonData.put("actionTime", dto.getTime());
|
jsonData.put("actionType", dto.getActionType());
|
jsonData.put("callBack", dto.getCallback());
|
try {
|
result = HttpClientUtil.getInstance().postJsonData(basicUrl + "datasource/v1/track/activate", jsonData.toJSONString(), getHeader(token, clientId));
|
log.info("日志编号:" + logNumber + " 回传用户行为数据接口成功 :{}", result);
|
} catch (Exception ex) {
|
log.error("日志编号:" + logNumber + " 回传用户行为数据接口 ,传参:token: {} ex:{}", token, jsonData , ex);
|
}
|
}
|
|
return null;
|
}
|
|
private String getToken(){
|
String logNumber = IdUtil.randomUUID();
|
JSONObject jsonData = new JSONObject();
|
jsonData.put("grant_type", grantType);
|
jsonData.put("client_id", clientId);
|
jsonData.put("client_secret", clientSecret);
|
String result = null;
|
try {
|
result = HttpClientUtil.getInstance().postJsonData(basicUrl + "oauth2/v1/token", jsonData.toJSONString());
|
} catch (Exception ex) {
|
log.error("日志编号:" + logNumber + " 获取Token, 请求参数:", jsonData, ex, "");
|
}
|
try {
|
JSONObject res = JSON.parseObject(result);
|
return res.getString("access_token");
|
} catch (Exception ex) {
|
log.error("日志编号:" + logNumber + " 获取Token,jsonData:{} ex:{}", jsonData , ex, "");
|
}
|
return null;
|
}
|
/**
|
* 交互请求头
|
* @param token token
|
* @param clientId 客⼾端id
|
* @return
|
*/
|
public static Map<String ,Object> getHeader(String token, String clientId) {
|
return new MapBuilder<String, Object>(MapUtil.newHashMap(16))
|
.put("client-id", clientId)
|
.put("Authorization", "Bearer "+ token)
|
.put("charset", "utf-8")
|
.build();
|
}
|
|
}
|