admin
2020-09-05 144adac2b67eae995e853ad1d3d6d7d4ff5926ec
微信登录抽象
2个文件已删除
2 文件已重命名
10个文件已修改
2个文件已添加
540 ■■■■ 已修改文件
fanli/error.log.2020-08-09 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/ClientJspController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserAccountController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInviteRecordServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserAccountService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoExtraService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/wx/MyWXLoginUtil.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/wx/WXLoginUtil.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/src/main/java/org/yeshi/utils/entity/wx/WeiXinUser.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/src/main/java/org/yeshi/utils/entity/wx/WeiXinUserParam.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/src/main/java/org/yeshi/utils/wx/WXAppLoginUtil.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/error.log.2020-08-09
File was deleted
fanli/src/main/java/com/yeshi/fanli/controller/ClientJspController.java
@@ -11,6 +11,7 @@
import javax.servlet.http.HttpSession;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.util.wx.MyWXLoginUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -47,7 +48,6 @@
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -167,7 +167,7 @@
            long currentTimeMillis = java.lang.System.currentTimeMillis();
            String md5 = StringUtil.Md5(currentTimeMillis + "");
            session.setAttribute("wxState", md5);
            String baseUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + WXLoginUtil.WEXIN_APPID
            String baseUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + MyWXLoginUtil.WEXIN_APPID
                    + "&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_userinfo&state=" + md5
                    + "#wechat_redirect";
            response.sendRedirect(baseUrl);
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserAccountController.java
@@ -28,7 +28,7 @@
import com.yeshi.fanli.service.inter.user.*;
import com.yeshi.fanli.util.*;
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import com.yeshi.fanli.util.wx.MyWXLoginUtil;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -36,6 +36,7 @@
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.encrypt.DESUtil;
import org.yeshi.utils.entity.ProxyIP;
import org.yeshi.utils.entity.wx.WeiXinUser;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@@ -327,7 +328,7 @@
        if (!StringUtil.isNullOrEmpty(code)) {
            WXAccountInfoDTO accountInfo = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
            WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, accountInfo.getAppId(),
            WeiXinUser weiXinUser = MyWXLoginUtil.getWeiXinUserWithSavePortrait(code, accountInfo.getAppId(),
                    accountInfo.getAppSecret());
            if (weiXinUser == null) {
                out.print(JsonUtil.loadFalseResult(1, "获取微信用户信息失败"));
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
@@ -28,6 +28,7 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.yeshi.utils.*;
import org.yeshi.utils.entity.wx.WeiXinUser;
import org.yeshi.utils.taobao.TbImgUtil;
import org.yeshi.utils.tencentcloud.COSManager;
@@ -59,7 +60,6 @@
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.bus.user.vip.GiveVIPApplyInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.entity.common.AdminUser;
@@ -130,7 +130,7 @@
import com.yeshi.fanli.util.factory.OrderItemFactory;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import com.yeshi.fanli.util.wx.MyWXLoginUtil;
import com.yeshi.fanli.vo.user.MineInfoVO;
import com.yeshi.fanli.vo.user.UserInfoExtraVO;
import com.yeshi.fanli.vo.user.UserSettingsVO;
@@ -342,7 +342,7 @@
            // WeiXinUserParam wxParam = null;
            // 如果是微信登陆,那需要先获取到微信的unionid
            WXAccountInfoDTO account = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
            WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
            WeiXinUser weiXinUser = MyWXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
                    account.getAppSecret());
            if (loginType == Constant.WEIXIN && StringUtil.isNullOrEmpty(form.getWxUnionId())) {
                // wxParam = WXinUtil.getWxParam(code);
@@ -440,7 +440,7 @@
                WXAccountInfoDTO account = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
                WeiXinUser xinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
                WeiXinUser xinUser = MyWXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
                        account.getAppSecret());
                if (xinUser == null) {
                    out.print(JsonUtil.loadFalseResult("登录失败"));
@@ -696,7 +696,7 @@
        int loginType = form.getLoginType();
        if (loginType == Constant.WEIXIN) {
            WXAccountInfoDTO account = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
            WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
            WeiXinUser weiXinUser = MyWXLoginUtil.getWeiXinUserWithSavePortrait(code, account.getAppId(),
                    account.getAppSecret());
            if (weiXinUser == null) {
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
@@ -33,7 +33,6 @@
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserInviteValidNum;
import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic;
import com.yeshi.fanli.entity.bus.user.vip.TearcherInfo;
@@ -76,11 +75,12 @@
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import com.yeshi.fanli.util.user.UserLevelUtil;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import com.yeshi.fanli.vo.order.OrderRankingVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.yeshi.utils.entity.wx.WeiXinUser;
import org.yeshi.utils.wx.WXAppLoginUtil;
@Controller
@RequestMapping("api/v2/invite")
@@ -187,7 +187,7 @@
        try {
            WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
            // 获取微信信息
            WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
            WeiXinUser weiXinUser = WXAppLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
            if (weiXinUser == null)
                throw new UserInfoExtraException(1, "微信授权失败");
fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/UserAccountController.java
@@ -19,6 +19,7 @@
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.entity.wx.WXMPSessionInfo;
import org.yeshi.utils.entity.wx.WXMPUserInfo;
import org.yeshi.utils.entity.wx.WeiXinUser;
import org.yeshi.utils.wx.WXXCXUtil;
import com.google.gson.Gson;
@@ -36,7 +37,6 @@
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo;
import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum;
import com.yeshi.fanli.entity.shop.BanLiShopOrder;
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -20,6 +20,7 @@
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.entity.FileUploadResult;
import org.yeshi.utils.entity.ProxyIP;
import org.yeshi.utils.entity.wx.WeiXinUser;
import org.yeshi.utils.tencentcloud.COSManager;
import com.google.gson.Gson;
@@ -36,7 +37,6 @@
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoModifyRecord.ModifyTypeEnum;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException;
import com.yeshi.fanli.exception.user.UserAccountException;
import com.yeshi.fanli.log.LogHelper;
@@ -53,11 +53,11 @@
import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import com.yeshi.fanli.util.wx.MyWXLoginUtil;
import net.sf.json.JSONObject;
import org.yeshi.utils.wx.WXAppLoginUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Transaction;
@Service
@@ -171,7 +171,7 @@
                case 2:// 微信
                    // 通过Code换取信息
                    WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
                    weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
                    weiXinUser = MyWXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
                            wxAccount.getAppSecret());
                    if (weiXinUser == null)
                        throw new UserAccountException(1001, "无法获取到微信个人信息");
@@ -388,7 +388,7 @@
            case 2:// 微信
                // 通过Code换取信息
                WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
                weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
                weiXinUser = MyWXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
                        wxAccount.getAppSecret());
                if (weiXinUser == null)
                    throw new UserAccountException(1001, "无法获取到微信个人信息");
@@ -711,7 +711,7 @@
        if (user == null)
            throw new UserAccountException(4, "用户不存在");
        WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
        WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
        WeiXinUser weiXinUser = MyWXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
                wxAccount.getAppSecret());
        if (weiXinUser == null)
            throw new UserAccountException(10, "获取微信用户信息失败");
@@ -1038,7 +1038,7 @@
        LogHelper.lgoinInfo(logInfo.toString());
        // 通过Code换取信息
        WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, businessSystem.getWxAppId(), businessSystem.getWxAppSecret());
        WeiXinUser weiXinUser = WXAppLoginUtil.getWeiXinUser(code, businessSystem.getWxAppId(), businessSystem.getWxAppSecret());
        if (weiXinUser == null) {
            throw new UserAccountException(1, "微信帐号授权失败");
        }
@@ -1142,7 +1142,7 @@
        LogHelper.lgoinInfo(logInfo.toString());
        // 通过Code换取信息
        WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(wxCode, businessSystem.getWxAppId(), businessSystem.getWxAppSecret());
        WeiXinUser weiXinUser = WXAppLoginUtil.getWeiXinUser(wxCode, businessSystem.getWxAppId(), businessSystem.getWxAppSecret());
        if (weiXinUser == null) {
            throw new UserAccountException(1, "微信帐号授权失败");
        }
@@ -1235,7 +1235,7 @@
    @Override
    public void bindWeiXin(AcceptData acceptData, Long uid, String code) throws UserAccountException {
        WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
        WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
        WeiXinUser weiXinUser = WXAppLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
        if (weiXinUser == null) {
            throw new UserAccountException(2, "微信帐号授权失败");
        }
@@ -1451,7 +1451,7 @@
        // 通过Code换取信息
        WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
        WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
        WeiXinUser weiXinUser = WXAppLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
        if (weiXinUser == null) {
            throw new UserAccountException(1, "微信帐号授权失败");
        }
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java
@@ -25,10 +25,10 @@
import org.yeshi.utils.FileUtil;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.entity.FileUploadResult;
import org.yeshi.utils.entity.wx.WeiXinUser;
import org.yeshi.utils.tencentcloud.COSManager;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.Producer;
import com.yeshi.fanli.dao.mybatis.user.UserInfoExtraMapper;
import com.yeshi.fanli.dao.mybatis.user.UserRankRecordMapper;
import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
@@ -40,7 +40,6 @@
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserRank;
import com.yeshi.fanli.entity.bus.user.UserRankRecord;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.bus.user.notify.UserActivedRecord;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.exception.user.ThreeSaleException;
@@ -61,10 +60,10 @@
import com.yeshi.fanli.util.account.UserUtil;
import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import com.yeshi.fanli.vo.user.UserInfoExtraVO;
import net.coobird.thumbnailator.Thumbnails;
import org.yeshi.utils.wx.WXAppLoginUtil;
@Service
public class UserInfoExtraServiceImpl implements UserInfoExtraService {
@@ -384,7 +383,7 @@
            throw new UserInfoExtraException(1, "已经激活, 无需再次激活");
        // 获取微信信息
        WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
        WeiXinUser weiXinUser = WXAppLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret());
        if (weiXinUser == null) {
            throw new UserInfoExtraException(1, "微信授权失败");
        }
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInviteRecordServiceImpl.java
@@ -4,16 +4,16 @@
import javax.annotation.Resource;
import com.yeshi.fanli.util.wx.MyWXLoginUtil;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.mybatis.user.UserInviteRecordMapper;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInviteRecord;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserInviteRecordService;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import org.yeshi.utils.entity.wx.WeiXinUser;
@Service
@@ -43,7 +43,7 @@
        }
        // 获取微信信息
        WeiXinUser weiXinUser = WXLoginUtil.getWeiXinWYUser(code);
        WeiXinUser weiXinUser = MyWXLoginUtil.getWeiXinWYUser(code);
        if (weiXinUser == null) {
            return;
        }
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserAccountService.java
@@ -4,11 +4,11 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.LoginResult;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.system.BusinessSystem;
import com.yeshi.fanli.exception.user.UserAccountException;
import com.yeshi.fanli.vo.taobao.TaoBaoUser;
import org.yeshi.utils.entity.ProxyIP;
import org.yeshi.utils.entity.wx.WeiXinUser;
import javax.servlet.http.HttpServletRequest;
fanli/src/main/java/com/yeshi/fanli/service/inter/user/UserInfoExtraService.java
@@ -1,16 +1,15 @@
package com.yeshi.fanli.service.inter.user;
import java.util.Date;
import org.springframework.web.multipart.MultipartFile;
import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserRank;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.exception.user.UserInfoExtraException;
import com.yeshi.fanli.vo.user.UserInfoExtraVO;
import org.springframework.web.multipart.MultipartFile;
import org.yeshi.utils.entity.wx.WeiXinUser;
import java.util.Date;
public interface UserInfoExtraService {
fanli/src/main/java/com/yeshi/fanli/util/wx/MyWXLoginUtil.java
New file
@@ -0,0 +1,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);
    }
}
fanli/src/main/java/com/yeshi/fanli/util/wx/WXLoginUtil.java
File was deleted
utils/src/main/java/org/yeshi/utils/entity/wx/WeiXinUser.java
File was renamed from fanli/src/main/java/com/yeshi/fanli/entity/bus/user/WeiXinUser.java
@@ -1,4 +1,4 @@
package com.yeshi.fanli.entity.bus.user;
package org.yeshi.utils.entity.wx;
//微信用户解析
public class WeiXinUser {
utils/src/main/java/org/yeshi/utils/entity/wx/WeiXinUserParam.java
File was renamed from fanli/src/main/java/com/yeshi/fanli/entity/bus/user/WeiXinUserParam.java
@@ -1,4 +1,4 @@
package com.yeshi.fanli.entity.bus.user;
package org.yeshi.utils.entity.wx;
public class WeiXinUserParam {
utils/src/main/java/org/yeshi/utils/wx/WXAppLoginUtil.java
New file
@@ -0,0 +1,102 @@
package org.yeshi.utils.wx;
import org.json.JSONException;
import org.json.JSONObject;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.StringUtil;
import org.yeshi.utils.entity.wx.WeiXinUser;
import org.yeshi.utils.entity.wx.WeiXinUserParam;
public class WXAppLoginUtil {
    // 通过code获取access_token openId
    private static String weiXinUrl1 = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
    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 appId, String appSecret) {
        String wxUrl = String.format(weiXinUrl1, appId, appSecret, code);
        String result = HttpUtil.get(wxUrl);
        WeiXinUserParam weiXinUserParam = parseWeiXinUserParam(result);
        return weiXinUserParam;
    }
    public static WeiXinUser getWeiXinUser(WeiXinUserParam param) {
        String result = HttpUtil.getAsString(String.format(weiXinUrl2, param.getAccessToken(), param.getOpenId()),
                "ISO-8859-1", "UTF-8");
        JSONObject jsonObject = null;
        try {
            jsonObject = new JSONObject(result);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        String nickname = jsonObject.optString("nickname");
        String province = jsonObject.optString("province");
        String city = jsonObject.optString("city");
        String country = jsonObject.optString("country");
        String headimgurl = jsonObject.optString("headimgurl");
        String unionid = jsonObject.optString("unionid");
        int sex = jsonObject.optInt("sex");
        WeiXinUser weiXinUser = new WeiXinUser();
        weiXinUser.setCity(city);
        weiXinUser.setCountry(country);
        weiXinUser.setHeadimgurl(headimgurl);
        weiXinUser.setNickname(nickname);
        weiXinUser.setOpenid(param.getOpenId());
        weiXinUser.setSex(sex);
        weiXinUser.setUnionid(unionid);
        weiXinUser.setProvince(province);
        return weiXinUser;
    }
    public static WeiXinUser getWeiXinUser(String code, String appId, String appSecret) {
        WeiXinUserParam param = getWxParam(code, appId, appSecret);
        if (param == null) {
            return null;
        }
        WeiXinUser weiXinUser = getWeiXinUser(param);
        if (weiXinUser != null && StringUtil.isNullOrEmpty(weiXinUser.getUnionid())
                && !StringUtil.isNullOrEmpty(param.getUnionId())) {
            weiXinUser.setUnionid(param.getUnionId());
        }
        return weiXinUser;
    }
    private static WeiXinUserParam parseWeiXinUserParam(String 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);
    }
}