springboot升级为2.4.13、druid1.2.8、修改登录之后获取用户信息逻辑
This commit is contained in:
4
pom.xml
4
pom.xml
@ -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>
|
||||||
|
|||||||
@ -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;
|
||||||
@ -73,24 +74,24 @@ public class AuthController {
|
|||||||
public ApiResult<Map<String, Object>> login(@Validated @RequestBody LoginParam loginParam,
|
public ApiResult<Map<String, Object>> login(@Validated @RequestBody LoginParam loginParam,
|
||||||
HttpServletRequest request) {
|
HttpServletRequest request) {
|
||||||
|
|
||||||
YxUser yxUser = authService.wxappLogin(loginParam);
|
YxUser yxUser = authService.wxappLogin(loginParam);
|
||||||
String token = JwtToken.makeToken(yxUser.getUid(),yxUser.getUsername());
|
String token = JwtToken.makeToken(yxUser.getUid(), yxUser.getUsername());
|
||||||
String expiresTimeStr = JwtToken.getExpireTime(token);
|
String expiresTimeStr = JwtToken.getExpireTime(token);
|
||||||
|
|
||||||
// 返回 token
|
// 返回 token
|
||||||
Map<String, Object> map = new LinkedHashMap<>(2);
|
Map<String, Object> map = new LinkedHashMap<>(2);
|
||||||
|
|
||||||
map.put("token", token);
|
map.put("token", token);
|
||||||
map.put("expires_time", expiresTimeStr);
|
map.put("expires_time", expiresTimeStr);
|
||||||
|
|
||||||
// 保存在线信息
|
// 保存在线信息
|
||||||
authService.save(yxUser, token, request);
|
authService.save(yxUser, token, request);
|
||||||
if(singleLogin){
|
if (singleLogin) {
|
||||||
authService.checkLoginOnUser(yxUser.getUsername(),token);
|
authService.checkLoginOnUser(yxUser.getUsername(), token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return ApiResult.ok(map).setMsg("登陆成功");
|
return ApiResult.ok(map).setMsg("登陆成功");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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("获取成功");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,66 +76,50 @@ 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());
|
if (StrUtil.isBlank(appId) || StrUtil.isBlank(secret)) {
|
||||||
if (StrUtil.isBlank(appId) || StrUtil.isBlank(secret)) {
|
throw new YshopException("请先配置小程序");
|
||||||
throw new YshopException("请先配置小程序");
|
|
||||||
}
|
|
||||||
WxMaService wxMaService = WxMaConfiguration.getWxMaService();
|
|
||||||
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)) {
|
|
||||||
|
|
||||||
|
|
||||||
//过滤掉表情
|
|
||||||
String ip = IpUtil.getRequestIp();
|
|
||||||
yxUser = YxUser.builder()
|
|
||||||
.nickname(wxMpUser.getNickName())
|
|
||||||
.avatar(wxMpUser.getAvatarUrl())
|
|
||||||
.addIp(ip)
|
|
||||||
.lastIp(ip)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
//构建微信用户
|
|
||||||
WechatUserDto wechatUserDTO = WechatUserDto.builder()
|
|
||||||
.nickname(wxMpUser.getNickName())
|
|
||||||
.routineOpenid(session.getOpenid())
|
|
||||||
.unionId(session.getUnionid())
|
|
||||||
.sex(Integer.valueOf(wxMpUser.getGender()))
|
|
||||||
.language(wxMpUser.getLanguage())
|
|
||||||
.city(wxMpUser.getCity())
|
|
||||||
.province(wxMpUser.getProvince())
|
|
||||||
.country(wxMpUser.getCountry())
|
|
||||||
.headimgurl(wxMpUser.getAvatarUrl())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
yxUser.setWxProfile(wechatUserDTO);
|
|
||||||
|
|
||||||
this.userService.update(yxUser,Wrappers.<YxUser>lambdaQuery()
|
|
||||||
.eq(YxUser::getUid, LocalUser.getUser().getUid()));
|
|
||||||
|
|
||||||
}
|
|
||||||
return yxUser;
|
|
||||||
} catch (WxErrorException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
log.error(e.getMessage());
|
|
||||||
throw new YshopException(e.toString());
|
|
||||||
}
|
}
|
||||||
|
WxMaService wxMaService = WxMaConfiguration.getWxMaService();
|
||||||
|
//WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(code);
|
||||||
|
|
||||||
|
WxMaUserInfo wxMpUser = wxMaService.getUserService()
|
||||||
|
.getUserInfo(sessionKey, encryptedData, iv);
|
||||||
|
|
||||||
|
YxUser yxUser = userService.getById(uid);
|
||||||
|
//过滤掉表情
|
||||||
|
String ip = IpUtil.getRequestIp();
|
||||||
|
|
||||||
|
if(!StringUtils.isNotBlank(yxUser.getNickname())){
|
||||||
|
yxUser.setNickname(wxMpUser.getNickName());
|
||||||
|
yxUser.setAvatar(wxMpUser.getAvatarUrl());
|
||||||
|
}
|
||||||
|
yxUser.setLastIp(ip);
|
||||||
|
//构建微信用户
|
||||||
|
WechatUserDto wechatUserDTO = yxUser.getWxProfile();
|
||||||
|
wechatUserDTO.setNickname(wxMpUser.getNickName());
|
||||||
|
wechatUserDTO.setSex(Integer.valueOf(wxMpUser.getGender()));
|
||||||
|
wechatUserDTO.setLanguage(wxMpUser.getLanguage());
|
||||||
|
wechatUserDTO.setCity(wxMpUser.getCity());
|
||||||
|
wechatUserDTO.setProvince(wxMpUser.getProvince());
|
||||||
|
wechatUserDTO.setCountry(wxMpUser.getCountry());
|
||||||
|
wechatUserDTO.setHeadimgurl(wxMpUser.getAvatarUrl());
|
||||||
|
yxUser.setWxProfile(wechatUserDTO);
|
||||||
|
userService.updateById(yxUser);
|
||||||
|
userService.setSpread(spread, yxUser.getUid());
|
||||||
|
return yxUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user