admin
2020-09-05 144adac2b67eae995e853ad1d3d6d7d4ff5926ec
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package com.yeshi.fanli.util.wx;
 
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
import org.json.JSONException;
import org.json.JSONObject;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.entity.FileUploadResult;
import org.yeshi.utils.entity.wx.WeiXinUser;
import org.yeshi.utils.entity.wx.WeiXinUserParam;
import org.yeshi.utils.tencentcloud.COSManager;
import org.yeshi.utils.wx.WXAppLoginUtil;
 
import java.io.InputStream;
 
public class MyWXLoginUtil {
 
    public static String WEXIN_APPID = "wx43617e2ed82c5b28";
    public static String WEXIN_SECRET = "f8a65908fb4681bdd181de70f6ab9a3b";
 
    static {
        WEXIN_APPID = Constant.systemCommonConfig.getWxGZAppId();
        WEXIN_SECRET = Constant.systemCommonConfig.getWxGZAppSecret();
    }
 
 
    public static WeiXinUserParam getWxWYParam(String code) {
 
        WeiXinUserParam weiXinUserParam = WXAppLoginUtil.getWxParam(code, WEXIN_APPID, WEXIN_SECRET);
        return weiXinUserParam;
    }
 
    /**
     * 通过code获取用户信息(伴随头像缓存)
     *
     * @param code
     * @return
     */
    public static WeiXinUser getWeiXinUserWithSavePortrait(String code, String appId, String appSecret) {
        WeiXinUser user = WXAppLoginUtil.getWeiXinUser(code, appId, appSecret);
        if (user != null) {
            if (!StringUtil.isNullOrEmpty(user.getHeadimgurl())) {
 
                InputStream asInputStream = HttpUtil.getAsInputStream(user.getHeadimgurl());
                if (asInputStream == null) {
                    LogHelper.test("微信头像下载失败: " + user.getUnionid() + " " + user.getHeadimgurl());
                    return user;
                }
 
                FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream,
                        String.format(FilePathEnum.userWXPortrait.getPath() + "%s_%s.jpg", user.getUnionid(), System.currentTimeMillis() + ""));
                if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) {
                    user.setHeadimgurl(result.getUrl());
                    // COS删除其余头像
                    // String prefix = String.format("/portrait/wx/%s_",
                    // user.getUnionid());
                    // ObjectListing list =
                    // COSManager.getInstance().getObjectList(prefix, null, 30);
                    // if (list != null && list.getObjectSummaries() != null)
                    // for (COSObjectSummary object : list.getObjectSummaries())
                    // {
                    // if (!result.getUrl().contains(object.getKey())) {
                    // COSManager.getInstance().deleteFile(object.getKey());
                    // }
                    // }
                } else {
                    LogHelper.test("微信头像上传失败: " + user.getUnionid() + " " + user.getHeadimgurl());
                }
            }
        }
        return user;
    }
 
    public static WeiXinUser getWeiXinWYUser(String code) {
        WeiXinUserParam param = getWxWYParam(code);
        if (param == null) {
            return null;
        }
        return WXAppLoginUtil.getWeiXinUser(param);
    }
 
    private static WeiXinUserParam getWeiXinUserParam(String result) {
        LogHelper.test(result);
        WeiXinUserParam weiXinUserParam = new WeiXinUserParam();
        JSONObject jsonObject = null;
        try {
            jsonObject = new JSONObject(result);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        String openId = jsonObject.optString("openid");
        if ("".equals(openId)) {
            return null;
        }
        String accessToken = jsonObject.optString("access_token");
        String refreshToken = jsonObject.optString("refresh_token");
        String scope = jsonObject.optString("scope");
        int expires = jsonObject.optInt("expires_in");
        String unionId = jsonObject.optString("unionid");
 
        weiXinUserParam.setRefreshToken(refreshToken);
        weiXinUserParam.setOpenId(openId);
        weiXinUserParam.setExpires(expires);
        weiXinUserParam.setAccessToken(accessToken);
        weiXinUserParam.setScope(scope);
        weiXinUserParam.setUnionId(unionId);
 
        return weiXinUserParam;
    }
 
    /**
     * 初始化公众号自定义菜单
     */
    public static void initGZMenu() {
        JSONObject root = new JSONObject();
 
        // WXUtil.createMenu(accessToken, root);
    }
 
}