ludo-匹配-门票从金币改成钻石,可配置赢家没收益

This commit is contained in:
khalil
2025-07-29 15:11:07 +08:00
committed by hokli
parent d82b917676
commit 621b11346c
2 changed files with 21 additions and 19 deletions

View File

@@ -139,7 +139,8 @@ public class MiniGameForNavSettleListener implements ApplicationListener<MiniGam
//ai赢了不发奖励
Users winUser = usersBaseService.getUsersByUid(winUid);
if (null != winUser && !Constant.DefUser.GAME_MANAGE_ROBOT.equals(winUser.getDefUser())){
if (null != winUser && !Constant.DefUser.GAME_MANAGE_ROBOT.equals(winUser.getDefUser())
&& winner > 0d){
userPurseService.addDiamond(winUid, winner, BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(userPurse.getUid(), miniGameMatchRound.getId().toString(),
BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN, winner, userPurse)));

View File

@@ -145,7 +145,7 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
List<GameModePlayVo> gameModes = new ArrayList<>();
Map<Integer, GameModeDto> gameModeMap = config.getGameModeMap();
List<Integer> gameModeList = gameModeMap.keySet().stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
List<Integer> gameModeList = gameModeMap.keySet().stream().sorted(Comparator.reverseOrder()).toList();
for (Integer gameMode : gameModeList) {
GameModeDto gameModeDto = gameModeMap.get(gameMode);
Double winner = gameModeDto.getWinner();
@@ -203,11 +203,12 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
Integer partitionId = users.getPartitionId();
//入场费
Double diamondNum = gameModeConfig.getTicket();
Double goldNum = gameModeConfig.getTicket();
Date now = new Date();
//扣减钱包,创建完轮次后再插入账单
UserPurse afterPurse = userPurseService.subDiamond(uid, diamondNum, BillObjTypeEnum.MINI_GAME_MATCH_ENTER_OUT, BusiStatus.DIAMONDNUMNOTENOUGH, UserPurse::getDiamonds);
UserPurse afterPurse = userPurseService.subGold(uid, goldNum, BillObjTypeEnum.MINI_GAME_LUDO_TICKET_IN, BusiStatus.DIAMONDNUMNOTENOUGH, UserPurse::getGolds);
//UserPurse afterPurse = userPurseService.subDiamond(uid, diamondNum, BillObjTypeEnum.MINI_GAME_MATCH_ENTER_OUT, BusiStatus.DIAMONDNUMNOTENOUGH, UserPurse::getDiamonds);
//别的玩家已经发起等待的房间
MiniGameMatch fromMiniGameMatch = null;
@@ -253,7 +254,7 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
toMiniGameMatch.setMgId(mgId);
toMiniGameMatch.setGameMode(gameMode);
toMiniGameMatch.setMatchStatus(NavGameMatchStatusEnum.WAIT.ordinal());
toMiniGameMatch.setTicket(diamondNum);
toMiniGameMatch.setTicket(goldNum);
toMiniGameMatch.setPartitionId(partitionId);
toMiniGameMatch.setCreateTime(now);
toMiniGameMatch.setUpdateTime(now);
@@ -271,7 +272,7 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
miniGameMatchService.save(toMiniGameMatch);
}
billRecordService.insertGeneralBillRecord(uid, toMiniGameMatch.getId().toString(), BillObjTypeEnum.MINI_GAME_MATCH_ENTER_OUT, diamondNum, afterPurse);
billRecordService.insertGeneralBillRecord(uid, toMiniGameMatch.getId().toString(), BillObjTypeEnum.MINI_GAME_LUDO_TICKET_OUT, goldNum, afterPurse);
if (fromMiniGameMatch != null) {
//匹配
@@ -392,7 +393,7 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
Long uid = miniGameMatch.getUid();
Long roomId = miniGameMatch.getRoomId();
//入场费
Double diamondNum = miniGameMatch.getTicket();
Double goldNum = miniGameMatch.getTicket();
//聊天室
ChatRoom chatRoom = chatRoomService.getByRoomId(roomId);
@@ -404,8 +405,8 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
//匹配失败
sendSysMsgService.sendSingleRoomMessage(roomId, chatRoom.getChatRoomId().toString(), Constant.DefMsgType.MINI_GAME_MATCH, Constant.DefMsgType.MINI_GAME_MATCH_FOR_FAIL, new MiniGameMatchRoundDto());
//增加钱包
userPurseService.addDiamond(uid, diamondNum, BillObjTypeEnum.MINI_GAME_MATCH_REFUND_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(uid, miniGameMatch.getId().toString(), BillObjTypeEnum.MINI_GAME_MATCH_REFUND_IN, diamondNum, userPurse)));
userPurseService.addGold(uid, goldNum, BillObjTypeEnum.MINI_GAME_MATCH_REFUND_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(uid, miniGameMatch.getId().toString(), BillObjTypeEnum.MINI_GAME_LUDO_TICKET_IN, goldNum, userPurse)));
log.error("[ludo] 匹配失败 已清除等待 和 退款 roomId {} fromMatchId {} fromUid {}",
miniGameMatch.getRoomId(), miniGameMatch.getId(), miniGameMatch.getUid());
@@ -455,8 +456,8 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
//机器人不退款
if (isRefund && matchStatus == NavGameMatchStatusEnum.SUCCESS.ordinal() && ticket > 0D) {
//增加钱包
userPurseService.addDiamond(fromUid, ticket, BillObjTypeEnum.MINI_GAME_MATCH_REFUND_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(fromUid, gameMatchRound.getId().toString(), BillObjTypeEnum.MINI_GAME_MATCH_REFUND_IN, ticket, userPurse)));
userPurseService.addGold(fromUid, ticket, BillObjTypeEnum.MINI_GAME_LUDO_TICKET_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(fromUid, gameMatchRound.getId().toString(), BillObjTypeEnum.MINI_GAME_LUDO_TICKET_IN, ticket, userPurse)));
}
fromMatch.setMatchStatus(NavGameMatchStatusEnum.FINISH.ordinal());
miniGameMatchService.updateById(fromMatch);
@@ -467,8 +468,8 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
//机器人不退款
if (isRefund && matchStatus == NavGameMatchStatusEnum.SUCCESS.ordinal() && ticket > 0D) {
//增加钱包
userPurseService.addDiamond(toUid, ticket, BillObjTypeEnum.MINI_GAME_MATCH_REFUND_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(toUid, gameMatchRound.getId().toString(), BillObjTypeEnum.MINI_GAME_MATCH_REFUND_IN, ticket, userPurse)));
userPurseService.addGold(toUid, ticket, BillObjTypeEnum.MINI_GAME_LUDO_TICKET_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(toUid, gameMatchRound.getId().toString(), BillObjTypeEnum.MINI_GAME_LUDO_TICKET_IN, ticket, userPurse)));
}
toMatch.setMatchStatus(NavGameMatchStatusEnum.FINISH.ordinal());
miniGameMatchService.updateById(toMatch);
@@ -641,9 +642,9 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
miniGameMatchRound.setWinNum(winner);
miniGameMatchRound.setPlatformNum(platform);
userPurseService.addDiamond(fromUid, winner, BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(fromUid, miniGameMatchRound.getId().toString(),
BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN, winner, userPurse)));
//userPurseService.addDiamond(fromUid, winner, BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN,
// (userPurse -> billRecordService.insertGeneralBillRecord(fromUid, miniGameMatchRound.getId().toString(),
// BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN, winner, userPurse)));
//榜单
Map<String, IRank> rankMap = RankServiceFactory.getServiceByType(RedisKey.mini_game_rank.name());
@@ -673,9 +674,9 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService {
miniGameMatchRound.setWinNum(winner);
miniGameMatchRound.setPlatformNum(platform);
userPurseService.addDiamond(toUid, winner, BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN,
(userPurse -> billRecordService.insertGeneralBillRecord(toUid, miniGameMatchRound.getId().toString(),
BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN, winner, userPurse)));
//userPurseService.addDiamond(toUid, winner, BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN,
// (userPurse -> billRecordService.insertGeneralBillRecord(toUid, miniGameMatchRound.getId().toString(),
// BillObjTypeEnum.MINI_GAME_MATCH_WINNER_IN, winner, userPurse)));
//榜单
Map<String, IRank> rankMap = RankServiceFactory.getServiceByType(RedisKey.mini_game_rank.name());