| | |
| | | package com.yeshi.fanli.util.wx;
|
| | |
|
| | | import java.io.InputStream;
|
| | |
|
| | | import org.json.JSONException;
|
| | | import org.json.JSONObject;
|
| | |
|
| | | import com.qcloud.cos.model.COSObjectSummary;
|
| | | import com.qcloud.cos.model.ObjectListing;
|
| | | import com.yeshi.fanli.entity.bus.user.WeiXinUser;
|
| | | import com.yeshi.fanli.entity.bus.user.WeiXinUserParam;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import org.yeshi.utils.HttpUtil;
|
| | | import org.yeshi.utils.entity.FileUploadResult;
|
| | | import org.yeshi.utils.tencentcloud.COSManager;
|
| | | import org.yeshi.utils.wx.WXUtil;
|
| | |
|
| | | import com.yeshi.fanli.entity.bus.user.WeiXinUser;
|
| | | import com.yeshi.fanli.entity.bus.user.WeiXinUserParam;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.FilePathEnum;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | |
|
| | | public class WXLoginUtil {
|
| | |
|
| | | public static String WEXIN_APPID = "wx43617e2ed82c5b28";
|
| | | public static String WEXIN_SECRET = "f8a65908fb4681bdd181de70f6ab9a3b";
|
| | |
|
| | | static String APPID = "wx5c0d167c6e3ad726";
|
| | | static String SECRET = "0c79d5869bb0f2d7c13e43f9a18f440d";
|
| | |
|
| | | static {
|
| | | WEXIN_APPID = Constant.systemCommonConfig.getWxGZAppId();
|
| | | WEXIN_SECRET = Constant.systemCommonConfig.getWxGZAppSecret();
|
| | | APPID = Constant.systemCommonConfig.getWxOpenAppId();
|
| | | SECRET = Constant.systemCommonConfig.getWxOpenAppSecret();
|
| | | }
|
| | |
|
| | | // 通过code获取access_token openId
|
| | |
| | |
|
| | | public static String weiXinUrl2 = "https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN";
|
| | |
|
| | | public static WeiXinUserParam getWxParam(String code) {
|
| | | String wxUrl = String.format(weiXinUrl1, APPID, SECRET, code);
|
| | | public static WeiXinUserParam getWxParam(String code,String appId,String appSecret) {
|
| | | String wxUrl = String.format(weiXinUrl1, appId, appSecret, code);
|
| | | String result = HttpUtil.get(wxUrl);
|
| | | WeiXinUserParam weiXinUserParam = getWeiXinUserParam(result);
|
| | | return weiXinUserParam;
|
| | |
| | | return weiXinUser;
|
| | | }
|
| | |
|
| | | private static WeiXinUser getWeiXinUser(String code) {
|
| | | WeiXinUserParam param = getWxParam(code);
|
| | | public static WeiXinUser getWeiXinUser(String code,String appId,String appSecret) {
|
| | | WeiXinUserParam param = getWxParam(code,appId,appSecret);
|
| | | if (param == null) {
|
| | | return null;
|
| | | }
|
| | | return getWeiXinUser(param);
|
| | | WeiXinUser weiXinUser = getWeiXinUser(param);
|
| | | if (weiXinUser != null && StringUtil.isNullOrEmpty(weiXinUser.getUnionid())
|
| | | && !StringUtil.isNullOrEmpty(param.getUnionId())) {
|
| | | weiXinUser.setUnionid(param.getUnionId());
|
| | | }
|
| | | return weiXinUser;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | * @param code
|
| | | * @return
|
| | | */
|
| | | public static WeiXinUser getWeiXinUserWithSavePortrait(String code) {
|
| | | WeiXinUser user = getWeiXinUser(code);
|
| | | public static WeiXinUser getWeiXinUserWithSavePortrait(String code,String appId,String appSecret) {
|
| | | WeiXinUser user = getWeiXinUser(code,appId,appSecret);
|
| | | if (user != null) {
|
| | | if (!StringUtil.isNullOrEmpty(user.getHeadimgurl())) {
|
| | |
|
| | | FileUploadResult result = COSManager.getInstance().uploadFile(
|
| | | HttpUtil.getAsInputStream(user.getHeadimgurl()),
|
| | | String.format("/portrait/wx/%s_%s.jpg", user.getUnionid(), System.currentTimeMillis() + ""));
|
| | | 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());
|
| | | // }
|
| | | // }
|
| | | // 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());
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | private static WeiXinUserParam getWeiXinUserParam(String result) {
|
| | | LogHelper.test(result);
|
| | | WeiXinUserParam weiXinUserParam = new WeiXinUserParam();
|
| | | JSONObject jsonObject = null;
|
| | | try {
|
| | |
| | | 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;
|
| | | }
|