From b10f9b472cc0f5a1a3604fe77840b4673a9cb7e6 Mon Sep 17 00:00:00 2001 From: liaozetao <1107136310@qq.com> Date: Fri, 21 Jun 2024 10:11:47 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=88=BF=E9=97=B4=E5=88=87=E6=8D=A2]-?= =?UTF-8?q?=E4=BF=AE=E6=94=B9appVersion=E4=BF=9D=E5=AD=98=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatismapper/UpdateUserMapperExpand.java | 3 +- .../core/service/account/UserAppService.java | 8 ++--- .../oauth/UpdateUserMapperExpand.xml | 15 +++++--- .../service/room/RoomForMiniGameService.java | 35 +++++++++---------- .../business/service/room/RoomMicService.java | 11 +++--- .../service/MyUserDetailsServiceImpl.java | 3 +- .../oauth2/ticket/TicketServices.java | 27 +++++++------- 7 files changed, 51 insertions(+), 51 deletions(-) diff --git a/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/mybatismapper/UpdateUserMapperExpand.java b/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/mybatismapper/UpdateUserMapperExpand.java index c68e5bc98..a63a273d0 100644 --- a/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/mybatismapper/UpdateUserMapperExpand.java +++ b/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/mybatismapper/UpdateUserMapperExpand.java @@ -10,5 +10,6 @@ public interface UpdateUserMapperExpand { @Param("lastLoginTime") Date lastLoginTime, @Param("lastLoginIp") String lastLoginIp, @Param("lastLoginRegion") String lastLoginRegion, - @Param("currentApp") String currentApp); + @Param("currentApp") String currentApp, + @Param("appVersion") String appVersion); } \ No newline at end of file diff --git a/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/account/UserAppService.java b/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/account/UserAppService.java index 0797bd54f..e43667c44 100644 --- a/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/account/UserAppService.java +++ b/accompany-base/accompany-basic/accompany-basic-service/src/main/java/com/accompany/core/service/account/UserAppService.java @@ -30,13 +30,13 @@ public class UserAppService { * @param currentApp */ @Async - public void updateCurrentApp(Long uid, String currentApp, Date loginTime, String loginIp){ - if(uid == null){ + public void updateCurrentApp(Long uid, String currentApp, Date loginTime, String loginIp, String appVersion) { + if (uid == null) { return; } String region = regionService.getRegion(loginIp); - int ret = this.mapperExpand.updateByUid(uid, loginTime, loginIp, region, currentApp); - if(ret > 0){ + int ret = this.mapperExpand.updateByUid(uid, loginTime, loginIp, region, currentApp, appVersion); + if (ret > 0) { usersBaseService.deleteUserRelateCache(uid.toString()); } } diff --git a/accompany-base/accompany-basic/accompany-basic-service/src/main/resources/oauth/UpdateUserMapperExpand.xml b/accompany-base/accompany-basic/accompany-basic-service/src/main/resources/oauth/UpdateUserMapperExpand.xml index e6491bcb1..2fa393251 100644 --- a/accompany-base/accompany-basic/accompany-basic-service/src/main/resources/oauth/UpdateUserMapperExpand.xml +++ b/accompany-base/accompany-basic/accompany-basic-service/src/main/resources/oauth/UpdateUserMapperExpand.xml @@ -1,8 +1,13 @@ - - - UPDATE users SET last_login_time = #{lastLoginTime}, last_login_ip = #{lastLoginIp}, last_login_region = #{lastLoginRegion}, current_app = #{currentApp} - where uid = #{uid} - + + + UPDATE users SET + last_login_time = #{lastLoginTime}, + last_login_ip = #{lastLoginIp}, + last_login_region = #{lastLoginRegion}, + current_app = #{currentApp}, + app_version = #{appVersion} + where uid = #{uid} + \ No newline at end of file diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/room/RoomForMiniGameService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/room/RoomForMiniGameService.java index 946710af5..3823dbf55 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/room/RoomForMiniGameService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/room/RoomForMiniGameService.java @@ -74,11 +74,11 @@ public class RoomForMiniGameService extends AbstractRoomService { public void beforeSwitchType(Room room) { Long roomUid = room.getUid(); room.setLeaveMode(null); - jedisService.hdel(RedisKey.mini_game_room.getKey(), String.valueOf(room.getRoomId())); room.setMgId(null); room.setMgName(null); room.setMgState(null); log.info("房间 roomUid : {}原是小游戏房,更新为非小游戏房", roomUid); + jedisService.hdel(RedisKey.mini_game_room.getKey(), String.valueOf(room.getRoomId())); //游戏状态置为无效 miniGameSwitchRecordService.invalidMiniGameSwitchRecord(roomUid); // 查询最小的小游戏麦位,并进行解锁 @@ -224,7 +224,6 @@ public class RoomForMiniGameService extends AbstractRoomService { @Override public void updateRoom(Room oldRoom, Room newRoom) { Long roomUid = newRoom.getUid(); - Long roomId = newRoom.getRoomId(); Long newMgId = newRoom.getMgId(); Byte oldRoomType = oldRoom.getType(); if (newMgId == null || newMgId == 0) { @@ -233,6 +232,7 @@ public class RoomForMiniGameService extends AbstractRoomService { if (newMgId.equals(oldRoom.getMgId())) { return; } + int[] micArray = RoomServiceFactory.getServiceByType(oldRoomType).micArray(); MiniGame miniGame = miniGameService.queryMiniGameByMgId(newMgId); if (miniGame == null) { log.error("创建游戏房,根据mgId : {}未查询到相关的小游戏", newMgId); @@ -244,9 +244,10 @@ public class RoomForMiniGameService extends AbstractRoomService { if (StrUtil.isEmpty(lockVal)) { throw new ServiceException(BusiStatus.SERVERBUSY); } - Integer micNum = miniGame.getMicNum(); + Integer micNum = micArray.length; try { - int count = miniGameRoomService.count(Wrappers.lambdaQuery().eq(MiniGameRoom::getRoomUid, roomUid)); + int count = miniGameRoomService.count(Wrappers.lambdaQuery() + .eq(MiniGameRoom::getRoomUid, roomUid)); if (count == 0) { //第一次创建房间 log.info("创建房间{}为小游戏房", roomUid); @@ -254,10 +255,10 @@ public class RoomForMiniGameService extends AbstractRoomService { miniGameRoom.setRoomUid(roomUid); miniGameRoom.setState(Constant.MiniGameRoomState.wait); miniGameRoom.setStatus(Constant.MiniGameRoomStatus.valid); + miniGameRoom.setMicNum(micNum); miniGameRoomService.saveMiniGameRoomToDbAndCache(miniGameRoom); //写入游戏房表,写入游戏切换记录表 writeMiniGameSwitchRecord(newRoom, newMgId); - roomMicService.checkMiniGameMicUpdate(roomUid, null, 1, micNum, false); } else { if (roomType().getCode().equals(oldRoomType)) { //当前更新为游戏房,检查游戏是否为原游戏类型 @@ -267,7 +268,6 @@ public class RoomForMiniGameService extends AbstractRoomService { miniGameRoomService.updateStateByRoomUid(Constant.MiniGameRoomState.wait, roomUid); //写入游戏房表,写入游戏切换记录表 writeMiniGameSwitchRecord(newRoom, newMgId); - roomMicService.checkMiniGameMicUpdate(roomUid, roomId, 1, micNum, true); } else { Long oldMgId = oldMiniGameSwitchRecord.getMgId(); if (oldMgId.equals(newMgId)) { @@ -277,18 +277,6 @@ public class RoomForMiniGameService extends AbstractRoomService { log.info("房间{}小游戏类型发生改变,写入新的游戏类型{}", roomUid, newMgId); miniGameRoomService.updateStateByRoomUid(Constant.MiniGameRoomState.wait, roomUid); writeMiniGameSwitchRecord(newRoom, newMgId); - MiniGame oldMiniGame = miniGameService.queryMiniGameByMgId(oldMgId); - if (oldMiniGame == null) { - log.error("创建游戏房,根据mgId : {}未查询到相关的小游戏", oldMgId); - throw new ServiceException(BusiStatus.CREATING_A_GAME_ROOM_REQUIRES_PASSING_IN_THE_CORRECT_GAME_ID); - } - // 检查原来游戏类型的麦位人数是否。原游戏麦位人数 < 现变更的游戏麦位人数 则解锁对应麦位 - Integer formerMicNum = oldMiniGame.getMicNum(); - if (formerMicNum < micNum) { - roomMicService.checkMiniGameMicUpdate(roomUid, roomId, 0, micNum, false); - } else { - roomMicService.checkMiniGameMicUpdate(roomUid, roomId, 1, micNum, true); - } } } else { log.info("房间{}本不是小游戏房,更新为小游戏{}房", roomUid, newMgId); @@ -301,11 +289,11 @@ public class RoomForMiniGameService extends AbstractRoomService { miniGameRoom.setRoomUid(roomUid); miniGameRoom.setState(Constant.MiniGameRoomState.wait); miniGameRoom.setStatus(Constant.MiniGameRoomStatus.valid); + miniGameRoom.setMicNum(micNum); miniGameRoomService.saveMiniGameRoomToDbAndCache(miniGameRoom); } //写入游戏房表,写入游戏切换记录表 writeMiniGameSwitchRecord(newRoom, newMgId); - roomMicService.checkMiniGameMicUpdate(roomUid, roomId, 1, micNum, true); } } } catch (ServiceException e) { @@ -352,6 +340,15 @@ public class RoomForMiniGameService extends AbstractRoomService { MiniGame miniGame = Optional.ofNullable(miniGameService.getById(mgId)).orElse(new MiniGame()); room.setMgName(miniGame.getName()); room.setMgMicNum(miniGame.getMicNum()); + List miniGameRooms = miniGameRoomService.list(Wrappers.lambdaQuery() + .eq(MiniGameRoom::getRoomUid, roomUid)); + if (CollectionUtil.isNotEmpty(miniGameRooms)) { + MiniGameRoom miniGameRoom = miniGameRooms.get(0); + Integer micNum = miniGameRoom.getMicNum(); + if (micNum != null && micNum > 0) { + room.setMgMicNum(micNum); + } + } } @Override diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/room/RoomMicService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/room/RoomMicService.java index 3ffddd4e0..182389807 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/room/RoomMicService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/room/RoomMicService.java @@ -162,7 +162,7 @@ public class RoomMicService extends BaseService { //开启排麦模式的房间 try { if (room.getRoomModeType() != null && room.getRoomModeType().equals(Constant.RoomModeType.OPEN_MICRO_MODE)) { - Integer second = Constant.DefineProtocol.CUSTOM_MESS_SUB_QUEUE_MICRO_FREE_MIC_OPEN; + int second = Constant.DefineProtocol.CUSTOM_MESS_SUB_QUEUE_MICRO_FREE_MIC_OPEN; QueueMicroParam queueMicroParam = roomQueueMicroService.buildQueueMicroParam(null, null, position, 0); if (state == 1) { second = Constant.DefineProtocol.CUSTOM_MESS_SUB_QUEUE_MICRO_FREE_MIC_CLOSE; @@ -170,7 +170,7 @@ public class RoomMicService extends BaseService { roomQueueMicroService.sendChatRoomMsg(roomUid, Constant.DefineProtocol.CUSTOM_MESS_HEAD_QUEUE_MICRO, second, queueMicroParam); } } catch (Exception e) { - logger.error("send locksPos message error,error={}", e); + logger.error("send locksPos message error,error={}", e.getMessage(), e); } return result; } @@ -309,19 +309,16 @@ public class RoomMicService extends BaseService { try { lockPos(roomUid, pos, state); } catch (Exception e) { - e.printStackTrace(); log.info("房间{}锁坑失败坑位信息({})", roomUid, pos); log.error("游戏房所坑失败", e); } - // 抱下麦位 if (downLastMicStatus) { try { erBanNetEaseService.queuePoll(roomId, String.valueOf(pos)); } catch (Exception e) { - e.printStackTrace(); - log.info("移除队列失败roomId({}),麦位信息({})", roomId); - log.error("游戏房下麦失败", e); + log.info("移除队列失败roomId({}),麦位信息({})", roomId, micNum); + log.error("游戏房下麦失败, message : {}", e.getMessage(), e); } } --pos; diff --git a/accompany-oauth2/accompany-oauth2-service/src/main/java/com/accompany/oauth2/service/MyUserDetailsServiceImpl.java b/accompany-oauth2/accompany-oauth2-service/src/main/java/com/accompany/oauth2/service/MyUserDetailsServiceImpl.java index b3440ea5d..186aaac72 100644 --- a/accompany-oauth2/accompany-oauth2-service/src/main/java/com/accompany/oauth2/service/MyUserDetailsServiceImpl.java +++ b/accompany-oauth2/accompany-oauth2-service/src/main/java/com/accompany/oauth2/service/MyUserDetailsServiceImpl.java @@ -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); diff --git a/accompany-oauth2/accompany-oauth2-service/src/main/java/com/accompany/oauth2/ticket/TicketServices.java b/accompany-oauth2/accompany-oauth2-service/src/main/java/com/accompany/oauth2/ticket/TicketServices.java index 363dd0be4..adc19941b 100644 --- a/accompany-oauth2/accompany-oauth2-service/src/main/java/com/accompany/oauth2/ticket/TicketServices.java +++ b/accompany-oauth2/accompany-oauth2-service/src/main/java/com/accompany/oauth2/ticket/TicketServices.java @@ -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 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 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 maps = Maps.newHashMap(); - maps.put("tickets",tickets); + Map 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);