From 1442f149019ee0590389abd7a88a79c4d9b59034 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 27 五月 2025 18:23:34 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java | 53 ++++++++++++++++++----------------------------------- 1 files changed, 18 insertions(+), 35 deletions(-) diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java index f2b8f7f..a5eafa9 100644 --- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java +++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/UserServiceImpl.java @@ -1,7 +1,6 @@ package com.ruoyi.user.service.impl; import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.api.WxMaUserService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; import cn.hutool.core.util.RandomUtil; @@ -37,8 +36,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Resource - private WxMaUserService wxMaUserService; - @Resource private TokenService tokenService; @Resource private WxMaService wxMaService; @@ -49,7 +46,8 @@ @Value("${wx.appSecret}") private String appSecret; - private final String BASE_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code"; + @Value("${default.profilePicture}") + private String profilePicture; @Override public R<String> decodeOpenid(HttpServletResponse response, String code) { @@ -91,15 +89,15 @@ } if (session != null && StringUtils.isNotBlank(session.getOpenid())) { String openid = session.getOpenid(); -// String sessionKey = session.getSessionKey(); + /*String sessionKey = session.getSessionKey(); // 加密明文及初始向量转义 -// encryptedData = URLEncoder.encode(encryptedData, "UTF-8").replace("%3D", "=").replace("%2F", "/"); -// ivStr = URLEncoder.encode(ivStr, "UTF-8").replace("%3D", "=").replace("%2F", "/"); -// // 获取用户信息 -// String result = WxAesUtils.decryptData(WxAesUtils.getUrlDecoderString(encryptedData), -// sessionKey, -// WxAesUtils.getUrlDecoderString(ivStr)); -// JSONObject userJson = JSONObject.parseObject(result); + encryptedData = URLEncoder.encode(encryptedData, "UTF-8").replace("%3D", "=").replace("%2F", "/"); + ivStr = URLEncoder.encode(ivStr, "UTF-8").replace("%3D", "=").replace("%2F", "/"); + // 获取用户信息 + String result = WxAesUtils.decryptData(WxAesUtils.getUrlDecoderString(encryptedData), + sessionKey, + WxAesUtils.getUrlDecoderString(ivStr)); + JSONObject userJson = JSONObject.parseObject(result);*/ // 封装项目用户信息 if (null != phoneNoInfo) { String phoneNumber = phoneNoInfo.getPhoneNumber(); @@ -108,15 +106,22 @@ if (null == user) { user = new User(); user.setUserNo(String.format(Constants.USER_NO_PRE, RandomUtil.randomNumbers(Constants.EIGHT))); + user.setState(Constants.ONE); user.setPhone(phoneNumber); + user.setProfilePicture(profilePicture); + user.setNickname(String.format(Constants.USER_NO_PRE, StringUtils.getCharAndNum(Constants.SIX))); user.setState(Constants.ONE); user.setOpenId(openid); user.setIsDelete(Constants.ZERO); this.save(user); } else { + if (user.getOpenId()!=null && !user.getOpenId().equals(openid)){ + user.setOpenId(openid); + this.updateById(user); + } Integer state = user.getState(); if (state == 0) { - throw new GlobalException("该账号未开启,无法进行登录!"); + throw new GlobalException("账号已被禁用,请联系平台管理员。"); } } // 校验通过,生成token及过期时间 @@ -133,27 +138,5 @@ return null; } - - public JSONObject getPhone(String code) { - // 授权(必填) - String grantType = "client_credential"; - // 向微信服务器 使用登录凭证 code 获取 session_key 和 openid - // 请求参数 - String params2 = "appid=" + appId + "&secret=" + appSecret + "&grant_type=" + grantType; - // 发送请求 - String sr2 = com.ruoyi.user.vx.utils.HttpRequest.sendGet("https://api.weixin.qq.com/cgi-bin/token", params2); - // 解析相应内容(转换成json对象) - JSONObject json2 = JSONObject.parseObject(sr2); - String accessToken = json2.getString("access_token"); - //使用获取到的token和接受到的code像微信获取手机号 - JSONObject jsonObject = new JSONObject(); - jsonObject.put("code", code); - String url = ("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + accessToken); - String sr3 = com.ruoyi.user.vx.utils.HttpRequest.sendPostNew(url, jsonObject); - JSONObject json = JSONObject.parseObject(sr3); - JSONObject phoneInfo = json.getJSONObject("phone_info"); -// return phoneInfo.getString("phoneNumber"); - return phoneInfo; - } } -- Gitblit v1.7.1