Air
2024-11-04 29c405353029f033e187e8dc033b93385365ee43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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();
    }
 
}