springboot升级为2.4.13、druid1.2.8、修改登录之后获取用户信息逻辑

This commit is contained in:
taozi
2021-11-27 16:39:45 +08:00
parent 0620e7ad2e
commit 047ae2bdd1
3 changed files with 57 additions and 71 deletions

View File

@ -28,7 +28,7 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.12</version> <version>2.4.13</version>
</parent> </parent>
<properties> <properties>
@ -38,7 +38,7 @@
<jedis.version>3.3.0</jedis.version> <jedis.version>3.3.0</jedis.version>
<swagger.version>3.0.0</swagger.version> <swagger.version>3.0.0</swagger.version>
<fastjson.version>1.2.78</fastjson.version> <fastjson.version>1.2.78</fastjson.version>
<druid.version>1.2.6</druid.version> <druid.version>1.2.8</druid.version>
<hutool.version>5.5.7</hutool.version> <hutool.version>5.5.7</hutool.version>
<poi.version>4.1.2</poi.version> <poi.version>4.1.2</poi.version>
<commons-pool2.version>2.5.0</commons-pool2.version> <commons-pool2.version>2.5.0</commons-pool2.version>

View File

@ -25,6 +25,7 @@ import co.yixiang.modules.auth.param.*;
import co.yixiang.modules.services.AuthService; import co.yixiang.modules.services.AuthService;
import co.yixiang.modules.user.domain.YxUser; import co.yixiang.modules.user.domain.YxUser;
import co.yixiang.modules.user.service.YxUserService; import co.yixiang.modules.user.service.YxUserService;
import co.yixiang.utils.RedisUtil;
import co.yixiang.utils.RedisUtils; import co.yixiang.utils.RedisUtils;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ClientException;
@ -106,9 +107,10 @@ public class AuthController {
@AuthCheck @AuthCheck
@PostMapping("/wxapp/loginAuth") @PostMapping("/wxapp/loginAuth")
@ApiOperation(value = "小程序获取用户信息", notes = "小程序获取用户信息") @ApiOperation(value = "小程序获取用户信息", notes = "小程序获取用户信息")
public ApiResult<YxUser> loginAuth(@Validated @RequestBody LoginParam loginParam, public ApiResult<YxUser> loginAuth(@Validated @RequestBody LoginParam loginParam) {
HttpServletRequest request) { Long uid = LocalUser.getUidByToken();
YxUser yxUser = authService.loginAuth(loginParam); String sessionKey = RedisUtil.get(ShopConstants.YSHOP_MINI_SESSION_KET+ uid).toString();
YxUser yxUser = authService.loginAuth(loginParam, uid, sessionKey);
return ApiResult.ok(yxUser).setMsg("获取成功"); return ApiResult.ok(yxUser).setMsg("获取成功");
} }

View File

@ -76,15 +76,16 @@ public class AuthService {
* 小程序登陆 * 小程序登陆
* *
* @param loginParam loginParam * @param loginParam loginParam
* @param uid
* @param sessionKey
* @return long * @return long
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public YxUser loginAuth(LoginParam loginParam) { public YxUser loginAuth(LoginParam loginParam,Long uid,String sessionKey) {
String code = loginParam.getCode(); // String code = loginParam.getCode();
String encryptedData = loginParam.getEncryptedData(); String encryptedData = loginParam.getEncryptedData();
String iv = loginParam.getIv(); String iv = loginParam.getIv();
String spread = loginParam.getSpread(); String spread = loginParam.getSpread();
try {
//读取redis配置 //读取redis配置
String appId = redisUtils.getY(ShopKeyUtils.getWxAppAppId()); String appId = redisUtils.getY(ShopKeyUtils.getWxAppAppId());
String secret = redisUtils.getY(ShopKeyUtils.getWxAppSecret()); String secret = redisUtils.getY(ShopKeyUtils.getWxAppSecret());
@ -92,50 +93,33 @@ public class AuthService {
throw new YshopException("请先配置小程序"); throw new YshopException("请先配置小程序");
} }
WxMaService wxMaService = WxMaConfiguration.getWxMaService(); WxMaService wxMaService = WxMaConfiguration.getWxMaService();
WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(code); //WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(code);
WxMaUserInfo wxMpUser = wxMaService.getUserService().getUserInfo(session.getSessionKey(), encryptedData, iv);
YxUser yxUser = this.userService.getOne(Wrappers.<YxUser>lambdaQuery()
.eq(YxUser::getUid, LocalUser.getUser().getUid()), false);
if (ObjectUtil.isNotEmpty(yxUser)) {
WxMaUserInfo wxMpUser = wxMaService.getUserService()
.getUserInfo(sessionKey, encryptedData, iv);
YxUser yxUser = userService.getById(uid);
//过滤掉表情 //过滤掉表情
String ip = IpUtil.getRequestIp(); String ip = IpUtil.getRequestIp();
yxUser = YxUser.builder()
.nickname(wxMpUser.getNickName())
.avatar(wxMpUser.getAvatarUrl())
.addIp(ip)
.lastIp(ip)
.build();
if(!StringUtils.isNotBlank(yxUser.getNickname())){
yxUser.setNickname(wxMpUser.getNickName());
yxUser.setAvatar(wxMpUser.getAvatarUrl());
}
yxUser.setLastIp(ip);
//构建微信用户 //构建微信用户
WechatUserDto wechatUserDTO = WechatUserDto.builder() WechatUserDto wechatUserDTO = yxUser.getWxProfile();
.nickname(wxMpUser.getNickName()) wechatUserDTO.setNickname(wxMpUser.getNickName());
.routineOpenid(session.getOpenid()) wechatUserDTO.setSex(Integer.valueOf(wxMpUser.getGender()));
.unionId(session.getUnionid()) wechatUserDTO.setLanguage(wxMpUser.getLanguage());
.sex(Integer.valueOf(wxMpUser.getGender())) wechatUserDTO.setCity(wxMpUser.getCity());
.language(wxMpUser.getLanguage()) wechatUserDTO.setProvince(wxMpUser.getProvince());
.city(wxMpUser.getCity()) wechatUserDTO.setCountry(wxMpUser.getCountry());
.province(wxMpUser.getProvince()) wechatUserDTO.setHeadimgurl(wxMpUser.getAvatarUrl());
.country(wxMpUser.getCountry())
.headimgurl(wxMpUser.getAvatarUrl())
.build();
yxUser.setWxProfile(wechatUserDTO); yxUser.setWxProfile(wechatUserDTO);
userService.updateById(yxUser);
this.userService.update(yxUser,Wrappers.<YxUser>lambdaQuery() userService.setSpread(spread, yxUser.getUid());
.eq(YxUser::getUid, LocalUser.getUser().getUid()));
}
return yxUser; return yxUser;
} catch (WxErrorException e) {
e.printStackTrace();
log.error(e.getMessage());
throw new YshopException(e.toString());
}
} }