[房间切换]-修改appVersion保存逻辑

This commit is contained in:
liaozetao
2024-06-21 10:11:47 +08:00
parent 8d00f91b28
commit b10f9b472c
7 changed files with 51 additions and 51 deletions

View File

@@ -128,6 +128,7 @@ public class MyUserDetailsServiceImpl implements MyUserDetailsService {
String deviceId = deviceInfo.getDeviceId();
String client = deviceInfo.getClient();
String app = deviceInfo.getApp();
String appVersion = deviceInfo.getAppVersion();
Long uid = account.getUid();
Date date = new Date();
// 拦截指定账号登录
@@ -172,7 +173,7 @@ public class MyUserDetailsServiceImpl implements MyUserDetailsService {
account.setLastLoginIp(ip);
accountService.updateById(account);
//更新用户正在使用的app字段
userAppService.updateCurrentApp(uid, app, date, ip);
userAppService.updateCurrentApp(uid, app, date, ip, appVersion);
//将用户信息登记
AccountLoginRecord accountLoginRecord = buildAccountLoginRecord(ip, account, loginType.getValue(), deviceInfo, openId);
loginRecordService.addAccountLoginRecordAsync(accountLoginRecord);

View File

@@ -30,7 +30,7 @@ import java.util.*;
/**
* Created by PaperCut on 2018/8/10.
*/
public class TicketServices implements InitializingBean{
public class TicketServices implements InitializingBean {
private static final Logger logger = LoggerFactory.getLogger(TicketServices.class);
private final int ticketValiditySeconds = 60 * 60; //ticket过期时间
@@ -73,21 +73,21 @@ public class TicketServices implements InitializingBean{
public Map<String, Object> issueTicket(String accessTokenValue) {
OAuth2AccessToken accessToken = tokenStore.readAccessToken(accessTokenValue);
if(accessToken == null){
if (accessToken == null) {
throw new InvalidTokenException("Invalid access token: " + accessTokenValue);
}else if(accessToken.isExpired()){
} else if (accessToken.isExpired()) {
throw new InvalidTokenException("Access token expired: " + accessTokenValue);
}
OAuth2Authentication authentication = tokenStore.readAuthentication(accessToken);
UserDetails userDetails = userDetailsService.loadUserByUsername(authentication.getName());
AccountDetails accountDetails = userDetails instanceof AccountDetails ? (AccountDetails)userDetails : null;
if(accountDetails == null){
AccountDetails accountDetails = userDetails instanceof AccountDetails ? (AccountDetails) userDetails : null;
if (accountDetails == null) {
throw new InvalidTokenException("accountDetails null: " + accessTokenValue);
}
int ticketValidityMillSeconds = calTicketValiditySeconds(accessToken) * 1000;
if(ticketValidityMillSeconds < 2000){
if (ticketValidityMillSeconds < 2000) {
//accessToken剩余2秒超时,直接抛出过期异常
throw new InvalidTokenException("Access token expired: " + accessTokenValue);
}
@@ -96,10 +96,10 @@ public class TicketServices implements InitializingBean{
String uidStr = uid.toString();
String realAccessToken = ticketStore.readAccessToken(uidStr);
logger.info("issueTicket. uid:{},realAccessToken:{},accessTokenValue:{}", uid, realAccessToken, accessTokenValue);
if(StringUtils.isEmpty(realAccessToken)){
if (StringUtils.isEmpty(realAccessToken)) {
throw new InvalidTokenException("accessTokenCache null: " + accessTokenValue);
}
if(!realAccessToken.equals(accessTokenValue)){
if (!realAccessToken.equals(accessTokenValue)) {
throw new InvalidTokenException("acessToken error...please relogin now. " + accessTokenValue);
}
@@ -108,17 +108,17 @@ public class TicketServices implements InitializingBean{
defaultTicket.setExpiresIn(ticketValidityMillSeconds);
List<TicketVo> tickets = new ArrayList<>();
Ticket newTicket = ticketEnhancer.enhance(defaultTicket,authentication,accountDetails);
Ticket newTicket = ticketEnhancer.enhance(defaultTicket, authentication, accountDetails);
ticketStore.storeTicket(newTicket, authentication, accountDetails);
tickets.add(new TicketVo(newTicket));
Map<String,Object> maps = Maps.newHashMap();
maps.put("tickets",tickets);
Map<String, Object> maps = Maps.newHashMap();
maps.put("tickets", tickets);
maps.put("uid", uid);
return maps;
}
private int calTicketValiditySeconds(OAuth2AccessToken accessToken){
private int calTicketValiditySeconds(OAuth2AccessToken accessToken) {
int accessTokenExpiresIn = accessToken.getExpiresIn();
return accessTokenExpiresIn > ticketValiditySeconds ? ticketValiditySeconds : accessTokenExpiresIn;
}
@@ -126,8 +126,7 @@ public class TicketServices implements InitializingBean{
@Async
public void saveLoginRecord(Long uid, String ipAddress, DeviceInfo deviceInfo) {
Optional.ofNullable(uid).ifPresent(id -> {
userAppService.updateCurrentApp(uid, deviceInfo.getApp(), new Date(), ipAddress);
userAppService.updateCurrentApp(uid, deviceInfo.getApp(), new Date(), ipAddress, deviceInfo.getAppVersion());
int count = loginRecordService.countLoginRecordToday(id);
if (count == 0) {
Account account = accountService.getById(id);